@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,54 @@
|
|
|
1
|
+
const TABS_URL_PARAM = "activeTab";
|
|
2
|
+
const URL_PARAM_PRIORITY = {
|
|
3
|
+
viewToggle: 1,
|
|
4
|
+
tabs: 2
|
|
5
|
+
};
|
|
6
|
+
const urlParamOwners = /* @__PURE__ */ new Map();
|
|
7
|
+
const claimUrlParam = (key, ownerId, priority) => {
|
|
8
|
+
const currentOwner = urlParamOwners.get(key);
|
|
9
|
+
if (!currentOwner || currentOwner.ownerId === ownerId || currentOwner.priority < priority) {
|
|
10
|
+
urlParamOwners.set(key, { ownerId, priority });
|
|
11
|
+
return true;
|
|
12
|
+
}
|
|
13
|
+
return false;
|
|
14
|
+
};
|
|
15
|
+
const releaseUrlParam = (key, ownerId) => {
|
|
16
|
+
if (urlParamOwners.get(key)?.ownerId !== ownerId) return;
|
|
17
|
+
urlParamOwners.delete(key);
|
|
18
|
+
};
|
|
19
|
+
const ownsUrlParam = (key, ownerId) => urlParamOwners.get(key)?.ownerId === ownerId;
|
|
20
|
+
const queuedUpdates = /* @__PURE__ */ new Map();
|
|
21
|
+
let queuedSetter = null;
|
|
22
|
+
const flushQueuedUpdates = () => {
|
|
23
|
+
const updates = new Map(queuedUpdates);
|
|
24
|
+
const setSearchParams = queuedSetter;
|
|
25
|
+
queuedUpdates.clear();
|
|
26
|
+
queuedSetter = null;
|
|
27
|
+
if (!setSearchParams || !updates.size) return;
|
|
28
|
+
setSearchParams(
|
|
29
|
+
(previousParams) => {
|
|
30
|
+
const nextParams = new URLSearchParams(previousParams);
|
|
31
|
+
updates.forEach((value, key) => {
|
|
32
|
+
if (value) nextParams.set(key, value);
|
|
33
|
+
else nextParams.delete(key);
|
|
34
|
+
});
|
|
35
|
+
return nextParams;
|
|
36
|
+
},
|
|
37
|
+
{ replace: true }
|
|
38
|
+
);
|
|
39
|
+
};
|
|
40
|
+
const queueUrlParamUpdate = (key, value, setSearchParams) => {
|
|
41
|
+
const isFirstOfTick = queuedUpdates.size === 0;
|
|
42
|
+
queuedUpdates.set(key, value);
|
|
43
|
+
queuedSetter = setSearchParams;
|
|
44
|
+
if (isFirstOfTick) queueMicrotask(flushQueuedUpdates);
|
|
45
|
+
};
|
|
46
|
+
export {
|
|
47
|
+
TABS_URL_PARAM,
|
|
48
|
+
URL_PARAM_PRIORITY,
|
|
49
|
+
claimUrlParam,
|
|
50
|
+
ownsUrlParam,
|
|
51
|
+
queueUrlParamUpdate,
|
|
52
|
+
releaseUrlParam
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=urlParamSync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"urlParamSync.js","sources":["../../src/helpers/urlParamSync.ts"],"sourcesContent":["export type TUrlParamSetter = (\n updater: (previousParams: URLSearchParams) => URLSearchParams,\n options?: { replace?: boolean },\n) => void;\n\n/** Reservado ao `ControlledTabs`: nenhum outro controle pode assumir esse parâmetro. */\nexport const TABS_URL_PARAM = 'activeTab';\n\n/**\n * Quem manda no parâmetro quando dois controles pedem a mesma chave. Abas são navegação e ficam\n * acima de um seletor de visualização, então assumem a chave mesmo montando depois.\n */\nexport const URL_PARAM_PRIORITY = {\n viewToggle: 1,\n tabs: 2,\n} as const;\n\nexport type TUrlParamPriority = (typeof URL_PARAM_PRIORITY)[keyof typeof URL_PARAM_PRIORITY];\n\ninterface IUrlParamOwner {\n ownerId: object;\n priority: TUrlParamPriority;\n}\n\nconst urlParamOwners = new Map<string, IUrlParamOwner>();\n\nexport const claimUrlParam = (key: string, ownerId: object, priority: TUrlParamPriority): boolean => {\n const currentOwner = urlParamOwners.get(key);\n\n if (!currentOwner || currentOwner.ownerId === ownerId || currentOwner.priority < priority) {\n urlParamOwners.set(key, { ownerId, priority });\n return true;\n }\n\n return false;\n};\n\nexport const releaseUrlParam = (key: string, ownerId: object): void => {\n if (urlParamOwners.get(key)?.ownerId !== ownerId) return;\n urlParamOwners.delete(key);\n};\n\nexport const ownsUrlParam = (key: string, ownerId: object): boolean => urlParamOwners.get(key)?.ownerId === ownerId;\n\n// Escritas do mesmo tick são agrupadas numa navegação só. Sem isso, dois controles que gravam na\n// montagem (as abas e um toggle, por exemplo) chamariam `setSearchParams` em sequência, e o segundo\n// calcularia a partir da URL antiga porque o location ainda não mudou, apagando o parâmetro do primeiro.\nconst queuedUpdates = new Map<string, string>();\nlet queuedSetter: TUrlParamSetter | null = null;\n\nconst flushQueuedUpdates = (): void => {\n const updates = new Map(queuedUpdates);\n const setSearchParams = queuedSetter;\n\n queuedUpdates.clear();\n queuedSetter = null;\n\n if (!setSearchParams || !updates.size) return;\n\n setSearchParams(\n (previousParams) => {\n const nextParams = new URLSearchParams(previousParams);\n updates.forEach((value, key) => {\n if (value) nextParams.set(key, value);\n else nextParams.delete(key);\n });\n return nextParams;\n },\n { replace: true },\n );\n};\n\n/** Agenda a gravação de um parâmetro, preservando os demais. Valor vazio remove o parâmetro. */\nexport const queueUrlParamUpdate = (key: string, value: string, setSearchParams: TUrlParamSetter): void => {\n const isFirstOfTick = queuedUpdates.size === 0;\n\n queuedUpdates.set(key, value);\n queuedSetter = setSearchParams;\n\n if (isFirstOfTick) queueMicrotask(flushQueuedUpdates);\n};\n"],"names":[],"mappings":"AAMO,MAAM,iBAAiB;AAMvB,MAAM,qBAAqB;AAAA,EAChC,YAAY;AAAA,EACZ,MAAM;AACR;AASA,MAAM,qCAAqB,IAAA;AAEpB,MAAM,gBAAgB,CAAC,KAAa,SAAiB,aAAyC;AACnG,QAAM,eAAe,eAAe,IAAI,GAAG;AAE3C,MAAI,CAAC,gBAAgB,aAAa,YAAY,WAAW,aAAa,WAAW,UAAU;AACzF,mBAAe,IAAI,KAAK,EAAE,SAAS,UAAU;AAC7C,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEO,MAAM,kBAAkB,CAAC,KAAa,YAA0B;AACrE,MAAI,eAAe,IAAI,GAAG,GAAG,YAAY,QAAS;AAClD,iBAAe,OAAO,GAAG;AAC3B;AAEO,MAAM,eAAe,CAAC,KAAa,YAA6B,eAAe,IAAI,GAAG,GAAG,YAAY;AAK5G,MAAM,oCAAoB,IAAA;AAC1B,IAAI,eAAuC;AAE3C,MAAM,qBAAqB,MAAY;AACrC,QAAM,UAAU,IAAI,IAAI,aAAa;AACrC,QAAM,kBAAkB;AAExB,gBAAc,MAAA;AACd,iBAAe;AAEf,MAAI,CAAC,mBAAmB,CAAC,QAAQ,KAAM;AAEvC;AAAA,IACE,CAAC,mBAAmB;AAClB,YAAM,aAAa,IAAI,gBAAgB,cAAc;AACrD,cAAQ,QAAQ,CAAC,OAAO,QAAQ;AAC9B,YAAI,MAAO,YAAW,IAAI,KAAK,KAAK;AAAA,YAC/B,YAAW,OAAO,GAAG;AAAA,MAC5B,CAAC;AACD,aAAO;AAAA,IACT;AAAA,IACA,EAAE,SAAS,KAAA;AAAA,EAAK;AAEpB;AAGO,MAAM,sBAAsB,CAAC,KAAa,OAAe,oBAA2C;AACzG,QAAM,gBAAgB,cAAc,SAAS;AAE7C,gBAAc,IAAI,KAAK,KAAK;AAC5B,iBAAe;AAEf,MAAI,8BAA8B,kBAAkB;AACtD;"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check if a string is valid JSON
|
|
3
|
+
* @param str - The string to validate
|
|
4
|
+
* @returns True if string is valid JSON, false otherwise
|
|
5
|
+
*/
|
|
6
|
+
export declare const isJSON: (str: string) => boolean;
|
|
7
|
+
/**
|
|
8
|
+
* Generate label for action button based on load more state
|
|
9
|
+
* @param canLoadMore - Whether more items can be loaded
|
|
10
|
+
* @param remainingItems - Number of remaining items to load
|
|
11
|
+
* @returns Button label in Portuguese: 'Ver Mais (N)' or 'Ver Menos'
|
|
12
|
+
*/
|
|
13
|
+
export declare const getActionButtonLabel: (canLoadMore: boolean, remainingItems: number) => string;
|
|
14
|
+
/**
|
|
15
|
+
* Generate a unique, time-ordered Snowflake ID as a decimal string (safe in JSON).
|
|
16
|
+
* @returns A Snowflake ID string
|
|
17
|
+
*/
|
|
18
|
+
export declare const generateUUID: () => string;
|
|
19
|
+
/**
|
|
20
|
+
* Check if an object is empty (has no properties)
|
|
21
|
+
* @param obj - The object to check
|
|
22
|
+
* @returns True if object is empty, false otherwise
|
|
23
|
+
*/
|
|
24
|
+
export declare const isEmptyObject: (obj: unknown) => boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Convert rem to px using the live root font-size, so px-only APIs (drawer size props,
|
|
27
|
+
* canvas math) follow the fluid density scale (html font-size clamp).
|
|
28
|
+
* @param rem - Value in rem units
|
|
29
|
+
* @returns Equivalent pixels at the current root font-size
|
|
30
|
+
*/
|
|
31
|
+
export declare const remToPx: (rem: number) => number;
|
|
32
|
+
/**
|
|
33
|
+
* Create a delay/sleep function using Promise
|
|
34
|
+
* @param ms - Number of milliseconds to wait
|
|
35
|
+
* @returns Promise that resolves after the specified time
|
|
36
|
+
*/
|
|
37
|
+
export declare const sleep: (ms: number) => Promise<unknown>;
|
|
38
|
+
/**
|
|
39
|
+
* Map over items running at most `limit` async tasks concurrently.
|
|
40
|
+
* Never rejects: every item resolves to a PromiseSettledResult so callers can build error summaries.
|
|
41
|
+
* @param items - The items to process
|
|
42
|
+
* @param limit - Maximum number of concurrent tasks
|
|
43
|
+
* @param task - Async function applied to each item
|
|
44
|
+
* @returns Settled results in the original item order
|
|
45
|
+
*/
|
|
46
|
+
export declare const mapWithConcurrency: <T, R>(items: ReadonlyArray<T>, limit: number, task: (item: T, index: number) => Promise<R>) => Promise<Array<PromiseSettledResult<R>>>;
|
|
47
|
+
/**
|
|
48
|
+
* Download a file from a Blob object
|
|
49
|
+
* @param blob - The blob data to download
|
|
50
|
+
* @param filename - The name of the file to download
|
|
51
|
+
*/
|
|
52
|
+
export declare const downloadFromBlob: (blob: Blob, filename: string) => void;
|
|
53
|
+
/**
|
|
54
|
+
* Handle the complete download process with loading state management
|
|
55
|
+
* @param fetchFunction - Function that returns a Promise<Blob> to fetch the data
|
|
56
|
+
* @param filename - Name of the file to download
|
|
57
|
+
* @param setLoading - Optional function to set the loading state
|
|
58
|
+
* @returns Promise that resolves when the download is complete
|
|
59
|
+
*/
|
|
60
|
+
export declare const handleDownload: (fetchFunction: () => Promise<Blob>, filename: string, setLoading?: (isLoading: boolean) => void) => Promise<void>;
|
|
61
|
+
/**
|
|
62
|
+
* Clear all URL parameters from the current location
|
|
63
|
+
* @returns void
|
|
64
|
+
*/
|
|
65
|
+
export declare const clearUrlParams: () => void;
|
|
66
|
+
export declare function formatSizesToArray(data: Array<{
|
|
67
|
+
size: string;
|
|
68
|
+
quantity: number;
|
|
69
|
+
}>): Array<{
|
|
70
|
+
[size: string]: number;
|
|
71
|
+
}>;
|
|
72
|
+
/**
|
|
73
|
+
* Runs an async mapper over a list with at most `limit` calls in flight, keeping the
|
|
74
|
+
* result aligned with the input order (same shape as `Promise.allSettled`).
|
|
75
|
+
*
|
|
76
|
+
* `Promise.allSettled(items.map(fetch))` opens EVERY request at once. With a page of
|
|
77
|
+
* records that is already dozens of sockets, and a surface that renders several pages
|
|
78
|
+
* side by side (a kanban board) it multiplies until the browser stalls and the token
|
|
79
|
+
* expires mid-burst, turning the tail of the burst into 401s and refresh storms.
|
|
80
|
+
*/
|
|
81
|
+
export declare const settleWithConcurrency: <TItem, TResult>(items: Array<TItem>, limit: number, mapper: (item: TItem, index: number) => Promise<TResult>) => Promise<Array<PromiseSettledResult<TResult>>>;
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { uiLogger } from "./uiLogger.js";
|
|
2
|
+
const isJSON = (str) => {
|
|
3
|
+
try {
|
|
4
|
+
JSON.parse(str);
|
|
5
|
+
} catch (e) {
|
|
6
|
+
return false;
|
|
7
|
+
}
|
|
8
|
+
return true;
|
|
9
|
+
};
|
|
10
|
+
const getActionButtonLabel = (canLoadMore, remainingItems) => {
|
|
11
|
+
return canLoadMore ? `Ver Mais (${remainingItems})` : "Ver Menos";
|
|
12
|
+
};
|
|
13
|
+
const EPOCH_MS = 1288834974657n;
|
|
14
|
+
const SEQUENCE_MASK = 0xfffn;
|
|
15
|
+
const NODE_SHIFT = 12n;
|
|
16
|
+
const TIME_SHIFT = 22n;
|
|
17
|
+
let lastTimestamp = -1n;
|
|
18
|
+
let sequence = 0n;
|
|
19
|
+
const nodeId = BigInt(Math.floor(Math.random() * 1024));
|
|
20
|
+
const waitNextMillis = (after) => {
|
|
21
|
+
let t = BigInt(Date.now()) - EPOCH_MS;
|
|
22
|
+
while (t <= after) {
|
|
23
|
+
t = BigInt(Date.now()) - EPOCH_MS;
|
|
24
|
+
}
|
|
25
|
+
return t;
|
|
26
|
+
};
|
|
27
|
+
const generateUUID = () => {
|
|
28
|
+
let timestamp = BigInt(Date.now()) - EPOCH_MS;
|
|
29
|
+
if (timestamp < lastTimestamp) {
|
|
30
|
+
timestamp = waitNextMillis(lastTimestamp);
|
|
31
|
+
}
|
|
32
|
+
if (timestamp === lastTimestamp) {
|
|
33
|
+
sequence = sequence + 1n & SEQUENCE_MASK;
|
|
34
|
+
if (sequence === 0n) {
|
|
35
|
+
timestamp = waitNextMillis(lastTimestamp);
|
|
36
|
+
}
|
|
37
|
+
} else {
|
|
38
|
+
sequence = 0n;
|
|
39
|
+
}
|
|
40
|
+
lastTimestamp = timestamp;
|
|
41
|
+
const id = timestamp << TIME_SHIFT | nodeId << NODE_SHIFT | sequence;
|
|
42
|
+
return id.toString();
|
|
43
|
+
};
|
|
44
|
+
const isEmptyObject = (obj) => typeof obj === "object" && obj !== null && Object.keys(obj).length === 0;
|
|
45
|
+
const remToPx = (rem) => {
|
|
46
|
+
const rootFontSize = Number.parseFloat(getComputedStyle(document.documentElement).fontSize) || 16;
|
|
47
|
+
return Math.round(rem * rootFontSize);
|
|
48
|
+
};
|
|
49
|
+
const sleep = (ms) => {
|
|
50
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
51
|
+
};
|
|
52
|
+
const mapWithConcurrency = async (items, limit, task) => {
|
|
53
|
+
const results = new Array(items.length);
|
|
54
|
+
let cursor = 0;
|
|
55
|
+
const worker = async () => {
|
|
56
|
+
while (cursor < items.length) {
|
|
57
|
+
const index = cursor;
|
|
58
|
+
cursor += 1;
|
|
59
|
+
try {
|
|
60
|
+
results[index] = { status: "fulfilled", value: await task(items[index], index) };
|
|
61
|
+
} catch (reason) {
|
|
62
|
+
results[index] = { status: "rejected", reason };
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
const workerCount = Math.max(1, Math.min(limit, items.length));
|
|
67
|
+
await Promise.all(Array.from({ length: workerCount }, worker));
|
|
68
|
+
return results;
|
|
69
|
+
};
|
|
70
|
+
const downloadFromBlob = (blob, filename) => {
|
|
71
|
+
if (!blob) return;
|
|
72
|
+
const url = window.URL.createObjectURL(blob);
|
|
73
|
+
const a = document.createElement("a");
|
|
74
|
+
a.href = url;
|
|
75
|
+
a.download = filename;
|
|
76
|
+
document.body.appendChild(a);
|
|
77
|
+
a.click();
|
|
78
|
+
a.remove();
|
|
79
|
+
};
|
|
80
|
+
const handleDownload = async (fetchFunction, filename, setLoading) => {
|
|
81
|
+
try {
|
|
82
|
+
setLoading?.(true);
|
|
83
|
+
const blob = await fetchFunction();
|
|
84
|
+
downloadFromBlob(blob, filename);
|
|
85
|
+
} catch (error) {
|
|
86
|
+
uiLogger.error(error);
|
|
87
|
+
} finally {
|
|
88
|
+
setLoading?.(false);
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
const clearUrlParams = () => {
|
|
92
|
+
const url = window.location.protocol + "//" + window.location.host + window.location.pathname;
|
|
93
|
+
window.history.pushState({ path: url }, "", url);
|
|
94
|
+
};
|
|
95
|
+
function formatSizesToArray(data) {
|
|
96
|
+
return data.map((item) => ({
|
|
97
|
+
[item.size]: item.quantity
|
|
98
|
+
}));
|
|
99
|
+
}
|
|
100
|
+
const settleWithConcurrency = async (items, limit, mapper) => {
|
|
101
|
+
const safeItems = items ?? [];
|
|
102
|
+
const results = new Array(safeItems.length);
|
|
103
|
+
const maxInFlight = Math.max(1, limit);
|
|
104
|
+
let nextIndex = 0;
|
|
105
|
+
const runWorker = async () => {
|
|
106
|
+
while (nextIndex < safeItems.length) {
|
|
107
|
+
const index = nextIndex;
|
|
108
|
+
nextIndex += 1;
|
|
109
|
+
try {
|
|
110
|
+
results[index] = { status: "fulfilled", value: await mapper(safeItems[index], index) };
|
|
111
|
+
} catch (reason) {
|
|
112
|
+
results[index] = { status: "rejected", reason };
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
await Promise.all(Array.from({ length: Math.min(maxInFlight, safeItems.length) }, runWorker));
|
|
117
|
+
return results;
|
|
118
|
+
};
|
|
119
|
+
export {
|
|
120
|
+
clearUrlParams,
|
|
121
|
+
downloadFromBlob,
|
|
122
|
+
formatSizesToArray,
|
|
123
|
+
generateUUID,
|
|
124
|
+
getActionButtonLabel,
|
|
125
|
+
handleDownload,
|
|
126
|
+
isEmptyObject,
|
|
127
|
+
isJSON,
|
|
128
|
+
mapWithConcurrency,
|
|
129
|
+
remToPx,
|
|
130
|
+
settleWithConcurrency,
|
|
131
|
+
sleep
|
|
132
|
+
};
|
|
133
|
+
//# sourceMappingURL=utilityHelpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utilityHelpers.js","sources":["../../src/helpers/utilityHelpers.ts"],"sourcesContent":["import { uiLogger } from './uiLogger';\n\n/**\n * Check if a string is valid JSON\n * @param str - The string to validate\n * @returns True if string is valid JSON, false otherwise\n */\nexport const isJSON = (str: string): boolean => {\n try {\n JSON.parse(str);\n } catch (e) {\n return false;\n }\n return true;\n};\n\n/**\n * Generate label for action button based on load more state\n * @param canLoadMore - Whether more items can be loaded\n * @param remainingItems - Number of remaining items to load\n * @returns Button label in Portuguese: 'Ver Mais (N)' or 'Ver Menos'\n */\nexport const getActionButtonLabel = (canLoadMore: boolean, remainingItems: number) => {\n return canLoadMore ? `Ver Mais (${remainingItems})` : 'Ver Menos';\n};\n\n/** Epoch Twitter Snowflake (ms). IDs como string decimal (seguro em JSON). */\nconst EPOCH_MS = 1288834974657n;\nconst SEQUENCE_MASK = 0xfffn;\nconst NODE_SHIFT = 12n;\nconst TIME_SHIFT = 22n;\n\nlet lastTimestamp = -1n;\nlet sequence = 0n;\nconst nodeId = BigInt(Math.floor(Math.random() * 1024));\n\nconst waitNextMillis = (after: bigint): bigint => {\n let t = BigInt(Date.now()) - EPOCH_MS;\n while (t <= after) {\n t = BigInt(Date.now()) - EPOCH_MS;\n }\n return t;\n};\n\n/**\n * Generate a unique, time-ordered Snowflake ID as a decimal string (safe in JSON).\n * @returns A Snowflake ID string\n */\nexport const generateUUID = (): string => {\n let timestamp = BigInt(Date.now()) - EPOCH_MS;\n\n if (timestamp < lastTimestamp) {\n timestamp = waitNextMillis(lastTimestamp);\n }\n\n if (timestamp === lastTimestamp) {\n sequence = (sequence + 1n) & SEQUENCE_MASK;\n if (sequence === 0n) {\n timestamp = waitNextMillis(lastTimestamp);\n }\n } else {\n sequence = 0n;\n }\n\n lastTimestamp = timestamp;\n const id = (timestamp << TIME_SHIFT) | (nodeId << NODE_SHIFT) | sequence;\n return id.toString();\n};\n\n/**\n * Check if an object is empty (has no properties)\n * @param obj - The object to check\n * @returns True if object is empty, false otherwise\n */\nexport const isEmptyObject = (obj: unknown) => typeof obj === 'object' && obj !== null && Object.keys(obj).length === 0;\n\n/**\n * Convert rem to px using the live root font-size, so px-only APIs (drawer size props,\n * canvas math) follow the fluid density scale (html font-size clamp).\n * @param rem - Value in rem units\n * @returns Equivalent pixels at the current root font-size\n */\nexport const remToPx = (rem: number): number => {\n const rootFontSize = Number.parseFloat(getComputedStyle(document.documentElement).fontSize) || 16;\n return Math.round(rem * rootFontSize);\n};\n\n/**\n * Create a delay/sleep function using Promise\n * @param ms - Number of milliseconds to wait\n * @returns Promise that resolves after the specified time\n */\nexport const sleep = (ms: number) => {\n return new Promise((resolve) => setTimeout(resolve, ms));\n};\n\n/**\n * Map over items running at most `limit` async tasks concurrently.\n * Never rejects: every item resolves to a PromiseSettledResult so callers can build error summaries.\n * @param items - The items to process\n * @param limit - Maximum number of concurrent tasks\n * @param task - Async function applied to each item\n * @returns Settled results in the original item order\n */\nexport const mapWithConcurrency = async <T, R>(\n items: ReadonlyArray<T>,\n limit: number,\n task: (item: T, index: number) => Promise<R>,\n): Promise<Array<PromiseSettledResult<R>>> => {\n const results: Array<PromiseSettledResult<R>> = new Array(items.length);\n let cursor = 0;\n\n const worker = async (): Promise<void> => {\n while (cursor < items.length) {\n const index = cursor;\n cursor += 1;\n try {\n results[index] = { status: 'fulfilled', value: await task(items[index], index) };\n } catch (reason) {\n results[index] = { status: 'rejected', reason };\n }\n }\n };\n\n const workerCount = Math.max(1, Math.min(limit, items.length));\n await Promise.all(Array.from({ length: workerCount }, worker));\n\n return results;\n};\n\n/**\n * Download a file from a Blob object\n * @param blob - The blob data to download\n * @param filename - The name of the file to download\n */\nexport const downloadFromBlob = (blob: Blob, filename: string): void => {\n if (!blob) return;\n\n const url = window.URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename;\n document.body.appendChild(a);\n a.click();\n a.remove();\n};\n\n/**\n * Handle the complete download process with loading state management\n * @param fetchFunction - Function that returns a Promise<Blob> to fetch the data\n * @param filename - Name of the file to download\n * @param setLoading - Optional function to set the loading state\n * @returns Promise that resolves when the download is complete\n */\nexport const handleDownload = async (\n fetchFunction: () => Promise<Blob>,\n filename: string,\n setLoading?: (isLoading: boolean) => void,\n): Promise<void> => {\n try {\n setLoading?.(true);\n const blob = await fetchFunction();\n downloadFromBlob(blob, filename);\n } catch (error) {\n uiLogger.error(error);\n } finally {\n setLoading?.(false);\n }\n};\n\n/**\n * Clear all URL parameters from the current location\n * @returns void\n */\nexport const clearUrlParams = (): void => {\n const url = window.location.protocol + '//' + window.location.host + window.location.pathname;\n window.history.pushState({ path: url }, '', url);\n};\n\nexport function formatSizesToArray(data: Array<{ size: string; quantity: number }>): Array<{ [size: string]: number }> {\n return data.map((item) => ({\n [item.size]: item.quantity,\n }));\n}\n\n/**\n * Runs an async mapper over a list with at most `limit` calls in flight, keeping the\n * result aligned with the input order (same shape as `Promise.allSettled`).\n *\n * `Promise.allSettled(items.map(fetch))` opens EVERY request at once. With a page of\n * records that is already dozens of sockets, and a surface that renders several pages\n * side by side (a kanban board) it multiplies until the browser stalls and the token\n * expires mid-burst, turning the tail of the burst into 401s and refresh storms.\n */\nexport const settleWithConcurrency = async <TItem, TResult>(\n items: Array<TItem>,\n limit: number,\n mapper: (item: TItem, index: number) => Promise<TResult>,\n): Promise<Array<PromiseSettledResult<TResult>>> => {\n const safeItems = items ?? [];\n const results = new Array<PromiseSettledResult<TResult>>(safeItems.length);\n const maxInFlight = Math.max(1, limit);\n let nextIndex = 0;\n\n const runWorker = async (): Promise<void> => {\n while (nextIndex < safeItems.length) {\n const index = nextIndex;\n nextIndex += 1;\n\n try {\n results[index] = { status: 'fulfilled', value: await mapper(safeItems[index], index) };\n } catch (reason) {\n results[index] = { status: 'rejected', reason };\n }\n }\n };\n\n await Promise.all(Array.from({ length: Math.min(maxInFlight, safeItems.length) }, runWorker));\n\n return results;\n};\n"],"names":[],"mappings":";AAOO,MAAM,SAAS,CAAC,QAAyB;AAC9C,MAAI;AACF,SAAK,MAAM,GAAG;AAAA,EAChB,SAAS,GAAG;AACV,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAQO,MAAM,uBAAuB,CAAC,aAAsB,mBAA2B;AACpF,SAAO,cAAc,aAAa,cAAc,MAAM;AACxD;AAGA,MAAM,WAAW;AACjB,MAAM,gBAAgB;AACtB,MAAM,aAAa;AACnB,MAAM,aAAa;AAEnB,IAAI,gBAAgB,CAAC;AACrB,IAAI,WAAW;AACf,MAAM,SAAS,OAAO,KAAK,MAAM,KAAK,OAAA,IAAW,IAAI,CAAC;AAEtD,MAAM,iBAAiB,CAAC,UAA0B;AAChD,MAAI,IAAI,OAAO,KAAK,IAAA,CAAK,IAAI;AAC7B,SAAO,KAAK,OAAO;AACjB,QAAI,OAAO,KAAK,IAAA,CAAK,IAAI;AAAA,EAC3B;AACA,SAAO;AACT;AAMO,MAAM,eAAe,MAAc;AACxC,MAAI,YAAY,OAAO,KAAK,IAAA,CAAK,IAAI;AAErC,MAAI,YAAY,eAAe;AAC7B,gBAAY,eAAe,aAAa;AAAA,EAC1C;AAEA,MAAI,cAAc,eAAe;AAC/B,eAAY,WAAW,KAAM;AAC7B,QAAI,aAAa,IAAI;AACnB,kBAAY,eAAe,aAAa;AAAA,IAC1C;AAAA,EACF,OAAO;AACL,eAAW;AAAA,EACb;AAEA,kBAAgB;AAChB,QAAM,KAAM,aAAa,aAAe,UAAU,aAAc;AAChE,SAAO,GAAG,SAAA;AACZ;AAOO,MAAM,gBAAgB,CAAC,QAAiB,OAAO,QAAQ,YAAY,QAAQ,QAAQ,OAAO,KAAK,GAAG,EAAE,WAAW;AAQ/G,MAAM,UAAU,CAAC,QAAwB;AAC9C,QAAM,eAAe,OAAO,WAAW,iBAAiB,SAAS,eAAe,EAAE,QAAQ,KAAK;AAC/F,SAAO,KAAK,MAAM,MAAM,YAAY;AACtC;AAOO,MAAM,QAAQ,CAAC,OAAe;AACnC,SAAO,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,EAAE,CAAC;AACzD;AAUO,MAAM,qBAAqB,OAChC,OACA,OACA,SAC4C;AAC5C,QAAM,UAA0C,IAAI,MAAM,MAAM,MAAM;AACtE,MAAI,SAAS;AAEb,QAAM,SAAS,YAA2B;AACxC,WAAO,SAAS,MAAM,QAAQ;AAC5B,YAAM,QAAQ;AACd,gBAAU;AACV,UAAI;AACF,gBAAQ,KAAK,IAAI,EAAE,QAAQ,aAAa,OAAO,MAAM,KAAK,MAAM,KAAK,GAAG,KAAK,EAAA;AAAA,MAC/E,SAAS,QAAQ;AACf,gBAAQ,KAAK,IAAI,EAAE,QAAQ,YAAY,OAAA;AAAA,MACzC;AAAA,IACF;AAAA,EACF;AAEA,QAAM,cAAc,KAAK,IAAI,GAAG,KAAK,IAAI,OAAO,MAAM,MAAM,CAAC;AAC7D,QAAM,QAAQ,IAAI,MAAM,KAAK,EAAE,QAAQ,eAAe,MAAM,CAAC;AAE7D,SAAO;AACT;AAOO,MAAM,mBAAmB,CAAC,MAAY,aAA2B;AACtE,MAAI,CAAC,KAAM;AAEX,QAAM,MAAM,OAAO,IAAI,gBAAgB,IAAI;AAC3C,QAAM,IAAI,SAAS,cAAc,GAAG;AACpC,IAAE,OAAO;AACT,IAAE,WAAW;AACb,WAAS,KAAK,YAAY,CAAC;AAC3B,IAAE,MAAA;AACF,IAAE,OAAA;AACJ;AASO,MAAM,iBAAiB,OAC5B,eACA,UACA,eACkB;AAClB,MAAI;AACF,iBAAa,IAAI;AACjB,UAAM,OAAO,MAAM,cAAA;AACnB,qBAAiB,MAAM,QAAQ;AAAA,EACjC,SAAS,OAAO;AACd,aAAS,MAAM,KAAK;AAAA,EACtB,UAAA;AACE,iBAAa,KAAK;AAAA,EACpB;AACF;AAMO,MAAM,iBAAiB,MAAY;AACxC,QAAM,MAAM,OAAO,SAAS,WAAW,OAAO,OAAO,SAAS,OAAO,OAAO,SAAS;AACrF,SAAO,QAAQ,UAAU,EAAE,MAAM,IAAA,GAAO,IAAI,GAAG;AACjD;AAEO,SAAS,mBAAmB,MAAoF;AACrH,SAAO,KAAK,IAAI,CAAC,UAAU;AAAA,IACzB,CAAC,KAAK,IAAI,GAAG,KAAK;AAAA,EAAA,EAClB;AACJ;AAWO,MAAM,wBAAwB,OACnC,OACA,OACA,WACkD;AAClD,QAAM,YAAY,SAAS,CAAA;AAC3B,QAAM,UAAU,IAAI,MAAqC,UAAU,MAAM;AACzE,QAAM,cAAc,KAAK,IAAI,GAAG,KAAK;AACrC,MAAI,YAAY;AAEhB,QAAM,YAAY,YAA2B;AAC3C,WAAO,YAAY,UAAU,QAAQ;AACnC,YAAM,QAAQ;AACd,mBAAa;AAEb,UAAI;AACF,gBAAQ,KAAK,IAAI,EAAE,QAAQ,aAAa,OAAO,MAAM,OAAO,UAAU,KAAK,GAAG,KAAK,EAAA;AAAA,MACrF,SAAS,QAAQ;AACf,gBAAQ,KAAK,IAAI,EAAE,QAAQ,YAAY,OAAA;AAAA,MACzC;AAAA,IACF;AAAA,EACF;AAEA,QAAM,QAAQ,IAAI,MAAM,KAAK,EAAE,QAAQ,KAAK,IAAI,aAAa,UAAU,MAAM,EAAA,GAAK,SAAS,CAAC;AAE5F,SAAO;AACT;"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validate if a string is a valid email format
|
|
3
|
+
* @param email - The email string to validate
|
|
4
|
+
* @returns True if email format is valid, false otherwise
|
|
5
|
+
*/
|
|
6
|
+
export declare const validateEmail: (email: string) => boolean;
|
|
7
|
+
/**
|
|
8
|
+
* Validate if a string is an absolute http(s) URL
|
|
9
|
+
* @param url - The URL string to validate
|
|
10
|
+
* @returns True if the URL is absolute and uses http or https, false otherwise
|
|
11
|
+
*/
|
|
12
|
+
export declare const validateHttpUrl: (url: string) => boolean;
|
|
13
|
+
export declare const PASSWORD_MIN_LENGTH = 8;
|
|
14
|
+
export declare const PASSWORD_NUMBER_REGEX: RegExp;
|
|
15
|
+
export declare const PASSWORD_SPECIAL_CHAR_REGEX: RegExp;
|
|
16
|
+
export declare const PASSWORD_UPPERCASE_REGEX: RegExp;
|
|
17
|
+
export declare const PASSWORD_LOWERCASE_REGEX: RegExp;
|
|
18
|
+
/**
|
|
19
|
+
* Validate if a password meets security requirements
|
|
20
|
+
* Requires: min 8 chars, uppercase, lowercase, number, special character
|
|
21
|
+
* @param password - The password string to validate
|
|
22
|
+
* @returns True if password meets all requirements, false otherwise
|
|
23
|
+
*/
|
|
24
|
+
export declare const validatePassword: (password: string) => boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Check if password is being typed and has invalid requirements
|
|
27
|
+
* Used to show visual feedback when user is typing but password is still invalid
|
|
28
|
+
* @param password - The password string to check
|
|
29
|
+
* @returns True if password has content but doesn't meet all requirements, false otherwise
|
|
30
|
+
*/
|
|
31
|
+
export declare const hasPasswordError: (password: string) => boolean;
|
|
32
|
+
/**
|
|
33
|
+
* HTML tooltip description for password requirements
|
|
34
|
+
* Displays the password validation rules in Portuguese
|
|
35
|
+
*/
|
|
36
|
+
export declare const tooltipDescription = "\n A senha deve ter: <br />\n - Pelo menos 8 caracteres <br />\n - Pelo menos uma letra mai\u00FAscula <br />\n - Pelo menos uma letra min\u00FAscula <br />\n - Pelo menos um n\u00FAmero <br />\n - Pelo menos um caractere especial (ex: !, @, #, $, ;) <br />\n";
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
const validateEmail = (email) => {
|
|
2
|
+
const regex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
3
|
+
return regex.test(email);
|
|
4
|
+
};
|
|
5
|
+
const validateHttpUrl = (url) => {
|
|
6
|
+
try {
|
|
7
|
+
const parsed = new URL(String(url ?? "").trim());
|
|
8
|
+
return parsed.protocol === "http:" || parsed.protocol === "https:";
|
|
9
|
+
} catch {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
const PASSWORD_MIN_LENGTH = 8;
|
|
14
|
+
const PASSWORD_NUMBER_REGEX = /\d/;
|
|
15
|
+
const PASSWORD_SPECIAL_CHAR_REGEX = /[^A-Za-z0-9\s]/;
|
|
16
|
+
const PASSWORD_UPPERCASE_REGEX = /[A-Z]/;
|
|
17
|
+
const PASSWORD_LOWERCASE_REGEX = /[a-z]/;
|
|
18
|
+
const validatePassword = (password) => {
|
|
19
|
+
return password.length >= PASSWORD_MIN_LENGTH && PASSWORD_NUMBER_REGEX.test(password) && PASSWORD_SPECIAL_CHAR_REGEX.test(password) && PASSWORD_UPPERCASE_REGEX.test(password) && PASSWORD_LOWERCASE_REGEX.test(password);
|
|
20
|
+
};
|
|
21
|
+
const hasPasswordError = (password) => {
|
|
22
|
+
return password.length > 0 && !validatePassword(password);
|
|
23
|
+
};
|
|
24
|
+
const tooltipDescription = `
|
|
25
|
+
A senha deve ter: <br />
|
|
26
|
+
- Pelo menos ${PASSWORD_MIN_LENGTH} caracteres <br />
|
|
27
|
+
- Pelo menos uma letra maiúscula <br />
|
|
28
|
+
- Pelo menos uma letra minúscula <br />
|
|
29
|
+
- Pelo menos um número <br />
|
|
30
|
+
- Pelo menos um caractere especial (ex: !, @, #, $, ;) <br />
|
|
31
|
+
`;
|
|
32
|
+
export {
|
|
33
|
+
PASSWORD_LOWERCASE_REGEX,
|
|
34
|
+
PASSWORD_MIN_LENGTH,
|
|
35
|
+
PASSWORD_NUMBER_REGEX,
|
|
36
|
+
PASSWORD_SPECIAL_CHAR_REGEX,
|
|
37
|
+
PASSWORD_UPPERCASE_REGEX,
|
|
38
|
+
hasPasswordError,
|
|
39
|
+
tooltipDescription,
|
|
40
|
+
validateEmail,
|
|
41
|
+
validateHttpUrl,
|
|
42
|
+
validatePassword
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=validationHelpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validationHelpers.js","sources":["../../src/helpers/validationHelpers.ts"],"sourcesContent":["/**\n * Validate if a string is a valid email format\n * @param email - The email string to validate\n * @returns True if email format is valid, false otherwise\n */\nexport const validateEmail = (email: string) => {\n const regex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n return regex.test(email);\n};\n\n/**\n * Validate if a string is an absolute http(s) URL\n * @param url - The URL string to validate\n * @returns True if the URL is absolute and uses http or https, false otherwise\n */\nexport const validateHttpUrl = (url: string) => {\n try {\n const parsed = new URL(String(url ?? '').trim());\n\n return parsed.protocol === 'http:' || parsed.protocol === 'https:';\n } catch {\n return false;\n }\n};\n\nexport const PASSWORD_MIN_LENGTH = 8;\nexport const PASSWORD_NUMBER_REGEX = /\\d/;\nexport const PASSWORD_SPECIAL_CHAR_REGEX = /[^A-Za-z0-9\\s]/;\nexport const PASSWORD_UPPERCASE_REGEX = /[A-Z]/;\nexport const PASSWORD_LOWERCASE_REGEX = /[a-z]/;\n\n/**\n * Validate if a password meets security requirements\n * Requires: min 8 chars, uppercase, lowercase, number, special character\n * @param password - The password string to validate\n * @returns True if password meets all requirements, false otherwise\n */\nexport const validatePassword = (password: string) => {\n return (\n password.length >= PASSWORD_MIN_LENGTH &&\n PASSWORD_NUMBER_REGEX.test(password) &&\n PASSWORD_SPECIAL_CHAR_REGEX.test(password) &&\n PASSWORD_UPPERCASE_REGEX.test(password) &&\n PASSWORD_LOWERCASE_REGEX.test(password)\n );\n};\n\n/**\n * Check if password is being typed and has invalid requirements\n * Used to show visual feedback when user is typing but password is still invalid\n * @param password - The password string to check\n * @returns True if password has content but doesn't meet all requirements, false otherwise\n */\nexport const hasPasswordError = (password: string) => {\n return password.length > 0 && !validatePassword(password);\n};\n\n/**\n * HTML tooltip description for password requirements\n * Displays the password validation rules in Portuguese\n */\n// eslint-disable-next-line i18n-check/no-portuguese-strings\nexport const tooltipDescription = `\n A senha deve ter: <br />\n - Pelo menos ${PASSWORD_MIN_LENGTH} caracteres <br />\n - Pelo menos uma letra maiúscula <br />\n - Pelo menos uma letra minúscula <br />\n - Pelo menos um número <br />\n - Pelo menos um caractere especial (ex: !, @, #, $, ;) <br />\n`;\n"],"names":[],"mappings":"AAKO,MAAM,gBAAgB,CAAC,UAAkB;AAC9C,QAAM,QAAQ;AACd,SAAO,MAAM,KAAK,KAAK;AACzB;AAOO,MAAM,kBAAkB,CAAC,QAAgB;AAC9C,MAAI;AACF,UAAM,SAAS,IAAI,IAAI,OAAO,OAAO,EAAE,EAAE,MAAM;AAE/C,WAAO,OAAO,aAAa,WAAW,OAAO,aAAa;AAAA,EAC5D,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEO,MAAM,sBAAsB;AAC5B,MAAM,wBAAwB;AAC9B,MAAM,8BAA8B;AACpC,MAAM,2BAA2B;AACjC,MAAM,2BAA2B;AAQjC,MAAM,mBAAmB,CAAC,aAAqB;AACpD,SACE,SAAS,UAAU,uBACnB,sBAAsB,KAAK,QAAQ,KACnC,4BAA4B,KAAK,QAAQ,KACzC,yBAAyB,KAAK,QAAQ,KACtC,yBAAyB,KAAK,QAAQ;AAE1C;AAQO,MAAM,mBAAmB,CAAC,aAAqB;AACpD,SAAO,SAAS,SAAS,KAAK,CAAC,iBAAiB,QAAQ;AAC1D;AAOO,MAAM,qBAAqB;AAAA;AAAA,iBAEjB,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export type TFloatingPlacement = 'top' | 'top-start' | 'top-end' | 'right' | 'right-start' | 'right-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | 'left-start' | 'left-end';
|
|
2
|
+
interface IUseAnchoredFloatingOptions {
|
|
3
|
+
open: boolean;
|
|
4
|
+
placement?: TFloatingPlacement;
|
|
5
|
+
offsetPx?: number;
|
|
6
|
+
/** Sizes the floating element to the reference width (select-style dropdowns). */
|
|
7
|
+
matchReferenceWidth?: boolean;
|
|
8
|
+
/** Caps the floating element to the space left in the viewport. */
|
|
9
|
+
constrainToViewport?: boolean;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Positions a floating element against a reference. `autoUpdate` re-runs on scroll of every
|
|
13
|
+
* ancestor, on resize and on layout shifts, which is what keeps a menu attached to a row
|
|
14
|
+
* inside a scrolling table.
|
|
15
|
+
*/
|
|
16
|
+
export declare const useAnchoredFloating: ({ open, placement, offsetPx, matchReferenceWidth, constrainToViewport, }: IUseAnchoredFloatingOptions) => {
|
|
17
|
+
setReference: (node: HTMLElement | null) => void;
|
|
18
|
+
setFloating: (node: HTMLElement | null) => void;
|
|
19
|
+
referenceRef: import('react').MutableRefObject<HTMLElement | null>;
|
|
20
|
+
floatingRef: import('react').MutableRefObject<HTMLElement | null>;
|
|
21
|
+
};
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { useRef, useCallback, useEffect } from "react";
|
|
2
|
+
import { uiLogger } from "../helpers/uiLogger.js";
|
|
3
|
+
import { autoUpdate, offset, flip, shift, size, computePosition } from "@floating-ui/dom";
|
|
4
|
+
const VIEWPORT_PADDING = 8;
|
|
5
|
+
const useAnchoredFloating = ({
|
|
6
|
+
open,
|
|
7
|
+
placement = "bottom-start",
|
|
8
|
+
offsetPx = 6,
|
|
9
|
+
matchReferenceWidth = false,
|
|
10
|
+
constrainToViewport = true
|
|
11
|
+
}) => {
|
|
12
|
+
const referenceRef = useRef(null);
|
|
13
|
+
const floatingRef = useRef(null);
|
|
14
|
+
const setReference = useCallback((node) => {
|
|
15
|
+
referenceRef.current = node;
|
|
16
|
+
}, []);
|
|
17
|
+
const setFloating = useCallback((node) => {
|
|
18
|
+
floatingRef.current = node;
|
|
19
|
+
}, []);
|
|
20
|
+
useEffect(() => {
|
|
21
|
+
const reference = referenceRef.current;
|
|
22
|
+
const floating = floatingRef.current;
|
|
23
|
+
if (!open || !reference || !floating) return void 0;
|
|
24
|
+
const updatePosition = async () => {
|
|
25
|
+
const middleware = [offset(offsetPx), flip({ padding: VIEWPORT_PADDING }), shift({ padding: VIEWPORT_PADDING })];
|
|
26
|
+
if (matchReferenceWidth || constrainToViewport) {
|
|
27
|
+
middleware.push(
|
|
28
|
+
size({
|
|
29
|
+
padding: VIEWPORT_PADDING,
|
|
30
|
+
apply({ rects, availableHeight, elements }) {
|
|
31
|
+
if (matchReferenceWidth) elements.floating.style.width = `${rects.reference.width}px`;
|
|
32
|
+
if (constrainToViewport) elements.floating.style.maxHeight = `${availableHeight}px`;
|
|
33
|
+
}
|
|
34
|
+
})
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
try {
|
|
38
|
+
const { x, y } = await computePosition(reference, floating, {
|
|
39
|
+
placement,
|
|
40
|
+
strategy: "fixed",
|
|
41
|
+
middleware
|
|
42
|
+
});
|
|
43
|
+
floating.style.position = "fixed";
|
|
44
|
+
floating.style.left = `${x}px`;
|
|
45
|
+
floating.style.top = `${y}px`;
|
|
46
|
+
} catch (error) {
|
|
47
|
+
uiLogger.error("useAnchoredFloating: failed to position floating element", error);
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
return autoUpdate(reference, floating, () => {
|
|
51
|
+
void updatePosition();
|
|
52
|
+
});
|
|
53
|
+
}, [open, placement, offsetPx, matchReferenceWidth, constrainToViewport]);
|
|
54
|
+
return { setReference, setFloating, referenceRef, floatingRef };
|
|
55
|
+
};
|
|
56
|
+
export {
|
|
57
|
+
useAnchoredFloating
|
|
58
|
+
};
|
|
59
|
+
//# sourceMappingURL=useAnchoredFloating.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAnchoredFloating.js","sources":["../../src/hooks/useAnchoredFloating.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\n\nimport { uiLogger } from '@/helpers/uiLogger';\nimport { autoUpdate, computePosition, flip, offset, shift, size } from '@floating-ui/dom';\n\nexport type TFloatingPlacement =\n | 'top'\n | 'top-start'\n | 'top-end'\n | 'right'\n | 'right-start'\n | 'right-end'\n | 'bottom'\n | 'bottom-start'\n | 'bottom-end'\n | 'left'\n | 'left-start'\n | 'left-end';\n\nconst VIEWPORT_PADDING = 8;\n\ninterface IUseAnchoredFloatingOptions {\n open: boolean;\n placement?: TFloatingPlacement;\n offsetPx?: number;\n /** Sizes the floating element to the reference width (select-style dropdowns). */\n matchReferenceWidth?: boolean;\n /** Caps the floating element to the space left in the viewport. */\n constrainToViewport?: boolean;\n}\n\n/**\n * Positions a floating element against a reference. `autoUpdate` re-runs on scroll of every\n * ancestor, on resize and on layout shifts, which is what keeps a menu attached to a row\n * inside a scrolling table.\n */\nexport const useAnchoredFloating = ({\n open,\n placement = 'bottom-start',\n offsetPx = 6,\n matchReferenceWidth = false,\n constrainToViewport = true,\n}: IUseAnchoredFloatingOptions) => {\n const referenceRef = useRef<HTMLElement | null>(null);\n const floatingRef = useRef<HTMLElement | null>(null);\n\n const setReference = useCallback((node: HTMLElement | null) => {\n referenceRef.current = node;\n }, []);\n\n const setFloating = useCallback((node: HTMLElement | null) => {\n floatingRef.current = node;\n }, []);\n\n useEffect(() => {\n const reference = referenceRef.current;\n const floating = floatingRef.current;\n if (!open || !reference || !floating) return undefined;\n\n const updatePosition = async () => {\n const middleware = [offset(offsetPx), flip({ padding: VIEWPORT_PADDING }), shift({ padding: VIEWPORT_PADDING })];\n\n if (matchReferenceWidth || constrainToViewport) {\n middleware.push(\n size({\n padding: VIEWPORT_PADDING,\n apply({ rects, availableHeight, elements }) {\n if (matchReferenceWidth) elements.floating.style.width = `${rects.reference.width}px`;\n if (constrainToViewport) elements.floating.style.maxHeight = `${availableHeight}px`;\n },\n }),\n );\n }\n\n try {\n const { x, y } = await computePosition(reference, floating, {\n placement,\n strategy: 'fixed',\n middleware,\n });\n\n floating.style.position = 'fixed';\n floating.style.left = `${x}px`;\n floating.style.top = `${y}px`;\n } catch (error) {\n uiLogger.error('useAnchoredFloating: failed to position floating element', error);\n }\n };\n\n return autoUpdate(reference, floating, () => {\n void updatePosition();\n });\n }, [open, placement, offsetPx, matchReferenceWidth, constrainToViewport]);\n\n return { setReference, setFloating, referenceRef, floatingRef };\n};\n"],"names":[],"mappings":";;;AAmBA,MAAM,mBAAmB;AAiBlB,MAAM,sBAAsB,CAAC;AAAA,EAClC;AAAA,EACA,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,sBAAsB;AAAA,EACtB,sBAAsB;AACxB,MAAmC;AACjC,QAAM,eAAe,OAA2B,IAAI;AACpD,QAAM,cAAc,OAA2B,IAAI;AAEnD,QAAM,eAAe,YAAY,CAAC,SAA6B;AAC7D,iBAAa,UAAU;AAAA,EACzB,GAAG,CAAA,CAAE;AAEL,QAAM,cAAc,YAAY,CAAC,SAA6B;AAC5D,gBAAY,UAAU;AAAA,EACxB,GAAG,CAAA,CAAE;AAEL,YAAU,MAAM;AACd,UAAM,YAAY,aAAa;AAC/B,UAAM,WAAW,YAAY;AAC7B,QAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAU,QAAO;AAE7C,UAAM,iBAAiB,YAAY;AACjC,YAAM,aAAa,CAAC,OAAO,QAAQ,GAAG,KAAK,EAAE,SAAS,iBAAA,CAAkB,GAAG,MAAM,EAAE,SAAS,iBAAA,CAAkB,CAAC;AAE/G,UAAI,uBAAuB,qBAAqB;AAC9C,mBAAW;AAAA,UACT,KAAK;AAAA,YACH,SAAS;AAAA,YACT,MAAM,EAAE,OAAO,iBAAiB,YAAY;AAC1C,kBAAI,8BAA8B,SAAS,MAAM,QAAQ,GAAG,MAAM,UAAU,KAAK;AACjF,kBAAI,oBAAqB,UAAS,SAAS,MAAM,YAAY,GAAG,eAAe;AAAA,YACjF;AAAA,UAAA,CACD;AAAA,QAAA;AAAA,MAEL;AAEA,UAAI;AACF,cAAM,EAAE,GAAG,EAAA,IAAM,MAAM,gBAAgB,WAAW,UAAU;AAAA,UAC1D;AAAA,UACA,UAAU;AAAA,UACV;AAAA,QAAA,CACD;AAED,iBAAS,MAAM,WAAW;AAC1B,iBAAS,MAAM,OAAO,GAAG,CAAC;AAC1B,iBAAS,MAAM,MAAM,GAAG,CAAC;AAAA,MAC3B,SAAS,OAAO;AACd,iBAAS,MAAM,4DAA4D,KAAK;AAAA,MAClF;AAAA,IACF;AAEA,WAAO,WAAW,WAAW,UAAU,MAAM;AAC3C,WAAK,eAAA;AAAA,IACP,CAAC;AAAA,EACH,GAAG,CAAC,MAAM,WAAW,UAAU,qBAAqB,mBAAmB,CAAC;AAExE,SAAO,EAAE,cAAc,aAAa,cAAc,YAAA;AACpD;"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare const BREAKPOINTS: {
|
|
2
|
+
readonly tablet: 640;
|
|
3
|
+
readonly laptop: 1024;
|
|
4
|
+
readonly desktop: 1368;
|
|
5
|
+
};
|
|
6
|
+
export type TBreakpoint = 'mobile' | 'tablet' | 'laptop' | 'desktop';
|
|
7
|
+
export interface IBreakpointState {
|
|
8
|
+
width: number;
|
|
9
|
+
breakpoint: TBreakpoint;
|
|
10
|
+
isMobile: boolean;
|
|
11
|
+
isTabletDown: boolean;
|
|
12
|
+
isLaptopDown: boolean;
|
|
13
|
+
isLaptopUp: boolean;
|
|
14
|
+
isDesktopUp: boolean;
|
|
15
|
+
}
|
|
16
|
+
export declare const useBreakpoint: () => IBreakpointState;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { useState, useEffect } from "react";
|
|
2
|
+
const BREAKPOINTS = { tablet: 640, laptop: 1024, desktop: 1368 };
|
|
3
|
+
const getWidth = () => {
|
|
4
|
+
try {
|
|
5
|
+
return window.innerWidth;
|
|
6
|
+
} catch {
|
|
7
|
+
return BREAKPOINTS.desktop;
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
const resolveBreakpoint = (width) => {
|
|
11
|
+
if (width >= BREAKPOINTS.desktop) return "desktop";
|
|
12
|
+
if (width >= BREAKPOINTS.laptop) return "laptop";
|
|
13
|
+
if (width >= BREAKPOINTS.tablet) return "tablet";
|
|
14
|
+
return "mobile";
|
|
15
|
+
};
|
|
16
|
+
const useBreakpoint = () => {
|
|
17
|
+
const [width, setWidth] = useState(getWidth);
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
let frame = null;
|
|
20
|
+
const handleResize = () => {
|
|
21
|
+
if (frame !== null) return;
|
|
22
|
+
frame = window.requestAnimationFrame(() => {
|
|
23
|
+
frame = null;
|
|
24
|
+
setWidth(getWidth());
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
window.addEventListener("resize", handleResize);
|
|
28
|
+
return () => {
|
|
29
|
+
if (frame !== null) window.cancelAnimationFrame(frame);
|
|
30
|
+
window.removeEventListener("resize", handleResize);
|
|
31
|
+
};
|
|
32
|
+
}, []);
|
|
33
|
+
return {
|
|
34
|
+
width,
|
|
35
|
+
breakpoint: resolveBreakpoint(width),
|
|
36
|
+
isMobile: width < BREAKPOINTS.tablet,
|
|
37
|
+
isTabletDown: width < BREAKPOINTS.laptop,
|
|
38
|
+
isLaptopDown: width < BREAKPOINTS.desktop,
|
|
39
|
+
isLaptopUp: width >= BREAKPOINTS.laptop,
|
|
40
|
+
isDesktopUp: width >= BREAKPOINTS.desktop
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
export {
|
|
44
|
+
BREAKPOINTS,
|
|
45
|
+
useBreakpoint
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=useBreakpoint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBreakpoint.js","sources":["../../src/hooks/useBreakpoint.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nexport const BREAKPOINTS = { tablet: 640, laptop: 1024, desktop: 1368 } as const;\n\nexport type TBreakpoint = 'mobile' | 'tablet' | 'laptop' | 'desktop';\n\nconst getWidth = (): number => {\n try {\n return window.innerWidth;\n } catch {\n return BREAKPOINTS.desktop;\n }\n};\n\nconst resolveBreakpoint = (width: number): TBreakpoint => {\n if (width >= BREAKPOINTS.desktop) return 'desktop';\n if (width >= BREAKPOINTS.laptop) return 'laptop';\n if (width >= BREAKPOINTS.tablet) return 'tablet';\n return 'mobile';\n};\n\nexport interface IBreakpointState {\n width: number;\n breakpoint: TBreakpoint;\n isMobile: boolean;\n isTabletDown: boolean;\n isLaptopDown: boolean;\n isLaptopUp: boolean;\n isDesktopUp: boolean;\n}\n\nexport const useBreakpoint = (): IBreakpointState => {\n const [width, setWidth] = useState(getWidth);\n\n // Coalesced into one animation frame: a drag-resize fires `resize` dozens of\n // times per second and every consumer of this hook re-renders on each one.\n useEffect(() => {\n let frame: number | null = null;\n\n const handleResize = () => {\n if (frame !== null) return;\n frame = window.requestAnimationFrame(() => {\n frame = null;\n setWidth(getWidth());\n });\n };\n\n window.addEventListener('resize', handleResize);\n return () => {\n if (frame !== null) window.cancelAnimationFrame(frame);\n window.removeEventListener('resize', handleResize);\n };\n }, []);\n\n return {\n width,\n breakpoint: resolveBreakpoint(width),\n isMobile: width < BREAKPOINTS.tablet,\n isTabletDown: width < BREAKPOINTS.laptop,\n isLaptopDown: width < BREAKPOINTS.desktop,\n isLaptopUp: width >= BREAKPOINTS.laptop,\n isDesktopUp: width >= BREAKPOINTS.desktop,\n };\n};\n"],"names":[],"mappings":";AAEO,MAAM,cAAc,EAAE,QAAQ,KAAK,QAAQ,MAAM,SAAS,KAAA;AAIjE,MAAM,WAAW,MAAc;AAC7B,MAAI;AACF,WAAO,OAAO;AAAA,EAChB,QAAQ;AACN,WAAO,YAAY;AAAA,EACrB;AACF;AAEA,MAAM,oBAAoB,CAAC,UAA+B;AACxD,MAAI,SAAS,YAAY,QAAS,QAAO;AACzC,MAAI,SAAS,YAAY,OAAQ,QAAO;AACxC,MAAI,SAAS,YAAY,OAAQ,QAAO;AACxC,SAAO;AACT;AAYO,MAAM,gBAAgB,MAAwB;AACnD,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,QAAQ;AAI3C,YAAU,MAAM;AACd,QAAI,QAAuB;AAE3B,UAAM,eAAe,MAAM;AACzB,UAAI,UAAU,KAAM;AACpB,cAAQ,OAAO,sBAAsB,MAAM;AACzC,gBAAQ;AACR,iBAAS,UAAU;AAAA,MACrB,CAAC;AAAA,IACH;AAEA,WAAO,iBAAiB,UAAU,YAAY;AAC9C,WAAO,MAAM;AACX,UAAI,UAAU,KAAM,QAAO,qBAAqB,KAAK;AACrD,aAAO,oBAAoB,UAAU,YAAY;AAAA,IACnD;AAAA,EACF,GAAG,CAAA,CAAE;AAEL,SAAO;AAAA,IACL;AAAA,IACA,YAAY,kBAAkB,KAAK;AAAA,IACnC,UAAU,QAAQ,YAAY;AAAA,IAC9B,cAAc,QAAQ,YAAY;AAAA,IAClC,cAAc,QAAQ,YAAY;AAAA,IAClC,YAAY,SAAS,YAAY;AAAA,IACjC,aAAa,SAAS,YAAY;AAAA,EAAA;AAEtC;"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
interface IUseDebounceOptions {
|
|
2
|
+
delay: number;
|
|
3
|
+
}
|
|
4
|
+
export declare const useDebounce: <T extends (...args: Array<unknown>) => unknown>(callback: T, { delay }: IUseDebounceOptions) => {
|
|
5
|
+
debouncedCallback: (...args: Parameters<T>) => void;
|
|
6
|
+
cancel: () => void;
|
|
7
|
+
};
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { useRef, useCallback, useEffect } from "react";
|
|
2
|
+
const useDebounce = (callback, { delay }) => {
|
|
3
|
+
const timeoutRef = useRef(null);
|
|
4
|
+
const debouncedCallback = useCallback(
|
|
5
|
+
(...args) => {
|
|
6
|
+
if (timeoutRef.current) {
|
|
7
|
+
clearTimeout(timeoutRef.current);
|
|
8
|
+
}
|
|
9
|
+
timeoutRef.current = setTimeout(() => {
|
|
10
|
+
callback(...args);
|
|
11
|
+
}, delay);
|
|
12
|
+
},
|
|
13
|
+
[callback, delay]
|
|
14
|
+
);
|
|
15
|
+
const cancel = useCallback(() => {
|
|
16
|
+
if (timeoutRef.current) {
|
|
17
|
+
clearTimeout(timeoutRef.current);
|
|
18
|
+
timeoutRef.current = null;
|
|
19
|
+
}
|
|
20
|
+
}, []);
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
return () => {
|
|
23
|
+
if (timeoutRef.current) {
|
|
24
|
+
clearTimeout(timeoutRef.current);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
}, []);
|
|
28
|
+
return {
|
|
29
|
+
debouncedCallback,
|
|
30
|
+
cancel
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
export {
|
|
34
|
+
useDebounce
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=useDebounce.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDebounce.js","sources":["../../src/hooks/useDebounce.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\n\ninterface IUseDebounceOptions {\n delay: number;\n}\n\nexport const useDebounce = <T extends (...args: Array<unknown>) => unknown>(\n callback: T,\n { delay }: IUseDebounceOptions,\n) => {\n const timeoutRef = useRef<NodeJS.Timeout | null>(null);\n\n const debouncedCallback = useCallback(\n (...args: Parameters<T>) => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n\n timeoutRef.current = setTimeout(() => {\n callback(...args);\n }, delay);\n },\n [callback, delay],\n );\n\n const cancel = useCallback(() => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n }, []);\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, []);\n\n return {\n debouncedCallback,\n cancel,\n };\n};\n"],"names":[],"mappings":";AAMO,MAAM,cAAc,CACzB,UACA,EAAE,YACC;AACH,QAAM,aAAa,OAA8B,IAAI;AAErD,QAAM,oBAAoB;AAAA,IACxB,IAAI,SAAwB;AAC1B,UAAI,WAAW,SAAS;AACtB,qBAAa,WAAW,OAAO;AAAA,MACjC;AAEA,iBAAW,UAAU,WAAW,MAAM;AACpC,iBAAS,GAAG,IAAI;AAAA,MAClB,GAAG,KAAK;AAAA,IACV;AAAA,IACA,CAAC,UAAU,KAAK;AAAA,EAAA;AAGlB,QAAM,SAAS,YAAY,MAAM;AAC/B,QAAI,WAAW,SAAS;AACtB,mBAAa,WAAW,OAAO;AAC/B,iBAAW,UAAU;AAAA,IACvB;AAAA,EACF,GAAG,CAAA,CAAE;AAEL,YAAU,MAAM;AACd,WAAO,MAAM;AACX,UAAI,WAAW,SAAS;AACtB,qBAAa,WAAW,OAAO;AAAA,MACjC;AAAA,IACF;AAAA,EACF,GAAG,CAAA,CAAE;AAEL,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EAAA;AAEJ;"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { IFileAttachment } from '../interfaces/IFileAttachment';
|
|
2
|
+
export type TFileUploader = (file: File, options: {
|
|
3
|
+
signal?: AbortSignal;
|
|
4
|
+
onProgress?: (percentage: number) => void;
|
|
5
|
+
}) => Promise<IFileAttachment>;
|
|
6
|
+
export type TStagedAttachmentStatus = 'uploading' | 'done' | 'error';
|
|
7
|
+
export interface IStagedAttachmentExtras {
|
|
8
|
+
durationMs?: number;
|
|
9
|
+
transcript?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface IStagedAttachment {
|
|
12
|
+
stagingId: string;
|
|
13
|
+
file: File;
|
|
14
|
+
previewUrl: string | null;
|
|
15
|
+
progress: number;
|
|
16
|
+
status: TStagedAttachmentStatus;
|
|
17
|
+
uploaded: IFileAttachment | null;
|
|
18
|
+
extras: IStagedAttachmentExtras;
|
|
19
|
+
}
|
|
20
|
+
export interface IUseFileAttachmentsOptions {
|
|
21
|
+
/** Storage seam: a surface with its own bucket passes its uploader instead of the shared one. */
|
|
22
|
+
uploadFile?: TFileUploader;
|
|
23
|
+
maxFiles?: number;
|
|
24
|
+
maxFileSizeBytes?: number;
|
|
25
|
+
compressImages?: boolean;
|
|
26
|
+
}
|
|
27
|
+
export interface IUseFileAttachmentsResult {
|
|
28
|
+
stagedAttachments: Array<IStagedAttachment>;
|
|
29
|
+
addFiles: (files: Array<File>, extras?: IStagedAttachmentExtras) => Promise<void>;
|
|
30
|
+
removeAttachment: (stagingId: string) => void;
|
|
31
|
+
retryAttachment: (stagingId: string) => void;
|
|
32
|
+
clearAttachments: () => void;
|
|
33
|
+
isUploading: boolean;
|
|
34
|
+
readyAttachments: Array<IFileAttachment>;
|
|
35
|
+
}
|
|
36
|
+
/** The host registers the uploader that backs surfaces without a bucket of their own. */
|
|
37
|
+
export declare const configureSharedFileUploader: (uploader: TFileUploader | null) => void;
|
|
38
|
+
/**
|
|
39
|
+
* Staging area between picking a file and having a stored reference for it: upload progress,
|
|
40
|
+
* cancellation, retry and object-URL lifecycle. Whoever owns the surface decides what to do
|
|
41
|
+
* with `readyAttachments` (send them beside a message, or write them into the body).
|
|
42
|
+
*/
|
|
43
|
+
export declare const useFileAttachments: (options?: IUseFileAttachmentsOptions) => IUseFileAttachmentsResult;
|