@umodeapporg/ui 0.0.0-canary.ca10e69
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/README.md +78 -0
- package/dist/assets/images/common-pngs/sparkles.png.js +5 -0
- package/dist/assets/images/common-pngs/sparkles.png.js.map +1 -0
- package/dist/assets/umode-ui.css +467 -0
- package/dist/components/DateTime/DatePicker.d.ts +21 -0
- package/dist/components/DateTime/DatePicker.js +124 -0
- package/dist/components/DateTime/DatePicker.js.map +1 -0
- package/dist/components/DateTime/DateRangePicker.d.ts +21 -0
- package/dist/components/DateTime/DateRangePicker.js +208 -0
- package/dist/components/DateTime/DateRangePicker.js.map +1 -0
- package/dist/components/Form/ControlledButton.d.ts +25 -0
- package/dist/components/Form/ControlledButton.js +73 -0
- package/dist/components/Form/ControlledButton.js.map +1 -0
- package/dist/components/Form/ControlledCheckbox.d.ts +16 -0
- package/dist/components/Form/ControlledCheckbox.js +115 -0
- package/dist/components/Form/ControlledCheckbox.js.map +1 -0
- package/dist/components/Form/ControlledDialog.d.ts +51 -0
- package/dist/components/Form/ControlledDialog.js +191 -0
- package/dist/components/Form/ControlledDialog.js.map +1 -0
- package/dist/components/Form/ControlledDialogPrimitives.d.ts +53 -0
- package/dist/components/Form/ControlledDialogPrimitives.js +245 -0
- package/dist/components/Form/ControlledDialogPrimitives.js.map +1 -0
- package/dist/components/Form/ControlledDrawer.d.ts +37 -0
- package/dist/components/Form/ControlledDrawer.js +241 -0
- package/dist/components/Form/ControlledDrawer.js.map +1 -0
- package/dist/components/Form/ControlledForm/InputField.d.ts +11 -0
- package/dist/components/Form/ControlledForm/InputField.js +75 -0
- package/dist/components/Form/ControlledForm/InputField.js.map +1 -0
- package/dist/components/Form/ControlledForm/index.d.ts +27 -0
- package/dist/components/Form/ControlledForm/index.js +113 -0
- package/dist/components/Form/ControlledForm/index.js.map +1 -0
- package/dist/components/Form/ControlledImage/Img.d.ts +11 -0
- package/dist/components/Form/ControlledImage/Img.js +29 -0
- package/dist/components/Form/ControlledImage/Img.js.map +1 -0
- package/dist/components/Form/ControlledImage/index.d.ts +33 -0
- package/dist/components/Form/ControlledImage/index.js +110 -0
- package/dist/components/Form/ControlledImage/index.js.map +1 -0
- package/dist/components/Form/ControlledImage/useImage.d.ts +9 -0
- package/dist/components/Form/ControlledImage/useImage.js +110 -0
- package/dist/components/Form/ControlledImage/useImage.js.map +1 -0
- package/dist/components/Form/ControlledInput.d.ts +23 -0
- package/dist/components/Form/ControlledInput.js +52 -0
- package/dist/components/Form/ControlledInput.js.map +1 -0
- package/dist/components/Form/ControlledRadio.d.ts +15 -0
- package/dist/components/Form/ControlledRadio.js +91 -0
- package/dist/components/Form/ControlledRadio.js.map +1 -0
- package/dist/components/Form/ControlledSelect.d.ts +53 -0
- package/dist/components/Form/ControlledSelect.js +797 -0
- package/dist/components/Form/ControlledSelect.js.map +1 -0
- package/dist/components/Form/ControlledSwitch.d.ts +21 -0
- package/dist/components/Form/ControlledSwitch.js +107 -0
- package/dist/components/Form/ControlledSwitch.js.map +1 -0
- package/dist/components/Form/ControlledTabs.d.ts +75 -0
- package/dist/components/Form/ControlledTabs.js +515 -0
- package/dist/components/Form/ControlledTabs.js.map +1 -0
- package/dist/components/Form/ControlledTabsPrimitives.d.ts +43 -0
- package/dist/components/Form/ControlledTabsPrimitives.js +48 -0
- package/dist/components/Form/ControlledTabsPrimitives.js.map +1 -0
- package/dist/components/Form/ControlledTextarea.d.ts +22 -0
- package/dist/components/Form/ControlledTextarea.js +46 -0
- package/dist/components/Form/ControlledTextarea.js.map +1 -0
- package/dist/components/Form/ControlledTimeline.d.ts +26 -0
- package/dist/components/Form/ControlledTimeline.js +60 -0
- package/dist/components/Form/ControlledTimeline.js.map +1 -0
- package/dist/components/Form/ControlledViewToggle.d.ts +74 -0
- package/dist/components/Form/ControlledViewToggle.js +157 -0
- package/dist/components/Form/ControlledViewToggle.js.map +1 -0
- package/dist/components/Form/ControlledVoiceTextarea.d.ts +13 -0
- package/dist/components/Form/ControlledVoiceTextarea.js +99 -0
- package/dist/components/Form/ControlledVoiceTextarea.js.map +1 -0
- package/dist/components/Form/CurrencyInput.d.ts +8 -0
- package/dist/components/Form/CurrencyInput.js +17 -0
- package/dist/components/Form/CurrencyInput.js.map +1 -0
- package/dist/components/Form/FieldLabel.d.ts +16 -0
- package/dist/components/Form/FieldLabel.js +7 -0
- package/dist/components/Form/FieldLabel.js.map +1 -0
- package/dist/components/Form/RichTextEditor.d.ts +86 -0
- package/dist/components/Form/RichTextEditor.js +581 -0
- package/dist/components/Form/RichTextEditor.js.map +1 -0
- package/dist/components/Form/attachments/AttachmentPreviewList.d.ts +22 -0
- package/dist/components/Form/attachments/AttachmentPreviewList.js +95 -0
- package/dist/components/Form/attachments/AttachmentPreviewList.js.map +1 -0
- package/dist/components/Form/attachments/FileDropzone.d.ts +12 -0
- package/dist/components/Form/attachments/FileDropzone.js +84 -0
- package/dist/components/Form/attachments/FileDropzone.js.map +1 -0
- package/dist/components/Navigation/ControlledBreadcrumb.d.ts +13 -0
- package/dist/components/Navigation/ControlledBreadcrumb.js +24 -0
- package/dist/components/Navigation/ControlledBreadcrumb.js.map +1 -0
- package/dist/components/Navigation/ErrorPage.d.ts +2 -0
- package/dist/components/Navigation/ErrorPage.js +27 -0
- package/dist/components/Navigation/ErrorPage.js.map +1 -0
- package/dist/components/Navigation/LinkButton.d.ts +26 -0
- package/dist/components/Navigation/LinkButton.js +82 -0
- package/dist/components/Navigation/LinkButton.js.map +1 -0
- package/dist/components/Navigation/PageTitle.d.ts +95 -0
- package/dist/components/Navigation/PageTitle.js +241 -0
- package/dist/components/Navigation/PageTitle.js.map +1 -0
- package/dist/components/Navigation/PageTitleCollapseContext.d.ts +13 -0
- package/dist/components/Navigation/PageTitleCollapseContext.js +9 -0
- package/dist/components/Navigation/PageTitleCollapseContext.js.map +1 -0
- package/dist/components/Navigation/PageTitleNavigationContext.d.ts +21 -0
- package/dist/components/Navigation/PageTitleNavigationContext.js +17 -0
- package/dist/components/Navigation/PageTitleNavigationContext.js.map +1 -0
- package/dist/components/Navigation/ReactRouterNavigationAdapter.d.ts +7 -0
- package/dist/components/Navigation/ReactRouterNavigationAdapter.js +27 -0
- package/dist/components/Navigation/ReactRouterNavigationAdapter.js.map +1 -0
- package/dist/components/Navigation/UiNavigationContext.d.ts +38 -0
- package/dist/components/Navigation/UiNavigationContext.js +44 -0
- package/dist/components/Navigation/UiNavigationContext.js.map +1 -0
- package/dist/components/Search/UnifiedSearchBar.d.ts +31 -0
- package/dist/components/Search/UnifiedSearchBar.js +167 -0
- package/dist/components/Search/UnifiedSearchBar.js.map +1 -0
- package/dist/components/Search/filters/ActiveFiltersBar.d.ts +15 -0
- package/dist/components/Search/filters/ActiveFiltersBar.js +48 -0
- package/dist/components/Search/filters/ActiveFiltersBar.js.map +1 -0
- package/dist/components/Search/filters/FilterChipsRow.d.ts +17 -0
- package/dist/components/Search/filters/FilterChipsRow.js +113 -0
- package/dist/components/Search/filters/FilterChipsRow.js.map +1 -0
- package/dist/components/Search/filters/FilterFieldControl.d.ts +19 -0
- package/dist/components/Search/filters/FilterFieldControl.js +390 -0
- package/dist/components/Search/filters/FilterFieldControl.js.map +1 -0
- package/dist/components/Search/filters/FiltersButton.d.ts +24 -0
- package/dist/components/Search/filters/FiltersButton.js +52 -0
- package/dist/components/Search/filters/FiltersButton.js.map +1 -0
- package/dist/components/Search/filters/FiltersForm.d.ts +18 -0
- package/dist/components/Search/filters/FiltersForm.js +112 -0
- package/dist/components/Search/filters/FiltersForm.js.map +1 -0
- package/dist/components/Search/filters/FiltersPanel.d.ts +32 -0
- package/dist/components/Search/filters/FiltersPanel.js +266 -0
- package/dist/components/Search/filters/FiltersPanel.js.map +1 -0
- package/dist/components/Search/filters/FiltersSummaryTooltip.d.ts +20 -0
- package/dist/components/Search/filters/FiltersSummaryTooltip.js +26 -0
- package/dist/components/Search/filters/FiltersSummaryTooltip.js.map +1 -0
- package/dist/components/Search/filters/filterTypes.d.ts +162 -0
- package/dist/components/Search/filters/filterTypes.js +2 -0
- package/dist/components/Search/filters/filterTypes.js.map +1 -0
- package/dist/components/Search/filters/filterValues.d.ts +22 -0
- package/dist/components/Search/filters/filterValues.js +91 -0
- package/dist/components/Search/filters/filterValues.js.map +1 -0
- package/dist/components/Search/filters/filtersLayout.d.ts +4 -0
- package/dist/components/Search/filters/filtersLayout.js +18 -0
- package/dist/components/Search/filters/filtersLayout.js.map +1 -0
- package/dist/components/Search/filters/index.d.ts +11 -0
- package/dist/components/Search/filters/index.js +32 -0
- package/dist/components/Search/filters/index.js.map +1 -0
- package/dist/components/Search/filters/useFilters.d.ts +33 -0
- package/dist/components/Search/filters/useFilters.js +162 -0
- package/dist/components/Search/filters/useFilters.js.map +1 -0
- package/dist/components/Search/index.d.ts +2 -0
- package/dist/components/Search/index.js +34 -0
- package/dist/components/Search/index.js.map +1 -0
- package/dist/components/Shell/AppHeader.d.ts +25 -0
- package/dist/components/Shell/AppHeader.js +69 -0
- package/dist/components/Shell/AppHeader.js.map +1 -0
- package/dist/components/Shell/AppShell.d.ts +22 -0
- package/dist/components/Shell/AppShell.js +146 -0
- package/dist/components/Shell/AppShell.js.map +1 -0
- package/dist/components/Shell/AppSidebar.d.ts +20 -0
- package/dist/components/Shell/AppSidebar.js +93 -0
- package/dist/components/Shell/AppSidebar.js.map +1 -0
- package/dist/components/Shell/LanguageToggle.d.ts +8 -0
- package/dist/components/Shell/LanguageToggle.js +59 -0
- package/dist/components/Shell/LanguageToggle.js.map +1 -0
- package/dist/components/Shell/PumpkinGlyph.d.ts +13 -0
- package/dist/components/Shell/PumpkinGlyph.js +29 -0
- package/dist/components/Shell/PumpkinGlyph.js.map +1 -0
- package/dist/components/Shell/SidebarMenu.d.ts +29 -0
- package/dist/components/Shell/SidebarMenu.js +254 -0
- package/dist/components/Shell/SidebarMenu.js.map +1 -0
- package/dist/components/Shell/ThemeToggle.d.ts +18 -0
- package/dist/components/Shell/ThemeToggle.js +68 -0
- package/dist/components/Shell/ThemeToggle.js.map +1 -0
- package/dist/components/Shell/headerControlStyles.d.ts +10 -0
- package/dist/components/Shell/headerControlStyles.js +11 -0
- package/dist/components/Shell/headerControlStyles.js.map +1 -0
- package/dist/components/Shell/sidebarFavorites.d.ts +21 -0
- package/dist/components/Shell/sidebarFavorites.js +69 -0
- package/dist/components/Shell/sidebarFavorites.js.map +1 -0
- package/dist/components/Shell/useSidebarState.d.ts +14 -0
- package/dist/components/Shell/useSidebarState.js +106 -0
- package/dist/components/Shell/useSidebarState.js.map +1 -0
- package/dist/components/UI/AccordionIcon.d.ts +10 -0
- package/dist/components/UI/AccordionIcon.js +22 -0
- package/dist/components/UI/AccordionIcon.js.map +1 -0
- package/dist/components/UI/AlertInfo/dismissedAlertsStore.d.ts +2 -0
- package/dist/components/UI/AlertInfo/dismissedAlertsStore.js +22 -0
- package/dist/components/UI/AlertInfo/dismissedAlertsStore.js.map +1 -0
- package/dist/components/UI/AlertInfo/index.d.ts +30 -0
- package/dist/components/UI/AlertInfo/index.js +78 -0
- package/dist/components/UI/AlertInfo/index.js.map +1 -0
- package/dist/components/UI/BaseDataCard.d.ts +27 -0
- package/dist/components/UI/BaseDataCard.js +170 -0
- package/dist/components/UI/BaseDataCard.js.map +1 -0
- package/dist/components/UI/BulkActionBar.d.ts +35 -0
- package/dist/components/UI/BulkActionBar.js +127 -0
- package/dist/components/UI/BulkActionBar.js.map +1 -0
- package/dist/components/UI/Chips/OutlinedChip.d.ts +42 -0
- package/dist/components/UI/Chips/OutlinedChip.js +190 -0
- package/dist/components/UI/Chips/OutlinedChip.js.map +1 -0
- package/dist/components/UI/Chips/StatusChip.d.ts +8 -0
- package/dist/components/UI/Chips/StatusChip.js +33 -0
- package/dist/components/UI/Chips/StatusChip.js.map +1 -0
- package/dist/components/UI/Chips/chipTones.d.ts +6 -0
- package/dist/components/UI/Chips/chipTones.js +53 -0
- package/dist/components/UI/Chips/chipTones.js.map +1 -0
- package/dist/components/UI/ColorSwatch.d.ts +30 -0
- package/dist/components/UI/ColorSwatch.js +53 -0
- package/dist/components/UI/ColorSwatch.js.map +1 -0
- package/dist/components/UI/Colors.d.ts +10 -0
- package/dist/components/UI/Colors.js +41 -0
- package/dist/components/UI/Colors.js.map +1 -0
- package/dist/components/UI/ControlledAccordion.d.ts +38 -0
- package/dist/components/UI/ControlledAccordion.js +95 -0
- package/dist/components/UI/ControlledAccordion.js.map +1 -0
- package/dist/components/UI/ControlledCollapse.d.ts +18 -0
- package/dist/components/UI/ControlledCollapse.js +40 -0
- package/dist/components/UI/ControlledCollapse.js.map +1 -0
- package/dist/components/UI/ControlledMenu.d.ts +79 -0
- package/dist/components/UI/ControlledMenu.js +234 -0
- package/dist/components/UI/ControlledMenu.js.map +1 -0
- package/dist/components/UI/ControlledPopover.d.ts +59 -0
- package/dist/components/UI/ControlledPopover.js +189 -0
- package/dist/components/UI/ControlledPopover.js.map +1 -0
- package/dist/components/UI/ControlledProgress.d.ts +13 -0
- package/dist/components/UI/ControlledProgress.js +46 -0
- package/dist/components/UI/ControlledProgress.js.map +1 -0
- package/dist/components/UI/ControlledSlider.d.ts +15 -0
- package/dist/components/UI/ControlledSlider.js +34 -0
- package/dist/components/UI/ControlledSlider.js.map +1 -0
- package/dist/components/UI/ControlledTooltip.d.ts +21 -0
- package/dist/components/UI/ControlledTooltip.js +146 -0
- package/dist/components/UI/ControlledTooltip.js.map +1 -0
- package/dist/components/UI/CustomBadge.d.ts +15 -0
- package/dist/components/UI/CustomBadge.js +34 -0
- package/dist/components/UI/CustomBadge.js.map +1 -0
- package/dist/components/UI/CustomCard.d.ts +13 -0
- package/dist/components/UI/CustomCard.js +36 -0
- package/dist/components/UI/CustomCard.js.map +1 -0
- package/dist/components/UI/CustomChart.d.ts +21 -0
- package/dist/components/UI/CustomChart.js +108 -0
- package/dist/components/UI/CustomChart.js.map +1 -0
- package/dist/components/UI/DataTable/DataTable.d.ts +108 -0
- package/dist/components/UI/DataTable/DataTable.js +606 -0
- package/dist/components/UI/DataTable/DataTable.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableAutoCard.d.ts +20 -0
- package/dist/components/UI/DataTable/DataTableAutoCard.js +39 -0
- package/dist/components/UI/DataTable/DataTableAutoCard.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableBody.d.ts +33 -0
- package/dist/components/UI/DataTable/DataTableBody.js +260 -0
- package/dist/components/UI/DataTable/DataTableBody.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableBodyCell.d.ts +21 -0
- package/dist/components/UI/DataTable/DataTableBodyCell.js +88 -0
- package/dist/components/UI/DataTable/DataTableBodyCell.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableBulkEditButton.d.ts +11 -0
- package/dist/components/UI/DataTable/DataTableBulkEditButton.js +24 -0
- package/dist/components/UI/DataTable/DataTableBulkEditButton.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableBulkEditDialog.d.ts +25 -0
- package/dist/components/UI/DataTable/DataTableBulkEditDialog.js +282 -0
- package/dist/components/UI/DataTable/DataTableBulkEditDialog.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableBulkEditRowsPicker.d.ts +13 -0
- package/dist/components/UI/DataTable/DataTableBulkEditRowsPicker.js +95 -0
- package/dist/components/UI/DataTable/DataTableBulkEditRowsPicker.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableBulkEditValueEditor.d.ts +20 -0
- package/dist/components/UI/DataTable/DataTableBulkEditValueEditor.js +94 -0
- package/dist/components/UI/DataTable/DataTableBulkEditValueEditor.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableColumnToggle.d.ts +34 -0
- package/dist/components/UI/DataTable/DataTableColumnToggle.js +170 -0
- package/dist/components/UI/DataTable/DataTableColumnToggle.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableDetailModal.d.ts +17 -0
- package/dist/components/UI/DataTable/DataTableDetailModal.js +109 -0
- package/dist/components/UI/DataTable/DataTableDetailModal.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableDetailPanel.d.ts +21 -0
- package/dist/components/UI/DataTable/DataTableDetailPanel.js +51 -0
- package/dist/components/UI/DataTable/DataTableDetailPanel.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableDetailTable.d.ts +35 -0
- package/dist/components/UI/DataTable/DataTableDetailTable.js +129 -0
- package/dist/components/UI/DataTable/DataTableDetailTable.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableEditModeButton.d.ts +12 -0
- package/dist/components/UI/DataTable/DataTableEditModeButton.js +29 -0
- package/dist/components/UI/DataTable/DataTableEditModeButton.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableFilters.d.ts +20 -0
- package/dist/components/UI/DataTable/DataTableFilters.js +65 -0
- package/dist/components/UI/DataTable/DataTableFilters.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableHead.d.ts +27 -0
- package/dist/components/UI/DataTable/DataTableHead.js +198 -0
- package/dist/components/UI/DataTable/DataTableHead.js.map +1 -0
- package/dist/components/UI/DataTable/DataTablePagination.d.ts +15 -0
- package/dist/components/UI/DataTable/DataTablePagination.js +149 -0
- package/dist/components/UI/DataTable/DataTablePagination.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableSaveButton.d.ts +13 -0
- package/dist/components/UI/DataTable/DataTableSaveButton.js +21 -0
- package/dist/components/UI/DataTable/DataTableSaveButton.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableSegmentedTabs.d.ts +8 -0
- package/dist/components/UI/DataTable/DataTableSegmentedTabs.js +35 -0
- package/dist/components/UI/DataTable/DataTableSegmentedTabs.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableStates.d.ts +17 -0
- package/dist/components/UI/DataTable/DataTableStates.js +59 -0
- package/dist/components/UI/DataTable/DataTableStates.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableToolbar.d.ts +28 -0
- package/dist/components/UI/DataTable/DataTableToolbar.js +110 -0
- package/dist/components/UI/DataTable/DataTableToolbar.js.map +1 -0
- package/dist/components/UI/DataTable/applyDataTableFilters.d.ts +16 -0
- package/dist/components/UI/DataTable/applyDataTableFilters.js +54 -0
- package/dist/components/UI/DataTable/applyDataTableFilters.js.map +1 -0
- package/dist/components/UI/DataTable/bulkEditValues.d.ts +8 -0
- package/dist/components/UI/DataTable/bulkEditValues.js +13 -0
- package/dist/components/UI/DataTable/bulkEditValues.js.map +1 -0
- package/dist/components/UI/DataTable/cells/DataTableActionsCell.d.ts +7 -0
- package/dist/components/UI/DataTable/cells/DataTableActionsCell.js +55 -0
- package/dist/components/UI/DataTable/cells/DataTableActionsCell.js.map +1 -0
- package/dist/components/UI/DataTable/cells/DataTableCell.d.ts +15 -0
- package/dist/components/UI/DataTable/cells/DataTableCell.js +63 -0
- package/dist/components/UI/DataTable/cells/DataTableCell.js.map +1 -0
- package/dist/components/UI/DataTable/cells/DataTableCodeCell.d.ts +6 -0
- package/dist/components/UI/DataTable/cells/DataTableCodeCell.js +7 -0
- package/dist/components/UI/DataTable/cells/DataTableCodeCell.js.map +1 -0
- package/dist/components/UI/DataTable/cells/DataTableColorCell.d.ts +7 -0
- package/dist/components/UI/DataTable/cells/DataTableColorCell.js +10 -0
- package/dist/components/UI/DataTable/cells/DataTableColorCell.js.map +1 -0
- package/dist/components/UI/DataTable/cells/DataTableCountCell.d.ts +5 -0
- package/dist/components/UI/DataTable/cells/DataTableCountCell.js +7 -0
- package/dist/components/UI/DataTable/cells/DataTableCountCell.js.map +1 -0
- package/dist/components/UI/DataTable/cells/DataTableDateCell.d.ts +5 -0
- package/dist/components/UI/DataTable/cells/DataTableDateCell.js +12 -0
- package/dist/components/UI/DataTable/cells/DataTableDateCell.js.map +1 -0
- package/dist/components/UI/DataTable/cells/DataTableEditableCell.d.ts +23 -0
- package/dist/components/UI/DataTable/cells/DataTableEditableCell.js +242 -0
- package/dist/components/UI/DataTable/cells/DataTableEditableCell.js.map +1 -0
- package/dist/components/UI/DataTable/cells/DataTableEmpenhoCell.d.ts +10 -0
- package/dist/components/UI/DataTable/cells/DataTableEmpenhoCell.js +7 -0
- package/dist/components/UI/DataTable/cells/DataTableEmpenhoCell.js.map +1 -0
- package/dist/components/UI/DataTable/cells/DataTableOriginCell.d.ts +6 -0
- package/dist/components/UI/DataTable/cells/DataTableOriginCell.js +25 -0
- package/dist/components/UI/DataTable/cells/DataTableOriginCell.js.map +1 -0
- package/dist/components/UI/DataTable/cells/DataTableStatusCell.d.ts +6 -0
- package/dist/components/UI/DataTable/cells/DataTableStatusCell.js +24 -0
- package/dist/components/UI/DataTable/cells/DataTableStatusCell.js.map +1 -0
- package/dist/components/UI/DataTable/cells/DataTableTagCell.d.ts +6 -0
- package/dist/components/UI/DataTable/cells/DataTableTagCell.js +25 -0
- package/dist/components/UI/DataTable/cells/DataTableTagCell.js.map +1 -0
- package/dist/components/UI/DataTable/cells/DataTableTextCell.d.ts +6 -0
- package/dist/components/UI/DataTable/cells/DataTableTextCell.js +7 -0
- package/dist/components/UI/DataTable/cells/DataTableTextCell.js.map +1 -0
- package/dist/components/UI/DataTable/cells/DataTableThumbnailCell.d.ts +6 -0
- package/dist/components/UI/DataTable/cells/DataTableThumbnailCell.js +10 -0
- package/dist/components/UI/DataTable/cells/DataTableThumbnailCell.js.map +1 -0
- package/dist/components/UI/DataTable/dataTableClasses.d.ts +12 -0
- package/dist/components/UI/DataTable/dataTableClasses.js +29 -0
- package/dist/components/UI/DataTable/dataTableClasses.js.map +1 -0
- package/dist/components/UI/DataTable/dataTableColumnWidths.d.ts +15 -0
- package/dist/components/UI/DataTable/dataTableColumnWidths.js +153 -0
- package/dist/components/UI/DataTable/dataTableColumnWidths.js.map +1 -0
- package/dist/components/UI/DataTable/dataTableColumnsStore.d.ts +12 -0
- package/dist/components/UI/DataTable/dataTableColumnsStore.js +68 -0
- package/dist/components/UI/DataTable/dataTableColumnsStore.js.map +1 -0
- package/dist/components/UI/DataTable/dataTableMotion.d.ts +6 -0
- package/dist/components/UI/DataTable/dataTableMotion.js +15 -0
- package/dist/components/UI/DataTable/dataTableMotion.js.map +1 -0
- package/dist/components/UI/DataTable/grid/GridFillHandle.d.ts +8 -0
- package/dist/components/UI/DataTable/grid/GridFillHandle.js +70 -0
- package/dist/components/UI/DataTable/grid/GridFillHandle.js.map +1 -0
- package/dist/components/UI/DataTable/grid/GridProvider.d.ts +36 -0
- package/dist/components/UI/DataTable/grid/GridProvider.js +128 -0
- package/dist/components/UI/DataTable/grid/GridProvider.js.map +1 -0
- package/dist/components/UI/DataTable/grid/fill/fillStrategies.d.ts +19 -0
- package/dist/components/UI/DataTable/grid/fill/fillStrategies.js +73 -0
- package/dist/components/UI/DataTable/grid/fill/fillStrategies.js.map +1 -0
- package/dist/components/UI/DataTable/grid/gridStore.d.ts +82 -0
- package/dist/components/UI/DataTable/grid/gridStore.js +259 -0
- package/dist/components/UI/DataTable/grid/gridStore.js.map +1 -0
- package/dist/components/UI/DataTable/grid/gridTypes.d.ts +59 -0
- package/dist/components/UI/DataTable/grid/gridTypes.js +27 -0
- package/dist/components/UI/DataTable/grid/gridTypes.js.map +1 -0
- package/dist/components/UI/DataTable/grid/useGridFillApply.d.ts +18 -0
- package/dist/components/UI/DataTable/grid/useGridFillApply.js +74 -0
- package/dist/components/UI/DataTable/grid/useGridFillApply.js.map +1 -0
- package/dist/components/UI/DataTable/grid/useGridInstance.d.ts +27 -0
- package/dist/components/UI/DataTable/grid/useGridInstance.js +41 -0
- package/dist/components/UI/DataTable/grid/useGridInstance.js.map +1 -0
- package/dist/components/UI/DataTable/grid/useGridKeyboard.d.ts +25 -0
- package/dist/components/UI/DataTable/grid/useGridKeyboard.js +135 -0
- package/dist/components/UI/DataTable/grid/useGridKeyboard.js.map +1 -0
- package/dist/components/UI/DataTable/index.d.ts +19 -0
- package/dist/components/UI/DataTable/index.js +34 -0
- package/dist/components/UI/DataTable/index.js.map +1 -0
- package/dist/components/UI/DataTable/types.d.ts +535 -0
- package/dist/components/UI/DataTable/types.js +13 -0
- package/dist/components/UI/DataTable/types.js.map +1 -0
- package/dist/components/UI/DataTable/useCellEditingState.d.ts +20 -0
- package/dist/components/UI/DataTable/useCellEditingState.js +33 -0
- package/dist/components/UI/DataTable/useCellEditingState.js.map +1 -0
- package/dist/components/UI/DataTable/useColumnOrder.d.ts +25 -0
- package/dist/components/UI/DataTable/useColumnOrder.js +94 -0
- package/dist/components/UI/DataTable/useColumnOrder.js.map +1 -0
- package/dist/components/UI/DataTable/useColumnSizing.d.ts +9 -0
- package/dist/components/UI/DataTable/useColumnSizing.js +21 -0
- package/dist/components/UI/DataTable/useColumnSizing.js.map +1 -0
- package/dist/components/UI/DataTable/useColumnVisibility.d.ts +19 -0
- package/dist/components/UI/DataTable/useColumnVisibility.js +47 -0
- package/dist/components/UI/DataTable/useColumnVisibility.js.map +1 -0
- package/dist/components/UI/DataTable/useDataTableCommitQueue.d.ts +69 -0
- package/dist/components/UI/DataTable/useDataTableCommitQueue.js +220 -0
- package/dist/components/UI/DataTable/useDataTableCommitQueue.js.map +1 -0
- package/dist/components/UI/DataTable/useDataTableEditBuffer.d.ts +36 -0
- package/dist/components/UI/DataTable/useDataTableEditBuffer.js +29 -0
- package/dist/components/UI/DataTable/useDataTableEditBuffer.js.map +1 -0
- package/dist/components/UI/DataTable/useDataTableInstance.d.ts +65 -0
- package/dist/components/UI/DataTable/useDataTableInstance.js +336 -0
- package/dist/components/UI/DataTable/useDataTableInstance.js.map +1 -0
- package/dist/components/UI/DataTable/useDataTableSource.d.ts +85 -0
- package/dist/components/UI/DataTable/useDataTableSource.js +199 -0
- package/dist/components/UI/DataTable/useDataTableSource.js.map +1 -0
- package/dist/components/UI/DataTable/useDataTableUndoHistory.d.ts +30 -0
- package/dist/components/UI/DataTable/useDataTableUndoHistory.js +130 -0
- package/dist/components/UI/DataTable/useDataTableUndoHistory.js.map +1 -0
- package/dist/components/UI/DataTable/useFlipRows.d.ts +22 -0
- package/dist/components/UI/DataTable/useFlipRows.js +90 -0
- package/dist/components/UI/DataTable/useFlipRows.js.map +1 -0
- package/dist/components/UI/ErrorBoundary.d.ts +20 -0
- package/dist/components/UI/ErrorBoundary.js +36 -0
- package/dist/components/UI/ErrorBoundary.js.map +1 -0
- package/dist/components/UI/Flow/FlowAnnotationDraftPreview.d.ts +6 -0
- package/dist/components/UI/Flow/FlowAnnotationDraftPreview.js +65 -0
- package/dist/components/UI/Flow/FlowAnnotationDraftPreview.js.map +1 -0
- package/dist/components/UI/Flow/FlowAnnotationNode.d.ts +34 -0
- package/dist/components/UI/Flow/FlowAnnotationNode.js +231 -0
- package/dist/components/UI/Flow/FlowAnnotationNode.js.map +1 -0
- package/dist/components/UI/Flow/FlowAnnotationToolbar.d.ts +32 -0
- package/dist/components/UI/Flow/FlowAnnotationToolbar.js +298 -0
- package/dist/components/UI/Flow/FlowAnnotationToolbar.js.map +1 -0
- package/dist/components/UI/Flow/FlowBlockNode.d.ts +35 -0
- package/dist/components/UI/Flow/FlowBlockNode.js +91 -0
- package/dist/components/UI/Flow/FlowBlockNode.js.map +1 -0
- package/dist/components/UI/Flow/FlowCanvas.d.ts +23 -0
- package/dist/components/UI/Flow/FlowCanvas.js +559 -0
- package/dist/components/UI/Flow/FlowCanvas.js.map +1 -0
- package/dist/components/UI/Flow/FlowConnectionEdge.d.ts +18 -0
- package/dist/components/UI/Flow/FlowConnectionEdge.js +116 -0
- package/dist/components/UI/Flow/FlowConnectionEdge.js.map +1 -0
- package/dist/components/UI/Flow/FlowEditorProvider.d.ts +17 -0
- package/dist/components/UI/Flow/FlowEditorProvider.js +27 -0
- package/dist/components/UI/Flow/FlowEditorProvider.js.map +1 -0
- package/dist/components/UI/Flow/FlowInspector.d.ts +11 -0
- package/dist/components/UI/Flow/FlowInspector.js +131 -0
- package/dist/components/UI/Flow/FlowInspector.js.map +1 -0
- package/dist/components/UI/Flow/FlowIssueList.d.ts +8 -0
- package/dist/components/UI/Flow/FlowIssueList.js +55 -0
- package/dist/components/UI/Flow/FlowIssueList.js.map +1 -0
- package/dist/components/UI/Flow/FlowLaneMap.d.ts +30 -0
- package/dist/components/UI/Flow/FlowLaneMap.js +206 -0
- package/dist/components/UI/Flow/FlowLaneMap.js.map +1 -0
- package/dist/components/UI/Flow/FlowNodeShell.d.ts +20 -0
- package/dist/components/UI/Flow/FlowNodeShell.js +81 -0
- package/dist/components/UI/Flow/FlowNodeShell.js.map +1 -0
- package/dist/components/UI/Flow/FlowResizablePanel.d.ts +20 -0
- package/dist/components/UI/Flow/FlowResizablePanel.js +118 -0
- package/dist/components/UI/Flow/FlowResizablePanel.js.map +1 -0
- package/dist/components/UI/Flow/FlowSelectionBar.d.ts +10 -0
- package/dist/components/UI/Flow/FlowSelectionBar.js +56 -0
- package/dist/components/UI/Flow/FlowSelectionBar.js.map +1 -0
- package/dist/components/UI/Flow/FlowZoomControls.d.ts +12 -0
- package/dist/components/UI/Flow/FlowZoomControls.js +54 -0
- package/dist/components/UI/Flow/FlowZoomControls.js.map +1 -0
- package/dist/components/UI/Flow/flowAnnotations.d.ts +38 -0
- package/dist/components/UI/Flow/flowAnnotations.js +123 -0
- package/dist/components/UI/Flow/flowAnnotations.js.map +1 -0
- package/dist/components/UI/Flow/flowBlockRegistry.d.ts +12 -0
- package/dist/components/UI/Flow/flowBlockRegistry.js +20 -0
- package/dist/components/UI/Flow/flowBlockRegistry.js.map +1 -0
- package/dist/components/UI/Flow/flowEditorStore.d.ts +73 -0
- package/dist/components/UI/Flow/flowEditorStore.js +402 -0
- package/dist/components/UI/Flow/flowEditorStore.js.map +1 -0
- package/dist/components/UI/Flow/flowGraph.d.ts +32 -0
- package/dist/components/UI/Flow/flowGraph.js +157 -0
- package/dist/components/UI/Flow/flowGraph.js.map +1 -0
- package/dist/components/UI/Flow/flowTypes.d.ts +104 -0
- package/dist/components/UI/Flow/flowTypes.js +2 -0
- package/dist/components/UI/Flow/flowTypes.js.map +1 -0
- package/dist/components/UI/Flow/flowViewport.d.ts +25 -0
- package/dist/components/UI/Flow/flowViewport.js +31 -0
- package/dist/components/UI/Flow/flowViewport.js.map +1 -0
- package/dist/components/UI/Flow/index.d.ts +13 -0
- package/dist/components/UI/Flow/index.js +44 -0
- package/dist/components/UI/Flow/index.js.map +1 -0
- package/dist/components/UI/Flow/useFlowAnnotationDrawing.d.ts +25 -0
- package/dist/components/UI/Flow/useFlowAnnotationDrawing.js +117 -0
- package/dist/components/UI/Flow/useFlowAnnotationDrawing.js.map +1 -0
- package/dist/components/UI/Flow/useFlowLabels.d.ts +10 -0
- package/dist/components/UI/Flow/useFlowLabels.js +51 -0
- package/dist/components/UI/Flow/useFlowLabels.js.map +1 -0
- package/dist/components/UI/GeneratedByAI.d.ts +2 -0
- package/dist/components/UI/GeneratedByAI.js +12 -0
- package/dist/components/UI/GeneratedByAI.js.map +1 -0
- package/dist/components/UI/HorizontalScrollArea.d.ts +22 -0
- package/dist/components/UI/HorizontalScrollArea.js +74 -0
- package/dist/components/UI/HorizontalScrollArea.js.map +1 -0
- package/dist/components/UI/ImageAiAdjust/ImageAiAdjustDialog.d.ts +21 -0
- package/dist/components/UI/ImageAiAdjust/ImageAiAdjustDialog.js +235 -0
- package/dist/components/UI/ImageAiAdjust/ImageAiAdjustDialog.js.map +1 -0
- package/dist/components/UI/ImageAiAdjust/ImageAiDiscardReasonDialog.d.ts +8 -0
- package/dist/components/UI/ImageAiAdjust/ImageAiDiscardReasonDialog.js +67 -0
- package/dist/components/UI/ImageAiAdjust/ImageAiDiscardReasonDialog.js.map +1 -0
- package/dist/components/UI/ImageAiAdjust/ImageAiVerificationNotice.d.ts +8 -0
- package/dist/components/UI/ImageAiAdjust/ImageAiVerificationNotice.js +39 -0
- package/dist/components/UI/ImageAiAdjust/ImageAiVerificationNotice.js.map +1 -0
- package/dist/components/UI/ImageAiAdjust/imageAiReview.d.ts +22 -0
- package/dist/components/UI/ImageAiAdjust/imageAiReview.js +37 -0
- package/dist/components/UI/ImageAiAdjust/imageAiReview.js.map +1 -0
- package/dist/components/UI/ImageAiAdjust/imageAiVerification.d.ts +19 -0
- package/dist/components/UI/ImageAiAdjust/imageAiVerification.js +25 -0
- package/dist/components/UI/ImageAiAdjust/imageAiVerification.js.map +1 -0
- package/dist/components/UI/ImageAiAdjust/useImageAiAdjust.d.ts +52 -0
- package/dist/components/UI/ImageAiAdjust/useImageAiAdjust.js +109 -0
- package/dist/components/UI/ImageAiAdjust/useImageAiAdjust.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/AnnotationEditor.d.ts +13 -0
- package/dist/components/UI/ImageAnnotator/AnnotationEditor.js +362 -0
- package/dist/components/UI/ImageAnnotator/AnnotationEditor.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/ImageAnnotationDialog.d.ts +15 -0
- package/dist/components/UI/ImageAnnotator/ImageAnnotationDialog.js +61 -0
- package/dist/components/UI/ImageAnnotator/ImageAnnotationDialog.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/annotationStyle.d.ts +28 -0
- package/dist/components/UI/ImageAnnotator/annotationStyle.js +56 -0
- package/dist/components/UI/ImageAnnotator/annotationStyle.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/canvas/AnnotationCropFrame.d.ts +16 -0
- package/dist/components/UI/ImageAnnotator/canvas/AnnotationCropFrame.js +156 -0
- package/dist/components/UI/ImageAnnotator/canvas/AnnotationCropFrame.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/canvas/AnnotationElementNode.d.ts +17 -0
- package/dist/components/UI/ImageAnnotator/canvas/AnnotationElementNode.js +329 -0
- package/dist/components/UI/ImageAnnotator/canvas/AnnotationElementNode.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/canvas/AnnotationSelection.d.ts +10 -0
- package/dist/components/UI/ImageAnnotator/canvas/AnnotationSelection.js +127 -0
- package/dist/components/UI/ImageAnnotator/canvas/AnnotationSelection.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/canvas/AnnotationStage.d.ts +26 -0
- package/dist/components/UI/ImageAnnotator/canvas/AnnotationStage.js +241 -0
- package/dist/components/UI/ImageAnnotator/canvas/AnnotationStage.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationActionBar.d.ts +15 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationActionBar.js +77 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationActionBar.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationColorPopover.d.ts +11 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationColorPopover.js +70 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationColorPopover.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationCropBar.d.ts +12 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationCropBar.js +89 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationCropBar.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationElementActions.d.ts +8 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationElementActions.js +58 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationElementActions.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationStyleBar.d.ts +13 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationStyleBar.js +183 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationStyleBar.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationTextOverlay.d.ts +17 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationTextOverlay.js +79 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationTextOverlay.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationToolButton.d.ts +15 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationToolButton.js +46 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationToolButton.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationToolbar.d.ts +10 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationToolbar.js +91 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationToolbar.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/helpers/annotationCanvas.d.ts +21 -0
- package/dist/components/UI/ImageAnnotator/helpers/annotationCanvas.js +45 -0
- package/dist/components/UI/ImageAnnotator/helpers/annotationCanvas.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/helpers/annotationCrop.d.ts +12 -0
- package/dist/components/UI/ImageAnnotator/helpers/annotationCrop.js +64 -0
- package/dist/components/UI/ImageAnnotator/helpers/annotationCrop.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/helpers/annotationElements.d.ts +15 -0
- package/dist/components/UI/ImageAnnotator/helpers/annotationElements.js +165 -0
- package/dist/components/UI/ImageAnnotator/helpers/annotationElements.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/helpers/annotationExport.d.ts +15 -0
- package/dist/components/UI/ImageAnnotator/helpers/annotationExport.js +23 -0
- package/dist/components/UI/ImageAnnotator/helpers/annotationExport.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/helpers/konvaFullBuild.d.ts +8 -0
- package/dist/components/UI/ImageAnnotator/helpers/konvaFullBuild.js +10 -0
- package/dist/components/UI/ImageAnnotator/helpers/konvaFullBuild.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/hooks/useAnnotationBaseImage.d.ts +9 -0
- package/dist/components/UI/ImageAnnotator/hooks/useAnnotationBaseImage.js +56 -0
- package/dist/components/UI/ImageAnnotator/hooks/useAnnotationBaseImage.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/hooks/useAnnotationDocument.d.ts +29 -0
- package/dist/components/UI/ImageAnnotator/hooks/useAnnotationDocument.js +160 -0
- package/dist/components/UI/ImageAnnotator/hooks/useAnnotationDocument.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/hooks/useAnnotationShortcuts.d.ts +14 -0
- package/dist/components/UI/ImageAnnotator/hooks/useAnnotationShortcuts.js +80 -0
- package/dist/components/UI/ImageAnnotator/hooks/useAnnotationShortcuts.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/hooks/useCoarsePointer.d.ts +5 -0
- package/dist/components/UI/ImageAnnotator/hooks/useCoarsePointer.js +23 -0
- package/dist/components/UI/ImageAnnotator/hooks/useCoarsePointer.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/hooks/useHtmlImage.d.ts +2 -0
- package/dist/components/UI/ImageAnnotator/hooks/useHtmlImage.js +27 -0
- package/dist/components/UI/ImageAnnotator/hooks/useHtmlImage.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/interfaces/annotationDocument.d.ts +98 -0
- package/dist/components/UI/ImageAnnotator/interfaces/annotationDocument.js +13 -0
- package/dist/components/UI/ImageAnnotator/interfaces/annotationDocument.js.map +1 -0
- package/dist/components/UI/ImageMaskPainter/index.d.ts +24 -0
- package/dist/components/UI/ImageMaskPainter/index.js +284 -0
- package/dist/components/UI/ImageMaskPainter/index.js.map +1 -0
- package/dist/components/UI/ImageMaskPainter/maskStrokes.d.ts +19 -0
- package/dist/components/UI/ImageMaskPainter/maskStrokes.js +71 -0
- package/dist/components/UI/ImageMaskPainter/maskStrokes.js.map +1 -0
- package/dist/components/UI/ImagePlaceholder.d.ts +24 -0
- package/dist/components/UI/ImagePlaceholder.js +29 -0
- package/dist/components/UI/ImagePlaceholder.js.map +1 -0
- package/dist/components/UI/ImageZoomOverlay.d.ts +7 -0
- package/dist/components/UI/ImageZoomOverlay.js +53 -0
- package/dist/components/UI/ImageZoomOverlay.js.map +1 -0
- package/dist/components/UI/InformationCard.d.ts +26 -0
- package/dist/components/UI/InformationCard.js +89 -0
- package/dist/components/UI/InformationCard.js.map +1 -0
- package/dist/components/UI/Kanban/KanbanBoard.d.ts +26 -0
- package/dist/components/UI/Kanban/KanbanBoard.js +91 -0
- package/dist/components/UI/Kanban/KanbanBoard.js.map +1 -0
- package/dist/components/UI/Kanban/KanbanCard.d.ts +22 -0
- package/dist/components/UI/Kanban/KanbanCard.js +47 -0
- package/dist/components/UI/Kanban/KanbanCard.js.map +1 -0
- package/dist/components/UI/Kanban/KanbanLane.d.ts +37 -0
- package/dist/components/UI/Kanban/KanbanLane.js +77 -0
- package/dist/components/UI/Kanban/KanbanLane.js.map +1 -0
- package/dist/components/UI/Kanban/index.d.ts +4 -0
- package/dist/components/UI/Kanban/index.js +11 -0
- package/dist/components/UI/Kanban/index.js.map +1 -0
- package/dist/components/UI/Kanban/kanbanBoardContext.d.ts +13 -0
- package/dist/components/UI/Kanban/kanbanBoardContext.js +13 -0
- package/dist/components/UI/Kanban/kanbanBoardContext.js.map +1 -0
- package/dist/components/UI/LazyMarkdown.d.ts +5 -0
- package/dist/components/UI/LazyMarkdown.js +8 -0
- package/dist/components/UI/LazyMarkdown.js.map +1 -0
- package/dist/components/UI/LoadingPage.d.ts +2 -0
- package/dist/components/UI/LoadingPage.js +13 -0
- package/dist/components/UI/LoadingPage.js.map +1 -0
- package/dist/components/UI/LoadingSpinner.d.ts +14 -0
- package/dist/components/UI/LoadingSpinner.js +32 -0
- package/dist/components/UI/LoadingSpinner.js.map +1 -0
- package/dist/components/UI/MaterialSymbol/consts.d.ts +2 -0
- package/dist/components/UI/MaterialSymbol/consts.js +3472 -0
- package/dist/components/UI/MaterialSymbol/consts.js.map +1 -0
- package/dist/components/UI/MaterialSymbol/index.d.ts +18 -0
- package/dist/components/UI/MaterialSymbol/index.js +51 -0
- package/dist/components/UI/MaterialSymbol/index.js.map +1 -0
- package/dist/components/UI/MaterialSymbol/types.d.ts +37 -0
- package/dist/components/UI/MaterialSymbol/types.js +2 -0
- package/dist/components/UI/MaterialSymbol/types.js.map +1 -0
- package/dist/components/UI/NoDataFound/index.d.ts +31 -0
- package/dist/components/UI/NoDataFound/index.js +215 -0
- package/dist/components/UI/NoDataFound/index.js.map +1 -0
- package/dist/components/UI/NoDataFound/noDataFoundPresets.d.ts +31 -0
- package/dist/components/UI/NoDataFound/noDataFoundPresets.js +99 -0
- package/dist/components/UI/NoDataFound/noDataFoundPresets.js.map +1 -0
- package/dist/components/UI/ReferenceCard.d.ts +16 -0
- package/dist/components/UI/ReferenceCard.js +59 -0
- package/dist/components/UI/ReferenceCard.js.map +1 -0
- package/dist/components/UI/RichTextContent.d.ts +14 -0
- package/dist/components/UI/RichTextContent.js +30 -0
- package/dist/components/UI/RichTextContent.js.map +1 -0
- package/dist/components/UI/SkeletonLoading.d.ts +9 -0
- package/dist/components/UI/SkeletonLoading.js +20 -0
- package/dist/components/UI/SkeletonLoading.js.map +1 -0
- package/dist/components/UI/ThreeDots.d.ts +11 -0
- package/dist/components/UI/ThreeDots.js +22 -0
- package/dist/components/UI/ThreeDots.js.map +1 -0
- package/dist/components/UI/Toast.d.ts +16 -0
- package/dist/components/UI/Toast.js +81 -0
- package/dist/components/UI/Toast.js.map +1 -0
- package/dist/components/UI/ToastHost.d.ts +2 -0
- package/dist/components/UI/ToastHost.js +25 -0
- package/dist/components/UI/ToastHost.js.map +1 -0
- package/dist/components/UI/TypingEffect.d.ts +10 -0
- package/dist/components/UI/TypingEffect.js +31 -0
- package/dist/components/UI/TypingEffect.js.map +1 -0
- package/dist/components/UI/UmodeLogo.d.ts +10 -0
- package/dist/components/UI/UmodeLogo.js +128 -0
- package/dist/components/UI/UmodeLogo.js.map +1 -0
- package/dist/components/UI/UserMenu.d.ts +50 -0
- package/dist/components/UI/UserMenu.js +212 -0
- package/dist/components/UI/UserMenu.js.map +1 -0
- package/dist/components/UI/UsersAvatar.d.ts +7 -0
- package/dist/components/UI/UsersAvatar.js +29 -0
- package/dist/components/UI/UsersAvatar.js.map +1 -0
- package/dist/components/UI/access/UiAccessContext.d.ts +21 -0
- package/dist/components/UI/access/UiAccessContext.js +14 -0
- package/dist/components/UI/access/UiAccessContext.js.map +1 -0
- package/dist/components/UI/cells/ArrayCell.d.ts +5 -0
- package/dist/components/UI/cells/ArrayCell.js +25 -0
- package/dist/components/UI/cells/ArrayCell.js.map +1 -0
- package/dist/components/UI/cells/BooleanCell.d.ts +5 -0
- package/dist/components/UI/cells/BooleanCell.js +22 -0
- package/dist/components/UI/cells/BooleanCell.js.map +1 -0
- package/dist/components/UI/cells/DetailsTableCell.d.ts +7 -0
- package/dist/components/UI/cells/DetailsTableCell.js +30 -0
- package/dist/components/UI/cells/DetailsTableCell.js.map +1 -0
- package/dist/components/UI/cells/ProductImageCell.d.ts +5 -0
- package/dist/components/UI/cells/ProductImageCell.js +21 -0
- package/dist/components/UI/cells/ProductImageCell.js.map +1 -0
- package/dist/components/UI/cells/UrlLinkCell.d.ts +6 -0
- package/dist/components/UI/cells/UrlLinkCell.js +19 -0
- package/dist/components/UI/cells/UrlLinkCell.js.map +1 -0
- package/dist/components/Upload/SimpleUploaderComponent.d.ts +9 -0
- package/dist/components/Upload/SimpleUploaderComponent.js +72 -0
- package/dist/components/Upload/SimpleUploaderComponent.js.map +1 -0
- package/dist/components/Upload/UploaderComponent.d.ts +29 -0
- package/dist/components/Upload/UploaderComponent.js +241 -0
- package/dist/components/Upload/UploaderComponent.js.map +1 -0
- package/dist/components/Upload/XlsExportButton.d.ts +13 -0
- package/dist/components/Upload/XlsExportButton.js +47 -0
- package/dist/components/Upload/XlsExportButton.js.map +1 -0
- package/dist/helpers/composeRefs.d.ts +7 -0
- package/dist/helpers/composeRefs.js +14 -0
- package/dist/helpers/composeRefs.js.map +1 -0
- package/dist/helpers/dateHelpers.d.ts +47 -0
- package/dist/helpers/dateHelpers.js +69 -0
- package/dist/helpers/dateHelpers.js.map +1 -0
- package/dist/helpers/fileAttachments.d.ts +3 -0
- package/dist/helpers/fileAttachments.js +17 -0
- package/dist/helpers/fileAttachments.js.map +1 -0
- package/dist/helpers/formatHelpers.d.ts +36 -0
- package/dist/helpers/formatHelpers.js +65 -0
- package/dist/helpers/formatHelpers.js.map +1 -0
- package/dist/helpers/iconFont.d.ts +9 -0
- package/dist/helpers/iconFont.js +37 -0
- package/dist/helpers/iconFont.js.map +1 -0
- package/dist/helpers/imageCompression.d.ts +5 -0
- package/dist/helpers/imageCompression.js +49 -0
- package/dist/helpers/imageCompression.js.map +1 -0
- package/dist/helpers/imageFile.d.ts +32 -0
- package/dist/helpers/imageFile.js +108 -0
- package/dist/helpers/imageFile.js.map +1 -0
- package/dist/helpers/layeredSurfaces.d.ts +28 -0
- package/dist/helpers/layeredSurfaces.js +19 -0
- package/dist/helpers/layeredSurfaces.js.map +1 -0
- package/dist/helpers/mathHelpers.d.ts +14 -0
- package/dist/helpers/mathHelpers.js +13 -0
- package/dist/helpers/mathHelpers.js.map +1 -0
- package/dist/helpers/mergeClasses.d.ts +10 -0
- package/dist/helpers/mergeClasses.js +34 -0
- package/dist/helpers/mergeClasses.js.map +1 -0
- package/dist/helpers/moduleLoadErrorHelpers.d.ts +1 -0
- package/dist/helpers/moduleLoadErrorHelpers.js +25 -0
- package/dist/helpers/moduleLoadErrorHelpers.js.map +1 -0
- package/dist/helpers/objectHelpers.d.ts +13 -0
- package/dist/helpers/objectHelpers.js +59 -0
- package/dist/helpers/objectHelpers.js.map +1 -0
- package/dist/helpers/portalHost.d.ts +10 -0
- package/dist/helpers/portalHost.js +7 -0
- package/dist/helpers/portalHost.js.map +1 -0
- package/dist/helpers/richText.d.ts +46 -0
- package/dist/helpers/richText.js +197 -0
- package/dist/helpers/richText.js.map +1 -0
- package/dist/helpers/stringHelpers.d.ts +45 -0
- package/dist/helpers/stringHelpers.js +57 -0
- package/dist/helpers/stringHelpers.js.map +1 -0
- package/dist/helpers/themeSkins.d.ts +12 -0
- package/dist/helpers/themeSkins.js +13 -0
- package/dist/helpers/themeSkins.js.map +1 -0
- package/dist/helpers/themeTokens.d.ts +28 -0
- package/dist/helpers/themeTokens.js +35 -0
- package/dist/helpers/themeTokens.js.map +1 -0
- package/dist/helpers/uiErrorPresenter.d.ts +21 -0
- package/dist/helpers/uiErrorPresenter.js +10 -0
- package/dist/helpers/uiErrorPresenter.js.map +1 -0
- package/dist/helpers/uiLogger.d.ts +8 -0
- package/dist/helpers/uiLogger.js +16 -0
- package/dist/helpers/uiLogger.js.map +1 -0
- package/dist/helpers/uiPreferences.d.ts +13 -0
- package/dist/helpers/uiPreferences.js +35 -0
- package/dist/helpers/uiPreferences.js.map +1 -0
- package/dist/helpers/urlParamSync.d.ts +19 -0
- package/dist/helpers/urlParamSync.js +54 -0
- package/dist/helpers/urlParamSync.js.map +1 -0
- package/dist/helpers/utilityHelpers.d.ts +81 -0
- package/dist/helpers/utilityHelpers.js +133 -0
- package/dist/helpers/utilityHelpers.js.map +1 -0
- package/dist/helpers/validationHelpers.d.ts +36 -0
- package/dist/helpers/validationHelpers.js +44 -0
- package/dist/helpers/validationHelpers.js.map +1 -0
- package/dist/hooks/useAnchoredFloating.d.ts +22 -0
- package/dist/hooks/useAnchoredFloating.js +59 -0
- package/dist/hooks/useAnchoredFloating.js.map +1 -0
- package/dist/hooks/useBreakpoint.d.ts +16 -0
- package/dist/hooks/useBreakpoint.js +47 -0
- package/dist/hooks/useBreakpoint.js.map +1 -0
- package/dist/hooks/useDebounce.d.ts +8 -0
- package/dist/hooks/useDebounce.js +36 -0
- package/dist/hooks/useDebounce.js.map +1 -0
- package/dist/hooks/useFileAttachments.d.ts +43 -0
- package/dist/hooks/useFileAttachments.js +158 -0
- package/dist/hooks/useFileAttachments.js.map +1 -0
- package/dist/hooks/useHoverCapable.d.ts +6 -0
- package/dist/hooks/useHoverCapable.js +28 -0
- package/dist/hooks/useHoverCapable.js.map +1 -0
- package/dist/hooks/useInlineEditor.d.ts +5 -0
- package/dist/hooks/useInlineEditor.js +42 -0
- package/dist/hooks/useInlineEditor.js.map +1 -0
- package/dist/hooks/useMobile.d.ts +7 -0
- package/dist/hooks/useMobile.js +8 -0
- package/dist/hooks/useMobile.js.map +1 -0
- package/dist/hooks/useNotification.d.ts +38 -0
- package/dist/hooks/useNotification.js +39 -0
- package/dist/hooks/useNotification.js.map +1 -0
- package/dist/hooks/useResolvedTheme.d.ts +7 -0
- package/dist/hooks/useResolvedTheme.js +15 -0
- package/dist/hooks/useResolvedTheme.js.map +1 -0
- package/dist/hooks/useThemeSkin.d.ts +7 -0
- package/dist/hooks/useThemeSkin.js +19 -0
- package/dist/hooks/useThemeSkin.js.map +1 -0
- package/dist/hooks/useVoiceTranscription.d.ts +29 -0
- package/dist/hooks/useVoiceTranscription.js +208 -0
- package/dist/hooks/useVoiceTranscription.js.map +1 -0
- package/dist/index.d.ts +63 -0
- package/dist/index.js +157 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/IFileAttachment.d.ts +18 -0
- package/dist/interfaces/IFileAttachment.js +2 -0
- package/dist/interfaces/IFileAttachment.js.map +1 -0
- package/dist/interfaces/IFilterOption.d.ts +12 -0
- package/dist/interfaces/IFilterOption.js +2 -0
- package/dist/interfaces/IFilterOption.js.map +1 -0
- package/dist/locales/en/ui.json.d.ts +682 -0
- package/dist/locales/en/ui.json.js +120 -0
- package/dist/locales/en/ui.json.js.map +1 -0
- package/dist/locales/index.d.ts +1362 -0
- package/dist/locales/index.js +7 -0
- package/dist/locales/index.js.map +1 -0
- package/dist/locales/pt/ui.json.d.ts +682 -0
- package/dist/locales/pt/ui.json.js +120 -0
- package/dist/locales/pt/ui.json.js.map +1 -0
- package/dist/motion/index.d.ts +2 -0
- package/dist/motion/index.js +17 -0
- package/dist/motion/index.js.map +1 -0
- package/dist/motion/motionPresets.d.ts +44 -0
- package/dist/motion/motionPresets.js +67 -0
- package/dist/motion/motionPresets.js.map +1 -0
- package/dist/motion/motionTokens.d.ts +40 -0
- package/dist/motion/motionTokens.js +29 -0
- package/dist/motion/motionTokens.js.map +1 -0
- package/package.json +245 -0
- package/src/assets/fonts/LICENSE-Inter.txt +92 -0
- package/src/assets/fonts/LICENSE-MaterialSymbols.txt +202 -0
- package/src/assets/fonts/LICENSE-Virgil.txt +45 -0
- package/src/assets/fonts/inter-latin-ext.woff2 +0 -0
- package/src/assets/fonts/inter-latin.woff2 +0 -0
- package/src/assets/fonts/material-symbols-outlined.woff2 +0 -0
- package/src/assets/fonts/virgil.woff2 +0 -0
- package/src/assets/styles/base.css +585 -0
- package/src/assets/styles/index.css +1 -0
- package/src/assets/styles/theme.css +453 -0
- package/tailwind-plugins/glass.js +162 -0
- package/tailwind.preset.js +392 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gridStore.js","sources":["../../../../../src/components/UI/DataTable/grid/gridStore.ts"],"sourcesContent":["import { createStore, type StoreApi } from 'zustand/vanilla';\n\nimport {\n buildGridCellKey,\n GRID_CELL_ACTIVE,\n GRID_CELL_EDITING,\n GRID_CELL_FILL_HANDLE,\n GRID_CELL_FILL_PREVIEW,\n GRID_CELL_SAVE_ERROR,\n GRID_CELL_SAVING,\n GRID_CELL_SELECTED,\n GRID_CELL_TABBABLE,\n type IGridCellCoord,\n type IGridStartEditingOptions,\n type TGridEditingEntry,\n type TGridSelectionMode,\n} from './gridTypes';\n\nexport interface IGridMatrix {\n rowIds: Array<string>;\n columnIds: Array<string>;\n rowIndexById: Map<string, number>;\n columnIndexById: Map<string, number>;\n}\n\nexport interface IGridSelectionRect {\n rowStart: number;\n rowEnd: number;\n columnStart: number;\n columnEnd: number;\n}\n\nexport interface IGridMoveOptions {\n /** Keeps the selection anchor and stretches the rectangle to the new cell. */\n extend?: boolean;\n /** Tab-style traversal: past the last column continues on the next row. */\n wrap?: boolean;\n}\n\nexport type TGridEditingOutcome = 'commit' | 'cancel';\n\nexport interface IGridState {\n /**\n * Enquanto falso a tabela é uma tabela comum: nenhuma célula é focável, o\n * clique na linha segue sendo do host e nada do grid aparece.\n */\n isEditMode: boolean;\n setEditMode: (isEditMode: boolean) => void;\n selectionMode: TGridSelectionMode;\n matrix: IGridMatrix;\n activeCell: IGridCellCoord | null;\n selectionAnchor: IGridCellCoord | null;\n selectionRect: IGridSelectionRect | null;\n editingCell: IGridCellCoord | null;\n editingEntry: TGridEditingEntry | null;\n /** Typed text that replaces the value of the cell being opened; `null` keeps the value. */\n editingSeed: string | null;\n /** How the last edit ended, so the cell knows whether to restore its value. */\n editingOutcome: TGridEditingOutcome | null;\n /** Selection snapshot taken when the fill drag started. */\n fillSourceRect: IGridSelectionRect | null;\n /** Cells the running fill drag would write. Null while the pointer is inside the source. */\n fillTargetRect: IGridSelectionRect | null;\n /** Per-cell persistence state fed by the host's commit queue. */\n cellStatuses: ReadonlyMap<string, string>;\n setCellStatuses: (statuses: ReadonlyMap<string, string>) => void;\n setSelectionMode: (mode: TGridSelectionMode) => void;\n setMatrix: (rowIds: Array<string>, columnIds: Array<string>) => void;\n setActiveCell: (coord: IGridCellCoord, options?: { extend?: boolean }) => void;\n /** Returns whether the active cell actually moved, so the host can let Tab leave the grid. */\n moveActiveCell: (rowDelta: number, columnDelta: number, options?: IGridMoveOptions) => boolean;\n moveActiveToEdge: (rowDelta: number, columnDelta: number, options?: { extend?: boolean }) => void;\n /**\n * Tab traversal over the cells that accept an editor, opening the one it lands on.\n * Returns `false` past the first/last editable cell so the focus can leave the grid.\n */\n moveToEditableCell: (direction: 1 | -1, canEditCell: (coord: IGridCellCoord) => boolean) => boolean;\n startEditing: (coord?: IGridCellCoord, options?: IGridStartEditingOptions) => void;\n stopEditing: (outcome?: TGridEditingOutcome) => void;\n /**\n * The grid lets go of the user: the open editor closes keeping its value, as Enter would,\n * and no cell stays active or selected. Used when a press lands outside the table.\n */\n releaseActiveCell: () => void;\n clearSelection: () => void;\n startFill: () => void;\n updateFillTarget: (coord: IGridCellCoord) => void;\n /** Clears the drag state and hands back what should be written, if anything. */\n endFill: () => IGridFillResult | null;\n cancelFill: () => void;\n}\n\nexport interface IGridFillResult {\n sourceRect: IGridSelectionRect;\n targetRect: IGridSelectionRect;\n matrix: IGridMatrix;\n}\n\nconst EMPTY_MATRIX: IGridMatrix = {\n rowIds: [],\n columnIds: [],\n rowIndexById: new Map(),\n columnIndexById: new Map(),\n};\n\nconst sameIds = (current: Array<string>, next: Array<string>): boolean =>\n current.length === next.length && current.every((id, index) => id === next[index]);\n\nconst buildIndex = (ids: Array<string>): Map<string, number> => new Map(ids.map((id, index) => [id, index]));\n\nconst buildRect = (\n matrix: IGridMatrix,\n anchor: IGridCellCoord | null,\n focus: IGridCellCoord | null,\n): IGridSelectionRect | null => {\n if (!anchor || !focus) return null;\n\n const anchorRow = matrix.rowIndexById.get(anchor.rowId);\n const anchorColumn = matrix.columnIndexById.get(anchor.columnId);\n const focusRow = matrix.rowIndexById.get(focus.rowId);\n const focusColumn = matrix.columnIndexById.get(focus.columnId);\n\n if (anchorRow == null || anchorColumn == null || focusRow == null || focusColumn == null) return null;\n\n return {\n rowStart: Math.min(anchorRow, focusRow),\n rowEnd: Math.max(anchorRow, focusRow),\n columnStart: Math.min(anchorColumn, focusColumn),\n columnEnd: Math.max(anchorColumn, focusColumn),\n };\n};\n\nconst coordAt = (matrix: IGridMatrix, rowIndex: number, columnIndex: number): IGridCellCoord | null => {\n const rowId = matrix.rowIds[rowIndex];\n const columnId = matrix.columnIds[columnIndex];\n if (rowId == null || columnId == null) return null;\n\n return { rowId, columnId };\n};\n\nconst isSameCoord = (left: IGridCellCoord | null, right: IGridCellCoord | null): boolean =>\n left?.rowId === right?.rowId && left?.columnId === right?.columnId;\n\nexport const createGridStore = (\n selectionMode: TGridSelectionMode = 'cell',\n initialEditMode = true,\n): StoreApi<IGridState> =>\n createStore<IGridState>((set, get) => {\n const focusCoord = (coord: IGridCellCoord, extend: boolean) => {\n const { matrix, selectionAnchor, selectionMode: mode, editingCell } = get();\n const anchor = extend && mode === 'range' ? (selectionAnchor ?? coord) : coord;\n\n set({\n activeCell: coord,\n selectionAnchor: anchor,\n selectionRect: buildRect(matrix, anchor, coord),\n editingCell: null,\n // Moving away from an open editor keeps what was typed: only Escape discards it.\n editingOutcome: editingCell ? 'commit' : null,\n });\n };\n\n return {\n isEditMode: initialEditMode,\n selectionMode,\n matrix: EMPTY_MATRIX,\n activeCell: null,\n selectionAnchor: null,\n selectionRect: null,\n editingCell: null,\n editingEntry: null,\n editingSeed: null,\n editingOutcome: null,\n fillSourceRect: null,\n fillTargetRect: null,\n cellStatuses: new Map<string, string>(),\n\n setEditMode: (isEditMode) => {\n if (get().isEditMode === isEditMode) return;\n\n // Sair do modo devolve a tabela ao estado neutro: nada selecionado, nada\n // em edição, nenhum arraste pela metade.\n set({\n isEditMode,\n activeCell: null,\n selectionAnchor: null,\n selectionRect: null,\n editingCell: null,\n editingOutcome: null,\n fillSourceRect: null,\n fillTargetRect: null,\n });\n },\n\n setCellStatuses: (statuses) => {\n if (get().cellStatuses === statuses) return;\n set({ cellStatuses: statuses });\n },\n\n setSelectionMode: (mode) => {\n if (get().selectionMode === mode) return;\n set({ selectionMode: mode });\n },\n\n setMatrix: (rowIds, columnIds) => {\n const { matrix, activeCell, selectionAnchor, editingCell } = get();\n if (sameIds(matrix.rowIds, rowIds) && sameIds(matrix.columnIds, columnIds)) return;\n\n const nextMatrix: IGridMatrix = {\n rowIds,\n columnIds,\n rowIndexById: buildIndex(rowIds),\n columnIndexById: buildIndex(columnIds),\n };\n\n // A row or column that left the viewport (pagination, filter, column\n // hidden) takes its active/editing state with it, so the grid never\n // points at a cell the user cannot see.\n const stillExists = (coord: IGridCellCoord | null): coord is IGridCellCoord =>\n !!coord && nextMatrix.rowIndexById.has(coord.rowId) && nextMatrix.columnIndexById.has(coord.columnId);\n\n const nextActive = stillExists(activeCell) ? activeCell : null;\n const nextAnchor = stillExists(selectionAnchor) ? selectionAnchor : nextActive;\n\n set({\n matrix: nextMatrix,\n activeCell: nextActive,\n selectionAnchor: nextAnchor,\n selectionRect: buildRect(nextMatrix, nextAnchor, nextActive),\n editingCell: stillExists(editingCell) ? editingCell : null,\n });\n },\n\n setActiveCell: (coord, options) => {\n const { activeCell, editingCell } = get();\n const extend = options?.extend ?? false;\n\n // Um clique DENTRO da célula que já está sendo editada pertence ao editor,\n // não à navegação: reposicionar o cursor aqui fecharia o editor ainda no\n // mousedown, e um select nunca chegaria a abrir a lista.\n if (!extend && isSameCoord(editingCell, coord)) return;\n if (!extend && isSameCoord(activeCell, coord) && !editingCell) return;\n\n focusCoord(coord, extend);\n },\n\n moveActiveCell: (rowDelta, columnDelta, options) => {\n const { matrix, activeCell } = get();\n if (matrix.rowIds.length === 0 || matrix.columnIds.length === 0) return false;\n\n if (!activeCell) {\n const first = coordAt(matrix, 0, 0);\n if (first) focusCoord(first, false);\n return !!first;\n }\n\n const rowIndex = matrix.rowIndexById.get(activeCell.rowId);\n const columnIndex = matrix.columnIndexById.get(activeCell.columnId);\n if (rowIndex == null || columnIndex == null) return false;\n\n let nextRow = rowIndex + rowDelta;\n let nextColumn = columnIndex + columnDelta;\n\n if (options?.wrap && columnDelta !== 0) {\n if (nextColumn >= matrix.columnIds.length) {\n nextColumn = 0;\n nextRow += 1;\n } else if (nextColumn < 0) {\n nextColumn = matrix.columnIds.length - 1;\n nextRow -= 1;\n }\n }\n\n if (nextRow < 0 || nextRow >= matrix.rowIds.length) return false;\n if (nextColumn < 0 || nextColumn >= matrix.columnIds.length) return false;\n\n const next = coordAt(matrix, nextRow, nextColumn);\n if (!next) return false;\n\n focusCoord(next, options?.extend ?? false);\n return true;\n },\n\n moveActiveToEdge: (rowDelta, columnDelta, options) => {\n const { matrix, activeCell } = get();\n if (matrix.rowIds.length === 0 || matrix.columnIds.length === 0) return;\n\n const rowIndex = activeCell ? (matrix.rowIndexById.get(activeCell.rowId) ?? 0) : 0;\n const columnIndex = activeCell ? (matrix.columnIndexById.get(activeCell.columnId) ?? 0) : 0;\n\n const nextRow = rowDelta === 0 ? rowIndex : rowDelta > 0 ? matrix.rowIds.length - 1 : 0;\n const nextColumn = columnDelta === 0 ? columnIndex : columnDelta > 0 ? matrix.columnIds.length - 1 : 0;\n\n const next = coordAt(matrix, nextRow, nextColumn);\n if (next) focusCoord(next, options?.extend ?? false);\n },\n\n moveToEditableCell: (direction, canEditCell) => {\n const { matrix, activeCell } = get();\n const columnCount = matrix.columnIds.length;\n const cellCount = matrix.rowIds.length * columnCount;\n if (cellCount === 0) return false;\n\n const rowIndex = activeCell ? matrix.rowIndexById.get(activeCell.rowId) : undefined;\n const columnIndex = activeCell ? matrix.columnIndexById.get(activeCell.columnId) : undefined;\n const currentPosition = rowIndex != null && columnIndex != null ? rowIndex * columnCount + columnIndex : -1;\n\n for (let position = currentPosition + direction; position >= 0 && position < cellCount; position += direction) {\n const candidate = coordAt(matrix, Math.floor(position / columnCount), position % columnCount);\n if (!candidate || !canEditCell(candidate)) continue;\n\n focusCoord(candidate, false);\n get().startEditing(candidate, { entry: 'keyboard' });\n return true;\n }\n\n return false;\n },\n\n startEditing: (coord, options) => {\n const { activeCell, editingCell, matrix } = get();\n const target = coord ?? activeCell;\n if (!target || isSameCoord(editingCell, target)) return;\n\n set({\n activeCell: target,\n selectionAnchor: target,\n selectionRect: buildRect(matrix, target, target),\n editingCell: target,\n editingEntry: options?.entry ?? 'keyboard',\n editingSeed: options?.seed ?? null,\n editingOutcome: null,\n });\n },\n\n stopEditing: (outcome = 'commit') => {\n if (!get().editingCell) return;\n set({ editingCell: null, editingOutcome: outcome });\n },\n\n releaseActiveCell: () => {\n const { activeCell, editingCell, fillSourceRect } = get();\n if (!activeCell && !editingCell && !fillSourceRect) return;\n\n set({\n activeCell: null,\n selectionAnchor: null,\n selectionRect: null,\n editingCell: null,\n ...(editingCell ? { editingOutcome: 'commit' as const } : {}),\n fillSourceRect: null,\n fillTargetRect: null,\n });\n },\n\n clearSelection: () => {\n const { activeCell, matrix } = get();\n set({\n selectionAnchor: activeCell,\n selectionRect: buildRect(matrix, activeCell, activeCell),\n });\n },\n\n startFill: () => {\n const { selectionRect } = get();\n if (!selectionRect) return;\n set({ fillSourceRect: selectionRect, fillTargetRect: null, editingCell: null });\n },\n\n updateFillTarget: (coord) => {\n const { fillSourceRect, fillTargetRect, matrix } = get();\n if (!fillSourceRect) return;\n\n const rowIndex = matrix.rowIndexById.get(coord.rowId);\n if (rowIndex == null) return;\n\n // Vertical only for now. The rect shape is already 2D, so a horizontal\n // drag is a second branch here and nothing else in the layer changes.\n let nextTarget: IGridSelectionRect | null = null;\n if (rowIndex > fillSourceRect.rowEnd) {\n nextTarget = { ...fillSourceRect, rowStart: fillSourceRect.rowEnd + 1, rowEnd: rowIndex };\n } else if (rowIndex < fillSourceRect.rowStart) {\n nextTarget = { ...fillSourceRect, rowStart: rowIndex, rowEnd: fillSourceRect.rowStart - 1 };\n }\n\n const isSameTarget =\n nextTarget?.rowStart === fillTargetRect?.rowStart && nextTarget?.rowEnd === fillTargetRect?.rowEnd;\n if (isSameTarget) return;\n\n set({ fillTargetRect: nextTarget });\n },\n\n endFill: () => {\n const { fillSourceRect, fillTargetRect, matrix } = get();\n set({ fillSourceRect: null, fillTargetRect: null });\n if (!fillSourceRect || !fillTargetRect) return null;\n\n return { sourceRect: fillSourceRect, targetRect: fillTargetRect, matrix };\n },\n\n cancelFill: () => {\n if (!get().fillSourceRect) return;\n set({ fillSourceRect: null, fillTargetRect: null });\n },\n };\n });\n\n/**\n * Bitmask of what this cell currently is. A primitive keeps the per-cell\n * subscription cheap: `useSyncExternalStore` compares it by value, so a cell\n * only re-renders when its own state actually changes.\n */\nconst isInsideRect = (rect: IGridSelectionRect | null, rowIndex?: number, columnIndex?: number): boolean =>\n !!rect &&\n rowIndex != null &&\n columnIndex != null &&\n rowIndex >= rect.rowStart &&\n rowIndex <= rect.rowEnd &&\n columnIndex >= rect.columnStart &&\n columnIndex <= rect.columnEnd;\n\nexport const selectGridCellState = (state: IGridState, rowId: string, columnId: string): number => {\n if (!state.isEditMode) return 0;\n\n let mask = 0;\n\n if (isSameCoord(state.activeCell, { rowId, columnId })) mask |= GRID_CELL_ACTIVE;\n if (isSameCoord(state.editingCell, { rowId, columnId })) mask |= GRID_CELL_EDITING;\n\n const rowIndex = state.matrix.rowIndexById.get(rowId);\n const columnIndex = state.matrix.columnIndexById.get(columnId);\n\n const rect = state.selectionRect;\n if (isInsideRect(rect, rowIndex, columnIndex)) mask |= GRID_CELL_SELECTED;\n if (rect && rowIndex === rect.rowEnd && columnIndex === rect.columnEnd) mask |= GRID_CELL_FILL_HANDLE;\n if (isInsideRect(state.fillTargetRect, rowIndex, columnIndex)) mask |= GRID_CELL_FILL_PREVIEW;\n\n if (state.cellStatuses.size > 0) {\n const status = state.cellStatuses.get(buildGridCellKey(rowId, columnId));\n if (status === 'saving' || status === 'pending') mask |= GRID_CELL_SAVING;\n if (status === 'error') mask |= GRID_CELL_SAVE_ERROR;\n }\n\n // Roving tabindex needs an entry point before the first interaction: without\n // an active cell the top-left cell is the one Tab reaches from outside.\n if (!state.activeCell && state.matrix.rowIds[0] === rowId && state.matrix.columnIds[0] === columnId) {\n mask |= GRID_CELL_TABBABLE;\n }\n\n return mask;\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spreadsheet layer types. The grid coordinates are always the TanStack row id
|
|
3
|
+
* (unique across nesting levels) plus the column id, so navigation never depends
|
|
4
|
+
* on DOM order and stays correct with hidden, reordered and resized columns.
|
|
5
|
+
*/
|
|
6
|
+
export interface IGridCellCoord {
|
|
7
|
+
rowId: string;
|
|
8
|
+
columnId: string;
|
|
9
|
+
}
|
|
10
|
+
export type TGridSelectionMode = 'cell' | 'range';
|
|
11
|
+
/**
|
|
12
|
+
* How an editor was opened, which decides what it does once it has the focus:
|
|
13
|
+
* - `pointer`: a click. Text keeps the caret at the end; a picker (select, date) opens its popup.
|
|
14
|
+
* - `keyboard`: Tab, Enter. Text is selected, so typing replaces it like a form field.
|
|
15
|
+
* - `typing`: a printable key on the active cell. The key becomes the new value; a picker opens.
|
|
16
|
+
*/
|
|
17
|
+
export type TGridEditingEntry = 'pointer' | 'keyboard' | 'typing';
|
|
18
|
+
export interface IGridStartEditingOptions {
|
|
19
|
+
entry?: TGridEditingEntry;
|
|
20
|
+
/** Text that replaces the cell value as the editor opens (the key the user typed). */
|
|
21
|
+
seed?: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Quando a camada de planilha fica ativa:
|
|
25
|
+
* - `always` (padrão): ativa desde a montagem. Numa tabela com `onRowClick`, o clique
|
|
26
|
+
* numa célula editável abre o editor e o clique no resto da linha abre o registro.
|
|
27
|
+
* - `toggle`: o usuário liga pelo botão do rodapé antes de editar. Só para tabelas em
|
|
28
|
+
* que a linha inteira precisa continuar sendo o alvo do clique.
|
|
29
|
+
*/
|
|
30
|
+
export type TGridEditModeBehavior = 'toggle' | 'always';
|
|
31
|
+
/**
|
|
32
|
+
* The part of the spreadsheet config the grid layer itself understands. The
|
|
33
|
+
* row-typed part (fill handlers) lives in `types.ts`, which extends this.
|
|
34
|
+
*/
|
|
35
|
+
export interface IGridNavigationConfig {
|
|
36
|
+
/** Arrow/Tab/Enter navigation over an active cell. Defaults to `true`. */
|
|
37
|
+
navigation?: boolean;
|
|
38
|
+
/** `cell` keeps one cell selected; `range` enables Shift+Arrow / Shift+Click rectangles. */
|
|
39
|
+
selection?: TGridSelectionMode;
|
|
40
|
+
/** Invoked by Ctrl/Cmd+S while the grid has focus. */
|
|
41
|
+
onSave?: () => void;
|
|
42
|
+
/** Defaults to `always`. */
|
|
43
|
+
mode?: TGridEditModeBehavior;
|
|
44
|
+
}
|
|
45
|
+
export declare const GRID_CELL_ACTIVE = 1;
|
|
46
|
+
export declare const GRID_CELL_SELECTED = 2;
|
|
47
|
+
export declare const GRID_CELL_EDITING = 4;
|
|
48
|
+
export declare const GRID_CELL_FILL_PREVIEW = 8;
|
|
49
|
+
/** The cell that carries `tabIndex=0` while no cell is active yet. */
|
|
50
|
+
export declare const GRID_CELL_TABBABLE = 16;
|
|
51
|
+
/** Bottom-right corner of the selection: the cell that renders the fill handle. */
|
|
52
|
+
export declare const GRID_CELL_FILL_HANDLE = 32;
|
|
53
|
+
export declare const GRID_CELL_SAVING = 64;
|
|
54
|
+
export declare const GRID_CELL_SAVE_ERROR = 128;
|
|
55
|
+
export declare const buildGridCellKey: (rowId: string, columnId: string) => string;
|
|
56
|
+
/** DOM hook used by the fill drag to resolve which cell is under the pointer. */
|
|
57
|
+
export declare const GRID_CELL_DATA_ATTR = "data-grid-cell";
|
|
58
|
+
export declare const GRID_ROW_DATA_ATTR = "data-grid-row";
|
|
59
|
+
export declare const GRID_COLUMN_DATA_ATTR = "data-grid-column";
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
const GRID_CELL_ACTIVE = 1;
|
|
2
|
+
const GRID_CELL_SELECTED = 2;
|
|
3
|
+
const GRID_CELL_EDITING = 4;
|
|
4
|
+
const GRID_CELL_FILL_PREVIEW = 8;
|
|
5
|
+
const GRID_CELL_TABBABLE = 16;
|
|
6
|
+
const GRID_CELL_FILL_HANDLE = 32;
|
|
7
|
+
const GRID_CELL_SAVING = 64;
|
|
8
|
+
const GRID_CELL_SAVE_ERROR = 128;
|
|
9
|
+
const buildGridCellKey = (rowId, columnId) => `${rowId}::${columnId}`;
|
|
10
|
+
const GRID_CELL_DATA_ATTR = "data-grid-cell";
|
|
11
|
+
const GRID_ROW_DATA_ATTR = "data-grid-row";
|
|
12
|
+
const GRID_COLUMN_DATA_ATTR = "data-grid-column";
|
|
13
|
+
export {
|
|
14
|
+
GRID_CELL_ACTIVE,
|
|
15
|
+
GRID_CELL_DATA_ATTR,
|
|
16
|
+
GRID_CELL_EDITING,
|
|
17
|
+
GRID_CELL_FILL_HANDLE,
|
|
18
|
+
GRID_CELL_FILL_PREVIEW,
|
|
19
|
+
GRID_CELL_SAVE_ERROR,
|
|
20
|
+
GRID_CELL_SAVING,
|
|
21
|
+
GRID_CELL_SELECTED,
|
|
22
|
+
GRID_CELL_TABBABLE,
|
|
23
|
+
GRID_COLUMN_DATA_ATTR,
|
|
24
|
+
GRID_ROW_DATA_ATTR,
|
|
25
|
+
buildGridCellKey
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=gridTypes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gridTypes.js","sources":["../../../../../src/components/UI/DataTable/grid/gridTypes.ts"],"sourcesContent":["/**\n * Spreadsheet layer types. The grid coordinates are always the TanStack row id\n * (unique across nesting levels) plus the column id, so navigation never depends\n * on DOM order and stays correct with hidden, reordered and resized columns.\n */\nexport interface IGridCellCoord {\n rowId: string;\n columnId: string;\n}\n\nexport type TGridSelectionMode = 'cell' | 'range';\n\n/**\n * How an editor was opened, which decides what it does once it has the focus:\n * - `pointer`: a click. Text keeps the caret at the end; a picker (select, date) opens its popup.\n * - `keyboard`: Tab, Enter. Text is selected, so typing replaces it like a form field.\n * - `typing`: a printable key on the active cell. The key becomes the new value; a picker opens.\n */\nexport type TGridEditingEntry = 'pointer' | 'keyboard' | 'typing';\n\nexport interface IGridStartEditingOptions {\n entry?: TGridEditingEntry;\n /** Text that replaces the cell value as the editor opens (the key the user typed). */\n seed?: string;\n}\n\n/**\n * Quando a camada de planilha fica ativa:\n * - `always` (padrão): ativa desde a montagem. Numa tabela com `onRowClick`, o clique\n * numa célula editável abre o editor e o clique no resto da linha abre o registro.\n * - `toggle`: o usuário liga pelo botão do rodapé antes de editar. Só para tabelas em\n * que a linha inteira precisa continuar sendo o alvo do clique.\n */\nexport type TGridEditModeBehavior = 'toggle' | 'always';\n\n/**\n * The part of the spreadsheet config the grid layer itself understands. The\n * row-typed part (fill handlers) lives in `types.ts`, which extends this.\n */\nexport interface IGridNavigationConfig {\n /** Arrow/Tab/Enter navigation over an active cell. Defaults to `true`. */\n navigation?: boolean;\n /** `cell` keeps one cell selected; `range` enables Shift+Arrow / Shift+Click rectangles. */\n selection?: TGridSelectionMode;\n /** Invoked by Ctrl/Cmd+S while the grid has focus. */\n onSave?: () => void;\n /** Defaults to `always`. */\n mode?: TGridEditModeBehavior;\n}\n\nexport const GRID_CELL_ACTIVE = 1;\nexport const GRID_CELL_SELECTED = 2;\nexport const GRID_CELL_EDITING = 4;\nexport const GRID_CELL_FILL_PREVIEW = 8;\n/** The cell that carries `tabIndex=0` while no cell is active yet. */\nexport const GRID_CELL_TABBABLE = 16;\n/** Bottom-right corner of the selection: the cell that renders the fill handle. */\nexport const GRID_CELL_FILL_HANDLE = 32;\nexport const GRID_CELL_SAVING = 64;\nexport const GRID_CELL_SAVE_ERROR = 128;\n\nexport const buildGridCellKey = (rowId: string, columnId: string): string => `${rowId}::${columnId}`;\n\n/** DOM hook used by the fill drag to resolve which cell is under the pointer. */\nexport const GRID_CELL_DATA_ATTR = 'data-grid-cell';\nexport const GRID_ROW_DATA_ATTR = 'data-grid-row';\nexport const GRID_COLUMN_DATA_ATTR = 'data-grid-column';\n"],"names":[],"mappings":"AAkDO,MAAM,mBAAmB;AACzB,MAAM,qBAAqB;AAC3B,MAAM,oBAAoB;AAC1B,MAAM,yBAAyB;AAE/B,MAAM,qBAAqB;AAE3B,MAAM,wBAAwB;AAC9B,MAAM,mBAAmB;AACzB,MAAM,uBAAuB;AAE7B,MAAM,mBAAmB,CAAC,OAAe,aAA6B,GAAG,KAAK,KAAK,QAAQ;AAG3F,MAAM,sBAAsB;AAC5B,MAAM,qBAAqB;AAC3B,MAAM,wBAAwB;"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Row } from '@tanstack/react-table';
|
|
2
|
+
import { IDataTableColumnConfig, IDataTableRow, IDataTableSpreadsheetConfig } from '../types';
|
|
3
|
+
import { IGridFillResult } from './gridStore';
|
|
4
|
+
interface IUseGridFillApplyParams<T extends IDataTableRow> {
|
|
5
|
+
visibleRows: Array<Row<T>>;
|
|
6
|
+
columnConfigById: Map<string, IDataTableColumnConfig<T>>;
|
|
7
|
+
spreadsheet?: IDataTableSpreadsheetConfig<T>;
|
|
8
|
+
onCellChange?: (row: T, columnId: string, value: unknown) => void;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Turns a finished fill drag into cell changes: reads the source values per
|
|
12
|
+
* column, asks the matching strategy for each target value, and hands the whole
|
|
13
|
+
* batch to the host in ONE call (`fill.onFillCells`) so a drag over 40 rows is a
|
|
14
|
+
* single state update instead of 40. Without a batch handler it falls back to the
|
|
15
|
+
* per-cell `editing.onCellChange`.
|
|
16
|
+
*/
|
|
17
|
+
export declare const useGridFillApply: <T extends IDataTableRow>({ visibleRows, columnConfigById, spreadsheet, onCellChange, }: IUseGridFillApplyParams<T>) => (result: IGridFillResult) => void;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { useRef, useCallback } from "react";
|
|
2
|
+
import { uiLogger } from "../../../../helpers/uiLogger.js";
|
|
3
|
+
import { resolveFillStrategy } from "./fill/fillStrategies.js";
|
|
4
|
+
const DEFAULT_MAX_FILL_CELLS = 500;
|
|
5
|
+
const useGridFillApply = ({
|
|
6
|
+
visibleRows,
|
|
7
|
+
columnConfigById,
|
|
8
|
+
spreadsheet,
|
|
9
|
+
onCellChange
|
|
10
|
+
}) => {
|
|
11
|
+
const visibleRowsRef = useRef(visibleRows);
|
|
12
|
+
visibleRowsRef.current = visibleRows;
|
|
13
|
+
const columnConfigByIdRef = useRef(columnConfigById);
|
|
14
|
+
columnConfigByIdRef.current = columnConfigById;
|
|
15
|
+
const spreadsheetRef = useRef(spreadsheet);
|
|
16
|
+
spreadsheetRef.current = spreadsheet;
|
|
17
|
+
const onCellChangeRef = useRef(onCellChange);
|
|
18
|
+
onCellChangeRef.current = onCellChange;
|
|
19
|
+
return useCallback((result) => {
|
|
20
|
+
const fillConfig = spreadsheetRef.current?.fill;
|
|
21
|
+
if (!fillConfig) return;
|
|
22
|
+
const { sourceRect, targetRect, matrix } = result;
|
|
23
|
+
const rowsById = new Map(visibleRowsRef.current.map((row) => [row.id, row]));
|
|
24
|
+
const maxCells = fillConfig.maxCells ?? DEFAULT_MAX_FILL_CELLS;
|
|
25
|
+
const targetRowCount = targetRect.rowEnd - targetRect.rowStart + 1;
|
|
26
|
+
const targetColumnCount = targetRect.columnEnd - targetRect.columnStart + 1;
|
|
27
|
+
if (targetRowCount * targetColumnCount > maxCells) {
|
|
28
|
+
uiLogger.warn("DataTable fill exceeded maxCells and was ignored", {
|
|
29
|
+
targetRowCount,
|
|
30
|
+
targetColumnCount,
|
|
31
|
+
maxCells
|
|
32
|
+
});
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const fillsDownwards = targetRect.rowStart > sourceRect.rowEnd;
|
|
36
|
+
const changes = [];
|
|
37
|
+
for (let columnIndex = targetRect.columnStart; columnIndex <= targetRect.columnEnd; columnIndex += 1) {
|
|
38
|
+
const columnId = matrix.columnIds[columnIndex];
|
|
39
|
+
const columnConfig = columnId ? columnConfigByIdRef.current.get(columnId) : void 0;
|
|
40
|
+
const editable = columnConfig?.editable;
|
|
41
|
+
if (!columnId || !editable || editable.fillable === false) continue;
|
|
42
|
+
const sourceValues = [];
|
|
43
|
+
for (let rowIndex = sourceRect.rowStart; rowIndex <= sourceRect.rowEnd; rowIndex += 1) {
|
|
44
|
+
const sourceRow = rowsById.get(matrix.rowIds[rowIndex] ?? "");
|
|
45
|
+
if (sourceRow) sourceValues.push(editable.getValue(sourceRow.original));
|
|
46
|
+
}
|
|
47
|
+
if (sourceValues.length === 0) continue;
|
|
48
|
+
const strategy = resolveFillStrategy(sourceValues, editable.fillStrategy);
|
|
49
|
+
const orderedRowIndexes = [];
|
|
50
|
+
for (let rowIndex = targetRect.rowStart; rowIndex <= targetRect.rowEnd; rowIndex += 1) {
|
|
51
|
+
orderedRowIndexes.push(rowIndex);
|
|
52
|
+
}
|
|
53
|
+
if (!fillsDownwards) orderedRowIndexes.reverse();
|
|
54
|
+
orderedRowIndexes.forEach((rowIndex, offset) => {
|
|
55
|
+
const targetRow = rowsById.get(matrix.rowIds[rowIndex] ?? "");
|
|
56
|
+
if (!targetRow) return;
|
|
57
|
+
if (editable.disabled?.(targetRow.original)) return;
|
|
58
|
+
const value = strategy.generate(sourceValues, offset + 1, fillsDownwards ? 1 : -1);
|
|
59
|
+
if (editable.validate?.(value, targetRow.original)) return;
|
|
60
|
+
changes.push({ row: targetRow.original, columnId, value });
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
if (changes.length === 0) return;
|
|
64
|
+
if (fillConfig.onFillCells) {
|
|
65
|
+
fillConfig.onFillCells(changes);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
changes.forEach((change) => onCellChangeRef.current?.(change.row, change.columnId, change.value));
|
|
69
|
+
}, []);
|
|
70
|
+
};
|
|
71
|
+
export {
|
|
72
|
+
useGridFillApply
|
|
73
|
+
};
|
|
74
|
+
//# sourceMappingURL=useGridFillApply.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useGridFillApply.js","sources":["../../../../../src/components/UI/DataTable/grid/useGridFillApply.ts"],"sourcesContent":["import { useCallback, useRef } from 'react';\n\nimport { uiLogger } from '@/helpers/uiLogger';\nimport { type Row } from '@tanstack/react-table';\n\nimport type {\n IDataTableColumnConfig,\n IDataTableFillChange,\n IDataTableRow,\n IDataTableSpreadsheetConfig,\n} from '../types';\n\nimport { resolveFillStrategy } from './fill/fillStrategies';\nimport { type IGridFillResult } from './gridStore';\n\nconst DEFAULT_MAX_FILL_CELLS = 500;\n\ninterface IUseGridFillApplyParams<T extends IDataTableRow> {\n visibleRows: Array<Row<T>>;\n columnConfigById: Map<string, IDataTableColumnConfig<T>>;\n spreadsheet?: IDataTableSpreadsheetConfig<T>;\n onCellChange?: (row: T, columnId: string, value: unknown) => void;\n}\n\n/**\n * Turns a finished fill drag into cell changes: reads the source values per\n * column, asks the matching strategy for each target value, and hands the whole\n * batch to the host in ONE call (`fill.onFillCells`) so a drag over 40 rows is a\n * single state update instead of 40. Without a batch handler it falls back to the\n * per-cell `editing.onCellChange`.\n */\nexport const useGridFillApply = <T extends IDataTableRow>({\n visibleRows,\n columnConfigById,\n spreadsheet,\n onCellChange,\n}: IUseGridFillApplyParams<T>) => {\n const visibleRowsRef = useRef(visibleRows);\n visibleRowsRef.current = visibleRows;\n const columnConfigByIdRef = useRef(columnConfigById);\n columnConfigByIdRef.current = columnConfigById;\n const spreadsheetRef = useRef(spreadsheet);\n spreadsheetRef.current = spreadsheet;\n const onCellChangeRef = useRef(onCellChange);\n onCellChangeRef.current = onCellChange;\n\n return useCallback((result: IGridFillResult) => {\n const fillConfig = spreadsheetRef.current?.fill;\n if (!fillConfig) return;\n\n const { sourceRect, targetRect, matrix } = result;\n const rowsById = new Map(visibleRowsRef.current.map((row) => [row.id, row]));\n\n const maxCells = fillConfig.maxCells ?? DEFAULT_MAX_FILL_CELLS;\n const targetRowCount = targetRect.rowEnd - targetRect.rowStart + 1;\n const targetColumnCount = targetRect.columnEnd - targetRect.columnStart + 1;\n if (targetRowCount * targetColumnCount > maxCells) {\n uiLogger.warn('DataTable fill exceeded maxCells and was ignored', {\n targetRowCount,\n targetColumnCount,\n maxCells,\n });\n return;\n }\n\n const fillsDownwards = targetRect.rowStart > sourceRect.rowEnd;\n const changes: Array<IDataTableFillChange<T>> = [];\n\n for (let columnIndex = targetRect.columnStart; columnIndex <= targetRect.columnEnd; columnIndex += 1) {\n const columnId = matrix.columnIds[columnIndex];\n const columnConfig = columnId ? columnConfigByIdRef.current.get(columnId) : undefined;\n const editable = columnConfig?.editable;\n if (!columnId || !editable || editable.fillable === false) continue;\n\n const sourceValues: Array<unknown> = [];\n for (let rowIndex = sourceRect.rowStart; rowIndex <= sourceRect.rowEnd; rowIndex += 1) {\n const sourceRow = rowsById.get(matrix.rowIds[rowIndex] ?? '');\n if (sourceRow) sourceValues.push(editable.getValue(sourceRow.original));\n }\n if (sourceValues.length === 0) continue;\n\n const strategy = resolveFillStrategy(sourceValues, editable.fillStrategy);\n // Upwards, the cell nearest the source is the LAST one in the target rect,\n // so the offset counts away from the source in both directions.\n const orderedRowIndexes = [];\n for (let rowIndex = targetRect.rowStart; rowIndex <= targetRect.rowEnd; rowIndex += 1) {\n orderedRowIndexes.push(rowIndex);\n }\n if (!fillsDownwards) orderedRowIndexes.reverse();\n\n orderedRowIndexes.forEach((rowIndex, offset) => {\n const targetRow = rowsById.get(matrix.rowIds[rowIndex] ?? '');\n if (!targetRow) return;\n if (editable.disabled?.(targetRow.original)) return;\n\n const value = strategy.generate(sourceValues, offset + 1, fillsDownwards ? 1 : -1);\n if (editable.validate?.(value, targetRow.original)) return;\n\n changes.push({ row: targetRow.original, columnId, value });\n });\n }\n\n if (changes.length === 0) return;\n\n if (fillConfig.onFillCells) {\n fillConfig.onFillCells(changes);\n return;\n }\n\n changes.forEach((change) => onCellChangeRef.current?.(change.row, change.columnId, change.value));\n }, []);\n};\n"],"names":[],"mappings":";;;AAeA,MAAM,yBAAyB;AAgBxB,MAAM,mBAAmB,CAA0B;AAAA,EACxD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAkC;AAChC,QAAM,iBAAiB,OAAO,WAAW;AACzC,iBAAe,UAAU;AACzB,QAAM,sBAAsB,OAAO,gBAAgB;AACnD,sBAAoB,UAAU;AAC9B,QAAM,iBAAiB,OAAO,WAAW;AACzC,iBAAe,UAAU;AACzB,QAAM,kBAAkB,OAAO,YAAY;AAC3C,kBAAgB,UAAU;AAE1B,SAAO,YAAY,CAAC,WAA4B;AAC9C,UAAM,aAAa,eAAe,SAAS;AAC3C,QAAI,CAAC,WAAY;AAEjB,UAAM,EAAE,YAAY,YAAY,OAAA,IAAW;AAC3C,UAAM,WAAW,IAAI,IAAI,eAAe,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;AAE3E,UAAM,WAAW,WAAW,YAAY;AACxC,UAAM,iBAAiB,WAAW,SAAS,WAAW,WAAW;AACjE,UAAM,oBAAoB,WAAW,YAAY,WAAW,cAAc;AAC1E,QAAI,iBAAiB,oBAAoB,UAAU;AACjD,eAAS,KAAK,oDAAoD;AAAA,QAChE;AAAA,QACA;AAAA,QACA;AAAA,MAAA,CACD;AACD;AAAA,IACF;AAEA,UAAM,iBAAiB,WAAW,WAAW,WAAW;AACxD,UAAM,UAA0C,CAAA;AAEhD,aAAS,cAAc,WAAW,aAAa,eAAe,WAAW,WAAW,eAAe,GAAG;AACpG,YAAM,WAAW,OAAO,UAAU,WAAW;AAC7C,YAAM,eAAe,WAAW,oBAAoB,QAAQ,IAAI,QAAQ,IAAI;AAC5E,YAAM,WAAW,cAAc;AAC/B,UAAI,CAAC,YAAY,CAAC,YAAY,SAAS,aAAa,MAAO;AAE3D,YAAM,eAA+B,CAAA;AACrC,eAAS,WAAW,WAAW,UAAU,YAAY,WAAW,QAAQ,YAAY,GAAG;AACrF,cAAM,YAAY,SAAS,IAAI,OAAO,OAAO,QAAQ,KAAK,EAAE;AAC5D,YAAI,UAAW,cAAa,KAAK,SAAS,SAAS,UAAU,QAAQ,CAAC;AAAA,MACxE;AACA,UAAI,aAAa,WAAW,EAAG;AAE/B,YAAM,WAAW,oBAAoB,cAAc,SAAS,YAAY;AAGxE,YAAM,oBAAoB,CAAA;AAC1B,eAAS,WAAW,WAAW,UAAU,YAAY,WAAW,QAAQ,YAAY,GAAG;AACrF,0BAAkB,KAAK,QAAQ;AAAA,MACjC;AACA,UAAI,CAAC,eAAgB,mBAAkB,QAAA;AAEvC,wBAAkB,QAAQ,CAAC,UAAU,WAAW;AAC9C,cAAM,YAAY,SAAS,IAAI,OAAO,OAAO,QAAQ,KAAK,EAAE;AAC5D,YAAI,CAAC,UAAW;AAChB,YAAI,SAAS,WAAW,UAAU,QAAQ,EAAG;AAE7C,cAAM,QAAQ,SAAS,SAAS,cAAc,SAAS,GAAG,iBAAiB,IAAI,EAAE;AACjF,YAAI,SAAS,WAAW,OAAO,UAAU,QAAQ,EAAG;AAEpD,gBAAQ,KAAK,EAAE,KAAK,UAAU,UAAU,UAAU,OAAO;AAAA,MAC3D,CAAC;AAAA,IACH;AAEA,QAAI,QAAQ,WAAW,EAAG;AAE1B,QAAI,WAAW,aAAa;AAC1B,iBAAW,YAAY,OAAO;AAC9B;AAAA,IACF;AAEA,YAAQ,QAAQ,CAAC,WAAW,gBAAgB,UAAU,OAAO,KAAK,OAAO,UAAU,OAAO,KAAK,CAAC;AAAA,EAClG,GAAG,CAAA,CAAE;AACP;"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { StoreApi } from 'zustand/vanilla';
|
|
2
|
+
import { IGridState } from './gridStore';
|
|
3
|
+
import { IGridNavigationConfig } from './gridTypes';
|
|
4
|
+
/**
|
|
5
|
+
* One grid store per table instance, created only when the table opts into the
|
|
6
|
+
* spreadsheet layer. Returning `null` otherwise keeps every read-only table free
|
|
7
|
+
* of the store, the provider and the per-cell subscriptions.
|
|
8
|
+
*/
|
|
9
|
+
interface IUseGridInstanceParams {
|
|
10
|
+
spreadsheet?: IGridNavigationConfig;
|
|
11
|
+
/** `false` mounts the store dormant, waiting for the toolbar toggle. */
|
|
12
|
+
startsInEditMode: boolean;
|
|
13
|
+
enabled: boolean;
|
|
14
|
+
}
|
|
15
|
+
export declare const useGridInstance: ({ spreadsheet, startsInEditMode, enabled, }: IUseGridInstanceParams) => StoreApi<IGridState> | null;
|
|
16
|
+
/**
|
|
17
|
+
* Subscrição booleana ao modo de edição. Fica fora do caminho quente: só o
|
|
18
|
+
* cabeçalho da tabela e o corpo reagem, e apenas quando o modo troca.
|
|
19
|
+
*/
|
|
20
|
+
export declare const useGridEditMode: (store: StoreApi<IGridState> | null) => boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Feeds the store the visible matrix (TanStack row ids × navigable column ids).
|
|
23
|
+
* The join keys are the dependency so the effect runs when the matrix actually
|
|
24
|
+
* changes, not on every render of the table.
|
|
25
|
+
*/
|
|
26
|
+
export declare const useGridMatrixSync: (store: StoreApi<IGridState> | null, rowIds: Array<string>, columnIds: Array<string>) => void;
|
|
27
|
+
export {};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { useSyncExternalStore, useCallback, useRef, useEffect, useMemo } from "react";
|
|
2
|
+
import { createGridStore } from "./gridStore.js";
|
|
3
|
+
const useGridInstance = ({
|
|
4
|
+
spreadsheet,
|
|
5
|
+
startsInEditMode,
|
|
6
|
+
enabled
|
|
7
|
+
}) => {
|
|
8
|
+
const storeRef = useRef(null);
|
|
9
|
+
const isEnabled = enabled && spreadsheet?.navigation !== false;
|
|
10
|
+
if (isEnabled && !storeRef.current) {
|
|
11
|
+
storeRef.current = createGridStore(spreadsheet?.selection ?? "cell", startsInEditMode);
|
|
12
|
+
}
|
|
13
|
+
const store = isEnabled ? storeRef.current : null;
|
|
14
|
+
const selectionMode = spreadsheet?.selection ?? "cell";
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
store?.getState().setSelectionMode(selectionMode);
|
|
17
|
+
}, [store, selectionMode]);
|
|
18
|
+
return store;
|
|
19
|
+
};
|
|
20
|
+
const useGridEditMode = (store) => useSyncExternalStore(
|
|
21
|
+
useCallback((onStoreChange) => store ? store.subscribe(onStoreChange) : () => void 0, [store]),
|
|
22
|
+
() => store?.getState().isEditMode ?? false,
|
|
23
|
+
() => false
|
|
24
|
+
);
|
|
25
|
+
const useGridMatrixSync = (store, rowIds, columnIds) => {
|
|
26
|
+
const rowIdsRef = useRef(rowIds);
|
|
27
|
+
rowIdsRef.current = rowIds;
|
|
28
|
+
const columnIdsRef = useRef(columnIds);
|
|
29
|
+
columnIdsRef.current = columnIds;
|
|
30
|
+
const rowsKey = useMemo(() => rowIds.join("\0"), [rowIds]);
|
|
31
|
+
const columnsKey = useMemo(() => columnIds.join("\0"), [columnIds]);
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
store?.getState().setMatrix(rowIdsRef.current, columnIdsRef.current);
|
|
34
|
+
}, [store, rowsKey, columnsKey]);
|
|
35
|
+
};
|
|
36
|
+
export {
|
|
37
|
+
useGridEditMode,
|
|
38
|
+
useGridInstance,
|
|
39
|
+
useGridMatrixSync
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=useGridInstance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useGridInstance.js","sources":["../../../../../src/components/UI/DataTable/grid/useGridInstance.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useSyncExternalStore } from 'react';\nimport { type StoreApi } from 'zustand/vanilla';\n\nimport { createGridStore, type IGridState } from './gridStore';\nimport { type IGridNavigationConfig } from './gridTypes';\n\n/**\n * One grid store per table instance, created only when the table opts into the\n * spreadsheet layer. Returning `null` otherwise keeps every read-only table free\n * of the store, the provider and the per-cell subscriptions.\n */\ninterface IUseGridInstanceParams {\n spreadsheet?: IGridNavigationConfig;\n /** `false` mounts the store dormant, waiting for the toolbar toggle. */\n startsInEditMode: boolean;\n enabled: boolean;\n}\n\nexport const useGridInstance = ({\n spreadsheet,\n startsInEditMode,\n enabled,\n}: IUseGridInstanceParams): StoreApi<IGridState> | null => {\n const storeRef = useRef<StoreApi<IGridState> | null>(null);\n const isEnabled = enabled && spreadsheet?.navigation !== false;\n\n if (isEnabled && !storeRef.current) {\n storeRef.current = createGridStore(spreadsheet?.selection ?? 'cell', startsInEditMode);\n }\n\n const store = isEnabled ? storeRef.current : null;\n const selectionMode = spreadsheet?.selection ?? 'cell';\n\n useEffect(() => {\n store?.getState().setSelectionMode(selectionMode);\n }, [store, selectionMode]);\n\n return store;\n};\n\n/**\n * Subscrição booleana ao modo de edição. Fica fora do caminho quente: só o\n * cabeçalho da tabela e o corpo reagem, e apenas quando o modo troca.\n */\nexport const useGridEditMode = (store: StoreApi<IGridState> | null): boolean =>\n useSyncExternalStore(\n useCallback((onStoreChange: () => void) => (store ? store.subscribe(onStoreChange) : () => undefined), [store]),\n () => store?.getState().isEditMode ?? false,\n () => false,\n );\n\n/**\n * Feeds the store the visible matrix (TanStack row ids × navigable column ids).\n * The join keys are the dependency so the effect runs when the matrix actually\n * changes, not on every render of the table.\n */\nexport const useGridMatrixSync = (\n store: StoreApi<IGridState> | null,\n rowIds: Array<string>,\n columnIds: Array<string>,\n): void => {\n const rowIdsRef = useRef(rowIds);\n rowIdsRef.current = rowIds;\n const columnIdsRef = useRef(columnIds);\n columnIdsRef.current = columnIds;\n\n const rowsKey = useMemo(() => rowIds.join('\u0000'), [rowIds]);\n const columnsKey = useMemo(() => columnIds.join('\u0000'), [columnIds]);\n\n useEffect(() => {\n store?.getState().setMatrix(rowIdsRef.current, columnIdsRef.current);\n }, [store, rowsKey, columnsKey]);\n};\n"],"names":[],"mappings":";;AAkBO,MAAM,kBAAkB,CAAC;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AACF,MAA2D;AACzD,QAAM,WAAW,OAAoC,IAAI;AACzD,QAAM,YAAY,WAAW,aAAa,eAAe;AAEzD,MAAI,aAAa,CAAC,SAAS,SAAS;AAClC,aAAS,UAAU,gBAAgB,aAAa,aAAa,QAAQ,gBAAgB;AAAA,EACvF;AAEA,QAAM,QAAQ,YAAY,SAAS,UAAU;AAC7C,QAAM,gBAAgB,aAAa,aAAa;AAEhD,YAAU,MAAM;AACd,WAAO,SAAA,EAAW,iBAAiB,aAAa;AAAA,EAClD,GAAG,CAAC,OAAO,aAAa,CAAC;AAEzB,SAAO;AACT;AAMO,MAAM,kBAAkB,CAAC,UAC9B;AAAA,EACE,YAAY,CAAC,kBAA+B,QAAQ,MAAM,UAAU,aAAa,IAAI,MAAM,QAAY,CAAC,KAAK,CAAC;AAAA,EAC9G,MAAM,OAAO,WAAW,cAAc;AAAA,EACtC,MAAM;AACR;AAOK,MAAM,oBAAoB,CAC/B,OACA,QACA,cACS;AACT,QAAM,YAAY,OAAO,MAAM;AAC/B,YAAU,UAAU;AACpB,QAAM,eAAe,OAAO,SAAS;AACrC,eAAa,UAAU;AAEvB,QAAM,UAAU,QAAQ,MAAM,OAAO,KAAK,IAAG,GAAG,CAAC,MAAM,CAAC;AACxD,QAAM,aAAa,QAAQ,MAAM,UAAU,KAAK,IAAG,GAAG,CAAC,SAAS,CAAC;AAEjE,YAAU,MAAM;AACd,WAAO,WAAW,UAAU,UAAU,SAAS,aAAa,OAAO;AAAA,EACrE,GAAG,CAAC,OAAO,SAAS,UAAU,CAAC;AACjC;"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { StoreApi } from 'zustand/vanilla';
|
|
3
|
+
import { IGridState } from './gridStore';
|
|
4
|
+
import { IGridCellCoord } from './gridTypes';
|
|
5
|
+
interface IUseGridKeyboardParams {
|
|
6
|
+
store: StoreApi<IGridState> | null;
|
|
7
|
+
/** Whether the cell can open an editor, so Enter/F2/typing know what to do and Tab knows where to stop. */
|
|
8
|
+
canEditCell?: (coord: IGridCellCoord) => boolean;
|
|
9
|
+
/** Whether the cell's editor is free text, so a typed key can become its value. */
|
|
10
|
+
acceptsTypedValue?: (coord: IGridCellCoord) => boolean;
|
|
11
|
+
onSave?: () => void;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* A control that owns the caret (input, textarea, select, contenteditable) keeps
|
|
15
|
+
* every key the grid would otherwise claim: the horizontal arrows walk the text,
|
|
16
|
+
* not the columns.
|
|
17
|
+
*/
|
|
18
|
+
export declare const isTextEntryTarget: (target: EventTarget | null) => boolean;
|
|
19
|
+
/**
|
|
20
|
+
* The grid's ONLY keyboard listener: one React handler on the scroll container,
|
|
21
|
+
* reached by bubbling from the focused cell. No document listeners, no per-cell
|
|
22
|
+
* handlers, so two tables on the same screen never fight over the same keys.
|
|
23
|
+
*/
|
|
24
|
+
export declare const useGridKeyboard: ({ store, canEditCell, acceptsTypedValue, onSave }: IUseGridKeyboardParams) => (event: React.KeyboardEvent<HTMLElement>) => void;
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { useCallback } from "react";
|
|
2
|
+
import { GRID_CELL_DATA_ATTR } from "./gridTypes.js";
|
|
3
|
+
const CELL_CONTENT_FOCUS_SELECTOR = [
|
|
4
|
+
"a[href]",
|
|
5
|
+
"button:not([disabled])",
|
|
6
|
+
"input:not([disabled])",
|
|
7
|
+
"select:not([disabled])",
|
|
8
|
+
"textarea:not([disabled])",
|
|
9
|
+
"[tabindex]"
|
|
10
|
+
].map((selector) => `${selector}:not([tabindex="-1"])`).join(", ");
|
|
11
|
+
const resolveCellElement = (target) => target instanceof HTMLElement ? target.closest(`[${GRID_CELL_DATA_ATTR}]`) : null;
|
|
12
|
+
const isTextEntryTarget = (target) => {
|
|
13
|
+
if (!(target instanceof HTMLElement)) return false;
|
|
14
|
+
if (target.isContentEditable) return true;
|
|
15
|
+
return target.tagName === "INPUT" || target.tagName === "TEXTAREA" || target.tagName === "SELECT";
|
|
16
|
+
};
|
|
17
|
+
const isPrintableKey = (event) => event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey;
|
|
18
|
+
const moveWithTab = (store, direction, canEditCell) => {
|
|
19
|
+
if (canEditCell) return store.getState().moveToEditableCell(direction, canEditCell);
|
|
20
|
+
return store.getState().moveActiveCell(0, direction, { wrap: true });
|
|
21
|
+
};
|
|
22
|
+
const useGridKeyboard = ({ store, canEditCell, acceptsTypedValue, onSave }) => useCallback(
|
|
23
|
+
(event) => {
|
|
24
|
+
if (!store) return;
|
|
25
|
+
const state = store.getState();
|
|
26
|
+
const { key } = event;
|
|
27
|
+
if ((event.metaKey || event.ctrlKey) && (key === "s" || key === "S")) {
|
|
28
|
+
if (!onSave) return;
|
|
29
|
+
event.preventDefault();
|
|
30
|
+
onSave();
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
const isEditing = !!state.editingCell || isTextEntryTarget(event.target);
|
|
34
|
+
if (isEditing) {
|
|
35
|
+
if (key === "Escape") {
|
|
36
|
+
event.stopPropagation();
|
|
37
|
+
state.stopEditing("cancel");
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
if (key === "Enter") {
|
|
41
|
+
event.preventDefault();
|
|
42
|
+
state.stopEditing();
|
|
43
|
+
state.moveActiveCell(event.shiftKey ? -1 : 1, 0);
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
if (key === "Tab") {
|
|
47
|
+
state.stopEditing();
|
|
48
|
+
if (moveWithTab(store, event.shiftKey ? -1 : 1, canEditCell)) event.preventDefault();
|
|
49
|
+
}
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
const cellElement = resolveCellElement(event.target);
|
|
53
|
+
const isInsideCellContent = !!cellElement && event.target !== cellElement;
|
|
54
|
+
if (isInsideCellContent) {
|
|
55
|
+
if (key !== "Escape") return;
|
|
56
|
+
event.preventDefault();
|
|
57
|
+
cellElement.focus();
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const extend = event.shiftKey;
|
|
61
|
+
switch (key) {
|
|
62
|
+
case "ArrowUp":
|
|
63
|
+
event.preventDefault();
|
|
64
|
+
state.moveActiveCell(-1, 0, { extend });
|
|
65
|
+
return;
|
|
66
|
+
case "ArrowDown":
|
|
67
|
+
event.preventDefault();
|
|
68
|
+
state.moveActiveCell(1, 0, { extend });
|
|
69
|
+
return;
|
|
70
|
+
case "ArrowLeft":
|
|
71
|
+
event.preventDefault();
|
|
72
|
+
state.moveActiveCell(0, -1, { extend });
|
|
73
|
+
return;
|
|
74
|
+
case "ArrowRight":
|
|
75
|
+
event.preventDefault();
|
|
76
|
+
state.moveActiveCell(0, 1, { extend });
|
|
77
|
+
return;
|
|
78
|
+
case "Tab":
|
|
79
|
+
if (moveWithTab(store, event.shiftKey ? -1 : 1, canEditCell)) event.preventDefault();
|
|
80
|
+
return;
|
|
81
|
+
case "Home":
|
|
82
|
+
event.preventDefault();
|
|
83
|
+
state.moveActiveToEdge(event.ctrlKey || event.metaKey ? -1 : 0, -1, { extend });
|
|
84
|
+
return;
|
|
85
|
+
case "End":
|
|
86
|
+
event.preventDefault();
|
|
87
|
+
state.moveActiveToEdge(event.ctrlKey || event.metaKey ? 1 : 0, 1, { extend });
|
|
88
|
+
return;
|
|
89
|
+
case "Enter":
|
|
90
|
+
case "F2": {
|
|
91
|
+
const active = state.activeCell;
|
|
92
|
+
if (!active) return;
|
|
93
|
+
if (canEditCell?.(active)) {
|
|
94
|
+
event.preventDefault();
|
|
95
|
+
state.startEditing(active, { entry: "keyboard" });
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
const focusableInsideCell = cellElement?.querySelector(CELL_CONTENT_FOCUS_SELECTOR);
|
|
99
|
+
if (focusableInsideCell) {
|
|
100
|
+
event.preventDefault();
|
|
101
|
+
focusableInsideCell.focus();
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
if (key !== "Enter") return;
|
|
105
|
+
event.preventDefault();
|
|
106
|
+
state.moveActiveCell(1, 0);
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
case "Escape":
|
|
110
|
+
state.clearSelection();
|
|
111
|
+
return;
|
|
112
|
+
case "Backspace":
|
|
113
|
+
case "Delete": {
|
|
114
|
+
const active = state.activeCell;
|
|
115
|
+
if (!active || !canEditCell?.(active) || !acceptsTypedValue?.(active)) return;
|
|
116
|
+
event.preventDefault();
|
|
117
|
+
state.startEditing(active, { entry: "typing", seed: "" });
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
default: {
|
|
121
|
+
const active = state.activeCell;
|
|
122
|
+
if (!active || !isPrintableKey(event) || !canEditCell?.(active)) return;
|
|
123
|
+
event.preventDefault();
|
|
124
|
+
const seed = acceptsTypedValue?.(active) ? key : void 0;
|
|
125
|
+
state.startEditing(active, { entry: "typing", seed });
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
[store, canEditCell, acceptsTypedValue, onSave]
|
|
130
|
+
);
|
|
131
|
+
export {
|
|
132
|
+
isTextEntryTarget,
|
|
133
|
+
useGridKeyboard
|
|
134
|
+
};
|
|
135
|
+
//# sourceMappingURL=useGridKeyboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useGridKeyboard.js","sources":["../../../../../src/components/UI/DataTable/grid/useGridKeyboard.ts"],"sourcesContent":["import React, { useCallback } from 'react';\nimport { type StoreApi } from 'zustand/vanilla';\n\nimport { type IGridState } from './gridStore';\nimport { GRID_CELL_DATA_ATTR, type IGridCellCoord } from './gridTypes';\n\ninterface IUseGridKeyboardParams {\n store: StoreApi<IGridState> | null;\n /** Whether the cell can open an editor, so Enter/F2/typing know what to do and Tab knows where to stop. */\n canEditCell?: (coord: IGridCellCoord) => boolean;\n /** Whether the cell's editor is free text, so a typed key can become its value. */\n acceptsTypedValue?: (coord: IGridCellCoord) => boolean;\n onSave?: () => void;\n}\n\nconst CELL_CONTENT_FOCUS_SELECTOR = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]',\n]\n .map((selector) => `${selector}:not([tabindex=\"-1\"])`)\n .join(', ');\n\n/** The `<td>` the event came from, so the handler never queries the whole document. */\nconst resolveCellElement = (target: EventTarget | null): HTMLElement | null =>\n target instanceof HTMLElement ? target.closest<HTMLElement>(`[${GRID_CELL_DATA_ATTR}]`) : null;\n\n/**\n * A control that owns the caret (input, textarea, select, contenteditable) keeps\n * every key the grid would otherwise claim: the horizontal arrows walk the text,\n * not the columns.\n */\nexport const isTextEntryTarget = (target: EventTarget | null): boolean => {\n if (!(target instanceof HTMLElement)) return false;\n if (target.isContentEditable) return true;\n\n return target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.tagName === 'SELECT';\n};\n\nconst isPrintableKey = (event: React.KeyboardEvent): boolean =>\n event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey;\n\n/**\n * Tab jumps to the next cell that accepts an editor and opens it, so a row is filled by\n * typing and tabbing, never stopping on a read-only cell. A table with no editable cell\n * keeps the plain cell-by-cell walk. Returns whether the active cell moved, which is what\n * decides if the grid keeps the event: past the last cell the focus goes back to the page,\n * because trapping Tab inside a table is a keyboard trap, not a spreadsheet.\n */\nconst moveWithTab = (\n store: StoreApi<IGridState>,\n direction: 1 | -1,\n canEditCell?: (coord: IGridCellCoord) => boolean,\n): boolean => {\n if (canEditCell) return store.getState().moveToEditableCell(direction, canEditCell);\n return store.getState().moveActiveCell(0, direction, { wrap: true });\n};\n\n/**\n * The grid's ONLY keyboard listener: one React handler on the scroll container,\n * reached by bubbling from the focused cell. No document listeners, no per-cell\n * handlers, so two tables on the same screen never fight over the same keys.\n */\nexport const useGridKeyboard = ({ store, canEditCell, acceptsTypedValue, onSave }: IUseGridKeyboardParams) =>\n useCallback(\n (event: React.KeyboardEvent<HTMLElement>) => {\n if (!store) return;\n\n const state = store.getState();\n const { key } = event;\n\n if ((event.metaKey || event.ctrlKey) && (key === 's' || key === 'S')) {\n if (!onSave) return;\n event.preventDefault();\n onSave();\n return;\n }\n\n const isEditing = !!state.editingCell || isTextEntryTarget(event.target);\n\n if (isEditing) {\n if (key === 'Escape') {\n // The table may live inside a dialog or drawer: leaving the editor must\n // not also close the surface around it.\n event.stopPropagation();\n state.stopEditing('cancel');\n return;\n }\n\n if (key === 'Enter') {\n event.preventDefault();\n state.stopEditing();\n state.moveActiveCell(event.shiftKey ? -1 : 1, 0);\n return;\n }\n\n if (key === 'Tab') {\n state.stopEditing();\n if (moveWithTab(store, event.shiftKey ? -1 : 1, canEditCell)) event.preventDefault();\n }\n\n return;\n }\n\n const cellElement = resolveCellElement(event.target);\n const isInsideCellContent = !!cellElement && event.target !== cellElement;\n\n // Focus went into a control inside the cell (an action button, a link).\n // While it is there the cell content owns the keyboard, and Escape brings\n // the focus back to the cell.\n if (isInsideCellContent) {\n if (key !== 'Escape') return;\n event.preventDefault();\n cellElement.focus();\n return;\n }\n\n const extend = event.shiftKey;\n\n switch (key) {\n case 'ArrowUp':\n event.preventDefault();\n state.moveActiveCell(-1, 0, { extend });\n return;\n case 'ArrowDown':\n event.preventDefault();\n state.moveActiveCell(1, 0, { extend });\n return;\n case 'ArrowLeft':\n event.preventDefault();\n state.moveActiveCell(0, -1, { extend });\n return;\n case 'ArrowRight':\n event.preventDefault();\n state.moveActiveCell(0, 1, { extend });\n return;\n case 'Tab':\n if (moveWithTab(store, event.shiftKey ? -1 : 1, canEditCell)) event.preventDefault();\n return;\n case 'Home':\n event.preventDefault();\n state.moveActiveToEdge(event.ctrlKey || event.metaKey ? -1 : 0, -1, { extend });\n return;\n case 'End':\n event.preventDefault();\n state.moveActiveToEdge(event.ctrlKey || event.metaKey ? 1 : 0, 1, { extend });\n return;\n case 'Enter':\n case 'F2': {\n const active = state.activeCell;\n if (!active) return;\n\n if (canEditCell?.(active)) {\n event.preventDefault();\n state.startEditing(active, { entry: 'keyboard' });\n return;\n }\n\n // Read-only cell: Enter steps INTO whatever control it holds, which is\n // the only way a keyboard user reaches the per-row actions now that Tab\n // walks the cells.\n const focusableInsideCell = cellElement?.querySelector<HTMLElement>(CELL_CONTENT_FOCUS_SELECTOR);\n if (focusableInsideCell) {\n event.preventDefault();\n focusableInsideCell.focus();\n return;\n }\n\n if (key !== 'Enter') return;\n event.preventDefault();\n state.moveActiveCell(1, 0);\n\n return;\n }\n case 'Escape':\n state.clearSelection();\n return;\n case 'Backspace':\n case 'Delete': {\n const active = state.activeCell;\n if (!active || !canEditCell?.(active) || !acceptsTypedValue?.(active)) return;\n event.preventDefault();\n state.startEditing(active, { entry: 'typing', seed: '' });\n return;\n }\n default: {\n // Typing over the active cell edits it, like a spreadsheet: free text takes the\n // key as its new value, a picker opens so the next keys search its options.\n const active = state.activeCell;\n if (!active || !isPrintableKey(event) || !canEditCell?.(active)) return;\n event.preventDefault();\n const seed = acceptsTypedValue?.(active) ? key : undefined;\n state.startEditing(active, { entry: 'typing', seed });\n }\n }\n },\n [store, canEditCell, acceptsTypedValue, onSave],\n );\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export { applyDataTableFilters, buildDataTableFilterParams, countActiveDataTableFilters, } from './applyDataTableFilters';
|
|
2
|
+
export { default as DataTable } from './DataTable';
|
|
3
|
+
export { default as DataTableBulkEditDialog } from './DataTableBulkEditDialog';
|
|
4
|
+
export type { IDataTableColumnsEntry } from './dataTableColumnsStore';
|
|
5
|
+
export { readColumnsEntry } from './dataTableColumnsStore';
|
|
6
|
+
export { default as DataTableDetailModal } from './DataTableDetailModal';
|
|
7
|
+
export { default as DataTableDetailPanel } from './DataTableDetailPanel';
|
|
8
|
+
export { default as DataTableFilters } from './DataTableFilters';
|
|
9
|
+
export { default as DataTableSaveButton } from './DataTableSaveButton';
|
|
10
|
+
export type { IDataTableActionItem, IDataTableColorValue, IDataTableColumnConfig, IDataTableConfig, IDataTableDetailConfig, IDataTableDetailField, IDataTableDetailTableExpansionConfig, IDataTableEditableConfig, IDataTableEditingConfig, IDataTableEditingRowsConfig, IDataTableExpandedContentContext, IDataTableFillChange, IDataTableFillConfig, IDataTableFilterBinding, IDataTableFilterOption, IDataTableFiltersConfig, IDataTableOriginValue, IDataTablePanelExpansionConfig, IDataTableRow, IDataTableSortState, IDataTableSpreadsheetConfig, IDataTableStatusValue, IDataTableSubRowsExpansionConfig, IDataTableTab, IDataTableTableExpansionConfig, IDataTableTagValue, IDataTableThumbnailValue, TDataTableCellType, TDataTableDataMode, TDataTableEditableType, TDataTableExpansionConfig, TDataTableFilterField, TDataTableFilterValues, TDataTableOriginTone, TDataTableSortDirection, TDataTableStatusTone, TDataTableViewMode, } from './types';
|
|
11
|
+
export { isDataTableDetailTableExpansion, isDataTablePanelExpansion, isDataTableSubRowsExpansion, isDataTableTableExpansion, } from './types';
|
|
12
|
+
export { resolveColumnOrder } from './useColumnOrder';
|
|
13
|
+
export type { IDataTableCommitItem, IDataTableCommitRowResult, TDataTableCommitStatus, } from './useDataTableCommitQueue';
|
|
14
|
+
export { useDataTableCommitQueue } from './useDataTableCommitQueue';
|
|
15
|
+
export type { IDataTableEditBufferItem } from './useDataTableEditBuffer';
|
|
16
|
+
export { useDataTableEditBuffer } from './useDataTableEditBuffer';
|
|
17
|
+
export type { IDataTableClientPaginationState } from './useDataTableInstance';
|
|
18
|
+
export type { IDataTableFetchParams, IDataTableFetchResult, IDataTableSource, TDataTableFetchPage, } from './useDataTableSource';
|
|
19
|
+
export { useDataTableSource } from './useDataTableSource';
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { applyDataTableFilters, buildDataTableFilterParams, countActiveDataTableFilters } from "./applyDataTableFilters.js";
|
|
2
|
+
import { default as default2 } from "./DataTable.js";
|
|
3
|
+
import { default as default3 } from "./DataTableBulkEditDialog.js";
|
|
4
|
+
import { readColumnsEntry } from "./dataTableColumnsStore.js";
|
|
5
|
+
import { default as default4 } from "./DataTableDetailModal.js";
|
|
6
|
+
import { default as default5 } from "./DataTableDetailPanel.js";
|
|
7
|
+
import { default as default6 } from "./DataTableFilters.js";
|
|
8
|
+
import { default as default7 } from "./DataTableSaveButton.js";
|
|
9
|
+
import { isDataTableDetailTableExpansion, isDataTablePanelExpansion, isDataTableSubRowsExpansion, isDataTableTableExpansion } from "./types.js";
|
|
10
|
+
import { resolveColumnOrder } from "./useColumnOrder.js";
|
|
11
|
+
import { useDataTableCommitQueue } from "./useDataTableCommitQueue.js";
|
|
12
|
+
import { useDataTableEditBuffer } from "./useDataTableEditBuffer.js";
|
|
13
|
+
import { useDataTableSource } from "./useDataTableSource.js";
|
|
14
|
+
export {
|
|
15
|
+
default2 as DataTable,
|
|
16
|
+
default3 as DataTableBulkEditDialog,
|
|
17
|
+
default4 as DataTableDetailModal,
|
|
18
|
+
default5 as DataTableDetailPanel,
|
|
19
|
+
default6 as DataTableFilters,
|
|
20
|
+
default7 as DataTableSaveButton,
|
|
21
|
+
applyDataTableFilters,
|
|
22
|
+
buildDataTableFilterParams,
|
|
23
|
+
countActiveDataTableFilters,
|
|
24
|
+
isDataTableDetailTableExpansion,
|
|
25
|
+
isDataTablePanelExpansion,
|
|
26
|
+
isDataTableSubRowsExpansion,
|
|
27
|
+
isDataTableTableExpansion,
|
|
28
|
+
readColumnsEntry,
|
|
29
|
+
resolveColumnOrder,
|
|
30
|
+
useDataTableCommitQueue,
|
|
31
|
+
useDataTableEditBuffer,
|
|
32
|
+
useDataTableSource
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
|