@wix/patterns 1.498.0 → 1.499.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/CardContainer/CardContainer.st.css.js +2 -2
- package/dist/cjs/components/CardContainer/CardContainer.st.css.js.map +1 -1
- package/dist/cjs/components/CmsFieldManagement/CmsFieldForm.st.css.js +3 -3
- package/dist/cjs/components/CmsFieldManagement/CmsFieldForm.st.css.js.map +1 -1
- package/dist/cjs/components/CmsFieldManagement/CmsFieldModal.st.css.js +3 -3
- package/dist/cjs/components/CmsFieldManagement/CmsFieldModal.st.css.js.map +1 -1
- package/dist/cjs/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.js +3 -3
- package/dist/cjs/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.js.map +1 -1
- package/dist/cjs/components/Collapse/Collapse.st.css.js +3 -3
- package/dist/cjs/components/Collapse/Collapse.st.css.js.map +1 -1
- package/dist/cjs/components/CollectionPageNew/CollectionPage.st.css.js +2 -2
- package/dist/cjs/components/CollectionPageNew/CollectionPage.st.css.js.map +1 -1
- package/dist/cjs/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js +3 -3
- package/dist/cjs/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js.map +1 -1
- package/dist/cjs/components/CollectionTable/CollectionTable.st.css.js +2 -2
- package/dist/cjs/components/CollectionTable/CollectionTable.st.css.js.map +1 -1
- package/dist/cjs/components/CollectionTable/CollectionTableWSRTable.st.css.js +2 -2
- package/dist/cjs/components/CollectionTable/CollectionTableWSRTable.st.css.js.map +1 -1
- package/dist/cjs/components/CollectionToolbar/CollectionToolbar.st.css.js +5 -5
- package/dist/cjs/components/CollectionToolbar/CollectionToolbar.st.css.js.map +1 -1
- package/dist/cjs/components/CollectionToolbar/SearchOrCustomFilter.st.css.js +4 -4
- package/dist/cjs/components/CollectionToolbar/SearchOrCustomFilter.st.css.js.map +1 -1
- package/dist/cjs/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.js +2 -2
- package/dist/cjs/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.js.map +1 -1
- package/dist/cjs/components/CollectionViewsDropdown/ViewsDropdown.st.css.js +2 -2
- package/dist/cjs/components/CollectionViewsDropdown/ViewsDropdown.st.css.js.map +1 -1
- package/dist/cjs/components/CustomFieldModal/CustomFieldFormPiiFields.st.css.js +3 -3
- package/dist/cjs/components/CustomFieldModal/CustomFieldFormPiiFields.st.css.js.map +1 -1
- package/dist/cjs/components/DragHandle/DragHandle.st.css.js +2 -2
- package/dist/cjs/components/DragHandle/DragHandle.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/EditableCell.st.css.js +6 -6
- package/dist/cjs/components/EditableTable/EditableCell.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/HeaderActionsPopover.st.css.js +2 -2
- package/dist/cjs/components/EditableTable/HeaderActionsPopover.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/CellViewLayout.st.css.js +2 -2
- package/dist/cjs/components/EditableTable/cellTypes/CellViewLayout.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/JsonInputEdit.st.css.js +3 -3
- package/dist/cjs/components/EditableTable/cellTypes/JsonInputEdit.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/address/Edit.st.css.js +3 -3
- package/dist/cjs/components/EditableTable/cellTypes/address/Edit.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/boolean/Edit.st.css.js +3 -3
- package/dist/cjs/components/EditableTable/cellTypes/boolean/Edit.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/boolean/View.st.css.js +3 -3
- package/dist/cjs/components/EditableTable/cellTypes/boolean/View.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/color/Edit.st.css.js +2 -2
- package/dist/cjs/components/EditableTable/cellTypes/color/Edit.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/date/Edit.st.css.js +3 -3
- package/dist/cjs/components/EditableTable/cellTypes/date/Edit.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/date/View.st.css.js +2 -2
- package/dist/cjs/components/EditableTable/cellTypes/date/View.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/datetime/Edit.st.css.js +8 -8
- package/dist/cjs/components/EditableTable/cellTypes/datetime/Edit.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/datetime/View.st.css.js +7 -7
- package/dist/cjs/components/EditableTable/cellTypes/datetime/View.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/email/Edit.st.css.js +3 -3
- package/dist/cjs/components/EditableTable/cellTypes/email/Edit.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/email/View.st.css.js +2 -2
- package/dist/cjs/components/EditableTable/cellTypes/email/View.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/mediaImage/Edit.st.css.js +2 -2
- package/dist/cjs/components/EditableTable/cellTypes/mediaImage/Edit.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/multiDocument/Edit.st.css.js +3 -3
- package/dist/cjs/components/EditableTable/cellTypes/multiDocument/Edit.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/number/Edit.st.css.js +3 -3
- package/dist/cjs/components/EditableTable/cellTypes/number/Edit.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/number/View.st.css.js +3 -3
- package/dist/cjs/components/EditableTable/cellTypes/number/View.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/object/View.st.css.js +2 -2
- package/dist/cjs/components/EditableTable/cellTypes/object/View.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/reference/EmptyReferenceView.st.css.js +6 -6
- package/dist/cjs/components/EditableTable/cellTypes/reference/EmptyReferenceView.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/select/Edit.st.css.js +3 -3
- package/dist/cjs/components/EditableTable/cellTypes/select/Edit.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/text/Edit.st.css.js +4 -4
- package/dist/cjs/components/EditableTable/cellTypes/text/Edit.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/text/View.st.css.js +2 -2
- package/dist/cjs/components/EditableTable/cellTypes/text/View.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/time/Edit.st.css.js +4 -4
- package/dist/cjs/components/EditableTable/cellTypes/time/Edit.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/url/Edit.st.css.js +3 -3
- package/dist/cjs/components/EditableTable/cellTypes/url/Edit.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/url/View.st.css.js +5 -5
- package/dist/cjs/components/EditableTable/cellTypes/url/View.st.css.js.map +1 -1
- package/dist/cjs/components/EmptyState/EmptyStateBase.st.css.js +2 -2
- package/dist/cjs/components/EmptyState/EmptyStateBase.st.css.js.map +1 -1
- package/dist/cjs/components/EntityPage/EntityPagePlain.st.css.js +2 -2
- package/dist/cjs/components/EntityPage/EntityPagePlain.st.css.js.map +1 -1
- package/dist/cjs/components/EntityPageFields/EntityPageField.st.css.js +3 -3
- package/dist/cjs/components/EntityPageFields/EntityPageField.st.css.js.map +1 -1
- package/dist/cjs/components/EntityPageFields/EntityPageReferenceValue.st.css.js +2 -2
- package/dist/cjs/components/EntityPageFields/EntityPageReferenceValue.st.css.js.map +1 -1
- package/dist/cjs/components/Fade/Fade.st.css.js +2 -2
- package/dist/cjs/components/Fade/Fade.st.css.js.map +1 -1
- package/dist/cjs/components/Heading/Heading.st.css.js +2 -2
- package/dist/cjs/components/Heading/Heading.st.css.js.map +1 -1
- package/dist/cjs/components/ImportButton/ImportStepUpload.st.css.js +3 -3
- package/dist/cjs/components/ImportButton/ImportStepUpload.st.css.js.map +1 -1
- package/dist/cjs/components/ImportButton/SchemaImportFieldEditor.js +2 -13
- package/dist/cjs/components/ImportButton/SchemaImportFieldEditor.js.map +1 -1
- package/dist/cjs/components/InputOverflow/InputOverflow.st.css.js +2 -2
- package/dist/cjs/components/InputOverflow/InputOverflow.st.css.js.map +1 -1
- package/dist/cjs/components/LoadingRow/LoadingRow.st.css.js +3 -3
- package/dist/cjs/components/LoadingRow/LoadingRow.st.css.js.map +1 -1
- package/dist/cjs/components/MaxHeightText/MaxHeightText.st.css.js +2 -2
- package/dist/cjs/components/MaxHeightText/MaxHeightText.st.css.js.map +1 -1
- package/dist/cjs/components/MaxLines/MaxLines.st.css.js +2 -2
- package/dist/cjs/components/MaxLines/MaxLines.st.css.js.map +1 -1
- package/dist/cjs/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js +5 -5
- package/dist/cjs/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js.map +1 -1
- package/dist/cjs/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js +2 -2
- package/dist/cjs/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js.map +1 -1
- package/dist/cjs/components/NestedTable/NestedTableRow.st.css.js +5 -5
- package/dist/cjs/components/NestedTable/NestedTableRow.st.css.js.map +1 -1
- package/dist/cjs/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js +2 -2
- package/dist/cjs/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js.map +1 -1
- package/dist/cjs/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js +2 -2
- package/dist/cjs/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js.map +1 -1
- package/dist/cjs/components/PickerContent/PickerContent.st.css.js +2 -2
- package/dist/cjs/components/PickerContent/PickerContent.st.css.js.map +1 -1
- package/dist/cjs/components/PickerContent/PickerContentAdditionalStep.st.css.js +4 -4
- package/dist/cjs/components/PickerContent/PickerContentAdditionalStep.st.css.js.map +1 -1
- package/dist/cjs/components/PickerTableListItem/PickerTableListItem.st.css.js +2 -2
- package/dist/cjs/components/PickerTableListItem/PickerTableListItem.st.css.js.map +1 -1
- package/dist/cjs/components/SchemaSource/schemaFieldActions.js.map +1 -1
- package/dist/cjs/components/SchemaSource/schemaFieldManagement.js.map +1 -1
- package/dist/cjs/components/ScrollableContent/ScrollableContent.st.css.js +2 -2
- package/dist/cjs/components/ScrollableContent/ScrollableContent.st.css.js.map +1 -1
- package/dist/cjs/components/SetupWidget/SetupWidget.st.css.js +10 -10
- package/dist/cjs/components/SetupWidget/SetupWidget.st.css.js.map +1 -1
- package/dist/cjs/components/SkeletonCard/SkeletonCard.st.css.js +3 -3
- package/dist/cjs/components/SkeletonCard/SkeletonCard.st.css.js.map +1 -1
- package/dist/cjs/components/SlidingModal/SlidingModal.st.css.js +2 -2
- package/dist/cjs/components/SlidingModal/SlidingModal.st.css.js.map +1 -1
- package/dist/cjs/components/Table/AddFieldColumnHeader.st.css.js +6 -6
- package/dist/cjs/components/Table/AddFieldColumnHeader.st.css.js.map +1 -1
- package/dist/cjs/components/Table/NumberCell.st.css.js +2 -2
- package/dist/cjs/components/Table/NumberCell.st.css.js.map +1 -1
- package/dist/cjs/components/TabsFilter/TabsFilter.st.css.js +3 -3
- package/dist/cjs/components/TabsFilter/TabsFilter.st.css.js.map +1 -1
- package/dist/cjs/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js +2 -2
- package/dist/cjs/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js.map +1 -1
- package/dist/cjs/components/ToolbarItem/ToolbarItem.st.css.js +2 -2
- package/dist/cjs/components/ToolbarItem/ToolbarItem.st.css.js.map +1 -1
- package/dist/cjs/components/ToolbarItemBox/ToolbarItemBox.st.css.js +2 -2
- package/dist/cjs/components/ToolbarItemBox/ToolbarItemBox.st.css.js.map +1 -1
- package/dist/cjs/components/common.st.css.js +4 -4
- package/dist/cjs/components/common.st.css.js.map +1 -1
- package/dist/cjs/state/CollectionPage/CollectionPageHeader.st.css.js +3 -3
- package/dist/cjs/state/CollectionPage/CollectionPageHeader.st.css.js.map +1 -1
- package/dist/cjs/state/CollectionPage/MobilePrimaryActionBar.st.css.js +2 -2
- package/dist/cjs/state/CollectionPage/MobilePrimaryActionBar.st.css.js.map +1 -1
- package/dist/cjs/state/CollectionPage/TitleBadges.st.css.js +4 -4
- package/dist/cjs/state/CollectionPage/TitleBadges.st.css.js.map +1 -1
- package/dist/cjs/state/EditableTable/CellValueState.js +154 -7
- package/dist/cjs/state/EditableTable/CellValueState.js.map +1 -1
- package/dist/cjs/state/EditableTable/ClipboardState.js +30 -14
- package/dist/cjs/state/EditableTable/ClipboardState.js.map +1 -1
- package/dist/cjs/state/EditableTable/EditableTableState.js +1 -1
- package/dist/cjs/state/EditableTable/EditableTableState.js.map +1 -1
- package/dist/cjs/state/EditableTable/MutationState.js +31 -7
- package/dist/cjs/state/EditableTable/MutationState.js.map +1 -1
- package/dist/cjs/state/FormPage/FormPageHeader.st.css.js +2 -2
- package/dist/cjs/state/FormPage/FormPageHeader.st.css.js.map +1 -1
- package/dist/cjs/styles.global.css +2 -2
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/version.js.map +1 -1
- package/dist/docs/Table.md +3 -1
- package/dist/dts-bundle/hooks/usePickerModal.d.ts +3 -0
- package/dist/dts-bundle/index.json +9 -9
- package/dist/dts-bundle/index.txt +2 -2
- package/dist/dts-bundle/types/CellType.d.ts +3 -0
- package/dist/esm/components/CardContainer/CardContainer.st.css.js +2 -2
- package/dist/esm/components/CmsFieldManagement/CmsFieldForm.st.css.js +2 -2
- package/dist/esm/components/CmsFieldManagement/CmsFieldModal.st.css.js +2 -2
- package/dist/esm/components/CmsFieldManagement/CmsFieldModal.st.css.js.map +1 -1
- package/dist/esm/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.js +2 -2
- package/dist/esm/components/Collapse/Collapse.st.css.js +2 -2
- package/dist/esm/components/Collapse/Collapse.st.css.js.map +1 -1
- package/dist/esm/components/CollectionPageNew/CollectionPage.st.css.js +2 -2
- package/dist/esm/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js +2 -2
- package/dist/esm/components/CollectionTable/CollectionTable.st.css.js +2 -2
- package/dist/esm/components/CollectionTable/CollectionTable.st.css.js.map +1 -1
- package/dist/esm/components/CollectionTable/CollectionTableWSRTable.st.css.js +2 -2
- package/dist/esm/components/CollectionTable/CollectionTableWSRTable.st.css.js.map +1 -1
- package/dist/esm/components/CollectionToolbar/CollectionToolbar.st.css.js +2 -2
- package/dist/esm/components/CollectionToolbar/CollectionToolbar.st.css.js.map +1 -1
- package/dist/esm/components/CollectionToolbar/SearchOrCustomFilter.st.css.js +2 -2
- package/dist/esm/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.js +2 -2
- package/dist/esm/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.js.map +1 -1
- package/dist/esm/components/CollectionViewsDropdown/ViewsDropdown.st.css.js +2 -2
- package/dist/esm/components/CustomFieldModal/CustomFieldFormPiiFields.st.css.js +2 -2
- package/dist/esm/components/DragHandle/DragHandle.st.css.js +2 -2
- package/dist/esm/components/EditableTable/EditableCell.st.css.js +2 -2
- package/dist/esm/components/EditableTable/HeaderActionsPopover.st.css.js +2 -2
- package/dist/esm/components/EditableTable/HeaderActionsPopover.st.css.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/CellViewLayout.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/CellViewLayout.st.css.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/JsonInputEdit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/address/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/boolean/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/boolean/Edit.st.css.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/boolean/View.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/color/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/date/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/date/View.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/date/View.st.css.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/datetime/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/datetime/View.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/email/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/email/Edit.st.css.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/email/View.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/email/View.st.css.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/mediaImage/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/mediaImage/Edit.st.css.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/multiDocument/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/number/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/number/Edit.st.css.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/number/View.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/object/View.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/object/View.st.css.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/reference/EmptyReferenceView.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/select/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/text/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/text/View.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/text/View.st.css.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/time/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/time/Edit.st.css.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/url/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/url/View.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/url/View.st.css.js.map +1 -1
- package/dist/esm/components/EmptyState/EmptyStateBase.st.css.js +2 -2
- package/dist/esm/components/EntityPage/EntityPagePlain.st.css.js +2 -2
- package/dist/esm/components/EntityPage/EntityPagePlain.st.css.js.map +1 -1
- package/dist/esm/components/EntityPageFields/EntityPageField.st.css.js +2 -2
- package/dist/esm/components/EntityPageFields/EntityPageReferenceValue.st.css.js +2 -2
- package/dist/esm/components/EntityPageFields/EntityPageReferenceValue.st.css.js.map +1 -1
- package/dist/esm/components/Fade/Fade.st.css.js +2 -2
- package/dist/esm/components/Fade/Fade.st.css.js.map +1 -1
- package/dist/esm/components/Heading/Heading.st.css.js +2 -2
- package/dist/esm/components/Heading/Heading.st.css.js.map +1 -1
- package/dist/esm/components/ImportButton/ImportStepUpload.st.css.js +2 -2
- package/dist/esm/components/ImportButton/ImportStepUpload.st.css.js.map +1 -1
- package/dist/esm/components/ImportButton/SchemaImportFieldEditor.js +2 -12
- package/dist/esm/components/ImportButton/SchemaImportFieldEditor.js.map +1 -1
- package/dist/esm/components/InputOverflow/InputOverflow.st.css.js +2 -2
- package/dist/esm/components/InputOverflow/InputOverflow.st.css.js.map +1 -1
- package/dist/esm/components/LoadingRow/LoadingRow.st.css.js +3 -3
- package/dist/esm/components/LoadingRow/LoadingRow.st.css.js.map +1 -1
- package/dist/esm/components/MaxHeightText/MaxHeightText.st.css.js +2 -2
- package/dist/esm/components/MaxHeightText/MaxHeightText.st.css.js.map +1 -1
- package/dist/esm/components/MaxLines/MaxLines.st.css.js +2 -2
- package/dist/esm/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js +2 -2
- package/dist/esm/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js.map +1 -1
- package/dist/esm/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js +2 -2
- package/dist/esm/components/NestedTable/NestedTableRow.st.css.js +2 -2
- package/dist/esm/components/NestedTable/NestedTableRow.st.css.js.map +1 -1
- package/dist/esm/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js +2 -2
- package/dist/esm/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js +2 -2
- package/dist/esm/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js.map +1 -1
- package/dist/esm/components/PickerContent/PickerContent.st.css.js +2 -2
- package/dist/esm/components/PickerContent/PickerContentAdditionalStep.st.css.js +2 -2
- package/dist/esm/components/PickerContent/PickerContentAdditionalStep.st.css.js.map +1 -1
- package/dist/esm/components/PickerTableListItem/PickerTableListItem.st.css.js +2 -2
- package/dist/esm/components/SchemaSource/schemaFieldActions.js +2 -1
- package/dist/esm/components/SchemaSource/schemaFieldActions.js.map +1 -1
- package/dist/esm/components/SchemaSource/schemaFieldManagement.js.map +1 -1
- package/dist/esm/components/ScrollableContent/ScrollableContent.st.css.js +2 -2
- package/dist/esm/components/SetupWidget/SetupWidget.st.css.js +2 -2
- package/dist/esm/components/SetupWidget/SetupWidget.st.css.js.map +1 -1
- package/dist/esm/components/SkeletonCard/SkeletonCard.st.css.js +2 -2
- package/dist/esm/components/SlidingModal/SlidingModal.st.css.js +2 -2
- package/dist/esm/components/Table/AddFieldColumnHeader.st.css.js +2 -2
- package/dist/esm/components/Table/AddFieldColumnHeader.st.css.js.map +1 -1
- package/dist/esm/components/Table/NumberCell.st.css.js +2 -2
- package/dist/esm/components/Table/NumberCell.st.css.js.map +1 -1
- package/dist/esm/components/TabsFilter/TabsFilter.st.css.js +2 -2
- package/dist/esm/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js +2 -2
- package/dist/esm/components/ToolbarItem/ToolbarItem.st.css.js +2 -2
- package/dist/esm/components/ToolbarItem/ToolbarItem.st.css.js.map +1 -1
- package/dist/esm/components/ToolbarItemBox/ToolbarItemBox.st.css.js +2 -2
- package/dist/esm/components/common.st.css.js +2 -2
- package/dist/esm/state/CollectionPage/CollectionPageHeader.st.css.js +2 -2
- package/dist/esm/state/CollectionPage/MobilePrimaryActionBar.st.css.js +2 -2
- package/dist/esm/state/CollectionPage/TitleBadges.st.css.js +2 -2
- package/dist/esm/state/CollectionPage/TitleBadges.st.css.js.map +1 -1
- package/dist/esm/state/EditableTable/CellValueState.js +146 -7
- package/dist/esm/state/EditableTable/CellValueState.js.map +1 -1
- package/dist/esm/state/EditableTable/ClipboardState.js +16 -15
- package/dist/esm/state/EditableTable/ClipboardState.js.map +1 -1
- package/dist/esm/state/EditableTable/EditableTableState.js +1 -1
- package/dist/esm/state/EditableTable/EditableTableState.js.map +1 -1
- package/dist/esm/state/EditableTable/MutationState.js +28 -7
- package/dist/esm/state/EditableTable/MutationState.js.map +1 -1
- package/dist/esm/state/FormPage/FormPageHeader.st.css.js +2 -2
- package/dist/esm/state/FormPage/FormPageHeader.st.css.js.map +1 -1
- package/dist/esm/styles.global.css +2 -2
- package/dist/esm/version.js +1 -1
- package/dist/examples/Table/mobile-columns.tsx +66 -98
- package/dist/types/components/CmsFieldManagement/CmsFieldModal.st.css.d.ts.map +1 -1
- package/dist/types/components/Collapse/Collapse.st.css.d.ts.map +1 -1
- package/dist/types/components/CollectionTable/CollectionTable.st.css.d.ts.map +1 -1
- package/dist/types/components/CollectionTable/CollectionTableWSRTable.st.css.d.ts.map +1 -1
- package/dist/types/components/CollectionToolbar/CollectionToolbar.st.css.d.ts.map +1 -1
- package/dist/types/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.d.ts.map +1 -1
- package/dist/types/components/EditableTable/HeaderActionsPopover.st.css.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/CellViewLayout.st.css.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/boolean/Edit.st.css.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/date/View.st.css.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/email/Edit.st.css.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/email/View.st.css.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/mediaImage/Edit.st.css.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/number/Edit.st.css.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/object/View.st.css.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/text/View.st.css.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/time/Edit.st.css.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/url/View.st.css.d.ts.map +1 -1
- package/dist/types/components/EntityPage/EntityPagePlain.st.css.d.ts.map +1 -1
- package/dist/types/components/EntityPageFields/EntityPageReferenceValue.st.css.d.ts.map +1 -1
- package/dist/types/components/Fade/Fade.st.css.d.ts.map +1 -1
- package/dist/types/components/Heading/Heading.st.css.d.ts.map +1 -1
- package/dist/types/components/ImportButton/ImportStepUpload.st.css.d.ts.map +1 -1
- package/dist/types/components/ImportButton/SchemaImportFieldEditor.d.ts.map +1 -1
- package/dist/types/components/InputOverflow/InputOverflow.st.css.d.ts.map +1 -1
- package/dist/types/components/LoadingRow/LoadingRow.st.css.d.ts.map +1 -1
- package/dist/types/components/MaxHeightText/MaxHeightText.st.css.d.ts.map +1 -1
- package/dist/types/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.d.ts.map +1 -1
- package/dist/types/components/NestedTable/NestedTableRow.st.css.d.ts.map +1 -1
- package/dist/types/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.d.ts.map +1 -1
- package/dist/types/components/PickerContent/PickerContentAdditionalStep.st.css.d.ts.map +1 -1
- package/dist/types/components/SchemaSource/schemaFieldActions.d.ts.map +1 -1
- package/dist/types/components/SchemaSource/schemaFieldManagement.d.ts.map +1 -1
- package/dist/types/components/SetupWidget/SetupWidget.st.css.d.ts.map +1 -1
- package/dist/types/components/Table/AddFieldColumnHeader.st.css.d.ts.map +1 -1
- package/dist/types/components/Table/NumberCell.st.css.d.ts.map +1 -1
- package/dist/types/components/ToolbarItem/ToolbarItem.st.css.d.ts.map +1 -1
- package/dist/types/state/CollectionPage/TitleBadges.st.css.d.ts.map +1 -1
- package/dist/types/state/EditableTable/CellValueState.d.ts +40 -6
- package/dist/types/state/EditableTable/CellValueState.d.ts.map +1 -1
- package/dist/types/state/EditableTable/ClipboardState.d.ts +1 -1
- package/dist/types/state/EditableTable/ClipboardState.d.ts.map +1 -1
- package/dist/types/state/EditableTable/MutationState.d.ts +18 -1
- package/dist/types/state/EditableTable/MutationState.d.ts.map +1 -1
- package/dist/types/state/FormPage/FormPageHeader.st.css.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/package.json +7 -7
- package/src/components/CardContainer/CardContainer.st.css.ts +2 -2
- package/src/components/CmsFieldManagement/CmsFieldForm.st.css.ts +2 -2
- package/src/components/CmsFieldManagement/CmsFieldModal.st.css.ts +2 -2
- package/src/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.ts +2 -2
- package/src/components/Collapse/Collapse.st.css.ts +2 -2
- package/src/components/CollectionPageNew/CollectionPage.st.css.ts +2 -2
- package/src/components/CollectionSectionHeader/CollectionSectionHeader.st.css.ts +2 -2
- package/src/components/CollectionTable/CollectionTable.st.css.ts +2 -2
- package/src/components/CollectionTable/CollectionTableWSRTable.st.css.ts +2 -2
- package/src/components/CollectionToolbar/CollectionToolbar.st.css.ts +2 -2
- package/src/components/CollectionToolbar/SearchOrCustomFilter.st.css.ts +2 -2
- package/src/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.ts +2 -2
- package/src/components/CollectionViewsDropdown/ViewsDropdown.st.css.ts +2 -2
- package/src/components/CustomFieldModal/CustomFieldFormPiiFields.st.css.ts +2 -2
- package/src/components/DragHandle/DragHandle.st.css.ts +2 -2
- package/src/components/EditableTable/EditableCell.st.css.ts +2 -2
- package/src/components/EditableTable/HeaderActionsPopover.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/CellViewLayout.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/JsonInputEdit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/address/Edit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/boolean/Edit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/boolean/View.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/color/Edit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/date/Edit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/date/View.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/datetime/Edit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/datetime/View.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/email/Edit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/email/View.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/mediaImage/Edit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/multiDocument/Edit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/number/Edit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/number/View.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/object/View.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/reference/EmptyReferenceView.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/select/Edit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/text/Edit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/text/View.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/time/Edit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/url/Edit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/url/View.st.css.ts +2 -2
- package/src/components/EmptyState/EmptyStateBase.st.css.ts +2 -2
- package/src/components/EntityPage/EntityPagePlain.st.css.ts +2 -2
- package/src/components/EntityPageFields/EntityPageField.st.css.ts +2 -2
- package/src/components/EntityPageFields/EntityPageReferenceValue.st.css.ts +2 -2
- package/src/components/Fade/Fade.st.css.ts +2 -2
- package/src/components/Heading/Heading.st.css.ts +2 -2
- package/src/components/ImportButton/ImportStepUpload.st.css.ts +2 -2
- package/src/components/ImportButton/SchemaImportFieldEditor.tsx +1 -20
- package/src/components/InputOverflow/InputOverflow.st.css.ts +2 -2
- package/src/components/LoadingRow/LoadingRow.st.css.ts +3 -3
- package/src/components/MaxHeightText/MaxHeightText.st.css.ts +2 -2
- package/src/components/MaxLines/MaxLines.st.css.ts +2 -2
- package/src/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.ts +2 -2
- package/src/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.ts +2 -2
- package/src/components/NestedTable/NestedTableRow.st.css.ts +2 -2
- package/src/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.ts +2 -2
- package/src/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.ts +2 -2
- package/src/components/PickerContent/PickerContent.st.css.ts +2 -2
- package/src/components/PickerContent/PickerContentAdditionalStep.st.css.ts +2 -2
- package/src/components/PickerTableListItem/PickerTableListItem.st.css.ts +2 -2
- package/src/components/SchemaSource/schemaFieldActions.ts +4 -1
- package/src/components/SchemaSource/schemaFieldManagement.ts +3 -1
- package/src/components/ScrollableContent/ScrollableContent.st.css.ts +2 -2
- package/src/components/SetupWidget/SetupWidget.st.css.ts +2 -2
- package/src/components/SkeletonCard/SkeletonCard.st.css.ts +2 -2
- package/src/components/SlidingModal/SlidingModal.st.css.ts +2 -2
- package/src/components/Table/AddFieldColumnHeader.st.css.ts +2 -2
- package/src/components/Table/NumberCell.st.css.ts +2 -2
- package/src/components/TabsFilter/TabsFilter.st.css.ts +2 -2
- package/src/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.ts +2 -2
- package/src/components/ToolbarItem/ToolbarItem.st.css.ts +2 -2
- package/src/components/ToolbarItemBox/ToolbarItemBox.st.css.ts +2 -2
- package/src/components/common.st.css.ts +2 -2
- package/src/state/CollectionPage/CollectionPageHeader.st.css.ts +2 -2
- package/src/state/CollectionPage/MobilePrimaryActionBar.st.css.ts +2 -2
- package/src/state/CollectionPage/TitleBadges.st.css.ts +2 -2
- package/src/state/EditableTable/CellValueState.ts +197 -8
- package/src/state/EditableTable/ClipboardState.ts +24 -22
- package/src/state/EditableTable/EditableTableState.ts +1 -1
- package/src/state/EditableTable/MutationState.ts +56 -7
- package/src/state/FormPage/FormPageHeader.st.css.ts +2 -2
- package/src/styles.global.css +2 -2
- package/src/version.ts +1 -1
|
@@ -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","_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
|
+
{"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","richChanges","rawChanges","keptSourceKeys","pasted","_pasteGrid","push","_cutSourceClears","length","applyPastedValues","collection","translate","count","bi","clipboardAction","actionName","isExternalSource","clipboardCellCounts","useRichValues","rows","split","filter","row","r","cols","c","offset","_copiedValues","has","dest","_toPosition","col","isColumnEditable","rowKey","columnId","sourceKey","_copiedSourceKeys","get","add","cellKey","_isSameCellType","value","rawValue","_copiedSerialized","destColumnId","source","parseCellKey","resolveCellTypeByColumnId","type","clears","key","pos","isCellCopied","getCopiedBorder","noBorder","isNeighborCopied","neighbor","top","bottom","left","right","cells","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 { richChanges, rawChanges, keptSourceKeys, pasted } = this._pasteGrid(\n rawData,\n targetPos,\n isInternal,\n );\n\n // Clearing the cut sources goes out in the same update as the paste, so\n // one Undo restores both sides.\n if (this.isCut && isInternal) {\n richChanges.push(...this._cutSourceClears(keptSourceKeys));\n }\n\n if (pasted.length > 0) {\n cellValue.applyPastedValues(\n richChanges,\n rawChanges,\n this._parent.collection.translate(\n 'cairo.editableTable.paste.success.toast',\n { count: pasted.length },\n ),\n );\n\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 ) {\n const { cellValue } = this._parent;\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 return { richChanges, rawChanges, 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 // The clear rule is checked again here because it can depend on row values\n // that changed since the cut.\n private _cutSourceClears(keptSourceKeys: Set<string>) {\n const { cellValue } = this._parent;\n const clears: { rowKey: string; columnId: string; value: undefined }[] = [];\n for (const key of this.copiedCells) {\n if (keptSourceKeys.has(key)) {\n continue;\n }\n const pos = parseCellKey(key);\n if (pos && !cellValue.getCellActionDisabledTooltip('clear', pos)) {\n clears.push({ ...pos, value: undefined });\n }\n }\n return clears;\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":[]}
|
|
@@ -225,7 +225,7 @@ class EditableTableState {
|
|
|
225
225
|
});
|
|
226
226
|
return () => {
|
|
227
227
|
disposeValidation();
|
|
228
|
-
this.cellValue.
|
|
228
|
+
this.cellValue.flushDraftsOnUnmount();
|
|
229
229
|
disposeMutation();
|
|
230
230
|
onBeforeUnloadSubscription == null || onBeforeUnloadSubscription.remove();
|
|
231
231
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_mobx","require","_bexCore","_ToolbarCollectionState","_TableState","_CellInteractionState","_CellValueState","_ClipboardState","_MutationState","_EditableTableStateBIReporter","_buildEditableFieldColumns","TableStateWithDraftRows","TableState","constructor","params","mergeDraftRows","_defineProperty2","default","_mergeDraftRows","keyedItems","collection","result","showEmptyState","toolbar","multi","length","EditableTableState","_params$extraCellType","ConditionalModalState","undefined","items","tableState","onAddItemActionComplete","origin","toolbarBIReporter","onAddItemClick","columnId","forceDirection","multiple","sort","id","clearResult","ToolbarCollectionState","container","componentType","mutation","bi","EditableTableStateBIReporter","cellValue","CellValueState","Map","extraCellTypes","map","ct","type","cellInteraction","CellInteractionState","editingValue","cell","commitHandler","clipboard","ClipboardState","MutationState","mutations","createOptimisticActions","makeObservable","addItemDisabled","observable","isCreateItemDisabled","ref","updateItemDisabled","removeItemDisabled","multiDeleteDisabled","isRemoveItemDisabled","setPermissions","action","_providedColumns","editableColumns","computed","sourceColumns","allColumns","_columnMap","init","confirmDeleteItems","permissions","isRowDeleteDisabled","rowKey","keyed","_getKeyedItem","item","disabled","rowDeleteDisabledReason","reason","isAddItemDisabled","_this$isCreateItemDis","call","addItemDisabledReason","_this$isCreateItemDis2","isMultiDeleteDisabled","rowKeys","some","key","visibleColumns","itemsToRenderCount","source","collectionFieldsSource","initTask","status","isSuccess","buildEditableFieldColumns","fieldsSource","translate","editableCellFor","c","getKeyedItem","find","ki","_toIndices","pos","row","findIndex","col","_toPosition","visibleIds","filter","columns","disposeMutation","disposeValidation","reaction","revalidatePendingCells","onBeforeUnload","onBeforeUnloadSubscription","event","_pendingCells","size","preventDefault","flushDrafts","remove","addItem","afterItemKey","duplicateItem","deleteItems","deletableRowKeys","t","reportCta","ctaName","deleteModalCtaClicked","deleteModalShown","deleteConfirmModal","open","theme","title","content","primaryButtonText","secondaryButtonText","primaryButtonOnClick","secondaryButtonOnClick","onCloseButtonClick","resolveCellTypeByColumnId","getCellDisplayValue","getCellValidation","committed","valid","isCellEditing","validateEditingValue","isCellEditable","canEditCell","isColumnEditable","clearCells","cells","cleared","clipboardAction","actionName","clipboardCellCounts","handleCellClick","shiftKey","isEditing","commitEdit","get","res","editOnClick","val","focusCell","startEdit","column","resolved","toggleValue","showEditWhenFocused","value","selectionAnchor","selectRange","handleCellDoubleClick","exports"],"sources":["../../../../src/state/EditableTable/EditableTableState.ts"],"sourcesContent":["import { action, computed, makeObservable, observable, reaction } from 'mobx';\nimport {\n CollectionOptimisticActions,\n CollectionState,\n ConditionalModalState,\n FiltersMap,\n SortOrder,\n WixPatternsContainer,\n} from '@wix/bex-core';\nimport type { ReactNode } from 'react';\nimport type { MessageModalLayoutProps } from '@wix/design-system';\nimport type {\n CreateItemDisabledResult,\n KeyedItem,\n RemoveItemDisabledResult,\n} from '@wix/bex-core';\nimport { ToolbarCollectionState } from '../ToolbarCollectionState';\nimport { TableState } from '../TableState';\nimport type { TableStateParams } from '../TableState';\nimport { ICollectionComponentState } from '../ICollectionComponentState';\nimport { CellInteractionState } from './CellInteractionState';\nimport { CellValueState } from './CellValueState';\nimport { ClipboardState } from './ClipboardState';\nimport { MutationState } from './MutationState';\nimport type { EditableTableMutationHandlers } from './MutationState';\nimport {\n clipboardCellCounts,\n EditableTableStateBIReporter,\n type ClipboardOrigin,\n type DeleteModalCta,\n type RowCreationOrigin,\n} from './EditableTableStateBIReporter';\nimport type { Cell, CellType, EditableColumn, ValidationResult } from './types';\nimport { buildEditableFieldColumns } from '../buildEditableFieldColumns';\n\nexport type {\n CreateItemDisabledResult,\n RemoveItemDisabledResult,\n} from '@wix/bex-core';\n\nexport interface EditableTablePermissions<T = unknown> {\n addItemDisabled?: boolean;\n isCreateItemDisabled?: () => CreateItemDisabledResult;\n updateItemDisabled?: boolean;\n removeItemDisabled?: boolean;\n /** Deleting several rows in one operation. Absent = follows `removeItemDisabled`. */\n multiDeleteDisabled?: boolean;\n /** Per-item refinement of `removeItemDisabled`: disables deleting an item\n * even though deleting is generally allowed, optionally with a reason.\n * Must be pure and synchronous. Absent = all items deletable. */\n isRemoveItemDisabled?: (item: T) => RemoveItemDisabledResult;\n}\n\nexport interface EditableTableStateParams<T, F extends FiltersMap> {\n readonly collection: CollectionState<T, F>;\n readonly container: WixPatternsContainer;\n readonly toolbar?: ToolbarCollectionState<T, F>;\n readonly permissions?: EditableTablePermissions<T>;\n readonly mutations: EditableTableMutationHandlers<T>;\n readonly createOptimisticActions: (\n collection: CollectionState<T, F>,\n ) => CollectionOptimisticActions<T, F>;\n /**\n * Additional cell types to register alongside the built-in ones.\n * Augment `CellTypeConfigMap` to use these types on `EditableColumn.cellType`.\n */\n readonly extraCellTypes?: CellType[];\n}\n\nexport interface EditableTableStatePublicAPI<T, F extends FiltersMap> {\n /** Underlying CollectionState instance */\n readonly collection: CollectionState<T, F>;\n /** Underlying ToolbarCollectionState instance */\n readonly toolbar: ToolbarCollectionState<T, F>;\n /** Reset active filters & sorting and adds new items to the collection */\n onAddItemActionComplete(items: T[]): void;\n /** Sort by column */\n sort: (\n columnId: string,\n params?: { forceDirection?: SortOrder; multiple?: boolean },\n ) => void;\n /** Replace all permission flags and the per-item delete predicate */\n setPermissions(permissions: EditableTablePermissions<T>): void;\n /** Whether deleting the given row is disabled (user-level or per-item) */\n isRowDeleteDisabled(rowKey: string): boolean;\n /** The reason the given row cannot be deleted, when the per-item predicate\n * returned one. `undefined` when the row is deletable or no reason was given. */\n rowDeleteDisabledReason(rowKey: string): string | undefined;\n /** Whether deleting the given rows in one operation is disabled */\n isMultiDeleteDisabled(rowKeys: string[]): boolean;\n isAddItemDisabled(): boolean;\n addItemDisabledReason(): ReactNode | undefined;\n}\n\n/**\n * Draft rows (added locally, not yet created on the server) are not part of\n * the collection result. This TableState merges them into the rendered list,\n * so everything that renders rows — the WDS table and the virtualizer — sees\n * them, and a table whose only rows are drafts does not show the empty state.\n */\nclass TableStateWithDraftRows<T, F extends FiltersMap> extends TableState<\n T,\n F\n> {\n private readonly _mergeDraftRows: (items: KeyedItem<T>[]) => KeyedItem<T>[];\n\n constructor(\n params: TableStateParams<T, F>,\n mergeDraftRows: (items: KeyedItem<T>[]) => KeyedItem<T>[],\n ) {\n super(params);\n this._mergeDraftRows = mergeDraftRows;\n }\n\n get keyedItems() {\n return this._mergeDraftRows(this.collection.result.keyedItems);\n }\n\n get showEmptyState() {\n return this.toolbar.multi.showEmptyState && this.keyedItems.length === 0;\n }\n}\n\nexport class EditableTableState<T, F extends FiltersMap>\n implements ICollectionComponentState, EditableTableStatePublicAPI<T, F>\n{\n readonly toolbar: ToolbarCollectionState<T, F>;\n readonly tableState: TableState<T, F>;\n\n readonly cellInteraction: CellInteractionState<T, F>;\n readonly cellValue: CellValueState<T, F>;\n readonly clipboard: ClipboardState<T, F>;\n readonly mutation: MutationState<T, F>;\n readonly bi: EditableTableStateBIReporter<T, F>;\n readonly deleteConfirmModal = new ConditionalModalState<\n Partial<MessageModalLayoutProps>\n >();\n\n addItemDisabled = false;\n isCreateItemDisabled?: () => CreateItemDisabledResult = undefined;\n updateItemDisabled = false;\n removeItemDisabled = false;\n multiDeleteDisabled = false;\n // Needs an explicit initializer: a declaration-only field is erased at\n // compile time, and makeObservable throws on a property that doesn't exist.\n isRemoveItemDisabled?: (item: T) => RemoveItemDisabledResult = undefined;\n\n _providedColumns: EditableColumn<T>[] = [];\n\n constructor(params: EditableTableStateParams<T, F>) {\n this.toolbar =\n params.toolbar ??\n new ToolbarCollectionState({\n collection: params.collection,\n container: params.container,\n componentType: 'EditableTable',\n });\n\n this.tableState = new TableStateWithDraftRows(\n {\n collection: params.collection,\n container: params.container,\n toolbar: this.toolbar,\n },\n (keyedItems) => this.mutation._mergeDraftRows(keyedItems),\n );\n\n this.bi = new EditableTableStateBIReporter<T, F>(this);\n\n this.cellValue = new CellValueState<T, F>(\n this,\n new Map(params.extraCellTypes?.map((ct) => [ct.type, ct])),\n );\n\n this.cellInteraction = new CellInteractionState<T, F>(\n (editingValue, cell) => {\n this.cellValue.commitHandler(editingValue, cell);\n },\n this,\n );\n this.clipboard = new ClipboardState<T, F>(this);\n this.mutation = new MutationState<T, F>(\n this,\n params.mutations,\n params.createOptimisticActions,\n );\n makeObservable(this, {\n addItemDisabled: observable,\n isCreateItemDisabled: observable.ref,\n updateItemDisabled: observable,\n removeItemDisabled: observable,\n multiDeleteDisabled: observable,\n isRemoveItemDisabled: observable.ref,\n setPermissions: action,\n _providedColumns: observable.ref,\n editableColumns: computed,\n sourceColumns: computed,\n allColumns: computed,\n _columnMap: computed,\n init: action,\n confirmDeleteItems: action,\n });\n\n this.setPermissions(params.permissions ?? {});\n }\n\n setPermissions(permissions: EditableTablePermissions<T>) {\n this.addItemDisabled = permissions.addItemDisabled ?? false;\n this.isCreateItemDisabled = permissions.isCreateItemDisabled;\n this.updateItemDisabled = permissions.updateItemDisabled ?? false;\n this.removeItemDisabled = permissions.removeItemDisabled ?? false;\n this.multiDeleteDisabled =\n permissions.multiDeleteDisabled ?? this.removeItemDisabled;\n this.isRemoveItemDisabled = permissions.isRemoveItemDisabled;\n }\n\n isRowDeleteDisabled(rowKey: string): boolean {\n if (this.removeItemDisabled) {\n return true;\n }\n if (!this.isRemoveItemDisabled) {\n return false;\n }\n const keyed = this._getKeyedItem(rowKey);\n return keyed ? this.isRemoveItemDisabled(keyed.item).disabled : false;\n }\n\n rowDeleteDisabledReason(rowKey: string): string | undefined {\n if (!this.isRemoveItemDisabled) {\n return undefined;\n }\n const keyed = this._getKeyedItem(rowKey);\n const result = keyed ? this.isRemoveItemDisabled(keyed.item) : undefined;\n return result?.disabled ? result.reason : undefined;\n }\n\n isAddItemDisabled(): boolean {\n return this.addItemDisabled || !!this.isCreateItemDisabled?.().disabled;\n }\n\n addItemDisabledReason(): ReactNode | undefined {\n if (this.addItemDisabled) {\n return undefined;\n }\n const result = this.isCreateItemDisabled?.();\n return result?.disabled ? result.reason : undefined;\n }\n\n isMultiDeleteDisabled(rowKeys: string[]): boolean {\n if (this.multiDeleteDisabled) {\n return true;\n }\n return rowKeys.some((key) => this.isRowDeleteDisabled(key));\n }\n\n get collection() {\n return this.tableState.collection;\n }\n\n get keyedItems() {\n return this.tableState.keyedItems;\n }\n\n get visibleColumns() {\n return this.tableState.visibleColumns;\n }\n\n get itemsToRenderCount() {\n return this.tableState.itemsToRenderCount;\n }\n\n /** Editable columns built from the wired fields source, once it loads. */\n get sourceColumns(): EditableColumn<T>[] {\n const source = this.toolbar.collectionFieldsSource;\n if (!source || !source.initTask.status.isSuccess) {\n return [];\n }\n return buildEditableFieldColumns(\n source.fieldsSource,\n this.collection.translate,\n source.editableCellFor,\n ) as EditableColumn<T>[];\n }\n\n /**\n * Consumer columns plus the columns built from the fields source, merged the\n * same way the toolbar merges its columns (ToolbarCollectionState.columns).\n * Consumer and source columns are expected to be disjoint by id.\n */\n get allColumns(): EditableColumn<T>[] {\n return [...this._providedColumns, ...this.sourceColumns];\n }\n\n get _columnMap(): Map<string, EditableColumn<T>> {\n return new Map(this.allColumns.map((c) => [c.id, c]));\n }\n\n _getKeyedItem(key: string): KeyedItem<T> | undefined | null {\n // Draft rows are not in the collection — fall back to the merged list.\n return (\n this.collection.getKeyedItem(key) ??\n this.keyedItems.find((ki) => ki.key === key)\n );\n }\n\n _toIndices(pos: Cell): { row: number; col: number } | null {\n const row = this.keyedItems.findIndex((ki) => ki.key === pos.rowKey);\n const col = this.editableColumns.findIndex((c) => c.id === pos.columnId);\n return row === -1 || col === -1 ? null : { row, col };\n }\n\n _toPosition(row: number, col: number): Cell | null {\n const ki = this.keyedItems[row];\n const c = this.editableColumns[col];\n return ki && c ? { rowKey: ki.key, columnId: c.id } : null;\n }\n\n onAddItemActionComplete = (items: T[]) => {\n return this.tableState.onAddItemActionComplete(items);\n };\n\n onAddItemClick = (origin?: string) => {\n this.toolbar.toolbarBIReporter.onAddItemClick(origin);\n };\n\n get editableColumns(): EditableColumn<T>[] {\n const visibleIds = this.visibleColumns.map((c) => c.id);\n if (!visibleIds.length) {\n return this.allColumns;\n }\n return visibleIds\n .map((id) => this.allColumns.find((c) => c.id === id))\n .filter((c): c is EditableColumn<T> => c !== undefined);\n }\n\n init(columns: EditableColumn<T>[]) {\n this._providedColumns = columns;\n const disposeMutation = this.mutation.init();\n const disposeValidation = reaction(\n () => this.allColumns,\n () => this.cellValue.revalidatePendingCells(),\n );\n\n const { onBeforeUnload } = this.toolbar.container;\n const onBeforeUnloadSubscription = onBeforeUnload?.((event) => {\n if (this.cellValue._pendingCells.size === 0) {\n return;\n }\n event.preventDefault();\n });\n\n return () => {\n disposeValidation();\n this.cellValue.flushDrafts();\n disposeMutation();\n onBeforeUnloadSubscription?.remove();\n };\n }\n\n addItem(afterItemKey?: string, origin?: RowCreationOrigin): string {\n return this.mutation.addItem(afterItemKey, origin);\n }\n\n duplicateItem(rowKey: string) {\n this.mutation.duplicateItem(rowKey);\n }\n\n deleteItems(rowKeys: string[]) {\n this.mutation.deleteItems(rowKeys);\n }\n\n confirmDeleteItems(rowKeys: string[]) {\n // The context menu disables blocked deletes; this filter is the barrier\n // for callers that bypass the UI gate.\n const deletableRowKeys = rowKeys.filter(\n (key) => !this.isRowDeleteDisabled(key),\n );\n if (!deletableRowKeys.length) {\n return;\n }\n const { translate: t } = this.collection;\n const reportCta = (ctaName: DeleteModalCta) =>\n this.bi.deleteModalCtaClicked({ ctaName, rowKeys: deletableRowKeys });\n this.bi.deleteModalShown(deletableRowKeys);\n this.deleteConfirmModal.open({\n theme: 'destructive',\n title: t('cairo.deleteModal.title'),\n content: t('cairo.deleteModal.body'),\n primaryButtonText: t('cairo.delete.button'),\n secondaryButtonText: t('cairo.cancel.button'),\n primaryButtonOnClick: () => {\n reportCta('Delete');\n this.deleteItems(deletableRowKeys);\n },\n secondaryButtonOnClick: () => reportCta('Cancel'),\n onCloseButtonClick: () => reportCta('X'),\n });\n }\n\n resolveCellTypeByColumnId(columnId: string) {\n return this.cellValue.resolveCellTypeByColumnId(columnId);\n }\n\n getCellDisplayValue(rowKey: string, columnId: string): any {\n return this.cellValue.getCellDisplayValue(rowKey, columnId);\n }\n\n getCellValidation(rowKey: string, columnId: string): ValidationResult {\n const committed = this.cellValue.getCellValidation(rowKey, columnId);\n\n if (\n committed.valid ||\n !this.cellInteraction.isCellEditing(rowKey, columnId) ||\n this.cellInteraction.editingValue === undefined\n ) {\n return committed;\n }\n return this.cellValue.validateEditingValue(\n columnId,\n this.cellInteraction.editingValue,\n );\n }\n\n isCellEditable(rowKey: string, columnId: string): boolean {\n return this.cellValue.isCellEditable(rowKey, columnId);\n }\n\n /** `isCellEditable` does not include the table-level `updateItemDisabled`\n * permission. Use this to decide whether the user can edit the cell now. */\n canEditCell(rowKey: string, columnId: string): boolean {\n return !this.updateItemDisabled && this.isCellEditable(rowKey, columnId);\n }\n\n isColumnEditable(rowKey: string, columnId: string): boolean {\n return this.cellValue.isColumnEditable(rowKey, columnId);\n }\n\n clearCells(cells: Cell[], origin: ClipboardOrigin = 'Keyboard') {\n const cleared = this.cellValue.clearCells(cells);\n if (cleared.length === 0) {\n return;\n }\n this.bi.clipboardAction({\n actionName: 'clear',\n origin,\n ...clipboardCellCounts(cleared),\n });\n }\n\n handleCellClick(rowKey: string, columnId: string, shiftKey: boolean) {\n if (this.cellInteraction.isEditing) {\n if (this.cellInteraction.isCellEditing(rowKey, columnId)) {\n // Click landed inside the active editor — let the editor handle it.\n return;\n }\n // Shift-click while editing: ignore — extending a range selection during\n // an active edit is not a meaningful action.\n if (shiftKey) {\n return;\n }\n // Plain click on a different cell: commit the edit and move focus.\n this.cellInteraction.commitEdit();\n\n // If the target cell wants edit-on-click, enter edit directly.\n const col = this._columnMap.get(columnId);\n const res = col ? this.resolveCellTypeByColumnId(col.id) : null;\n if (res?.editOnClick) {\n const val = this.getCellDisplayValue(rowKey, columnId);\n if (res.editOnClick(val) && this.canEditCell(rowKey, columnId)) {\n this.cellInteraction.focusCell(rowKey, columnId);\n this.cellInteraction.startEdit(rowKey, columnId, 'click');\n return;\n }\n }\n\n this.cellInteraction.focusCell(rowKey, columnId);\n return;\n }\n\n const column = this._columnMap.get(columnId);\n const resolved = column ? this.resolveCellTypeByColumnId(column.id) : null;\n if (resolved?.toggleValue || resolved?.showEditWhenFocused) {\n // Toggle/showEditWhenFocused cells: click focuses the cell and shows the\n // EditComponent affordance. Keyboard navigation remains active.\n this.cellInteraction.focusCell(rowKey, columnId);\n return;\n }\n\n if (resolved?.editOnClick) {\n const value = this.getCellDisplayValue(rowKey, columnId);\n if (resolved.editOnClick(value) && this.canEditCell(rowKey, columnId)) {\n this.cellInteraction.focusCell(rowKey, columnId);\n this.cellInteraction.startEdit(rowKey, columnId, 'click');\n return;\n }\n }\n\n if (shiftKey && this.cellInteraction.selectionAnchor) {\n this.cellInteraction.selectRange(this.cellInteraction.selectionAnchor, {\n rowKey,\n columnId,\n });\n } else {\n this.cellInteraction.focusCell(rowKey, columnId);\n }\n }\n\n handleCellDoubleClick(rowKey: string, columnId: string) {\n const column = this._columnMap.get(columnId);\n const resolved = column ? this.resolveCellTypeByColumnId(column.id) : null;\n // Toggle-value cells (e.g. boolean) activate on single click, not double-click.\n // Entering edit mode on double-click would apply the editing box-shadow\n // without any EditComponent being shown, causing a visual border glitch.\n if (resolved?.toggleValue || resolved?.showEditWhenFocused) {\n return;\n }\n // A second double-click in an editor that is already open is not a new edit.\n if (this.cellInteraction.isCellEditing(rowKey, columnId)) {\n return;\n }\n if (this.canEditCell(rowKey, columnId)) {\n this.cellInteraction.startEdit(rowKey, columnId, 'doubleClick');\n }\n }\n\n sort = (\n columnId: string,\n {\n forceDirection,\n multiple,\n }: { forceDirection?: SortOrder; multiple?: boolean } = {},\n ) => {\n this.collection.sort(\n { id: columnId },\n { forceDirection, clearResult: true, multiple },\n );\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_mobx","require","_bexCore","_ToolbarCollectionState","_TableState","_CellInteractionState","_CellValueState","_ClipboardState","_MutationState","_EditableTableStateBIReporter","_buildEditableFieldColumns","TableStateWithDraftRows","TableState","constructor","params","mergeDraftRows","_defineProperty2","default","_mergeDraftRows","keyedItems","collection","result","showEmptyState","toolbar","multi","length","EditableTableState","_params$extraCellType","ConditionalModalState","undefined","items","tableState","onAddItemActionComplete","origin","toolbarBIReporter","onAddItemClick","columnId","forceDirection","multiple","sort","id","clearResult","ToolbarCollectionState","container","componentType","mutation","bi","EditableTableStateBIReporter","cellValue","CellValueState","Map","extraCellTypes","map","ct","type","cellInteraction","CellInteractionState","editingValue","cell","commitHandler","clipboard","ClipboardState","MutationState","mutations","createOptimisticActions","makeObservable","addItemDisabled","observable","isCreateItemDisabled","ref","updateItemDisabled","removeItemDisabled","multiDeleteDisabled","isRemoveItemDisabled","setPermissions","action","_providedColumns","editableColumns","computed","sourceColumns","allColumns","_columnMap","init","confirmDeleteItems","permissions","isRowDeleteDisabled","rowKey","keyed","_getKeyedItem","item","disabled","rowDeleteDisabledReason","reason","isAddItemDisabled","_this$isCreateItemDis","call","addItemDisabledReason","_this$isCreateItemDis2","isMultiDeleteDisabled","rowKeys","some","key","visibleColumns","itemsToRenderCount","source","collectionFieldsSource","initTask","status","isSuccess","buildEditableFieldColumns","fieldsSource","translate","editableCellFor","c","getKeyedItem","find","ki","_toIndices","pos","row","findIndex","col","_toPosition","visibleIds","filter","columns","disposeMutation","disposeValidation","reaction","revalidatePendingCells","onBeforeUnload","onBeforeUnloadSubscription","event","_pendingCells","size","preventDefault","flushDraftsOnUnmount","remove","addItem","afterItemKey","duplicateItem","deleteItems","deletableRowKeys","t","reportCta","ctaName","deleteModalCtaClicked","deleteModalShown","deleteConfirmModal","open","theme","title","content","primaryButtonText","secondaryButtonText","primaryButtonOnClick","secondaryButtonOnClick","onCloseButtonClick","resolveCellTypeByColumnId","getCellDisplayValue","getCellValidation","committed","valid","isCellEditing","validateEditingValue","isCellEditable","canEditCell","isColumnEditable","clearCells","cells","cleared","clipboardAction","actionName","clipboardCellCounts","handleCellClick","shiftKey","isEditing","commitEdit","get","res","editOnClick","val","focusCell","startEdit","column","resolved","toggleValue","showEditWhenFocused","value","selectionAnchor","selectRange","handleCellDoubleClick","exports"],"sources":["../../../../src/state/EditableTable/EditableTableState.ts"],"sourcesContent":["import { action, computed, makeObservable, observable, reaction } from 'mobx';\nimport {\n CollectionOptimisticActions,\n CollectionState,\n ConditionalModalState,\n FiltersMap,\n SortOrder,\n WixPatternsContainer,\n} from '@wix/bex-core';\nimport type { ReactNode } from 'react';\nimport type { MessageModalLayoutProps } from '@wix/design-system';\nimport type {\n CreateItemDisabledResult,\n KeyedItem,\n RemoveItemDisabledResult,\n} from '@wix/bex-core';\nimport { ToolbarCollectionState } from '../ToolbarCollectionState';\nimport { TableState } from '../TableState';\nimport type { TableStateParams } from '../TableState';\nimport { ICollectionComponentState } from '../ICollectionComponentState';\nimport { CellInteractionState } from './CellInteractionState';\nimport { CellValueState } from './CellValueState';\nimport { ClipboardState } from './ClipboardState';\nimport { MutationState } from './MutationState';\nimport type { EditableTableMutationHandlers } from './MutationState';\nimport {\n clipboardCellCounts,\n EditableTableStateBIReporter,\n type ClipboardOrigin,\n type DeleteModalCta,\n type RowCreationOrigin,\n} from './EditableTableStateBIReporter';\nimport type { Cell, CellType, EditableColumn, ValidationResult } from './types';\nimport { buildEditableFieldColumns } from '../buildEditableFieldColumns';\n\nexport type {\n CreateItemDisabledResult,\n RemoveItemDisabledResult,\n} from '@wix/bex-core';\n\nexport interface EditableTablePermissions<T = unknown> {\n addItemDisabled?: boolean;\n isCreateItemDisabled?: () => CreateItemDisabledResult;\n updateItemDisabled?: boolean;\n removeItemDisabled?: boolean;\n /** Deleting several rows in one operation. Absent = follows `removeItemDisabled`. */\n multiDeleteDisabled?: boolean;\n /** Per-item refinement of `removeItemDisabled`: disables deleting an item\n * even though deleting is generally allowed, optionally with a reason.\n * Must be pure and synchronous. Absent = all items deletable. */\n isRemoveItemDisabled?: (item: T) => RemoveItemDisabledResult;\n}\n\nexport interface EditableTableStateParams<T, F extends FiltersMap> {\n readonly collection: CollectionState<T, F>;\n readonly container: WixPatternsContainer;\n readonly toolbar?: ToolbarCollectionState<T, F>;\n readonly permissions?: EditableTablePermissions<T>;\n readonly mutations: EditableTableMutationHandlers<T>;\n readonly createOptimisticActions: (\n collection: CollectionState<T, F>,\n ) => CollectionOptimisticActions<T, F>;\n /**\n * Additional cell types to register alongside the built-in ones.\n * Augment `CellTypeConfigMap` to use these types on `EditableColumn.cellType`.\n */\n readonly extraCellTypes?: CellType[];\n}\n\nexport interface EditableTableStatePublicAPI<T, F extends FiltersMap> {\n /** Underlying CollectionState instance */\n readonly collection: CollectionState<T, F>;\n /** Underlying ToolbarCollectionState instance */\n readonly toolbar: ToolbarCollectionState<T, F>;\n /** Reset active filters & sorting and adds new items to the collection */\n onAddItemActionComplete(items: T[]): void;\n /** Sort by column */\n sort: (\n columnId: string,\n params?: { forceDirection?: SortOrder; multiple?: boolean },\n ) => void;\n /** Replace all permission flags and the per-item delete predicate */\n setPermissions(permissions: EditableTablePermissions<T>): void;\n /** Whether deleting the given row is disabled (user-level or per-item) */\n isRowDeleteDisabled(rowKey: string): boolean;\n /** The reason the given row cannot be deleted, when the per-item predicate\n * returned one. `undefined` when the row is deletable or no reason was given. */\n rowDeleteDisabledReason(rowKey: string): string | undefined;\n /** Whether deleting the given rows in one operation is disabled */\n isMultiDeleteDisabled(rowKeys: string[]): boolean;\n isAddItemDisabled(): boolean;\n addItemDisabledReason(): ReactNode | undefined;\n}\n\n/**\n * Draft rows (added locally, not yet created on the server) are not part of\n * the collection result. This TableState merges them into the rendered list,\n * so everything that renders rows — the WDS table and the virtualizer — sees\n * them, and a table whose only rows are drafts does not show the empty state.\n */\nclass TableStateWithDraftRows<T, F extends FiltersMap> extends TableState<\n T,\n F\n> {\n private readonly _mergeDraftRows: (items: KeyedItem<T>[]) => KeyedItem<T>[];\n\n constructor(\n params: TableStateParams<T, F>,\n mergeDraftRows: (items: KeyedItem<T>[]) => KeyedItem<T>[],\n ) {\n super(params);\n this._mergeDraftRows = mergeDraftRows;\n }\n\n get keyedItems() {\n return this._mergeDraftRows(this.collection.result.keyedItems);\n }\n\n get showEmptyState() {\n return this.toolbar.multi.showEmptyState && this.keyedItems.length === 0;\n }\n}\n\nexport class EditableTableState<T, F extends FiltersMap>\n implements ICollectionComponentState, EditableTableStatePublicAPI<T, F>\n{\n readonly toolbar: ToolbarCollectionState<T, F>;\n readonly tableState: TableState<T, F>;\n\n readonly cellInteraction: CellInteractionState<T, F>;\n readonly cellValue: CellValueState<T, F>;\n readonly clipboard: ClipboardState<T, F>;\n readonly mutation: MutationState<T, F>;\n readonly bi: EditableTableStateBIReporter<T, F>;\n readonly deleteConfirmModal = new ConditionalModalState<\n Partial<MessageModalLayoutProps>\n >();\n\n addItemDisabled = false;\n isCreateItemDisabled?: () => CreateItemDisabledResult = undefined;\n updateItemDisabled = false;\n removeItemDisabled = false;\n multiDeleteDisabled = false;\n // Needs an explicit initializer: a declaration-only field is erased at\n // compile time, and makeObservable throws on a property that doesn't exist.\n isRemoveItemDisabled?: (item: T) => RemoveItemDisabledResult = undefined;\n\n _providedColumns: EditableColumn<T>[] = [];\n\n constructor(params: EditableTableStateParams<T, F>) {\n this.toolbar =\n params.toolbar ??\n new ToolbarCollectionState({\n collection: params.collection,\n container: params.container,\n componentType: 'EditableTable',\n });\n\n this.tableState = new TableStateWithDraftRows(\n {\n collection: params.collection,\n container: params.container,\n toolbar: this.toolbar,\n },\n (keyedItems) => this.mutation._mergeDraftRows(keyedItems),\n );\n\n this.bi = new EditableTableStateBIReporter<T, F>(this);\n\n this.cellValue = new CellValueState<T, F>(\n this,\n new Map(params.extraCellTypes?.map((ct) => [ct.type, ct])),\n );\n\n this.cellInteraction = new CellInteractionState<T, F>(\n (editingValue, cell) => {\n this.cellValue.commitHandler(editingValue, cell);\n },\n this,\n );\n this.clipboard = new ClipboardState<T, F>(this);\n this.mutation = new MutationState<T, F>(\n this,\n params.mutations,\n params.createOptimisticActions,\n );\n makeObservable(this, {\n addItemDisabled: observable,\n isCreateItemDisabled: observable.ref,\n updateItemDisabled: observable,\n removeItemDisabled: observable,\n multiDeleteDisabled: observable,\n isRemoveItemDisabled: observable.ref,\n setPermissions: action,\n _providedColumns: observable.ref,\n editableColumns: computed,\n sourceColumns: computed,\n allColumns: computed,\n _columnMap: computed,\n init: action,\n confirmDeleteItems: action,\n });\n\n this.setPermissions(params.permissions ?? {});\n }\n\n setPermissions(permissions: EditableTablePermissions<T>) {\n this.addItemDisabled = permissions.addItemDisabled ?? false;\n this.isCreateItemDisabled = permissions.isCreateItemDisabled;\n this.updateItemDisabled = permissions.updateItemDisabled ?? false;\n this.removeItemDisabled = permissions.removeItemDisabled ?? false;\n this.multiDeleteDisabled =\n permissions.multiDeleteDisabled ?? this.removeItemDisabled;\n this.isRemoveItemDisabled = permissions.isRemoveItemDisabled;\n }\n\n isRowDeleteDisabled(rowKey: string): boolean {\n if (this.removeItemDisabled) {\n return true;\n }\n if (!this.isRemoveItemDisabled) {\n return false;\n }\n const keyed = this._getKeyedItem(rowKey);\n return keyed ? this.isRemoveItemDisabled(keyed.item).disabled : false;\n }\n\n rowDeleteDisabledReason(rowKey: string): string | undefined {\n if (!this.isRemoveItemDisabled) {\n return undefined;\n }\n const keyed = this._getKeyedItem(rowKey);\n const result = keyed ? this.isRemoveItemDisabled(keyed.item) : undefined;\n return result?.disabled ? result.reason : undefined;\n }\n\n isAddItemDisabled(): boolean {\n return this.addItemDisabled || !!this.isCreateItemDisabled?.().disabled;\n }\n\n addItemDisabledReason(): ReactNode | undefined {\n if (this.addItemDisabled) {\n return undefined;\n }\n const result = this.isCreateItemDisabled?.();\n return result?.disabled ? result.reason : undefined;\n }\n\n isMultiDeleteDisabled(rowKeys: string[]): boolean {\n if (this.multiDeleteDisabled) {\n return true;\n }\n return rowKeys.some((key) => this.isRowDeleteDisabled(key));\n }\n\n get collection() {\n return this.tableState.collection;\n }\n\n get keyedItems() {\n return this.tableState.keyedItems;\n }\n\n get visibleColumns() {\n return this.tableState.visibleColumns;\n }\n\n get itemsToRenderCount() {\n return this.tableState.itemsToRenderCount;\n }\n\n /** Editable columns built from the wired fields source, once it loads. */\n get sourceColumns(): EditableColumn<T>[] {\n const source = this.toolbar.collectionFieldsSource;\n if (!source || !source.initTask.status.isSuccess) {\n return [];\n }\n return buildEditableFieldColumns(\n source.fieldsSource,\n this.collection.translate,\n source.editableCellFor,\n ) as EditableColumn<T>[];\n }\n\n /**\n * Consumer columns plus the columns built from the fields source, merged the\n * same way the toolbar merges its columns (ToolbarCollectionState.columns).\n * Consumer and source columns are expected to be disjoint by id.\n */\n get allColumns(): EditableColumn<T>[] {\n return [...this._providedColumns, ...this.sourceColumns];\n }\n\n get _columnMap(): Map<string, EditableColumn<T>> {\n return new Map(this.allColumns.map((c) => [c.id, c]));\n }\n\n _getKeyedItem(key: string): KeyedItem<T> | undefined | null {\n // Draft rows are not in the collection — fall back to the merged list.\n return (\n this.collection.getKeyedItem(key) ??\n this.keyedItems.find((ki) => ki.key === key)\n );\n }\n\n _toIndices(pos: Cell): { row: number; col: number } | null {\n const row = this.keyedItems.findIndex((ki) => ki.key === pos.rowKey);\n const col = this.editableColumns.findIndex((c) => c.id === pos.columnId);\n return row === -1 || col === -1 ? null : { row, col };\n }\n\n _toPosition(row: number, col: number): Cell | null {\n const ki = this.keyedItems[row];\n const c = this.editableColumns[col];\n return ki && c ? { rowKey: ki.key, columnId: c.id } : null;\n }\n\n onAddItemActionComplete = (items: T[]) => {\n return this.tableState.onAddItemActionComplete(items);\n };\n\n onAddItemClick = (origin?: string) => {\n this.toolbar.toolbarBIReporter.onAddItemClick(origin);\n };\n\n get editableColumns(): EditableColumn<T>[] {\n const visibleIds = this.visibleColumns.map((c) => c.id);\n if (!visibleIds.length) {\n return this.allColumns;\n }\n return visibleIds\n .map((id) => this.allColumns.find((c) => c.id === id))\n .filter((c): c is EditableColumn<T> => c !== undefined);\n }\n\n init(columns: EditableColumn<T>[]) {\n this._providedColumns = columns;\n const disposeMutation = this.mutation.init();\n const disposeValidation = reaction(\n () => this.allColumns,\n () => this.cellValue.revalidatePendingCells(),\n );\n\n const { onBeforeUnload } = this.toolbar.container;\n const onBeforeUnloadSubscription = onBeforeUnload?.((event) => {\n if (this.cellValue._pendingCells.size === 0) {\n return;\n }\n event.preventDefault();\n });\n\n return () => {\n disposeValidation();\n this.cellValue.flushDraftsOnUnmount();\n disposeMutation();\n onBeforeUnloadSubscription?.remove();\n };\n }\n\n addItem(afterItemKey?: string, origin?: RowCreationOrigin): string {\n return this.mutation.addItem(afterItemKey, origin);\n }\n\n duplicateItem(rowKey: string) {\n this.mutation.duplicateItem(rowKey);\n }\n\n deleteItems(rowKeys: string[]) {\n this.mutation.deleteItems(rowKeys);\n }\n\n confirmDeleteItems(rowKeys: string[]) {\n // The context menu disables blocked deletes; this filter is the barrier\n // for callers that bypass the UI gate.\n const deletableRowKeys = rowKeys.filter(\n (key) => !this.isRowDeleteDisabled(key),\n );\n if (!deletableRowKeys.length) {\n return;\n }\n const { translate: t } = this.collection;\n const reportCta = (ctaName: DeleteModalCta) =>\n this.bi.deleteModalCtaClicked({ ctaName, rowKeys: deletableRowKeys });\n this.bi.deleteModalShown(deletableRowKeys);\n this.deleteConfirmModal.open({\n theme: 'destructive',\n title: t('cairo.deleteModal.title'),\n content: t('cairo.deleteModal.body'),\n primaryButtonText: t('cairo.delete.button'),\n secondaryButtonText: t('cairo.cancel.button'),\n primaryButtonOnClick: () => {\n reportCta('Delete');\n this.deleteItems(deletableRowKeys);\n },\n secondaryButtonOnClick: () => reportCta('Cancel'),\n onCloseButtonClick: () => reportCta('X'),\n });\n }\n\n resolveCellTypeByColumnId(columnId: string) {\n return this.cellValue.resolveCellTypeByColumnId(columnId);\n }\n\n getCellDisplayValue(rowKey: string, columnId: string): any {\n return this.cellValue.getCellDisplayValue(rowKey, columnId);\n }\n\n getCellValidation(rowKey: string, columnId: string): ValidationResult {\n const committed = this.cellValue.getCellValidation(rowKey, columnId);\n\n if (\n committed.valid ||\n !this.cellInteraction.isCellEditing(rowKey, columnId) ||\n this.cellInteraction.editingValue === undefined\n ) {\n return committed;\n }\n return this.cellValue.validateEditingValue(\n columnId,\n this.cellInteraction.editingValue,\n );\n }\n\n isCellEditable(rowKey: string, columnId: string): boolean {\n return this.cellValue.isCellEditable(rowKey, columnId);\n }\n\n /** `isCellEditable` does not include the table-level `updateItemDisabled`\n * permission. Use this to decide whether the user can edit the cell now. */\n canEditCell(rowKey: string, columnId: string): boolean {\n return !this.updateItemDisabled && this.isCellEditable(rowKey, columnId);\n }\n\n isColumnEditable(rowKey: string, columnId: string): boolean {\n return this.cellValue.isColumnEditable(rowKey, columnId);\n }\n\n clearCells(cells: Cell[], origin: ClipboardOrigin = 'Keyboard') {\n const cleared = this.cellValue.clearCells(cells);\n if (cleared.length === 0) {\n return;\n }\n this.bi.clipboardAction({\n actionName: 'clear',\n origin,\n ...clipboardCellCounts(cleared),\n });\n }\n\n handleCellClick(rowKey: string, columnId: string, shiftKey: boolean) {\n if (this.cellInteraction.isEditing) {\n if (this.cellInteraction.isCellEditing(rowKey, columnId)) {\n // Click landed inside the active editor — let the editor handle it.\n return;\n }\n // Shift-click while editing: ignore — extending a range selection during\n // an active edit is not a meaningful action.\n if (shiftKey) {\n return;\n }\n // Plain click on a different cell: commit the edit and move focus.\n this.cellInteraction.commitEdit();\n\n // If the target cell wants edit-on-click, enter edit directly.\n const col = this._columnMap.get(columnId);\n const res = col ? this.resolveCellTypeByColumnId(col.id) : null;\n if (res?.editOnClick) {\n const val = this.getCellDisplayValue(rowKey, columnId);\n if (res.editOnClick(val) && this.canEditCell(rowKey, columnId)) {\n this.cellInteraction.focusCell(rowKey, columnId);\n this.cellInteraction.startEdit(rowKey, columnId, 'click');\n return;\n }\n }\n\n this.cellInteraction.focusCell(rowKey, columnId);\n return;\n }\n\n const column = this._columnMap.get(columnId);\n const resolved = column ? this.resolveCellTypeByColumnId(column.id) : null;\n if (resolved?.toggleValue || resolved?.showEditWhenFocused) {\n // Toggle/showEditWhenFocused cells: click focuses the cell and shows the\n // EditComponent affordance. Keyboard navigation remains active.\n this.cellInteraction.focusCell(rowKey, columnId);\n return;\n }\n\n if (resolved?.editOnClick) {\n const value = this.getCellDisplayValue(rowKey, columnId);\n if (resolved.editOnClick(value) && this.canEditCell(rowKey, columnId)) {\n this.cellInteraction.focusCell(rowKey, columnId);\n this.cellInteraction.startEdit(rowKey, columnId, 'click');\n return;\n }\n }\n\n if (shiftKey && this.cellInteraction.selectionAnchor) {\n this.cellInteraction.selectRange(this.cellInteraction.selectionAnchor, {\n rowKey,\n columnId,\n });\n } else {\n this.cellInteraction.focusCell(rowKey, columnId);\n }\n }\n\n handleCellDoubleClick(rowKey: string, columnId: string) {\n const column = this._columnMap.get(columnId);\n const resolved = column ? this.resolveCellTypeByColumnId(column.id) : null;\n // Toggle-value cells (e.g. boolean) activate on single click, not double-click.\n // Entering edit mode on double-click would apply the editing box-shadow\n // without any EditComponent being shown, causing a visual border glitch.\n if (resolved?.toggleValue || resolved?.showEditWhenFocused) {\n return;\n }\n // A second double-click in an editor that is already open is not a new edit.\n if (this.cellInteraction.isCellEditing(rowKey, columnId)) {\n return;\n }\n if (this.canEditCell(rowKey, columnId)) {\n this.cellInteraction.startEdit(rowKey, columnId, 'doubleClick');\n }\n }\n\n sort = (\n columnId: string,\n {\n forceDirection,\n multiple,\n }: { forceDirection?: SortOrder; multiple?: boolean } = {},\n ) => {\n this.collection.sort(\n { id: columnId },\n { forceDirection, clearResult: true, multiple },\n );\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -239,21 +239,45 @@ class MutationState {
|
|
|
239
239
|
errorToast: this._retryableToast('cairo.editableTable.deleteItem.error.toast', 'Delete')
|
|
240
240
|
});
|
|
241
241
|
}
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
242
|
+
|
|
243
|
+
/** With `batchWait`, core runs a batch with the last update's `submit` and
|
|
244
|
+
* toast only, so an earlier update's Undo and `onKept` would be lost. */
|
|
245
|
+
get updatesAreBatched() {
|
|
246
|
+
return Boolean(this._optimisticActions.executor.batchWait);
|
|
247
|
+
}
|
|
248
|
+
updateItems(updatedItems, changedFieldIdsByItem, {
|
|
249
|
+
successToast,
|
|
250
|
+
undo
|
|
251
|
+
} = {}) {
|
|
252
|
+
// With its own toast, an empty update still runs, to show the toast for
|
|
253
|
+
// values that stayed local (invalid cells, unsaved rows).
|
|
254
|
+
if (updatedItems.length === 0 && typeof successToast !== 'string') {
|
|
245
255
|
return;
|
|
246
256
|
}
|
|
247
257
|
const contexts = this._updateContexts(updatedItems, changedFieldIdsByItem);
|
|
248
258
|
this._optimisticActions.updateMany(updatedItems, {
|
|
249
259
|
keepPosition: true,
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
260
|
+
// With undo, core calls this when the toast closes or times out without
|
|
261
|
+
// Undo. Retry calls it again.
|
|
262
|
+
submit: items => {
|
|
263
|
+
undo == null || undo.onKept();
|
|
264
|
+
// With `batchWait`, `items` also holds the other updates of the batch.
|
|
265
|
+
return items.length > 0 ? this._submitUpdate(items, updatedItems, contexts) : Promise.resolve();
|
|
266
|
+
},
|
|
267
|
+
successToast: this._updateSuccessToast(successToast, updatedItems.length),
|
|
268
|
+
showUndoToast: undo !== undefined,
|
|
269
|
+
onUndo: undo == null ? void 0 : undo.onUndo,
|
|
254
270
|
errorToast: this._retryableToast('cairo.editableTable.updateItem.error.toast', 'Update')
|
|
255
271
|
});
|
|
256
272
|
}
|
|
273
|
+
_updateSuccessToast(successToast, count) {
|
|
274
|
+
if (successToast === null) {
|
|
275
|
+
return undefined;
|
|
276
|
+
}
|
|
277
|
+
return successToast ?? this._parent.collection.translate('cairo.editableTable.updateItem.success.toast', {
|
|
278
|
+
count
|
|
279
|
+
});
|
|
280
|
+
}
|
|
257
281
|
|
|
258
282
|
/** Wraps the create submit so the outcome is reported once the server answers
|
|
259
283
|
* — the optimistic action itself has no completion callback. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_mobx","require","MutationState","constructor","parent","handlers","createOptimisticActions","_defineProperty2","default","Map","Set","items","createdItems","_handlers","submitCreate","itemKey","_parent","collection","runInAction","forEach","createdItem","index","submittedItem","oldKey","newKey","_pendingCreateKeys","delete","rowKey","draft","_drafts","afterItemKey","set","cellInteraction","replaceRowKey","_optimisticActions","makeObservable","observable","shallow","addItem","action","commitNewRow","deleteItems","init","_mergeDraftRows","keyedItems","size","draftBelow","key","item","merged","pushDraftsBelow","anchorKey","get","push","id","length","pageIndex","indexWithinPage","undefined","keyedItem","keys","origin","bi","rowCreationStart","newItem","createItem","isLocalNewRow","has","t","translate","_serverAnchorFor","add","createOne","submit","_reportedCreate","successToast","errorToast","_retryableToast","duplicateItem","find","ki","sourceItem","newId","sourceId","duplicate","k","Object","String","rowKeys","deleted","_survivingAnchorAbove","serverRowKeys","cellValue","dropRowCellState","map","_this$_parent$keyedIt","filter","deleteMany","submitDelete","count","updateItems","updatedItems","changedFieldIdsByItem","contexts","_updateContexts","updateMany","keepPosition","_submitUpdate","result","_submitCreate","rowCreationEnd","resultType","itemIds","error","messageKey","actionName","_err","retry","message","onClick","tryAgainClicked","text","sameItems","every","submitUpdate","_this$_parent$collect","previousItem","changedFieldIds","changedFieldIdsFromItems","start","findIndex","i","_isPatchCreatedRow","state","patches","some","patch","actionType","patchedItems","exports","updatedItem","isRecord","Array","from","fieldId","is","value"],"sources":["../../../../src/state/EditableTable/MutationState.ts"],"sourcesContent":["import { action, makeObservable, observable, runInAction } from 'mobx';\nimport type {\n CollectionOptimisticActions,\n CollectionUpdateContext,\n CollectionState,\n FiltersMap,\n KeyedItem,\n} from '@wix/bex-core';\nimport type { EditableTableState } from './EditableTableState';\nimport type {\n RetryActionName,\n RowCreationOrigin,\n} from './EditableTableStateBIReporter';\n\nexport interface EditableTableMutationHandlers<T> {\n /** Factory to create a new empty item with a fresh ID */\n createItem: () => T;\n /** Submit updated items to the server */\n submitUpdate: (\n items: T[],\n contexts?: CollectionUpdateContext<T>[],\n ) => Promise<T[] | void>;\n /** Submit newly created items to the server */\n submitCreate: (items: T[]) => Promise<T[] | void>;\n /** Submit item deletions to the server */\n submitDelete: (items: T[]) => Promise<void>;\n}\n\ntype DraftRow<T> = {\n item: T;\n afterItemKey?: string;\n origin: RowCreationOrigin;\n};\n\nexport class MutationState<T, F extends FiltersMap> {\n private readonly _handlers: EditableTableMutationHandlers<T>;\n private readonly _optimisticActions: CollectionOptimisticActions<T, F>;\n private readonly _parent: EditableTableState<T, F>;\n\n /**\n * Rows added locally and not yet created on the server, by row key.\n * `afterItemKey` is the key of the row directly above the draft\n * (undefined = top of the list). `addItem` keeps this exact, so at most\n * one draft is anchored on any given row.\n */\n readonly _drafts = new Map<string, DraftRow<T>>();\n\n /**\n * Row keys of creates still in flight. Their rows are already in the\n * collection result (optimistic patch), but their keys change when the\n * server responds, so nothing may anchor on them.\n */\n private readonly _pendingCreateKeys = new Set<string>();\n\n constructor(\n parent: EditableTableState<T, F>,\n handlers: EditableTableMutationHandlers<T>,\n createOptimisticActions: (\n collection: CollectionState<T, F>,\n ) => CollectionOptimisticActions<T, F>,\n ) {\n this._parent = parent;\n this._handlers = handlers;\n this._optimisticActions = createOptimisticActions(parent.collection);\n makeObservable(this, {\n _drafts: observable.shallow,\n addItem: action,\n commitNewRow: action,\n deleteItems: action,\n });\n }\n\n init() {\n return this._optimisticActions.init();\n }\n\n /**\n * Merge draft rows into the collection's keyed items for rendering.\n * Every draft renders directly below the row it is anchored on, so a\n * draft anchored on another draft follows it down the list. Drafts whose\n * anchor left the list (filtered out, deleted) stay visible at the end.\n */\n _mergeDraftRows(keyedItems: KeyedItem<T>[]): KeyedItem<T>[] {\n if (this._drafts.size === 0) {\n return keyedItems;\n }\n\n const draftBelow = new Map<string | undefined, { key: string; item: T }>();\n for (const [rowKey, draft] of this._drafts) {\n draftBelow.set(draft.afterItemKey, { key: rowKey, item: draft.item });\n }\n\n const merged: KeyedItem<T>[] = [];\n const pushDraftsBelow = (rowKey: string | undefined) => {\n let anchorKey = rowKey;\n let draft = draftBelow.get(anchorKey);\n while (draft) {\n draftBelow.delete(anchorKey);\n merged.push({\n item: draft.item,\n key: draft.key,\n id: draft.key,\n index: merged.length,\n pageIndex: -1,\n indexWithinPage: -1,\n });\n anchorKey = draft.key;\n draft = draftBelow.get(anchorKey);\n }\n };\n\n pushDraftsBelow(undefined);\n for (const keyedItem of keyedItems) {\n merged.push(keyedItem);\n pushDraftsBelow(keyedItem.key);\n }\n for (const anchorKey of [...draftBelow.keys()]) {\n pushDraftsBelow(anchorKey);\n }\n return merged;\n }\n\n addItem(\n afterItemKey?: string,\n origin: RowCreationOrigin = 'Card CTA',\n ): string {\n // The add-row button reports through `onAddItemClick`; context-menu\n // entries report here so each origin stays distinct.\n if (origin !== 'Card CTA') {\n this._parent.bi.rowCreationStart(origin);\n }\n\n const newItem = this._handlers.createItem();\n const rowKey = this._parent.collection.itemKey(newItem);\n // The new row lands directly below its anchor, pushing down whichever\n // draft sat there — that draft is now anchored on the new row.\n for (const [key, draft] of this._drafts) {\n if (draft.afterItemKey === afterItemKey) {\n this._drafts.set(key, { ...draft, afterItemKey: rowKey });\n }\n }\n this._drafts.set(rowKey, { item: newItem, afterItemKey, origin });\n return rowKey;\n }\n\n isLocalNewRow(rowKey: string): boolean {\n return this._drafts.has(rowKey);\n }\n\n /** Create a local new row on the server, with its edited values merged in. */\n commitNewRow(rowKey: string, item: T) {\n const t = this._parent.collection.translate;\n const draft = this._drafts.get(rowKey);\n if (!draft) {\n return;\n }\n\n // The create's optimistic patch can only anchor on a real server row —\n // not a draft, not another row created through this table's patches.\n const afterItemKey = this._serverAnchorFor(rowKey);\n const { origin } = draft;\n\n this._drafts.delete(rowKey);\n this._pendingCreateKeys.add(rowKey);\n this._optimisticActions.createOne(item, {\n submit: this._reportedCreate(origin),\n afterItemKey,\n successToast: t('cairo.editableTable.createItem.success.toast'),\n errorToast: this._retryableToast(\n 'cairo.editableTable.createItem.error.toast',\n 'Create',\n ),\n });\n }\n\n duplicateItem(rowKey: string) {\n const t = this._parent.collection.translate;\n const keyedItem = this._parent.keyedItems.find((ki) => ki.key === rowKey);\n if (!keyedItem) {\n return;\n }\n\n const origin: RowCreationOrigin = 'Row Context Menu - Duplicate';\n this._parent.bi.rowCreationStart(origin);\n\n const sourceItem = keyedItem.item;\n const newItem = this._handlers.createItem();\n const { itemKey } = this._parent.collection;\n const newId = itemKey(newItem);\n const sourceId = itemKey(sourceItem);\n const duplicate = { ...sourceItem } as any;\n for (const k of Object.keys(duplicate)) {\n if (String(duplicate[k]) === sourceId) {\n duplicate[k] = newId;\n break;\n }\n }\n this._pendingCreateKeys.add(newId);\n this._optimisticActions.createOne(duplicate as T, {\n submit: this._reportedCreate(origin),\n afterItemKey: rowKey,\n successToast: t('cairo.editableTable.duplicateItem.success.toast'),\n errorToast: this._retryableToast(\n 'cairo.editableTable.duplicateItem.error.toast',\n 'Duplicate',\n ),\n });\n }\n\n deleteItems(rowKeys: string[]) {\n const t = this._parent.collection.translate;\n const deleted = new Set(rowKeys);\n\n // Surviving drafts anchored on a deleted row move up to the nearest\n // surviving row, so they don't fall to the end of the list.\n for (const [rowKey, draft] of this._drafts) {\n if (\n deleted.has(rowKey) ||\n draft.afterItemKey == null ||\n !deleted.has(draft.afterItemKey)\n ) {\n continue;\n }\n this._drafts.set(rowKey, {\n ...draft,\n afterItemKey: this._survivingAnchorAbove(draft.afterItemKey, deleted),\n });\n }\n\n const serverRowKeys: string[] = [];\n for (const rowKey of rowKeys) {\n if (this._drafts.has(rowKey)) {\n // Never created on the server — dropping the draft is the whole\n // delete.\n this._drafts.delete(rowKey);\n this._parent.cellValue.dropRowCellState(rowKey);\n } else {\n serverRowKeys.push(rowKey);\n }\n }\n\n const items = serverRowKeys\n .map((key) => this._parent.keyedItems.find((ki) => ki.key === key)?.item)\n .filter((item): item is T => item != null);\n if (items.length === 0) {\n return;\n }\n\n this._optimisticActions.deleteMany(items, {\n submit: this._handlers.submitDelete,\n successToast: t('cairo.editableTable.deleteItem.success.toast', {\n count: items.length,\n }),\n errorToast: this._retryableToast(\n 'cairo.editableTable.deleteItem.error.toast',\n 'Delete',\n ),\n });\n }\n\n updateItems(updatedItems: T[], changedFieldIdsByItem?: string[][]) {\n const t = this._parent.collection.translate;\n if (updatedItems.length === 0) {\n return;\n }\n const contexts = this._updateContexts(updatedItems, changedFieldIdsByItem);\n this._optimisticActions.updateMany(updatedItems, {\n keepPosition: true,\n submit: (items) => this._submitUpdate(items, updatedItems, contexts),\n successToast: t('cairo.editableTable.updateItem.success.toast', {\n count: updatedItems.length,\n }),\n errorToast: this._retryableToast(\n 'cairo.editableTable.updateItem.error.toast',\n 'Update',\n ),\n });\n }\n\n /** Wraps the create submit so the outcome is reported once the server answers\n * — the optimistic action itself has no completion callback. */\n private _reportedCreate(origin: RowCreationOrigin) {\n return async (items: T[]) => {\n try {\n const result = await this._submitCreate(items);\n const { itemKey } = this._parent.collection;\n this._parent.bi.rowCreationEnd({\n origin,\n resultType: 'success',\n itemIds: (result ?? items).map(itemKey),\n });\n return result;\n } catch (error) {\n this._parent.bi.rowCreationEnd({ origin, resultType: 'failure' });\n throw error;\n }\n };\n }\n\n private _retryableToast(\n messageKey:\n | 'cairo.editableTable.createItem.error.toast'\n | 'cairo.editableTable.duplicateItem.error.toast'\n | 'cairo.editableTable.deleteItem.error.toast'\n | 'cairo.editableTable.updateItem.error.toast',\n actionName: RetryActionName,\n ) {\n const t = this._parent.collection.translate;\n return (_err: unknown, { retry }: { retry: () => void }) => ({\n message: t(messageKey),\n action: {\n onClick: () => {\n this._parent.bi.tryAgainClicked(actionName);\n retry();\n },\n text: t('cairo.editableTable.retry.toast.CTA'),\n },\n });\n }\n\n private _submitUpdate(\n items: T[],\n updatedItems: T[],\n contexts: CollectionUpdateContext<T>[],\n ) {\n const sameItems =\n items.length === updatedItems.length &&\n items.every((item, index) => item === updatedItems[index]);\n\n return this._handlers.submitUpdate(items, sameItems ? contexts : undefined);\n }\n\n private _updateContexts(\n updatedItems: T[],\n changedFieldIdsByItem?: string[][],\n ): CollectionUpdateContext<T>[] {\n return updatedItems.map((item, index) => {\n const key = this._parent.collection.itemKey(item);\n const previousItem =\n this._parent.collection.result.get(key)?.item ?? item;\n return {\n previousItem,\n changedFieldIds:\n changedFieldIdsByItem?.[index] ??\n changedFieldIdsFromItems(previousItem, item),\n };\n });\n }\n\n /**\n * Nearest row above `rowKey` that a create can anchor on: a server row\n * that is not a draft and not itself a created row still living as an\n * optimistic patch. Anchoring one create on another strands the new row\n * at the top of the table — the core merge repositions created patches\n * newest-first, so the anchor moves away after the new row is placed.\n */\n private _serverAnchorFor(rowKey: string): string | undefined {\n const keyedItems = this._parent.keyedItems;\n const start = keyedItems.findIndex((ki) => ki.key === rowKey);\n for (let i = start - 1; i >= 0; i--) {\n const key = keyedItems[i].key;\n if (\n !this._drafts.has(key) &&\n !this._pendingCreateKeys.has(key) &&\n !this._isPatchCreatedRow(key)\n ) {\n return key;\n }\n }\n return undefined;\n }\n\n private _isPatchCreatedRow(key: string): boolean {\n return this._optimisticActions.state.patches.some(\n (patch) =>\n patch.actionType === 'createMany' && patch.patchedItems.has(key),\n );\n }\n\n private _survivingAnchorAbove(\n key: string,\n deleted: Set<string>,\n ): string | undefined {\n const keyedItems = this._parent.keyedItems;\n const start = keyedItems.findIndex((ki) => ki.key === key);\n for (let i = start - 1; i >= 0; i--) {\n const k = keyedItems[i].key;\n if (!deleted.has(k)) {\n return k;\n }\n }\n return undefined;\n }\n\n private readonly _submitCreate = async (items: T[]) => {\n const createdItems = await this._handlers.submitCreate(items);\n if (!createdItems) {\n return createdItems;\n }\n\n const { itemKey } = this._parent.collection;\n runInAction(() => {\n createdItems.forEach((createdItem, index) => {\n const submittedItem = items[index];\n if (!submittedItem) {\n return;\n }\n\n const oldKey = itemKey(submittedItem);\n const newKey = itemKey(createdItem);\n this._pendingCreateKeys.delete(oldKey);\n // The server assigned the row a new key — drafts anchored on the\n // old key must follow the row under its new key.\n for (const [rowKey, draft] of this._drafts) {\n if (draft.afterItemKey === oldKey) {\n this._drafts.set(rowKey, { ...draft, afterItemKey: newKey });\n }\n }\n this._parent.cellInteraction.replaceRowKey(oldKey, newKey);\n });\n });\n\n return createdItems;\n };\n}\n\nconst changedFieldIdsFromItems = <T>(\n previousItem: T,\n updatedItem: T,\n): string[] => {\n if (!isRecord(previousItem) || !isRecord(updatedItem)) {\n return [];\n }\n\n return Array.from(\n new Set([...Object.keys(previousItem), ...Object.keys(updatedItem)]),\n ).filter(\n (fieldId) => !Object.is(previousItem[fieldId], updatedItem[fieldId]),\n );\n};\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_mobx","require","MutationState","constructor","parent","handlers","createOptimisticActions","_defineProperty2","default","Map","Set","items","createdItems","_handlers","submitCreate","itemKey","_parent","collection","runInAction","forEach","createdItem","index","submittedItem","oldKey","newKey","_pendingCreateKeys","delete","rowKey","draft","_drafts","afterItemKey","set","cellInteraction","replaceRowKey","_optimisticActions","makeObservable","observable","shallow","addItem","action","commitNewRow","deleteItems","init","_mergeDraftRows","keyedItems","size","draftBelow","key","item","merged","pushDraftsBelow","anchorKey","get","push","id","length","pageIndex","indexWithinPage","undefined","keyedItem","keys","origin","bi","rowCreationStart","newItem","createItem","isLocalNewRow","has","t","translate","_serverAnchorFor","add","createOne","submit","_reportedCreate","successToast","errorToast","_retryableToast","duplicateItem","find","ki","sourceItem","newId","sourceId","duplicate","k","Object","String","rowKeys","deleted","_survivingAnchorAbove","serverRowKeys","cellValue","dropRowCellState","map","_this$_parent$keyedIt","filter","deleteMany","submitDelete","count","updatesAreBatched","Boolean","executor","batchWait","updateItems","updatedItems","changedFieldIdsByItem","undo","contexts","_updateContexts","updateMany","keepPosition","onKept","_submitUpdate","Promise","resolve","_updateSuccessToast","showUndoToast","onUndo","result","_submitCreate","rowCreationEnd","resultType","itemIds","error","messageKey","actionName","_err","retry","message","onClick","tryAgainClicked","text","sameItems","every","submitUpdate","_this$_parent$collect","previousItem","changedFieldIds","changedFieldIdsFromItems","start","findIndex","i","_isPatchCreatedRow","state","patches","some","patch","actionType","patchedItems","exports","updatedItem","isRecord","Array","from","fieldId","is","value"],"sources":["../../../../src/state/EditableTable/MutationState.ts"],"sourcesContent":["import { action, makeObservable, observable, runInAction } from 'mobx';\nimport type {\n CollectionOptimisticActions,\n CollectionUpdateContext,\n CollectionState,\n FiltersMap,\n KeyedItem,\n} from '@wix/bex-core';\nimport type { EditableTableState } from './EditableTableState';\nimport type {\n RetryActionName,\n RowCreationOrigin,\n} from './EditableTableStateBIReporter';\n\nexport interface EditableTableMutationHandlers<T> {\n /** Factory to create a new empty item with a fresh ID */\n createItem: () => T;\n /** Submit updated items to the server */\n submitUpdate: (\n items: T[],\n contexts?: CollectionUpdateContext<T>[],\n ) => Promise<T[] | void>;\n /** Submit newly created items to the server */\n submitCreate: (items: T[]) => Promise<T[] | void>;\n /** Submit item deletions to the server */\n submitDelete: (items: T[]) => Promise<void>;\n}\n\nexport interface UpdateOptions {\n /** Missing: the \"Item updated\" toast. A string: this text instead. `null`:\n * no success toast. */\n successToast?: string | null;\n /** Adds Undo to the success toast. The server call waits until the toast\n * closes or times out. */\n undo?: {\n /** Runs when the user clicks Undo, after the rows are rolled back. */\n onUndo: () => void;\n /** Runs when the toast closes or times out without Undo. */\n onKept: () => void;\n };\n}\n\ntype DraftRow<T> = {\n item: T;\n afterItemKey?: string;\n origin: RowCreationOrigin;\n};\n\nexport class MutationState<T, F extends FiltersMap> {\n private readonly _handlers: EditableTableMutationHandlers<T>;\n private readonly _optimisticActions: CollectionOptimisticActions<T, F>;\n private readonly _parent: EditableTableState<T, F>;\n\n /**\n * Rows added locally and not yet created on the server, by row key.\n * `afterItemKey` is the key of the row directly above the draft\n * (undefined = top of the list). `addItem` keeps this exact, so at most\n * one draft is anchored on any given row.\n */\n readonly _drafts = new Map<string, DraftRow<T>>();\n\n /**\n * Row keys of creates still in flight. Their rows are already in the\n * collection result (optimistic patch), but their keys change when the\n * server responds, so nothing may anchor on them.\n */\n private readonly _pendingCreateKeys = new Set<string>();\n\n constructor(\n parent: EditableTableState<T, F>,\n handlers: EditableTableMutationHandlers<T>,\n createOptimisticActions: (\n collection: CollectionState<T, F>,\n ) => CollectionOptimisticActions<T, F>,\n ) {\n this._parent = parent;\n this._handlers = handlers;\n this._optimisticActions = createOptimisticActions(parent.collection);\n makeObservable(this, {\n _drafts: observable.shallow,\n addItem: action,\n commitNewRow: action,\n deleteItems: action,\n });\n }\n\n init() {\n return this._optimisticActions.init();\n }\n\n /**\n * Merge draft rows into the collection's keyed items for rendering.\n * Every draft renders directly below the row it is anchored on, so a\n * draft anchored on another draft follows it down the list. Drafts whose\n * anchor left the list (filtered out, deleted) stay visible at the end.\n */\n _mergeDraftRows(keyedItems: KeyedItem<T>[]): KeyedItem<T>[] {\n if (this._drafts.size === 0) {\n return keyedItems;\n }\n\n const draftBelow = new Map<string | undefined, { key: string; item: T }>();\n for (const [rowKey, draft] of this._drafts) {\n draftBelow.set(draft.afterItemKey, { key: rowKey, item: draft.item });\n }\n\n const merged: KeyedItem<T>[] = [];\n const pushDraftsBelow = (rowKey: string | undefined) => {\n let anchorKey = rowKey;\n let draft = draftBelow.get(anchorKey);\n while (draft) {\n draftBelow.delete(anchorKey);\n merged.push({\n item: draft.item,\n key: draft.key,\n id: draft.key,\n index: merged.length,\n pageIndex: -1,\n indexWithinPage: -1,\n });\n anchorKey = draft.key;\n draft = draftBelow.get(anchorKey);\n }\n };\n\n pushDraftsBelow(undefined);\n for (const keyedItem of keyedItems) {\n merged.push(keyedItem);\n pushDraftsBelow(keyedItem.key);\n }\n for (const anchorKey of [...draftBelow.keys()]) {\n pushDraftsBelow(anchorKey);\n }\n return merged;\n }\n\n addItem(\n afterItemKey?: string,\n origin: RowCreationOrigin = 'Card CTA',\n ): string {\n // The add-row button reports through `onAddItemClick`; context-menu\n // entries report here so each origin stays distinct.\n if (origin !== 'Card CTA') {\n this._parent.bi.rowCreationStart(origin);\n }\n\n const newItem = this._handlers.createItem();\n const rowKey = this._parent.collection.itemKey(newItem);\n // The new row lands directly below its anchor, pushing down whichever\n // draft sat there — that draft is now anchored on the new row.\n for (const [key, draft] of this._drafts) {\n if (draft.afterItemKey === afterItemKey) {\n this._drafts.set(key, { ...draft, afterItemKey: rowKey });\n }\n }\n this._drafts.set(rowKey, { item: newItem, afterItemKey, origin });\n return rowKey;\n }\n\n isLocalNewRow(rowKey: string): boolean {\n return this._drafts.has(rowKey);\n }\n\n /** Create a local new row on the server, with its edited values merged in. */\n commitNewRow(rowKey: string, item: T) {\n const t = this._parent.collection.translate;\n const draft = this._drafts.get(rowKey);\n if (!draft) {\n return;\n }\n\n // The create's optimistic patch can only anchor on a real server row —\n // not a draft, not another row created through this table's patches.\n const afterItemKey = this._serverAnchorFor(rowKey);\n const { origin } = draft;\n\n this._drafts.delete(rowKey);\n this._pendingCreateKeys.add(rowKey);\n this._optimisticActions.createOne(item, {\n submit: this._reportedCreate(origin),\n afterItemKey,\n successToast: t('cairo.editableTable.createItem.success.toast'),\n errorToast: this._retryableToast(\n 'cairo.editableTable.createItem.error.toast',\n 'Create',\n ),\n });\n }\n\n duplicateItem(rowKey: string) {\n const t = this._parent.collection.translate;\n const keyedItem = this._parent.keyedItems.find((ki) => ki.key === rowKey);\n if (!keyedItem) {\n return;\n }\n\n const origin: RowCreationOrigin = 'Row Context Menu - Duplicate';\n this._parent.bi.rowCreationStart(origin);\n\n const sourceItem = keyedItem.item;\n const newItem = this._handlers.createItem();\n const { itemKey } = this._parent.collection;\n const newId = itemKey(newItem);\n const sourceId = itemKey(sourceItem);\n const duplicate = { ...sourceItem } as any;\n for (const k of Object.keys(duplicate)) {\n if (String(duplicate[k]) === sourceId) {\n duplicate[k] = newId;\n break;\n }\n }\n this._pendingCreateKeys.add(newId);\n this._optimisticActions.createOne(duplicate as T, {\n submit: this._reportedCreate(origin),\n afterItemKey: rowKey,\n successToast: t('cairo.editableTable.duplicateItem.success.toast'),\n errorToast: this._retryableToast(\n 'cairo.editableTable.duplicateItem.error.toast',\n 'Duplicate',\n ),\n });\n }\n\n deleteItems(rowKeys: string[]) {\n const t = this._parent.collection.translate;\n const deleted = new Set(rowKeys);\n\n // Surviving drafts anchored on a deleted row move up to the nearest\n // surviving row, so they don't fall to the end of the list.\n for (const [rowKey, draft] of this._drafts) {\n if (\n deleted.has(rowKey) ||\n draft.afterItemKey == null ||\n !deleted.has(draft.afterItemKey)\n ) {\n continue;\n }\n this._drafts.set(rowKey, {\n ...draft,\n afterItemKey: this._survivingAnchorAbove(draft.afterItemKey, deleted),\n });\n }\n\n const serverRowKeys: string[] = [];\n for (const rowKey of rowKeys) {\n if (this._drafts.has(rowKey)) {\n // Never created on the server — dropping the draft is the whole\n // delete.\n this._drafts.delete(rowKey);\n this._parent.cellValue.dropRowCellState(rowKey);\n } else {\n serverRowKeys.push(rowKey);\n }\n }\n\n const items = serverRowKeys\n .map((key) => this._parent.keyedItems.find((ki) => ki.key === key)?.item)\n .filter((item): item is T => item != null);\n if (items.length === 0) {\n return;\n }\n\n this._optimisticActions.deleteMany(items, {\n submit: this._handlers.submitDelete,\n successToast: t('cairo.editableTable.deleteItem.success.toast', {\n count: items.length,\n }),\n errorToast: this._retryableToast(\n 'cairo.editableTable.deleteItem.error.toast',\n 'Delete',\n ),\n });\n }\n\n /** With `batchWait`, core runs a batch with the last update's `submit` and\n * toast only, so an earlier update's Undo and `onKept` would be lost. */\n get updatesAreBatched(): boolean {\n return Boolean(this._optimisticActions.executor.batchWait);\n }\n\n updateItems(\n updatedItems: T[],\n changedFieldIdsByItem?: string[][],\n { successToast, undo }: UpdateOptions = {},\n ) {\n // With its own toast, an empty update still runs, to show the toast for\n // values that stayed local (invalid cells, unsaved rows).\n if (updatedItems.length === 0 && typeof successToast !== 'string') {\n return;\n }\n const contexts = this._updateContexts(updatedItems, changedFieldIdsByItem);\n this._optimisticActions.updateMany(updatedItems, {\n keepPosition: true,\n // With undo, core calls this when the toast closes or times out without\n // Undo. Retry calls it again.\n submit: (items) => {\n undo?.onKept();\n // With `batchWait`, `items` also holds the other updates of the batch.\n return items.length > 0\n ? this._submitUpdate(items, updatedItems, contexts)\n : Promise.resolve();\n },\n successToast: this._updateSuccessToast(successToast, updatedItems.length),\n showUndoToast: undo !== undefined,\n onUndo: undo?.onUndo,\n errorToast: this._retryableToast(\n 'cairo.editableTable.updateItem.error.toast',\n 'Update',\n ),\n });\n }\n\n private _updateSuccessToast(\n successToast: UpdateOptions['successToast'],\n count: number,\n ) {\n if (successToast === null) {\n return undefined;\n }\n return (\n successToast ??\n this._parent.collection.translate(\n 'cairo.editableTable.updateItem.success.toast',\n { count },\n )\n );\n }\n\n /** Wraps the create submit so the outcome is reported once the server answers\n * — the optimistic action itself has no completion callback. */\n private _reportedCreate(origin: RowCreationOrigin) {\n return async (items: T[]) => {\n try {\n const result = await this._submitCreate(items);\n const { itemKey } = this._parent.collection;\n this._parent.bi.rowCreationEnd({\n origin,\n resultType: 'success',\n itemIds: (result ?? items).map(itemKey),\n });\n return result;\n } catch (error) {\n this._parent.bi.rowCreationEnd({ origin, resultType: 'failure' });\n throw error;\n }\n };\n }\n\n private _retryableToast(\n messageKey:\n | 'cairo.editableTable.createItem.error.toast'\n | 'cairo.editableTable.duplicateItem.error.toast'\n | 'cairo.editableTable.deleteItem.error.toast'\n | 'cairo.editableTable.updateItem.error.toast',\n actionName: RetryActionName,\n ) {\n const t = this._parent.collection.translate;\n return (_err: unknown, { retry }: { retry: () => void }) => ({\n message: t(messageKey),\n action: {\n onClick: () => {\n this._parent.bi.tryAgainClicked(actionName);\n retry();\n },\n text: t('cairo.editableTable.retry.toast.CTA'),\n },\n });\n }\n\n private _submitUpdate(\n items: T[],\n updatedItems: T[],\n contexts: CollectionUpdateContext<T>[],\n ) {\n const sameItems =\n items.length === updatedItems.length &&\n items.every((item, index) => item === updatedItems[index]);\n\n return this._handlers.submitUpdate(items, sameItems ? contexts : undefined);\n }\n\n private _updateContexts(\n updatedItems: T[],\n changedFieldIdsByItem?: string[][],\n ): CollectionUpdateContext<T>[] {\n return updatedItems.map((item, index) => {\n const key = this._parent.collection.itemKey(item);\n const previousItem =\n this._parent.collection.result.get(key)?.item ?? item;\n return {\n previousItem,\n changedFieldIds:\n changedFieldIdsByItem?.[index] ??\n changedFieldIdsFromItems(previousItem, item),\n };\n });\n }\n\n /**\n * Nearest row above `rowKey` that a create can anchor on: a server row\n * that is not a draft and not itself a created row still living as an\n * optimistic patch. Anchoring one create on another strands the new row\n * at the top of the table — the core merge repositions created patches\n * newest-first, so the anchor moves away after the new row is placed.\n */\n private _serverAnchorFor(rowKey: string): string | undefined {\n const keyedItems = this._parent.keyedItems;\n const start = keyedItems.findIndex((ki) => ki.key === rowKey);\n for (let i = start - 1; i >= 0; i--) {\n const key = keyedItems[i].key;\n if (\n !this._drafts.has(key) &&\n !this._pendingCreateKeys.has(key) &&\n !this._isPatchCreatedRow(key)\n ) {\n return key;\n }\n }\n return undefined;\n }\n\n private _isPatchCreatedRow(key: string): boolean {\n return this._optimisticActions.state.patches.some(\n (patch) =>\n patch.actionType === 'createMany' && patch.patchedItems.has(key),\n );\n }\n\n private _survivingAnchorAbove(\n key: string,\n deleted: Set<string>,\n ): string | undefined {\n const keyedItems = this._parent.keyedItems;\n const start = keyedItems.findIndex((ki) => ki.key === key);\n for (let i = start - 1; i >= 0; i--) {\n const k = keyedItems[i].key;\n if (!deleted.has(k)) {\n return k;\n }\n }\n return undefined;\n }\n\n private readonly _submitCreate = async (items: T[]) => {\n const createdItems = await this._handlers.submitCreate(items);\n if (!createdItems) {\n return createdItems;\n }\n\n const { itemKey } = this._parent.collection;\n runInAction(() => {\n createdItems.forEach((createdItem, index) => {\n const submittedItem = items[index];\n if (!submittedItem) {\n return;\n }\n\n const oldKey = itemKey(submittedItem);\n const newKey = itemKey(createdItem);\n this._pendingCreateKeys.delete(oldKey);\n // The server assigned the row a new key — drafts anchored on the\n // old key must follow the row under its new key.\n for (const [rowKey, draft] of this._drafts) {\n if (draft.afterItemKey === oldKey) {\n this._drafts.set(rowKey, { ...draft, afterItemKey: newKey });\n }\n }\n this._parent.cellInteraction.replaceRowKey(oldKey, newKey);\n });\n });\n\n return createdItems;\n };\n}\n\nconst changedFieldIdsFromItems = <T>(\n previousItem: T,\n updatedItem: T,\n): string[] => {\n if (!isRecord(previousItem) || !isRecord(updatedItem)) {\n return [];\n }\n\n return Array.from(\n new Set([...Object.keys(previousItem), ...Object.keys(updatedItem)]),\n ).filter(\n (fieldId) => !Object.is(previousItem[fieldId], updatedItem[fieldId]),\n );\n};\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null;\n"],"mappings":"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","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_ = "
|
|
8
|
+
var _namespace_ = "FormPageHeader758396072";
|
|
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": "
|
|
15
|
+
"root": "FormPageHeader758396072__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_ = \"
|
|
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_ = \"FormPageHeader758396072\";\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\":\"FormPageHeader758396072__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":[]}
|