@ahrowe/ui 0.3.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/common/accordion/accordion.mjs +2 -0
- package/dist/esm/common/accordion/accordion.mjs.map +1 -0
- package/dist/esm/common/accordion/accordion.module.mjs +2 -0
- package/dist/esm/common/accordion/accordion.module.mjs.map +1 -0
- package/dist/esm/common/accordion/accordion.plain.module.mjs +2 -0
- package/dist/esm/common/accordion/accordion.plain.module.mjs.map +1 -0
- package/dist/esm/common/accordion/accordion.primary.module.mjs +2 -0
- package/dist/esm/common/accordion/accordion.primary.module.mjs.map +1 -0
- package/dist/esm/common/accordion/accordion.types.mjs +2 -0
- package/dist/esm/common/accordion/accordion.types.mjs.map +1 -0
- package/dist/esm/common/actionButtons/actionButtons.mjs +2 -0
- package/dist/esm/common/actionButtons/actionButtons.mjs.map +1 -0
- package/dist/esm/common/actionButtons/actionButtons.module.mjs +2 -0
- package/dist/esm/common/actionButtons/actionButtons.module.mjs.map +1 -0
- package/dist/esm/common/actionIcon/actionIcon.mjs +2 -0
- package/dist/esm/common/actionIcon/actionIcon.mjs.map +1 -0
- package/dist/esm/common/actionIcon/actionIcon.module.mjs +2 -0
- package/dist/esm/common/actionIcon/actionIcon.module.mjs.map +1 -0
- package/dist/esm/common/avatar/avatar.mjs +2 -0
- package/dist/esm/common/avatar/avatar.mjs.map +1 -0
- package/dist/esm/common/avatar/avatar.module.mjs +2 -0
- package/dist/esm/common/avatar/avatar.module.mjs.map +1 -0
- package/dist/esm/common/avatar/avatarGroup.mjs +2 -0
- package/dist/esm/common/avatar/avatarGroup.mjs.map +1 -0
- package/dist/esm/common/badge/badge.mjs +2 -0
- package/dist/esm/common/badge/badge.mjs.map +1 -0
- package/dist/esm/common/badge/badge.module.mjs +2 -0
- package/dist/esm/common/badge/badge.module.mjs.map +1 -0
- package/dist/esm/common/badge/badge.types.mjs +2 -0
- package/dist/esm/common/badge/badge.types.mjs.map +1 -0
- package/dist/esm/common/bodyEnd/bodyEnd.mjs +2 -0
- package/dist/esm/common/bodyEnd/bodyEnd.mjs.map +1 -0
- package/dist/esm/common/button/button.mjs +2 -0
- package/dist/esm/common/button/button.mjs.map +1 -0
- package/dist/esm/common/button/button.module.mjs +2 -0
- package/dist/esm/common/button/button.module.mjs.map +1 -0
- package/dist/esm/common/button/button.types.mjs +2 -0
- package/dist/esm/common/button/button.types.mjs.map +1 -0
- package/dist/esm/common/card/Card.mjs +2 -0
- package/dist/esm/common/card/Card.mjs.map +1 -0
- package/dist/esm/common/card/CardActions.mjs +2 -0
- package/dist/esm/common/card/CardActions.mjs.map +1 -0
- package/dist/esm/common/card/CardContent.mjs +2 -0
- package/dist/esm/common/card/CardContent.mjs.map +1 -0
- package/dist/esm/common/card/CardHeader.mjs +2 -0
- package/dist/esm/common/card/CardHeader.mjs.map +1 -0
- package/dist/esm/common/card/CardMedia.mjs +2 -0
- package/dist/esm/common/card/CardMedia.mjs.map +1 -0
- package/dist/esm/common/card/card.module.mjs +2 -0
- package/dist/esm/common/card/card.module.mjs.map +1 -0
- package/dist/esm/common/card/card.types.mjs +2 -0
- package/dist/esm/common/card/card.types.mjs.map +1 -0
- package/dist/esm/common/checkbox/checkbox.mjs +2 -0
- package/dist/esm/common/checkbox/checkbox.mjs.map +1 -0
- package/dist/esm/common/checkbox/checkbox.module.mjs +2 -0
- package/dist/esm/common/checkbox/checkbox.module.mjs.map +1 -0
- package/dist/esm/common/chip/chip.mjs +2 -0
- package/dist/esm/common/chip/chip.mjs.map +1 -0
- package/dist/esm/common/chip/chip.module.mjs +2 -0
- package/dist/esm/common/chip/chip.module.mjs.map +1 -0
- package/dist/esm/common/chip/chip.types.mjs +2 -0
- package/dist/esm/common/chip/chip.types.mjs.map +1 -0
- package/dist/esm/common/chip/chipContainer.mjs +2 -0
- package/dist/esm/common/chip/chipContainer.mjs.map +1 -0
- package/dist/esm/common/colorPicker/colorPicker.mjs +2 -0
- package/dist/esm/common/colorPicker/colorPicker.mjs.map +1 -0
- package/dist/esm/common/colorPicker/colorPicker.module.mjs +2 -0
- package/dist/esm/common/colorPicker/colorPicker.module.mjs.map +1 -0
- package/dist/esm/common/confirmModal/confirmModal.mjs +2 -0
- package/dist/esm/common/confirmModal/confirmModal.mjs.map +1 -0
- package/dist/esm/common/datePicker/components/datePickerMonth/datePickerMonth.mjs +2 -0
- package/dist/esm/common/datePicker/components/datePickerMonth/datePickerMonth.mjs.map +1 -0
- package/dist/esm/common/datePicker/components/datePickerMonth/datePickerMonth.module.mjs +2 -0
- package/dist/esm/common/datePicker/components/datePickerMonth/datePickerMonth.module.mjs.map +1 -0
- package/dist/esm/common/datePicker/dateFunctions.mjs +2 -0
- package/dist/esm/common/datePicker/dateFunctions.mjs.map +1 -0
- package/dist/esm/common/datePicker/datePicker.mjs +2 -0
- package/dist/esm/common/datePicker/datePicker.mjs.map +1 -0
- package/dist/esm/common/datePicker/datePicker.module.mjs +2 -0
- package/dist/esm/common/datePicker/datePicker.module.mjs.map +1 -0
- package/dist/esm/common/drawer/drawer.mjs +2 -0
- package/dist/esm/common/drawer/drawer.mjs.map +1 -0
- package/dist/esm/common/drawer/drawer.module.mjs +2 -0
- package/dist/esm/common/drawer/drawer.module.mjs.map +1 -0
- package/dist/esm/common/dropZone/dropZone.mjs +2 -0
- package/dist/esm/common/dropZone/dropZone.mjs.map +1 -0
- package/dist/esm/common/dropZone/dropZone.module.mjs +2 -0
- package/dist/esm/common/dropZone/dropZone.module.mjs.map +1 -0
- package/dist/esm/common/dropZone/dropZone.types.mjs +2 -0
- package/dist/esm/common/dropZone/dropZone.types.mjs.map +1 -0
- package/dist/esm/common/dropdown/dropdown.mjs +2 -0
- package/dist/esm/common/dropdown/dropdown.mjs.map +1 -0
- package/dist/esm/common/dropdown/dropdown.module.mjs +2 -0
- package/dist/esm/common/dropdown/dropdown.module.mjs.map +1 -0
- package/dist/esm/common/emptyState/emptyState.mjs +2 -0
- package/dist/esm/common/emptyState/emptyState.mjs.map +1 -0
- package/dist/esm/common/emptyState/emptyState.module.mjs +2 -0
- package/dist/esm/common/emptyState/emptyState.module.mjs.map +1 -0
- package/dist/esm/common/fab/components/fabBase/fabBase.mjs +2 -0
- package/dist/esm/common/fab/components/fabBase/fabBase.mjs.map +1 -0
- package/dist/esm/common/fab/components/fabBase/fabBase.module.mjs +2 -0
- package/dist/esm/common/fab/components/fabBase/fabBase.module.mjs.map +1 -0
- package/dist/esm/common/fab/fab.mjs +2 -0
- package/dist/esm/common/fab/fab.mjs.map +1 -0
- package/dist/esm/common/fab/fab.module.mjs +2 -0
- package/dist/esm/common/fab/fab.module.mjs.map +1 -0
- package/dist/esm/common/floatingMenu/floatingMenu.mjs +2 -0
- package/dist/esm/common/floatingMenu/floatingMenu.mjs.map +1 -0
- package/dist/esm/common/floatingMenu/floatingMenu.module.mjs +2 -0
- package/dist/esm/common/floatingMenu/floatingMenu.module.mjs.map +1 -0
- package/dist/esm/common/floatingMenu/floatingMenu.types.mjs +2 -0
- package/dist/esm/common/floatingMenu/floatingMenu.types.mjs.map +1 -0
- package/dist/esm/common/floatingMenu/useFloatingPosition.mjs +2 -0
- package/dist/esm/common/floatingMenu/useFloatingPosition.mjs.map +1 -0
- package/dist/esm/common/iconPicker/iconPicker.mjs +2 -0
- package/dist/esm/common/iconPicker/iconPicker.mjs.map +1 -0
- package/dist/esm/common/iconPicker/iconPicker.module.mjs +2 -0
- package/dist/esm/common/iconPicker/iconPicker.module.mjs.map +1 -0
- package/dist/esm/common/idleManager/idleManager.mjs +2 -0
- package/dist/esm/common/idleManager/idleManager.mjs.map +1 -0
- package/dist/esm/common/infiniteBlock/infiniteBlock.mjs +2 -0
- package/dist/esm/common/infiniteBlock/infiniteBlock.mjs.map +1 -0
- package/dist/esm/common/infiniteBlock/infiniteBlock.module.mjs +2 -0
- package/dist/esm/common/infiniteBlock/infiniteBlock.module.mjs.map +1 -0
- package/dist/esm/common/input/input.mjs +2 -0
- package/dist/esm/common/input/input.mjs.map +1 -0
- package/dist/esm/common/input/input.module.mjs +2 -0
- package/dist/esm/common/input/input.module.mjs.map +1 -0
- package/dist/esm/common/input/input.types.mjs +2 -0
- package/dist/esm/common/input/input.types.mjs.map +1 -0
- package/dist/esm/common/inputDropdown/inputDropdown.mjs +2 -0
- package/dist/esm/common/inputDropdown/inputDropdown.mjs.map +1 -0
- package/dist/esm/common/inputDropdown/inputDropdown.module.mjs +2 -0
- package/dist/esm/common/inputDropdown/inputDropdown.module.mjs.map +1 -0
- package/dist/esm/common/interactableDiv/index.mjs +2 -0
- package/dist/esm/common/interactableDiv/index.mjs.map +1 -0
- package/dist/esm/common/interactableDiv/interactableDiv.mjs +2 -0
- package/dist/esm/common/interactableDiv/interactableDiv.mjs.map +1 -0
- package/dist/esm/common/interactableDiv/interactableDiv.module.mjs +2 -0
- package/dist/esm/common/interactableDiv/interactableDiv.module.mjs.map +1 -0
- package/dist/esm/common/kanbanBoard/KanbanBoard.mjs +2 -0
- package/dist/esm/common/kanbanBoard/KanbanBoard.mjs.map +1 -0
- package/dist/esm/common/kanbanBoard/KanbanColumn.mjs +2 -0
- package/dist/esm/common/kanbanBoard/KanbanColumn.mjs.map +1 -0
- package/dist/esm/common/kanbanBoard/KanbanItem.mjs +2 -0
- package/dist/esm/common/kanbanBoard/KanbanItem.mjs.map +1 -0
- package/dist/esm/common/kanbanBoard/kanbanBoard.module.mjs +2 -0
- package/dist/esm/common/kanbanBoard/kanbanBoard.module.mjs.map +1 -0
- package/dist/esm/common/klipyPicker/components/gifPreview/gifPreview.mjs +2 -0
- package/dist/esm/common/klipyPicker/components/gifPreview/gifPreview.mjs.map +1 -0
- package/dist/esm/common/klipyPicker/components/gifPreview/gifPreview.module.mjs +2 -0
- package/dist/esm/common/klipyPicker/components/gifPreview/gifPreview.module.mjs.map +1 -0
- package/dist/esm/common/klipyPicker/components/gifView/gifView.mjs +2 -0
- package/dist/esm/common/klipyPicker/components/gifView/gifView.mjs.map +1 -0
- package/dist/esm/common/klipyPicker/components/gifView/gifView.module.mjs +2 -0
- package/dist/esm/common/klipyPicker/components/gifView/gifView.module.mjs.map +1 -0
- package/dist/esm/common/klipyPicker/klipyPicker.mjs +2 -0
- package/dist/esm/common/klipyPicker/klipyPicker.mjs.map +1 -0
- package/dist/esm/common/klipyPicker/klipyPicker.module.mjs +2 -0
- package/dist/esm/common/klipyPicker/klipyPicker.module.mjs.map +1 -0
- package/dist/esm/common/loading/iconLoading/iconLoading.mjs +2 -0
- package/dist/esm/common/loading/iconLoading/iconLoading.mjs.map +1 -0
- package/dist/esm/common/loading/iconLoading/iconLoading.module.mjs +2 -0
- package/dist/esm/common/loading/iconLoading/iconLoading.module.mjs.map +1 -0
- package/dist/esm/common/loading/iconLoading/index.mjs +2 -0
- package/dist/esm/common/loading/iconLoading/index.mjs.map +1 -0
- package/dist/esm/common/loading/spinnerLoading/index.mjs +2 -0
- package/dist/esm/common/loading/spinnerLoading/index.mjs.map +1 -0
- package/dist/esm/common/loading/spinnerLoading/spinnerLoading.mjs +2 -0
- package/dist/esm/common/loading/spinnerLoading/spinnerLoading.mjs.map +1 -0
- package/dist/esm/common/loading/spinnerLoading/spinnerLoading.module.mjs +2 -0
- package/dist/esm/common/loading/spinnerLoading/spinnerLoading.module.mjs.map +1 -0
- package/dist/esm/common/modal/modal.mjs +2 -0
- package/dist/esm/common/modal/modal.mjs.map +1 -0
- package/dist/esm/common/modal/modal.module.mjs +2 -0
- package/dist/esm/common/modal/modal.module.mjs.map +1 -0
- package/dist/esm/common/numberInput/index.mjs +2 -0
- package/dist/esm/common/numberInput/index.mjs.map +1 -0
- package/dist/esm/common/numberInput/numberInput.mjs +2 -0
- package/dist/esm/common/numberInput/numberInput.mjs.map +1 -0
- package/dist/esm/common/numberInput/numberInput.module.mjs +2 -0
- package/dist/esm/common/numberInput/numberInput.module.mjs.map +1 -0
- package/dist/esm/common/optionPicker/optionPicker.mjs +2 -0
- package/dist/esm/common/optionPicker/optionPicker.mjs.map +1 -0
- package/dist/esm/common/optionPicker/optionPicker.module.mjs +2 -0
- package/dist/esm/common/optionPicker/optionPicker.module.mjs.map +1 -0
- package/dist/esm/common/overscroll/overscroll.mjs +2 -0
- package/dist/esm/common/overscroll/overscroll.mjs.map +1 -0
- package/dist/esm/common/overscroll/overscroll.module.mjs +2 -0
- package/dist/esm/common/overscroll/overscroll.module.mjs.map +1 -0
- package/dist/esm/common/progressBar/progressBar.mjs +2 -0
- package/dist/esm/common/progressBar/progressBar.mjs.map +1 -0
- package/dist/esm/common/progressBar/progressBar.module.mjs +2 -0
- package/dist/esm/common/progressBar/progressBar.module.mjs.map +1 -0
- package/dist/esm/common/ripple/ripple.mjs +2 -0
- package/dist/esm/common/ripple/ripple.mjs.map +1 -0
- package/dist/esm/common/ripple/ripple.module.mjs +2 -0
- package/dist/esm/common/ripple/ripple.module.mjs.map +1 -0
- package/dist/esm/common/roomDrawer/roomDrawer.mjs +2 -0
- package/dist/esm/common/roomDrawer/roomDrawer.mjs.map +1 -0
- package/dist/esm/common/roomDrawer/roomDrawer.module.mjs +2 -0
- package/dist/esm/common/roomDrawer/roomDrawer.module.mjs.map +1 -0
- package/dist/esm/common/roomDrawer/roomDrawer.utils.mjs +6 -0
- package/dist/esm/common/roomDrawer/roomDrawer.utils.mjs.map +1 -0
- package/dist/esm/common/roomViewer/roomViewer.mjs +2 -0
- package/dist/esm/common/roomViewer/roomViewer.mjs.map +1 -0
- package/dist/esm/common/roomViewer/roomViewer.module.mjs +2 -0
- package/dist/esm/common/roomViewer/roomViewer.module.mjs.map +1 -0
- package/dist/esm/common/scrollbarProvider/index.mjs +2 -0
- package/dist/esm/common/scrollbarProvider/index.mjs.map +1 -0
- package/dist/esm/common/scrollbarProvider/scrollbarProvider.mjs +2 -0
- package/dist/esm/common/scrollbarProvider/scrollbarProvider.mjs.map +1 -0
- package/dist/esm/common/scrollbarProvider/scrollbarProvider.module.mjs +2 -0
- package/dist/esm/common/scrollbarProvider/scrollbarProvider.module.mjs.map +1 -0
- package/dist/esm/common/searchInput/searchInput.mjs +2 -0
- package/dist/esm/common/searchInput/searchInput.mjs.map +1 -0
- package/dist/esm/common/searchInput/searchInput.module.mjs +2 -0
- package/dist/esm/common/searchInput/searchInput.module.mjs.map +1 -0
- package/dist/esm/common/skeleton/skeleton.mjs +2 -0
- package/dist/esm/common/skeleton/skeleton.mjs.map +1 -0
- package/dist/esm/common/skeleton/skeleton.module.mjs +2 -0
- package/dist/esm/common/skeleton/skeleton.module.mjs.map +1 -0
- package/dist/esm/common/skeleton/skeleton.types.mjs +2 -0
- package/dist/esm/common/skeleton/skeleton.types.mjs.map +1 -0
- package/dist/esm/common/stepper/stepper.mjs +2 -0
- package/dist/esm/common/stepper/stepper.mjs.map +1 -0
- package/dist/esm/common/stepper/stepper.module.mjs +2 -0
- package/dist/esm/common/stepper/stepper.module.mjs.map +1 -0
- package/dist/esm/common/sticky/sticky.mjs +2 -0
- package/dist/esm/common/sticky/sticky.mjs.map +1 -0
- package/dist/esm/common/sticky/sticky.module.mjs +2 -0
- package/dist/esm/common/sticky/sticky.module.mjs.map +1 -0
- package/dist/esm/common/switch/switch.mjs +2 -0
- package/dist/esm/common/switch/switch.mjs.map +1 -0
- package/dist/esm/common/switch/switch.module.mjs +2 -0
- package/dist/esm/common/switch/switch.module.mjs.map +1 -0
- package/dist/esm/common/tabHeader/tabHeader.mjs +2 -0
- package/dist/esm/common/tabHeader/tabHeader.mjs.map +1 -0
- package/dist/esm/common/tabHeader/tabHeader.module.mjs +2 -0
- package/dist/esm/common/tabHeader/tabHeader.module.mjs.map +1 -0
- package/dist/esm/common/textarea/textarea.mjs +2 -0
- package/dist/esm/common/textarea/textarea.mjs.map +1 -0
- package/dist/esm/common/themeProvider/defaultTheme.mjs +2 -0
- package/dist/esm/common/themeProvider/defaultTheme.mjs.map +1 -0
- package/dist/esm/common/themeProvider/theme.module.mjs +2 -0
- package/dist/esm/common/themeProvider/theme.module.mjs.map +1 -0
- package/dist/esm/common/themeProvider/themeProvider.mjs +2 -0
- package/dist/esm/common/themeProvider/themeProvider.mjs.map +1 -0
- package/dist/esm/common/themeProvider/useTheme.mjs +2 -0
- package/dist/esm/common/themeProvider/useTheme.mjs.map +1 -0
- package/dist/esm/common/timeInput/components/clockDial/clockDial.mjs +2 -0
- package/dist/esm/common/timeInput/components/clockDial/clockDial.mjs.map +1 -0
- package/dist/esm/common/timeInput/components/clockDial/clockDial.module.mjs +2 -0
- package/dist/esm/common/timeInput/components/clockDial/clockDial.module.mjs.map +1 -0
- package/dist/esm/common/timeInput/timeFunctions.mjs +2 -0
- package/dist/esm/common/timeInput/timeFunctions.mjs.map +1 -0
- package/dist/esm/common/timeInput/timeInput.mjs +2 -0
- package/dist/esm/common/timeInput/timeInput.mjs.map +1 -0
- package/dist/esm/common/timeInput/timeInput.module.mjs +2 -0
- package/dist/esm/common/timeInput/timeInput.module.mjs.map +1 -0
- package/dist/esm/common/toast/toast.mjs +2 -0
- package/dist/esm/common/toast/toast.mjs.map +1 -0
- package/dist/esm/common/toast/toast.module.mjs +2 -0
- package/dist/esm/common/toast/toast.module.mjs.map +1 -0
- package/dist/esm/common/toast/toastProvider.mjs +2 -0
- package/dist/esm/common/toast/toastProvider.mjs.map +1 -0
- package/dist/esm/common/toast/toastService.mjs +2 -0
- package/dist/esm/common/toast/toastService.mjs.map +1 -0
- package/dist/esm/common/tooltip/tooltip.mjs +2 -0
- package/dist/esm/common/tooltip/tooltip.mjs.map +1 -0
- package/dist/esm/common/tooltip/tooltip.module.mjs +2 -0
- package/dist/esm/common/tooltip/tooltip.module.mjs.map +1 -0
- package/dist/esm/common/virtualList/useColumns.mjs +2 -0
- package/dist/esm/common/virtualList/useColumns.mjs.map +1 -0
- package/dist/esm/common/virtualList/useRowDrag.mjs +2 -0
- package/dist/esm/common/virtualList/useRowDrag.mjs.map +1 -0
- package/dist/esm/common/virtualList/useSelection.mjs +2 -0
- package/dist/esm/common/virtualList/useSelection.mjs.map +1 -0
- package/dist/esm/common/virtualList/useVirtualWindow.mjs +2 -0
- package/dist/esm/common/virtualList/useVirtualWindow.mjs.map +1 -0
- package/dist/esm/common/virtualList/virtualList.mjs +2 -0
- package/dist/esm/common/virtualList/virtualList.mjs.map +1 -0
- package/dist/esm/common/virtualList/virtualList.module.mjs +2 -0
- package/dist/esm/common/virtualList/virtualList.module.mjs.map +1 -0
- package/dist/esm/common/virtualList/virtualList.utils.mjs +2 -0
- package/dist/esm/common/virtualList/virtualList.utils.mjs.map +1 -0
- package/dist/esm/common/virtualList/virtualRow.mjs +2 -0
- package/dist/esm/common/virtualList/virtualRow.mjs.map +1 -0
- package/dist/esm/common/wizard/wizard.mjs +2 -0
- package/dist/esm/common/wizard/wizard.mjs.map +1 -0
- package/dist/esm/common/wizard/wizard.module.mjs +2 -0
- package/dist/esm/common/wizard/wizard.module.mjs.map +1 -0
- package/dist/esm/hooks/useWindowSize.mjs +2 -0
- package/dist/esm/hooks/useWindowSize.mjs.map +1 -0
- package/dist/esm/index.mjs +1 -0
- package/dist/esm/services/formValidation/FormValidatorGroupForm.mjs +2 -0
- package/dist/esm/services/formValidation/FormValidatorGroupForm.mjs.map +1 -0
- package/dist/esm/services/formValidation/FormValidatorGroupWithForm.mjs +2 -0
- package/dist/esm/services/formValidation/FormValidatorGroupWithForm.mjs.map +1 -0
- package/dist/esm/services/formValidation/formValidator.mjs +2 -0
- package/dist/esm/services/formValidation/formValidator.mjs.map +1 -0
- package/dist/esm/services/formValidation/formValidatorGroup.mjs +2 -0
- package/dist/esm/services/formValidation/formValidatorGroup.mjs.map +1 -0
- package/dist/esm/services/formValidation/useFormValidator.mjs +2 -0
- package/dist/esm/services/formValidation/useFormValidator.mjs.map +1 -0
- package/dist/esm/services/formValidation/useFormValidatorGroup.mjs +2 -0
- package/dist/esm/services/formValidation/useFormValidatorGroup.mjs.map +1 -0
- package/dist/esm/services/formValidation/validatableComponent.mjs +2 -0
- package/dist/esm/services/formValidation/validatableComponent.mjs.map +1 -0
- package/dist/esm/services/formValidation/validators.mjs +2 -0
- package/dist/esm/services/formValidation/validators.mjs.map +1 -0
- package/dist/esm/services/klipy.mjs +2 -0
- package/dist/esm/services/klipy.mjs.map +1 -0
- package/dist/esm/services/localization.mjs +2 -0
- package/dist/esm/services/localization.mjs.map +1 -0
- package/dist/esm/services/regexp.mjs +2 -0
- package/dist/esm/services/regexp.mjs.map +1 -0
- package/dist/index.cjs +4 -4
- package/dist/index.cjs.map +1 -1
- package/dist/style.css +1 -1
- package/dist/types/package/common/dropdown/dropdown.d.ts +1 -1
- package/dist/types/package/common/dropdown/dropdown.types.d.ts +0 -1
- package/dist/types/package/common/floatingMenu/useFloatingPosition.d.ts +25 -0
- package/docs/Card.md +1 -1
- package/docs/Dropdown.md +2 -1
- package/docs/InputDropdown.md +2 -0
- package/docs/Tooltip.md +2 -0
- package/docs/VirtualList.md +1 -1
- package/package.json +4 -3
- package/dist/index.mjs +0 -6791
- package/dist/index.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input.mjs","names":[],"sources":["../../../../package/common/input/input.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef, useCallback, useId } from 'react';\nimport cx from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n faPhone,\n faPen,\n faEnvelope,\n faSearch,\n faXmark,\n faEye as passwordHiddenIcon,\n faEyeSlash as passwordShownIcon,\n} from '@fortawesome/free-solid-svg-icons';\nimport Tooltip from 'components/common/tooltip';\nimport styles from './input.module.pcss';\nimport type { InputProps } from './input.types';\nimport { InputType } from './input.types';\n\nfunction Input({\n name = '',\n id,\n label = '',\n errorMessage = '',\n isValid = true,\n className = '',\n style,\n value = '',\n icon = null,\n onChange = () => {},\n onFocus: onFocusProp = null,\n onBlur: onBlurProp = null,\n onMouseEnter: onMouseEnterProp = null,\n onMouseLeave: onMouseLeaveProp = null,\n isUppercase = false,\n isRequired = false,\n tabIndex = 0,\n type = undefined,\n isRow = false,\n onIconClick = null,\n parse = null,\n formValidator = null,\n autoFocus = false,\n suffix = null,\n upperRightLabel = null,\n labelInBorder = false,\n showCancel = false,\n onClearClicked,\n min = null,\n max = null,\n placeholder = '',\n useMatLabelStyle = true,\n autoComplete = null,\n onClick = () => null,\n readOnly = false,\n customInput,\n alwaysShowCancel = false,\n multiline = false,\n rows,\n autoResize = false,\n classNames,\n styles: slotStyles,\n disabled = false,\n ...rest\n}: InputProps) {\n const [isFocused, setIsFocused] = useState(false);\n const [isHovered, setIsHovered] = useState(false);\n const [isPasswordShown, setIsPasswordShown] = useState(false);\n const [, forceUpdate] = useState(0);\n\n const inputRef = useRef<HTMLInputElement | HTMLTextAreaElement>(null);\n const fvRef = useRef(formValidator);\n\n const generatedId = useId();\n const inputId = id || name || generatedId;\n\n const resizeTextarea = useCallback(() => {\n const el = inputRef.current;\n if (!el || !autoResize) return;\n el.style.height = 'auto';\n el.style.height = `${el.scrollHeight}px`;\n }, [autoResize]);\n\n useEffect(() => {\n resizeTextarea();\n }, []);\n\n useEffect(() => {\n if (autoFocus && inputRef.current) {\n setTimeout(() => { inputRef.current?.focus(); }, 1);\n }\n }, [autoFocus]);\n\n useEffect(() => {\n fvRef.current = formValidator;\n const fv = fvRef.current;\n if (!fv) return;\n fv.label = label ?? '';\n fv.validate();\n const listener = () => forceUpdate(n => n + 1);\n fv.registerOnUpdateListener(listener);\n return () => { fv.removeOnUpdateListener(listener); };\n }, [formValidator, label]);\n\n const hasError = (): boolean => {\n return formValidator\n ? (formValidator.touched && formValidator.hasError())\n : (!isValid || !!errorMessage);\n };\n\n const computedIsRequired = (): boolean => {\n return !!(isRequired || (formValidator && formValidator.validators.find(\n (v) => (v as { validatorId?: string }).validatorId === 'required'\n )));\n };\n\n const onMouseEnterHandler = (event: React.MouseEvent) => {\n setIsHovered(true);\n if (onMouseEnterProp) onMouseEnterProp(event);\n };\n\n const onMouseLeaveHandler = (event: React.MouseEvent) => {\n setIsHovered(false);\n if (onMouseLeaveProp) onMouseLeaveProp(event);\n };\n\n const onFocusHandler = (event: React.FocusEvent) => {\n setIsFocused(true);\n if (onFocusProp) onFocusProp(event);\n };\n\n const onBlurHandler = (event: React.FocusEvent) => {\n if (fvRef.current) fvRef.current.touched = true;\n setIsFocused(false);\n if (onBlurProp) onBlurProp(event);\n };\n\n const onChangeHandler = (event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement> | string): void => {\n let parsedEvent: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement> | undefined;\n let val: string;\n\n if (typeof event !== 'string') {\n parsedEvent = event;\n val = event.target.value;\n } else {\n val = event;\n }\n\n if (parse) val = parse(val);\n if (formValidator) formValidator.set(val);\n if (onChange) onChange(val, parsedEvent);\n resizeTextarea();\n };\n\n const getInputType = (): string | undefined => {\n if (type === 'email') return undefined;\n if (type === 'password' && isPasswordShown) return 'text';\n return type;\n };\n\n const hasIcon =\n type &&\n type !== InputType.Date &&\n type !== InputType.Iban &&\n type !== InputType.HasNoIcon;\n\n const hasIconLeft =\n hasIcon && !useMatLabelStyle &&\n (type === InputType.Email || type === InputType.Phone || type === InputType.Search);\n\n const iconProps = {\n className: cx(styles.inputFieldIcon, {\n [styles.inputFieldIconNotClickable]: !onIconClick,\n [styles.inputFieldIconLeft]: hasIconLeft,\n }),\n onClick: onIconClick ?? undefined,\n };\n\n const customIcon = icon as React.ReactElement<{ className?: string; onClick?: React.MouseEventHandler }> | null;\n const renderedIcon = customIcon\n ? React.cloneElement(customIcon, {\n className: cx(\n styles.inputFieldIcon,\n { [styles.inputFieldIconNotClickable]: !onIconClick && !customIcon.props.onClick },\n customIcon.props.className,\n ),\n onClick: onIconClick ?? customIcon.props.onClick,\n })\n : null;\n const hasCustomIcon = !!icon;\n\n const passwordIconProps = {\n className: cx(styles.inputFieldIcon, styles.inputFieldIconPassword),\n onClick: () => setIsPasswordShown(!isPasswordShown),\n };\n\n const hasErr = hasError();\n\n let editedLabel = label;\n if (editedLabel && computedIsRequired()) editedLabel = `${editedLabel} *`;\n\n const currVal = formValidator ? formValidator.value : value;\n const shouldFloatLabel = useMatLabelStyle && (isFocused || currVal || type === InputType.Date);\n\n return (\n <div className={cx(styles.input, className)} style={style}>\n <label\n htmlFor={inputId}\n className={cx(styles.inputLabel, classNames?.label, {\n [styles.inputLabelColumn]: !isRow,\n [styles.inputLabelInBorder]: labelInBorder,\n })}\n style={slotStyles?.label}\n >\n {editedLabel && !useMatLabelStyle ? (\n <span className={styles.inputLabelText}>\n {`${editedLabel} `}\n {computedIsRequired() ? <span className={cx(styles.isRequired)}> *</span> : null}\n </span>\n ) : null}\n {upperRightLabel && (\n <div className={cx(styles.inputUpperRightLabel, classNames?.upperRightLabel)} style={slotStyles?.upperRightLabel}>\n {upperRightLabel}\n </div>\n )}\n <div\n className={cx(styles.inputContainer, { [styles.inputContainerMultiline]: multiline }, classNames?.container)}\n style={slotStyles?.container}\n onMouseEnter={onMouseEnterHandler}\n onMouseLeave={onMouseLeaveHandler}\n >\n {renderedIcon}\n {React.cloneElement(customInput || (multiline ? <textarea /> : <input />), {\n ...rest,\n className: cx(\n styles.inputField,\n {\n [styles.inputFieldUppercase]: isUppercase,\n [styles.inputFieldDate]: type === InputType.Date,\n [styles.inputFieldDefault]: type !== InputType.Date,\n [styles.inputFieldWithIcon]: hasIcon || hasCustomIcon,\n [styles.inputFieldWithIconLeft]: hasIconLeft,\n [styles.inputFieldMultiline]: multiline,\n [styles.inputFieldMultilineAutoResize]: multiline && autoResize,\n },\n classNames?.input\n ),\n name,\n id: inputId,\n value: formValidator ? formValidator.value : value,\n tabIndex,\n ref: customInput ? undefined : inputRef,\n onChange: onChangeHandler,\n onFocus: onFocusHandler,\n onBlur: onBlurHandler,\n placeholder: !useMatLabelStyle ? placeholder : '',\n autoComplete,\n onClick,\n readOnly,\n disabled,\n ...(!multiline && { type: getInputType(), min, max }),\n ...(multiline && rows !== undefined && { rows }),\n })}\n {suffix && <div className={cx(styles.inputFieldSuffix, classNames?.suffix)} style={slotStyles?.suffix}>{suffix}</div>}\n </div>\n <fieldset\n className={cx(styles.inputFieldset, classNames?.fieldset, {\n [styles.inputContainerBorderFocused]: isFocused,\n [styles.inputContainerBorderSearchFocused]:\n type === InputType.Search && (isFocused || value),\n [styles.inputContainerBorderInvalid]: hasErr,\n [styles.inputContainerBorderError]: hasErr,\n })}\n style={slotStyles?.fieldset}\n >\n <legend\n className={cx(styles.inputFieldsetLegend, {\n [styles.inputFieldsetLegendActive]: shouldFloatLabel,\n })}\n >\n <span>{editedLabel}</span>\n </legend>\n </fieldset>\n {useMatLabelStyle && label && (\n <div\n className={cx(styles.inputMatLabel, {\n [styles.inputMatLabelFloating]: shouldFloatLabel,\n [styles.inputMatLabelMultiline]: multiline && !shouldFloatLabel,\n })}\n >\n {editedLabel}\n </div>\n )}\n {useMatLabelStyle && placeholder && (\n <div\n className={cx(\n styles.inputPlaceholder,\n isFocused && !currVal && styles.inputPlaceholderShown,\n multiline && styles.inputPlaceholderMultiline,\n )}\n >\n {placeholder}\n </div>\n )}\n <Tooltip\n variant=\"error\"\n message={formValidator ? formValidator.getCurrentErrorMessage() : (errorMessage || '')}\n isVisible={hasErr && (isFocused || isHovered)}\n />\n </label>\n\n {type === InputType.Phone && <FontAwesomeIcon icon={faPhone} {...iconProps} />}\n {type === InputType.Email && <FontAwesomeIcon icon={faEnvelope} {...iconProps} />}\n {type === InputType.Edit && <FontAwesomeIcon icon={faPen} {...iconProps} />}\n {type === InputType.Search && <FontAwesomeIcon icon={faSearch} {...iconProps} />}\n {type === InputType.Password && (\n <FontAwesomeIcon\n icon={isPasswordShown ? passwordShownIcon : passwordHiddenIcon}\n {...passwordIconProps}\n />\n )}\n\n {((showCancel && value && (isFocused || isHovered)) || alwaysShowCancel) && (\n <FontAwesomeIcon\n icon={faXmark}\n className={styles.inputFieldIcon}\n onClick={onClearClicked ?? undefined}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n />\n )}\n </div>\n );\n}\n\nexport default Input;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e={"required-mark":`required-mark_xGJdX`,requiredMark:`required-mark_xGJdX`,isRequired:`isRequired_Jkn3h`,input:`input_VKNCE`,"input-placeholder":`input-placeholder_IZH-l`,inputPlaceholder:`input-placeholder_IZH-l`,"input-placeholder-shown":`input-placeholder-shown_mm35e`,inputPlaceholderShown:`input-placeholder-shown_mm35e`,fadeIn:`fadeIn_kmX3i`,"input-placeholder-multiline":`input-placeholder-multiline_tLHAl`,inputPlaceholderMultiline:`input-placeholder-multiline_tLHAl`,"input-matLabel":`input-matLabel_-05ey`,inputMatLabel:`input-matLabel_-05ey`,"input-matLabel-floating":`input-matLabel-floating_1P2YE`,inputMatLabelFloating:`input-matLabel-floating_1P2YE`,"input-matLabel-multiline":`input-matLabel-multiline_miIZJ`,inputMatLabelMultiline:`input-matLabel-multiline_miIZJ`,"input-fieldset":`input-fieldset_XCibg`,inputFieldset:`input-fieldset_XCibg`,"input-fieldset-legend":`input-fieldset-legend_X23zp`,inputFieldsetLegend:`input-fieldset-legend_X23zp`,"input-fieldset-legend-active":`input-fieldset-legend-active_t-9hu`,inputFieldsetLegendActive:`input-fieldset-legend-active_t-9hu`,"input-container":`input-container_M1RoG`,inputContainer:`input-container_M1RoG`,"input-container-multiline":`input-container-multiline_eLw7h`,inputContainerMultiline:`input-container-multiline_eLw7h`,"input-container-border":`input-container-border_l131I`,inputContainerBorder:`input-container-border_l131I`,"input-container-border-focused":`input-container-border-focused_ct6oY`,inputContainerBorderFocused:`input-container-border-focused_ct6oY`,"input-container-border-searchFocused":`input-container-border-searchFocused_lq088`,inputContainerBorderSearchFocused:`input-container-border-searchFocused_lq088`,"input-container-border-invalid":`input-container-border-invalid_Wdbq2`,inputContainerBorderInvalid:`input-container-border-invalid_Wdbq2`,"input-container-border-error":`input-container-border-error_gzfPG`,inputContainerBorderError:`input-container-border-error_gzfPG`,"input-label":`input-label_w1hMR`,inputLabel:`input-label_w1hMR`,"input-label-column":`input-label-column_qBFPC`,inputLabelColumn:`input-label-column_qBFPC`,"input-label-text":`input-label-text_-J5qQ`,inputLabelText:`input-label-text_-J5qQ`,"input-upper-right-label":`input-upper-right-label_I-WG3`,inputUpperRightLabel:`input-upper-right-label_I-WG3`,"input-field":`input-field_pmDvZ`,inputField:`input-field_pmDvZ`,"input-field-withIcon":`input-field-withIcon_VpfmK`,inputFieldWithIcon:`input-field-withIcon_VpfmK`,"input-field-withIcon-left":`input-field-withIcon-left_Io7lU`,inputFieldWithIconLeft:`input-field-withIcon-left_Io7lU`,"input-field-suffix":`input-field-suffix_NZpXp`,inputFieldSuffix:`input-field-suffix_NZpXp`,"input-field-date":`input-field-date_UHJEZ`,inputFieldDate:`input-field-date_UHJEZ`,"input-field-default":`input-field-default_TKipA`,inputFieldDefault:`input-field-default_TKipA`,"input-field-uppercase":`input-field-uppercase_UV6f1`,inputFieldUppercase:`input-field-uppercase_UV6f1`,"input-field-multiline":`input-field-multiline_al3V1`,inputFieldMultiline:`input-field-multiline_al3V1`,"input-field-multiline-autoResize":`input-field-multiline-autoResize_nK33P`,inputFieldMultilineAutoResize:`input-field-multiline-autoResize_nK33P`,"input-field-icon":`input-field-icon_YyJIr`,inputFieldIcon:`input-field-icon_YyJIr`,"input-field-icon-left":`input-field-icon-left_m2XB1`,inputFieldIconLeft:`input-field-icon-left_m2XB1`,"input-field-icon-notClickable":`input-field-icon-notClickable_7j24I`,inputFieldIconNotClickable:`input-field-icon-notClickable_7j24I`,"input-error":`input-error_LIG23`,inputError:`input-error_LIG23`};export{e as default};
|
|
2
|
+
//# sourceMappingURL=input.module.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input.module.mjs","names":[],"sources":["../../../../package/common/input/input.module.pcss"],"sourcesContent":["\n.required-mark {\n padding: 0px 0px 0px 4px;\n color: var(--error-font-color);\n}\n\n.isRequired {\n color: var(--message-error-color);\n}\n\n.input {\n position: relative;\n width: 100%;\n --input-notch-height: 1.75em;\n\n &-placeholder {\n position: absolute;\n top: 50%;\n left: 7px;\n transform: translateY(-50%);\n transition: all 0.2s;\n opacity: 0;\n user-select: none;\n pointer-events: none;\n\n &-shown {\n animation: 0.2s fadeIn 0.3s forwards;\n }\n\n &-multiline {\n top: 14px;\n transform: translateY(0);\n }\n }\n\n &-matLabel {\n position: absolute;\n transition: all 0.3s;\n left: 7px;\n right: 0;\n top: 50%;\n transform: translateY(-50%);\n font-size: 1em;\n pointer-events: none;\n user-select: none;\n\n &-floating {\n top: 0;\n bottom: auto;\n left: 14px;\n right: 0;\n font-size: 0.8em;\n transform: translateY(-50%);\n }\n\n &-multiline {\n top: 14px;\n transform: translateY(0);\n }\n }\n\n &-fieldset {\n position: absolute;\n width: 100%;\n margin: 0;\n padding: 0;\n min-width: 0;\n box-sizing: border-box;\n border-radius: var(--default-border-radius);\n font-size: 0.8em;\n inset: calc(var(--input-notch-height) / -2) 0 0 0;\n padding-left: 8px;\n border-width: 1px;\n border-style: solid;\n border-color: var(--border-color);\n pointer-events: none;\n user-select: none;\n\n &-legend {\n display: block;\n max-width: 0;\n transition: max-width 0.2s;\n white-space: nowrap;\n padding: 0;\n\n &-active {\n max-width: 300px;\n }\n\n span {\n line-height: var(--input-notch-height);\n padding: 0 5px;\n opacity: 0;\n }\n\n span:empty {\n padding: 0.000001px;\n }\n }\n }\n\n &-container {\n display: flex;\n align-items: center;\n border-radius: var(--default-border-radius);\n background-color: var(--input-background);\n transition: border-color;\n cursor: text;\n height: 100%;\n\n &-multiline {\n overflow: hidden;\n padding-top: 10px;\n align-items: flex-start;\n }\n\n &-border {\n outline: 1px solid var(--border-color);\n transition: border-color;\n background-color: var(--input-background);\n outline: none;\n\n &-focused {\n outline-color: var(--primary-color);\n border-color: var(--primary-color);\n }\n\n &-searchFocused {\n outline-color: var(--search-input-color);\n outline-width: 2px;\n border-color: var(--search-input-color);\n }\n\n &-invalid {\n outline-color: var(--error-border-color);\n border-color: var(--error-border-color);\n }\n\n &-invalid:hover {\n outline-color: var(--error-border-color);\n border-color: var(--error-border-color);\n }\n\n &-error {\n outline-color: var(--error-border-color);\n border-color: var(--error-border-color);\n }\n }\n }\n\n &-label {\n display: flex;\n color: var(--text-color);\n height: 100%;\n\n &-column {\n flex-direction: column;\n }\n\n &-text {\n white-space: nowrap;\n margin-right: 5px;\n margin-bottom: 6px;\n display: flex;\n align-items: center;\n color: color(var(--border-color) lightness(40%));\n background-color: transparent;\n font-size: 12px;\n position: absolute;\n top: -15px;\n white-space: nowrap;\n }\n }\n\n &-upper-right-label {\n position: absolute;\n transform: translateY(calc(-100% - 1.5px));\n right: 8px;\n min-height: 12px;\n font-size: 12px;\n color: color(var(--border-color) lightness(40%));\n }\n\n &-field {\n appearance: none;\n -webkit-appearance: none;\n font-family: inherit;\n font-size: inherit;\n box-sizing: border-box;\n resize: none;\n width: 100%;\n border: none;\n border-radius: var(--default-border-radius);\n overflow: hidden;\n line-height: 1.25;\n color: var(--text-color);\n background: transparent;\n\n &:focus {\n outline: none;\n }\n\n &::placeholder {\n color: var(--text-light);\n }\n\n &-withIcon {\n padding-right: 37px !important;\n\n &-left {\n padding-right: 9px !important;\n padding-left: 37px !important;\n }\n }\n\n &-suffix {\n padding-right: 9px;\n }\n\n &-date {\n padding: 6px 9px;\n color-scheme: dark;\n\n svg {\n color: white;\n }\n }\n\n &-default {\n padding: 8px 7.5px 6px;\n }\n\n &[disabled] {\n background-color: var(--disabled-input-color);\n color: var(--disabled-font-color);\n -webkit-text-fill-color: var(--disabled-font-color);\n opacity: 1;\n\n &::placeholder {\n color: var(--disabled-font-color);\n -webkit-text-fill-color: var(--disabled-font-color);\n }\n }\n\n &-uppercase {\n text-transform: uppercase;\n }\n\n &-multiline {\n overflow-y: auto;\n resize: vertical;\n padding-top: 4px;\n min-height: 30px;\n\n &-autoResize {\n resize: none;\n overflow: hidden;\n }\n }\n\n &-icon {\n appearance: none;\n -webkit-appearance: none;\n box-sizing: border-box;\n cursor: pointer;\n background-color: transparent;\n border: none;\n position: absolute;\n outline: none;\n right: 10px;\n top: 8px;\n color: var(--input-icon-color);\n width: 19px !important;\n height: 19px !important;\n user-select: none;\n top: 50%;\n transform: translateY(-50%);\n\n &-left {\n left: 10px;\n }\n\n &-notClickable {\n pointer-events: none;\n }\n }\n }\n\n &-error {\n height: 1em;\n padding-top: 3px;\n color: var(--error-font-color);\n font-size: 11px;\n }\n\n @keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 0.5;\n }\n }\n}\n"],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input.types.mjs","names":[],"sources":["../../../../package/common/input/input.types.ts"],"sourcesContent":["import React from 'react';\nimport FormValidator from 'services/formValidation/formValidator';\nimport type { SlotClassNames, SlotStyles, HtmlProps } from '../types/slots.types';\n\nexport enum InputType {\n Edit = 'edit',\n Phone = 'phone',\n Email = 'email',\n Iban = 'iban',\n Date = 'date',\n HasNoIcon = 'hasNoIcon',\n Search = 'searchInput',\n Password = 'password',\n}\n\nexport type InputSlots = 'label' | 'container' | 'input' | 'suffix' | 'upperRightLabel' | 'fieldset';\n\ntype OverriddenInputAttributes =\n | 'onChange'\n | 'onFocus'\n | 'onBlur'\n | 'onMouseEnter'\n | 'onMouseLeave'\n | 'onClick'\n | 'type'\n | 'value'\n | 'min'\n | 'max'\n | 'autoComplete';\n\nexport interface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, OverriddenInputAttributes>,\n HtmlProps {\n onMouseEnter?: ((event: React.MouseEvent) => void) | null;\n onMouseLeave?: ((event: React.MouseEvent) => void) | null;\n onFocus?: ((event: React.FocusEvent) => void) | null;\n onBlur?: ((event: React.FocusEvent) => void) | null;\n onChange?: ((value: string, event?: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement, Element>) => void) | null;\n errorMessage?: string;\n isValid?: boolean;\n isRequired?: boolean;\n label?: string;\n name?: string;\n className?: string;\n style?: React.CSSProperties;\n value?: string | number;\n icon?: React.ReactElement | null;\n isUppercase?: boolean;\n isRow?: boolean;\n tabIndex?: number;\n type?: InputType;\n onIconClick?: (() => void) | null;\n parse?: ((value: string) => string) | null;\n suffix?: string | React.ReactNode;\n disabled?: boolean;\n upperRightLabel?: string | React.ReactNode;\n labelInBorder?: boolean;\n showCancel?: boolean;\n onClearClicked?: (() => void) | null;\n min?: string | number | null;\n max?: string | number | null;\n placeholder?: string;\n useMatLabelStyle?: boolean;\n autoComplete?: string | null;\n onClick?: (() => void) | null;\n readOnly?: boolean;\n customInput?: React.ReactElement | null;\n autoFocus?: boolean;\n alwaysShowCancel?: boolean;\n formValidator?: FormValidator | null;\n multiline?: boolean;\n rows?: number;\n autoResize?: boolean;\n classNames?: SlotClassNames<InputSlots>;\n styles?: SlotStyles<InputSlots>;\n}\n"],"mappings":"AAIA,IAAY,EAAL,SAAA,EAAA,OACL,GAAA,KAAA,OACA,EAAA,MAAA,QACA,EAAA,MAAA,QACA,EAAA,KAAA,OACA,EAAA,KAAA,OACA,EAAA,UAAA,YACA,EAAA,OAAA,cACA,EAAA,SAAA,YACF,EAAA,CAAA,CAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e from"../bodyEnd/bodyEnd.mjs";import{useFloatingPosition as t}from"../floatingMenu/useFloatingPosition.mjs";import n from"../input/input.mjs";import r from"./inputDropdown.module.mjs";import{useCallback as i,useRef as a,useState as o}from"react";import s from"classnames";import{jsx as c,jsxs as l}from"react/jsx-runtime";function u(e,t){return t?t.value??``:e??``}function d(e,t){let n=t.find(t=>t.value===e);return n?n.label??n.value:e}function f({label:f=``,value:p=``,formValidator:m=null,items:h=[],allowCustomValue:g=!1,className:_,style:v,classNames:y,styles:b,onSelect:x=()=>null,onChange:S,placeholder:C=``,...w}){let T=u(p,m),[E,D]=o(()=>d(T,h)),[O,k]=o(T),[A,j]=o(!1),[M,N]=o(null),P=a(null),F=a(null),I=a(null);if(t({isOpen:A,triggerRef:F,anchorRef:I,panelRef:I,flipClassName:r.dropdownFlip}),T!==O){k(T);let e=h.find(e=>e.value===T);e?D(e.label??e.value):g&&D(T)}let L=h.filter(e=>(e.label??e.value).toLowerCase().includes(E.toLowerCase())),R=()=>{P.current&&=(clearTimeout(P.current),null),j(!0)},z=()=>{P.current=setTimeout(()=>{j(!1),P.current=null,g||D(d(T,h))},100)},B=i(e=>{D(e.label??e.value),j(!1),N(null),m&&m.set(e.value),S&&S(e.value),x(e.value)},[m,S,x]),V=i(e=>{e.key===`ArrowUp`?(e.preventDefault(),N(e=>e?e-1:null)):e.key===`ArrowDown`?(e.preventDefault(),N(e=>e===null?0:Math.min(e+1,L.length-1))):e.key===`Enter`&&(M!==null&&L[M]?B(L[M]):g&&(j(!1),N(null)))},[L,M,B,g]);return l(`div`,{...w,ref:F,className:s(r.inputDropdown,y?.root,_),style:{...b?.root,...v},onFocus:R,onBlur:z,onKeyDown:V,children:[c(n,{label:f,value:E,onChange:e=>{if(D(e),N(null),j(!0),g)m&&m.set(e),S&&S(e);else if(e===``)m&&m.set(``),S&&S(``),x(``);else{let t=h.find(t=>(t.label??t.value).toLowerCase()===e.toLowerCase());t&&(m&&m.set(t.value),S&&S(t.value),x(t.value))}},placeholder:C}),A&&c(e,{children:c(`div`,{ref:I,className:s(r.dropdown,r.dropdownShown,y?.dropdown),style:b?.dropdown,children:c(`div`,{className:r.dropdownScroll,children:L.map((e,t)=>c(`div`,{className:s(r.dropdownItem,M===t&&r.dropdownItemHighlighted,y?.item),style:b?.item,onMouseDown:e=>e.preventDefault(),onClick:()=>B(e),children:e.label??e.value},`${t}_${e.label}_${e.value}`))})})})]})}export{f as default};
|
|
2
|
+
//# sourceMappingURL=inputDropdown.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inputDropdown.mjs","names":[],"sources":["../../../../package/common/inputDropdown/inputDropdown.tsx"],"sourcesContent":["import React, { useCallback, useRef, useState } from 'react';\nimport cx from 'classnames';\nimport BodyEnd from 'components/common/bodyEnd';\nimport styles from './inputDropdown.module.pcss';\nimport Input from '../input';\nimport { useFloatingPosition } from '../floatingMenu/useFloatingPosition';\nimport type { InputDropdownItem, InputDropdownProps } from './inputDropdown.types';\n\nfunction getKeyFromProps(value: string | undefined, formValidator: InputDropdownProps['formValidator']): string {\n return formValidator ? (formValidator.value as string) ?? '' : (value ?? '');\n}\n\nfunction labelForKey(key: string, items: InputDropdownItem[]): string {\n const match = items.find((item) => item.value === key);\n return match ? (match.label ?? match.value) : key;\n}\n\nexport default function InputDropdown({\n label = '',\n value = '',\n formValidator = null,\n items = [],\n allowCustomValue = false,\n className,\n style,\n classNames,\n styles: slotStyles,\n onSelect = () => null,\n onChange,\n placeholder = '',\n ...rest\n}: InputDropdownProps) {\n const currentKey = getKeyFromProps(value, formValidator);\n\n const [inputText, setInputText] = useState(() => labelForKey(currentKey, items));\n const [prevKey, setPrevKey] = useState(currentKey);\n const [isMenuShown, setIsMenuShown] = useState(false);\n const [highlightedIndex, setHighlightedIndex] = useState<number | null>(null);\n const hideTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const triggerRef = useRef<HTMLDivElement>(null);\n const anchorRef = useRef<HTMLDivElement>(null);\n\n useFloatingPosition({\n isOpen: isMenuShown,\n triggerRef,\n anchorRef,\n panelRef: anchorRef,\n flipClassName: styles.dropdownFlip,\n });\n\n // Sync display text when the controlled key changes externally (e.g. parent reset).\n if (currentKey !== prevKey) {\n setPrevKey(currentKey);\n const match = items.find((item) => item.value === currentKey);\n if (match) setInputText(match.label ?? match.value);\n else if (allowCustomValue) setInputText(currentKey);\n }\n\n const currItems = items.filter((item) =>\n (item.label ?? item.value).toLowerCase().includes(inputText.toLowerCase())\n );\n\n const handleFocus = () => {\n if (hideTimeoutRef.current) {\n clearTimeout(hideTimeoutRef.current);\n hideTimeoutRef.current = null;\n }\n setIsMenuShown(true);\n };\n\n const handleBlur = () => {\n hideTimeoutRef.current = setTimeout(() => {\n setIsMenuShown(false);\n hideTimeoutRef.current = null;\n // Without custom values, uncommitted typed text is invalid — snap the\n // display back to the currently selected item's label.\n if (!allowCustomValue) setInputText(labelForKey(currentKey, items));\n }, 100);\n };\n\n const handleSelect = useCallback((item: InputDropdownItem) => {\n setInputText(item.label ?? item.value);\n setIsMenuShown(false);\n setHighlightedIndex(null);\n if (formValidator) formValidator.set(item.value);\n if (onChange) onChange(item.value);\n onSelect(item.value);\n }, [formValidator, onChange, onSelect]);\n\n const onKeyDown = useCallback((event: React.KeyboardEvent) => {\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n setHighlightedIndex((idx) => (!idx ? null : idx - 1));\n } else if (event.key === 'ArrowDown') {\n event.preventDefault();\n setHighlightedIndex((idx) =>\n idx === null ? 0 : Math.min(idx + 1, currItems.length - 1)\n );\n } else if (event.key === 'Enter') {\n if (highlightedIndex !== null && currItems[highlightedIndex]) {\n handleSelect(currItems[highlightedIndex]);\n } else if (allowCustomValue) {\n setIsMenuShown(false);\n setHighlightedIndex(null);\n }\n }\n }, [currItems, highlightedIndex, handleSelect, allowCustomValue]);\n\n return (\n <div\n {...rest}\n ref={triggerRef}\n className={cx(styles.inputDropdown, classNames?.root, className)}\n style={{ ...slotStyles?.root, ...style }}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={onKeyDown}\n >\n <Input\n label={label}\n value={inputText}\n onChange={(text) => {\n setInputText(text);\n setHighlightedIndex(null);\n setIsMenuShown(true);\n if (allowCustomValue) {\n if (formValidator) formValidator.set(text);\n if (onChange) onChange(text);\n } else if (text === '') {\n if (formValidator) formValidator.set('');\n if (onChange) onChange('');\n onSelect('');\n } else {\n // Emit when the typed text exactly matches an item's label/value.\n const match = items.find(\n (item) => (item.label ?? item.value).toLowerCase() === text.toLowerCase()\n );\n if (match) {\n if (formValidator) formValidator.set(match.value);\n if (onChange) onChange(match.value);\n onSelect(match.value);\n }\n }\n }}\n placeholder={placeholder}\n />\n {isMenuShown && (\n <BodyEnd>\n <div\n ref={anchorRef}\n className={cx(styles.dropdown, styles.dropdownShown, classNames?.dropdown)}\n style={slotStyles?.dropdown}\n >\n <div className={styles.dropdownScroll}>\n {currItems.map((item, key) => (\n <div\n key={`${key}_${item.label}_${item.value}`}\n className={cx(\n styles.dropdownItem,\n highlightedIndex === key && styles.dropdownItemHighlighted,\n classNames?.item\n )}\n style={slotStyles?.item}\n // Prevent the input from blurring before the click resolves.\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => handleSelect(item)}\n >\n {item.label ?? item.value}\n </div>\n ))}\n </div>\n </div>\n </BodyEnd>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e={inputDropdown:`inputDropdown_UdYMa`,dropdown:`dropdown_-M5-x`,"dropdown-scroll":`dropdown-scroll_XMZs-`,dropdownScroll:`dropdown-scroll_XMZs-`,"dropdown-shown":`dropdown-shown_H2rFU`,dropdownShown:`dropdown-shown_H2rFU`,"dropdown-flip":`dropdown-flip_djJhT`,dropdownFlip:`dropdown-flip_djJhT`,"dropdown-item":`dropdown-item_JRgbt`,dropdownItem:`dropdown-item_JRgbt`,"dropdown-item-highlighted":`dropdown-item-highlighted_1ZENP`,dropdownItemHighlighted:`dropdown-item-highlighted_1ZENP`,"dropdown-category":`dropdown-category_OMT0E`,dropdownCategory:`dropdown-category_OMT0E`};export{e as default};
|
|
2
|
+
//# sourceMappingURL=inputDropdown.module.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inputDropdown.module.mjs","names":[],"sources":["../../../../package/common/inputDropdown/inputDropdown.module.pcss"],"sourcesContent":[".inputDropdown {\n position: relative;\n}\n\n.dropdown {\n position: fixed;\n width: fit-content;\n max-width: 240px;\n color: var(--text-color);\n border-radius: var(--default-border-radius);\n background: var(--background-modal);\n box-shadow: var(--card-shadow);\n box-sizing: border-box;\n overflow: hidden;\n transition: all 0.1s;\n transform-origin: top left;\n opacity: 0;\n transform: scale(0.95);\n z-index: 1;\n\n &-scroll {\n overflow: auto;\n max-height: 200px;\n }\n\n &-shown {\n transform: scale(1);\n opacity: 1;\n }\n\n &-flip {\n transform-origin: bottom left;\n }\n\n &-item {\n padding: 8px;\n z-index: 0;\n outline: none;\n cursor: pointer;\n\n &:hover,\n &:focus {\n background: var(--background-accent);\n }\n\n &-highlighted {\n background: var(--background-accent);\n }\n }\n\n &-category {\n padding: 16px 8px 4px 8px;\n }\n}\n"],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../../../package/common/interactableDiv/index.ts"],"sourcesContent":["import InteractableDiv from './interactableDiv';\n\nexport default InteractableDiv;\n"],"mappings":"qCAEA,IAAA,EAAe"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e from"./interactableDiv.module.mjs";import t,{useCallback as n}from"react";import r from"classnames";import{jsx as i}from"react/jsx-runtime";var a=t.forwardRef(({className:t,children:a,onClick:o,onMouseDown:s,onKeyDown:c,tabIndex:l=0,title:u,...d},f)=>{let p=n(e=>{e.key===`Enter`&&o?.(e),c?.(e)},[o,c]);return i(`div`,{className:r(e.interactableDiv,t),onClick:o,onMouseDown:s,tabIndex:l??0,role:`button`,onKeyDown:p,ref:f,title:u,...d,children:a})});a.displayName=`InteractableDiv`;export{a as default};
|
|
2
|
+
//# sourceMappingURL=interactableDiv.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactableDiv.mjs","names":[],"sources":["../../../../package/common/interactableDiv/interactableDiv.tsx"],"sourcesContent":["import cx from 'classnames';\nimport React, {\n ReactNode,\n useCallback,\n type KeyboardEvent,\n type KeyboardEventHandler,\n type MouseEvent,\n type MouseEventHandler,\n type ReactElement,\n} from 'react';\n\nimport styles from './interactableDiv.module.pcss';\nimport type { HtmlProps } from '../types/baseProps.types';\n\ninterface Properties extends HtmlProps {\n className?: string | undefined;\n children?: ReactNode | undefined;\n onClick?: MouseEventHandler<HTMLDivElement> | undefined;\n onMouseDown?: MouseEventHandler<HTMLDivElement> | undefined;\n onKeyDown?: KeyboardEventHandler<HTMLDivElement> | undefined;\n style?: React.CSSProperties | undefined;\n tabIndex?: number | null;\n title?: string | undefined;\n}\n\nconst InteractableDiv = React.forwardRef<HTMLDivElement, Properties>(\n ({ className, children, onClick, onMouseDown, onKeyDown, tabIndex = 0, title, ...props }, ref): ReactElement => {\n const onKeyDownHandler = useCallback(\n (e: KeyboardEvent<HTMLDivElement> | MouseEvent<HTMLDivElement>) => {\n if ((e as React.KeyboardEvent).key === 'Enter') {\n onClick?.(e as MouseEvent<HTMLDivElement>);\n }\n onKeyDown?.(e as KeyboardEvent<HTMLDivElement>);\n },\n [onClick, onKeyDown]\n );\n\n return (\n <div\n className={cx(styles.interactableDiv, className)}\n onClick={onClick}\n onMouseDown={onMouseDown}\n tabIndex={tabIndex == undefined ? 0 : tabIndex}\n role=\"button\"\n onKeyDown={onKeyDownHandler}\n ref={ref}\n title={title}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nInteractableDiv.displayName = 'InteractableDiv';\n\nexport default InteractableDiv;\n"],"mappings":"qJAyBA,IAAM,EAAkB,EAAM,YAC3B,CAAE,YAAW,WAAU,UAAS,cAAa,YAAW,WAAW,EAAG,QAAO,GAAG,GAAS,IAAsB,CAC9G,IAAM,EAAmB,EACtB,GAAkE,CAC5D,EAA0B,MAAQ,SACrC,IAAU,CAA+B,EAE3C,IAAY,CAAkC,CAChD,EACA,CAAC,EAAS,CAAS,CACrB,EAEA,OACE,EAAC,MAAD,CACE,UAAW,EAAG,EAAO,gBAAiB,CAAS,EACtC,UACI,cACb,SAAU,GAAwB,EAClC,KAAK,SACL,UAAW,EACN,MACE,QACP,GAAI,EAEH,UACE,CAAA,CAET,CACF,EAEA,EAAgB,YAAc"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactableDiv.module.mjs","names":[],"sources":["../../../../package/common/interactableDiv/interactableDiv.module.pcss"],"sourcesContent":[".interactableDiv {\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e from"./kanbanBoard.module.mjs";import t from"./KanbanColumn.mjs";import{useState as n}from"react";import r from"classnames";import{jsx as i,jsxs as a}from"react/jsx-runtime";import{DndContext as o,DragOverlay as s,PointerSensor as c,closestCorners as l,useSensor as u,useSensors as d}from"@dnd-kit/core";import{arrayMove as f}from"@dnd-kit/sortable";function p({columns:p,items:m,renderItem:h,onChange:g,className:_,style:v,classNames:y,styles:b}){let[x,S]=n(null),[C,w]=n(null),T=d(u(c,{activationConstraint:{distance:8}})),E=C??p;function D(e,t){return e.findIndex(e=>e.itemIds.includes(t))}function O({active:e}){S(String(e.id)),w(p.map(e=>({...e,itemIds:[...e.itemIds]})))}function k({active:e,over:t}){if(!t)return;let n=String(e.id),r=String(t.id);w(e=>{let t=(e??p.map(e=>({...e,itemIds:[...e.itemIds]}))).map(e=>({...e,itemIds:[...e.itemIds]})),i=D(t,n);if(i===-1)return e;let a;if(r.startsWith(`column-`)){let e=r.slice(7);a=t.findIndex(t=>t.id===e)}else a=D(t,r);if(a===-1)return e;if(i===a){let e=t[i],a=e.itemIds.indexOf(n),o=e.itemIds.indexOf(r);a!==-1&&o!==-1&&a!==o&&(t[i]={...e,itemIds:f(e.itemIds,a,o)})}else{t[i].itemIds=t[i].itemIds.filter(e=>e!==n);let e=t[a].itemIds.indexOf(r),o=e===-1?t[a].itemIds.length:e;t[a].itemIds.splice(o,0,n)}return t})}function A({active:e,over:t}){if(S(null),!t||!C){w(null);return}g(C),w(null)}return a(o,{sensors:T,collisionDetection:l,onDragStart:O,onDragOver:k,onDragEnd:A,children:[i(`div`,{className:r(e.board,_),style:v,children:E.map(e=>i(t,{id:e.id,title:e.title,itemIds:e.itemIds,items:m,renderItem:h},e.id))}),i(s,{children:x&&m[x]!==void 0?i(`div`,{className:r(e.dragOverlay,y?.dragOverlay),style:b?.dragOverlay,children:h(m[x],x)}):null})]})}export{p as default};
|
|
2
|
+
//# sourceMappingURL=KanbanBoard.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KanbanBoard.mjs","names":[],"sources":["../../../../package/common/kanbanBoard/KanbanBoard.tsx"],"sourcesContent":["import { useState } from 'react';\nimport {\n DndContext,\n DragOverlay,\n PointerSensor,\n useSensor,\n useSensors,\n closestCorners,\n type DragStartEvent,\n type DragOverEvent,\n type DragEndEvent,\n} from '@dnd-kit/core';\nimport { arrayMove } from '@dnd-kit/sortable';\nimport cx from 'classnames';\n\nimport type { KanbanBoardProps, KanbanColumnDef } from './kanbanBoard.types';\nimport styles from './kanbanBoard.module.pcss';\nimport KanbanColumn from './KanbanColumn';\n\nfunction KanbanBoard<T = unknown>({\n columns,\n items,\n renderItem,\n onChange,\n className,\n style,\n classNames,\n styles: slotStyles,\n}: KanbanBoardProps<T>) {\n const [activeId, setActiveId] = useState<string | null>(null);\n const [shadowColumns, setShadowColumns] = useState<KanbanColumnDef[] | null>(null);\n\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: { distance: 8 },\n })\n );\n\n const displayColumns = shadowColumns ?? columns;\n\n function findColumnForItem(cols: KanbanColumnDef[], itemId: string): number {\n return cols.findIndex((col) => col.itemIds.includes(itemId));\n }\n\n function handleDragStart({ active }: DragStartEvent) {\n setActiveId(String(active.id));\n setShadowColumns(columns.map((col) => ({ ...col, itemIds: [...col.itemIds] })));\n }\n\n function handleDragOver({ active, over }: DragOverEvent) {\n if (!over) return;\n\n const activeItemId = String(active.id);\n const overId = String(over.id);\n\n setShadowColumns((prev) => {\n const base = prev ?? columns.map((col) => ({ ...col, itemIds: [...col.itemIds] }));\n const next = base.map((col) => ({ ...col, itemIds: [...col.itemIds] }));\n\n const sourceColIndex = findColumnForItem(next, activeItemId);\n if (sourceColIndex === -1) return prev;\n\n // Determine destination column\n let destColIndex: number;\n if (overId.startsWith('column-')) {\n const colId = overId.slice('column-'.length);\n destColIndex = next.findIndex((col) => col.id === colId);\n } else {\n destColIndex = findColumnForItem(next, overId);\n }\n\n if (destColIndex === -1) return prev;\n\n if (sourceColIndex === destColIndex) {\n // Reorder within the same column\n const col = next[sourceColIndex];\n const oldIndex = col.itemIds.indexOf(activeItemId);\n const newIndex = col.itemIds.indexOf(overId);\n if (oldIndex !== -1 && newIndex !== -1 && oldIndex !== newIndex) {\n next[sourceColIndex] = {\n ...col,\n itemIds: arrayMove(col.itemIds, oldIndex, newIndex),\n };\n }\n } else {\n // Move across columns\n next[sourceColIndex].itemIds = next[sourceColIndex].itemIds.filter(\n (id) => id !== activeItemId\n );\n const overIndex = next[destColIndex].itemIds.indexOf(overId);\n const insertAt = overIndex === -1 ? next[destColIndex].itemIds.length : overIndex;\n next[destColIndex].itemIds.splice(insertAt, 0, activeItemId);\n }\n\n return next;\n });\n }\n\n function handleDragEnd({ active, over }: DragEndEvent) {\n setActiveId(null);\n\n if (!over || !shadowColumns) {\n setShadowColumns(null);\n return;\n }\n\n // Commit shadow columns to parent\n onChange(shadowColumns);\n setShadowColumns(null);\n }\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCorners}\n onDragStart={handleDragStart}\n onDragOver={handleDragOver}\n onDragEnd={handleDragEnd}\n >\n <div className={cx(styles.board, className)} style={style}>\n {displayColumns.map((col) => (\n <KanbanColumn\n key={col.id}\n id={col.id}\n title={col.title}\n itemIds={col.itemIds}\n items={items}\n renderItem={renderItem}\n />\n ))}\n </div>\n <DragOverlay>\n {activeId && items[activeId] !== undefined ? (\n <div className={cx(styles.dragOverlay, classNames?.dragOverlay)} style={slotStyles?.dragOverlay}>{renderItem(items[activeId], activeId)}</div>\n ) : null}\n </DragOverlay>\n </DndContext>\n );\n}\n\nexport default KanbanBoard;\n"],"mappings":"uWAmBA,SAAS,EAAyB,CAChC,UACA,QACA,aACA,WACA,YACA,QACA,aACA,OAAQ,GACc,CACtB,GAAM,CAAC,EAAU,GAAe,EAAwB,IAAI,EACtD,CAAC,EAAe,GAAoB,EAAmC,IAAI,EAE3E,EAAU,EACd,EAAU,EAAe,CACvB,qBAAsB,CAAE,SAAU,CAAE,CACtC,CAAC,CACH,EAEM,EAAiB,GAAiB,EAExC,SAAS,EAAkB,EAAyB,EAAwB,CAC1E,OAAO,EAAK,UAAW,GAAQ,EAAI,QAAQ,SAAS,CAAM,CAAC,CAC7D,CAEA,SAAS,EAAgB,CAAE,UAA0B,CACnD,EAAY,OAAO,EAAO,EAAE,CAAC,EAC7B,EAAiB,EAAQ,IAAK,IAAS,CAAE,GAAG,EAAK,QAAS,CAAC,GAAG,EAAI,OAAO,CAAE,EAAE,CAAC,CAChF,CAEA,SAAS,EAAe,CAAE,SAAQ,QAAuB,CACvD,GAAI,CAAC,EAAM,OAEX,IAAM,EAAe,OAAO,EAAO,EAAE,EAC/B,EAAS,OAAO,EAAK,EAAE,EAE7B,EAAkB,GAAS,CAEzB,IAAM,GADO,GAAQ,EAAQ,IAAK,IAAS,CAAE,GAAG,EAAK,QAAS,CAAC,GAAG,EAAI,OAAO,CAAE,EAAE,GAC/D,IAAK,IAAS,CAAE,GAAG,EAAK,QAAS,CAAC,GAAG,EAAI,OAAO,CAAE,EAAE,EAEhE,EAAiB,EAAkB,EAAM,CAAY,EAC3D,GAAI,IAAmB,GAAI,OAAO,EAGlC,IAAI,EACJ,GAAI,EAAO,WAAW,SAAS,EAAG,CAChC,IAAM,EAAQ,EAAO,MAAM,CAAgB,EAC3C,EAAe,EAAK,UAAW,GAAQ,EAAI,KAAO,CAAK,CACzD,MACE,EAAe,EAAkB,EAAM,CAAM,EAG/C,GAAI,IAAiB,GAAI,OAAO,EAEhC,GAAI,IAAmB,EAAc,CAEnC,IAAM,EAAM,EAAK,GACX,EAAW,EAAI,QAAQ,QAAQ,CAAY,EAC3C,EAAW,EAAI,QAAQ,QAAQ,CAAM,EACvC,IAAa,IAAM,IAAa,IAAM,IAAa,IACrD,EAAK,GAAkB,CACrB,GAAG,EACH,QAAS,EAAU,EAAI,QAAS,EAAU,CAAQ,CACpD,EAEJ,KAAO,CAEL,EAAK,GAAgB,QAAU,EAAK,GAAgB,QAAQ,OACzD,GAAO,IAAO,CACjB,EACA,IAAM,EAAY,EAAK,GAAc,QAAQ,QAAQ,CAAM,EACrD,EAAW,IAAc,GAAK,EAAK,GAAc,QAAQ,OAAS,EACxE,EAAK,GAAc,QAAQ,OAAO,EAAU,EAAG,CAAY,CAC7D,CAEA,OAAO,CACT,CAAC,CACH,CAEA,SAAS,EAAc,CAAE,SAAQ,QAAsB,CAGrD,GAFA,EAAY,IAAI,EAEZ,CAAC,GAAQ,CAAC,EAAe,CAC3B,EAAiB,IAAI,EACrB,MACF,CAGA,EAAS,CAAa,EACtB,EAAiB,IAAI,CACvB,CAEA,OACE,EAAC,EAAD,CACW,UACT,mBAAoB,EACpB,YAAa,EACb,WAAY,EACZ,UAAW,WALb,CAOE,EAAC,MAAD,CAAK,UAAW,EAAG,EAAO,MAAO,CAAS,EAAU,iBACjD,EAAe,IAAK,GACnB,EAAC,EAAD,CAEE,GAAI,EAAI,GACR,MAAO,EAAI,MACX,QAAS,EAAI,QACN,QACK,YACb,EANM,EAAI,EAMV,CACF,CACE,CAAA,EACL,EAAC,EAAD,CAAA,SACG,GAAY,EAAM,KAAc,IAAA,GAC/B,EAAC,MAAD,CAAK,UAAW,EAAG,EAAO,YAAa,GAAY,WAAW,EAAG,MAAO,GAAY,qBAAc,EAAW,EAAM,GAAW,CAAQ,CAAO,CAAA,EAC3I,IACO,CAAA,CACH,GAEhB"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e from"./kanbanBoard.module.mjs";import t from"./KanbanItem.mjs";import n from"classnames";import{jsx as r,jsxs as i}from"react/jsx-runtime";import{useDroppable as a}from"@dnd-kit/core";import{SortableContext as o,verticalListSortingStrategy as s}from"@dnd-kit/sortable";function c({id:c,title:l,itemIds:u,items:d,renderItem:f,className:p,classNames:m,styles:h}){let{setNodeRef:g,isOver:_}=a({id:`column-${c}`});return i(`div`,{className:n(e.column,_&&e.columnOver,u.length===0&&e.columnEmpty,p),children:[r(`div`,{className:n(e.columnHeader,m?.header),style:h?.header,children:l}),r(o,{items:u,strategy:s,children:r(`div`,{ref:g,className:n(e.columnItems,m?.items),style:h?.items,children:u.map(e=>r(t,{id:e,children:d[e]===void 0?null:f(d[e],e)},e))})})]})}export{c as default};
|
|
2
|
+
//# sourceMappingURL=KanbanColumn.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KanbanColumn.mjs","names":[],"sources":["../../../../package/common/kanbanBoard/KanbanColumn.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { useDroppable } from '@dnd-kit/core';\nimport { SortableContext, verticalListSortingStrategy } from '@dnd-kit/sortable';\nimport cx from 'classnames';\n\nimport type { KanbanColumnProps } from './kanbanBoard.types';\nimport styles from './kanbanBoard.module.pcss';\nimport KanbanItem from './KanbanItem';\n\ninterface KanbanColumnInternalProps<T> extends KanbanColumnProps {\n itemIds: string[];\n items: Record<string, T>;\n renderItem: (item: T, id: string) => ReactNode;\n}\n\nfunction KanbanColumn<T>({\n id,\n title,\n itemIds,\n items,\n renderItem,\n className,\n classNames,\n styles: slotStyles,\n}: KanbanColumnInternalProps<T>) {\n const droppableId = `column-${id}`;\n const { setNodeRef, isOver } = useDroppable({ id: droppableId });\n\n return (\n <div className={cx(styles.column, isOver && styles.columnOver, itemIds.length === 0 && styles.columnEmpty, className)}>\n <div className={cx(styles.columnHeader, classNames?.header)} style={slotStyles?.header}>{title}</div>\n <SortableContext items={itemIds} strategy={verticalListSortingStrategy}>\n <div ref={setNodeRef} className={cx(styles.columnItems, classNames?.items)} style={slotStyles?.items}>\n {itemIds.map((itemId) => (\n <KanbanItem key={itemId} id={itemId}>\n {items[itemId] !== undefined ? renderItem(items[itemId], itemId) : null}\n </KanbanItem>\n ))}\n </div>\n </SortableContext>\n </div>\n );\n}\n\nexport default KanbanColumn;\n"],"mappings":"sRAeA,SAAS,EAAgB,CACvB,KACA,QACA,UACA,QACA,aACA,YACA,aACA,OAAQ,GACuB,CAE/B,GAAM,CAAE,aAAY,UAAW,EAAa,CAAE,GAAI,UADpB,GACgC,CAAC,EAE/D,OACE,EAAC,MAAD,CAAK,UAAW,EAAG,EAAO,OAAQ,GAAU,EAAO,WAAY,EAAQ,SAAW,GAAK,EAAO,YAAa,CAAS,WAApH,CACE,EAAC,MAAD,CAAK,UAAW,EAAG,EAAO,aAAc,GAAY,MAAM,EAAG,MAAO,GAAY,gBAAS,CAAW,CAAA,EACpG,EAAC,EAAD,CAAiB,MAAO,EAAS,SAAU,WACzC,EAAC,MAAD,CAAK,IAAK,EAAY,UAAW,EAAG,EAAO,YAAa,GAAY,KAAK,EAAG,MAAO,GAAY,eAC5F,EAAQ,IAAK,GACZ,EAAC,EAAD,CAAyB,GAAI,WAC1B,EAAM,KAAY,IAAA,GAAgD,KAApC,EAAW,EAAM,GAAS,CAAM,CACrD,EAFK,CAEL,CACb,CACE,CAAA,CACU,CAAA,CACd,GAET"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e from"./kanbanBoard.module.mjs";import t from"classnames";import{jsx as n}from"react/jsx-runtime";import{useSortable as r}from"@dnd-kit/sortable";import{CSS as i}from"@dnd-kit/utilities";function a({id:a,children:o}){let{attributes:s,listeners:c,setNodeRef:l,transform:u,transition:d,isDragging:f}=r({id:a});return n(`div`,{ref:l,style:{transform:i.Transform.toString(u),transition:d},className:t(e.item,f&&e.itemDragging),...s,...c,children:o})}export{a as default};
|
|
2
|
+
//# sourceMappingURL=KanbanItem.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KanbanItem.mjs","names":[],"sources":["../../../../package/common/kanbanBoard/KanbanItem.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport cx from 'classnames';\n\nimport styles from './kanbanBoard.module.pcss';\n\ninterface KanbanItemProps {\n id: string;\n children: ReactNode;\n}\n\nfunction KanbanItem({ id, children }: KanbanItemProps) {\n const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({\n id,\n });\n\n return (\n <div\n ref={setNodeRef}\n style={{ transform: CSS.Transform.toString(transform), transition }}\n className={cx(styles.item, isDragging && styles.itemDragging)}\n {...attributes}\n {...listeners}\n >\n {children}\n </div>\n );\n}\n\nexport default KanbanItem;\n"],"mappings":"mMAYA,SAAS,EAAW,CAAE,KAAI,YAA6B,CACrD,GAAM,CAAE,aAAY,YAAW,aAAY,YAAW,aAAY,cAAe,EAAY,CAC3F,IACF,CAAC,EAED,OACE,EAAC,MAAD,CACE,IAAK,EACL,MAAO,CAAE,UAAW,EAAI,UAAU,SAAS,CAAS,EAAG,YAAW,EAClE,UAAW,EAAG,EAAO,KAAM,GAAc,EAAO,YAAY,EAC5D,GAAI,EACJ,GAAI,EAEH,UACE,CAAA,CAET"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e={board:`board_6KRdw`,column:`column_NrNeF`,"column-empty":`column-empty_5KYsJ`,columnEmpty:`column-empty_5KYsJ`,"column-over":`column-over_sO7oD`,columnOver:`column-over_sO7oD`,"column-header":`column-header_PLeKG`,columnHeader:`column-header_PLeKG`,"column-items":`column-items_xY5er`,columnItems:`column-items_xY5er`,item:`item_T8CJK`,"item-dragging":`item-dragging_iWurw`,itemDragging:`item-dragging_iWurw`,dragOverlay:`dragOverlay_DSyKz`};export{e as default};
|
|
2
|
+
//# sourceMappingURL=kanbanBoard.module.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kanbanBoard.module.mjs","names":[],"sources":["../../../../package/common/kanbanBoard/kanbanBoard.module.pcss"],"sourcesContent":[".board {\n display: flex;\n gap: var(--spacing-s);\n overflow-x: auto;\n align-items: flex-start;\n width: 100%;\n}\n\n.column {\n background: var(--background-accent-light);\n border-radius: var(--default-border-radius);\n box-shadow: var(--card-shadow);\n flex: 1 1 0;\n display: flex;\n flex-direction: column;\n border: 2px solid transparent;\n transition: border-color 0.15s ease, background 0.15s ease;\n\n &-empty {\n flex: 0 1 0;\n min-width: 140px;\n }\n\n &-over {\n border-color: var(--primary-lighter);\n background: var(--background-accent);\n }\n\n &-header {\n padding: var(--spacing-m) var(--spacing-l);\n background: var(--background-accent);\n border-radius: var(--default-border-radius) var(--default-border-radius) 0 0;\n font-size: var(--header-small-font-size);\n font-weight: var(--header-font-weight);\n color: var(--text-color);\n border-bottom: 1px solid var(--border-color);\n }\n\n &-items {\n padding: var(--spacing-m);\n display: flex;\n flex-direction: column;\n gap: var(--spacing-m);\n min-height: 80px;\n flex: 1;\n }\n}\n\n.item {\n cursor: grab;\n touch-action: none;\n\n &:active {\n cursor: grabbing;\n }\n\n &-dragging {\n opacity: 0.4;\n }\n}\n\n.dragOverlay {\n border-radius: var(--default-border-radius);\n cursor: grabbing;\n box-shadow: 0 10px 30px rgba(0, 0, 0, 0.25), var(--card-shadow);\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e from"../../../interactableDiv/index.mjs";import t from"./gifPreview.module.mjs";import n from"classnames";import{Fragment as r,jsx as i}from"react/jsx-runtime";function a({className:a,previewItems:o=[],onSelect:s,onLoadAdditional:c}){function l(e){let t=e.currentTarget,n=t.scrollHeight-t.clientHeight*1.5;t.scrollTop>=n&&c?.()}return i(r,{children:o.length>0&&i(`div`,{className:n(t.gifPreview,a),onScroll:l,children:o.map((n,r)=>i(e,{className:t.gifPreviewImageContainer,onClick:()=>s?.(n),children:i(`div`,{className:t.gifPreviewImage,style:{backgroundImage:`url(${n.media_formats.tinygif.url})`}})},`${n.id}_${r}`))})})}export{a as default};
|
|
2
|
+
//# sourceMappingURL=gifPreview.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gifPreview.mjs","names":[],"sources":["../../../../../../package/common/klipyPicker/components/gifPreview/gifPreview.tsx"],"sourcesContent":["import cx from 'classnames';\nimport type { ReactElement, UIEvent } from 'react';\nimport InteractableDiv from 'components/common/interactableDiv';\nimport type { GifPreviewProps } from './gifPreview.types';\nimport styles from './gifPreview.module.pcss';\n\nexport default function GifPreview({\n className,\n previewItems = [],\n onSelect,\n onLoadAdditional,\n}: GifPreviewProps): ReactElement {\n function handleScroll(event: UIEvent<HTMLDivElement>) {\n const el = event.currentTarget;\n const loadAdditionalHeight = el.scrollHeight - el.clientHeight * 1.5;\n if (el.scrollTop >= loadAdditionalHeight) {\n onLoadAdditional?.();\n }\n }\n\n return (\n <>\n {previewItems.length > 0 && (\n <div className={cx(styles.gifPreview, className)} onScroll={handleScroll}>\n {previewItems.map((preview, index) => (\n <InteractableDiv\n key={`${preview.id}_${index}`}\n className={styles.gifPreviewImageContainer}\n onClick={() => onSelect?.(preview)}\n >\n <div\n className={styles.gifPreviewImage}\n style={{ backgroundImage: `url(${preview.media_formats.tinygif.url})` }}\n />\n </InteractableDiv>\n ))}\n </div>\n )}\n </>\n );\n}\n"],"mappings":"yKAMA,SAAwB,EAAW,CACjC,YACA,eAAe,CAAC,EAChB,WACA,oBACgC,CAChC,SAAS,EAAa,EAAgC,CACpD,IAAM,EAAK,EAAM,cACX,EAAuB,EAAG,aAAe,EAAG,aAAe,IAC7D,EAAG,WAAa,GAClB,IAAmB,CAEvB,CAEA,OACE,EAAA,EAAA,CAAA,SACG,EAAa,OAAS,GACrB,EAAC,MAAD,CAAK,UAAW,EAAG,EAAO,WAAY,CAAS,EAAG,SAAU,WACzD,EAAa,KAAK,EAAS,IAC1B,EAAC,EAAD,CAEE,UAAW,EAAO,yBAClB,YAAe,IAAW,CAAO,WAEjC,EAAC,MAAD,CACE,UAAW,EAAO,gBAClB,MAAO,CAAE,gBAAiB,OAAO,EAAQ,cAAc,QAAQ,IAAI,EAAG,CACvE,CAAA,CACc,EARV,GAAG,EAAQ,GAAG,GAAG,GAQP,CAClB,CACE,CAAA,CAEP,CAAA,CAEN"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e={gifPreview:`gifPreview_jAXT2`,"gifPreview-image":`gifPreview-image_41bwm`,gifPreviewImage:`gifPreview-image_41bwm`,"gifPreview-image-container":`gifPreview-image-container_5hAjJ`,gifPreviewImageContainer:`gifPreview-image-container_5hAjJ`,gradientBottomLeftToTopRight:`gradientBottomLeftToTopRight_9EI0A`};export{e as default};
|
|
2
|
+
//# sourceMappingURL=gifPreview.module.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gifPreview.module.mjs","names":[],"sources":["../../../../../../package/common/klipyPicker/components/gifPreview/gifPreview.module.pcss"],"sourcesContent":["\n.gifPreview {\n width: min(420px, 90vw);\n aspect-ratio: 1;\n display: flex;\n flex-wrap: wrap;\n overflow: hidden;\n --gif-preview-gap-size: 5px;\n gap: var(--gif-preview-gap-size);\n position: relative;\n justify-content: center;\n overflow: auto;\n\n &-image {\n background-position: center;\n background-size: cover;\n width: 100%;\n height: 100%;\n\n &-container {\n width: min(140px, 33.3%);\n aspect-ratio: 1;\n background: linear-gradient(\n 45deg,\n var(--primary-color) 10%,\n var(--primary-lighter),\n var(--primary-accent),\n var(--primary-color) 85%\n );\n background-size: 500% 500%;\n animation: gradientBottomLeftToTopRight 1s infinite linear;\n border-radius: var(--default-border-radius);\n overflow: hidden;\n width: min(\n calc(140px - var(--gif-preview-gap-size)),\n calc(33.3% - var(--gif-preview-gap-size))\n );\n }\n }\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e from"./gifView.module.mjs";import{useEffect as t,useState as n}from"react";import r from"classnames";import{jsx as i,jsxs as a}from"react/jsx-runtime";function o({className:o,src:s=``}){let[c,l]=n(!0);return t(()=>{l(!0)},[s]),a(`div`,{className:r(e.gifView,o),children:[i(`img`,{className:e.klipyPickerSelected,src:s,onLoad:()=>l(!1)}),c&&i(`div`,{className:e.gifViewLoading})]})}export{o as default};
|
|
2
|
+
//# sourceMappingURL=gifView.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gifView.mjs","names":[],"sources":["../../../../../../package/common/klipyPicker/components/gifView/gifView.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport cx from 'classnames';\nimport type { ReactElement } from 'react';\nimport type { GifViewProps } from './gifView.types';\nimport styles from './gifView.module.pcss';\n\nexport default function GifView({ className, src = '' }: GifViewProps): ReactElement {\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n setIsLoading(true);\n }, [src]);\n\n return (\n <div className={cx(styles.gifView, className)}>\n <img className={styles.klipyPickerSelected} src={src} onLoad={() => setIsLoading(false)} />\n {isLoading && <div className={styles.gifViewLoading} />}\n </div>\n );\n}\n"],"mappings":"gKAMA,SAAwB,EAAQ,CAAE,YAAW,MAAM,IAAkC,CACnF,GAAM,CAAC,EAAW,GAAgB,EAAS,EAAI,EAM/C,OAJA,MAAgB,CACd,EAAa,EAAI,CACnB,EAAG,CAAC,CAAG,CAAC,EAGN,EAAC,MAAD,CAAK,UAAW,EAAG,EAAO,QAAS,CAAS,WAA5C,CACE,EAAC,MAAD,CAAK,UAAW,EAAO,oBAA0B,MAAK,WAAc,EAAa,EAAK,CAAI,CAAA,EACzF,GAAa,EAAC,MAAD,CAAK,UAAW,EAAO,cAAiB,CAAA,CACnD,GAET"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gifView.module.mjs","names":[],"sources":["../../../../../../package/common/klipyPicker/components/gifView/gifView.module.pcss"],"sourcesContent":["\n.gifView {\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n\n img {\n max-width: 100%;\n border-radius: var(--default-border-radius);\n overflow: hidden;\n }\n\n &-loading {\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n background: linear-gradient(\n 45deg,\n var(--primary-color) 10%,\n var(--primary-lighter),\n var(--primary-accent),\n var(--primary-color) 85%\n );\n background-size: 500% 500%;\n animation: gradientBottomLeftToTopRight 1s infinite linear;\n border-radius: var(--default-border-radius);\n overflow: hidden;\n }\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e from"../actionButtons/actionButtons.module.mjs";import{ButtonStyleType as t}from"../button/button.types.mjs";import n from"../button/button.mjs";import r from"../chip/chip.mjs";import i from"../chip/chipContainer.mjs";import{Align as a}from"../floatingMenu/floatingMenu.types.mjs";import o from"../floatingMenu/floatingMenu.mjs";import s from"../modal/modal.mjs";import c from"../../services/klipy.mjs";import l from"../searchInput/searchInput.mjs";import u from"./components/gifPreview/gifPreview.mjs";import d from"./components/gifView/gifView.mjs";import f from"./klipyPicker.module.mjs";import{useMemo as p,useState as m}from"react";import h from"classnames";import{Fragment as g,jsx as _,jsxs as v}from"react/jsx-runtime";function y({className:y,token:b=``,isModal:x=!1,onSelect:S=()=>void 0,selected:C=null}){let w=p(()=>new c(b),[b]),[T,E]=m(``),[D,O]=m([]),[k,A]=m([]),[j,M]=m(null),[N,P]=m(!1);async function F(e){if(E(e),!e.trim()){O([]),A([]),M(null);return}let[{results:t=[],next:n=null},{results:r=[]}]=await Promise.all([w.search(e,{limit:18,contentfilter:`medium`}),w.searchSuggestions(e)]);O(t),M(n),A(r)}async function I(){let{results:e=[],next:t=null}=await w.search(T,{limit:36,pos:j??void 0,contentfilter:`medium`});M(t),O(t=>[...t,...e])}async function L(e){await S(e),P(!1),e&&w.registerShare(T,e.id)}function R(){return _(i,{inline:!0,className:f.klipyPickerSuggestionsContainer,children:k.map(e=>_(r,{className:f.klipyPickerSuggestionsItem,text:e,onClick:()=>F(e)},e))})}function z(){return _(u,{previewItems:D,onSelect:L,onLoadAdditional:I})}function B(){return _(l,{label:`Pick gif`,value:T,onDebounce:F,onChange:E})}return x?v(`div`,{className:h(f.klipyPicker,y),children:[v(`div`,{className:e.actionButtons,children:[_(n,{onClick:()=>P(!0),children:`Pick gif`}),C&&_(n,{styleType:t.Delete,onClick:()=>L(null),children:`Remove gif`})]}),C&&_(d,{className:f.klipyPickerSelected,src:C}),_(s,{isOpen:N,onClose:()=>P(!1),children:v(`div`,{className:f.klipyPickerModalContent,children:[B(),R(),z()]})})]}):v(`div`,{className:h(f.klipyPicker,y),children:[_(o,{align:a.Left,isOpen:D.length>0&&N,onOpenChange:P,content:v(g,{children:[R(),z()]}),children:B()}),C&&_(n,{styleType:t.Delete,onClick:()=>L(null),children:`Remove gif`}),C&&_(d,{className:f.klipyPickerSelected,src:C})]})}export{y as default};
|
|
2
|
+
//# sourceMappingURL=klipyPicker.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"klipyPicker.mjs","names":[],"sources":["../../../../package/common/klipyPicker/klipyPicker.tsx"],"sourcesContent":["import { useMemo, useState } from 'react';\nimport cx from 'classnames';\nimport type { ReactElement, ReactNode } from 'react';\nimport KlipyService from 'services/klipy';\nimport type { KlipyResult } from 'services/klipy';\nimport SearchInput from '../searchInput';\nimport GifPreview from './components/gifPreview';\nimport FloatingMenu from '../floatingMenu';\nimport Button, { ButtonStyleType } from '../button';\nimport Modal from '../modal';\nimport Chip, { ChipContainer } from '../chip';\nimport GifView from './components/gifView';\nimport type { KlipyPickerProps } from './klipyPicker.types';\nimport styles from './klipyPicker.module.pcss';\nimport actionButtonStyles from 'components/common/actionButtons/actionButtons.module.pcss';\nimport { Align } from '../floatingMenu/floatingMenu.types';\n\nexport default function KlipyPicker({\n className,\n token = '',\n isModal = false,\n onSelect = () => undefined,\n selected = null,\n}: KlipyPickerProps): ReactElement {\n const klipyService = useMemo(() => new KlipyService(token), [token]);\n\n const [searchText, setSearchText] = useState('');\n const [currentPreviews, setCurrentPreviews] = useState<KlipyResult[]>([]);\n const [currentSuggestions, setCurrentSuggestions] = useState<string[]>([]);\n const [lastNext, setLastNext] = useState<string | null>(null);\n const [isMenuOpen, setIsMenuOpen] = useState(false);\n\n async function searchFor(query: string) {\n setSearchText(query);\n if (!query.trim()) {\n setCurrentPreviews([]);\n setCurrentSuggestions([]);\n setLastNext(null);\n return;\n }\n const [{ results: searchResults = [], next = null }, { results: suggestionResults = [] }] =\n await Promise.all([\n klipyService.search(query, { limit: 18, contentfilter: 'medium' }),\n klipyService.searchSuggestions(query),\n ]);\n setCurrentPreviews(searchResults);\n setLastNext(next);\n setCurrentSuggestions(suggestionResults);\n }\n\n async function handleLoadAdditional() {\n const { results: searchResults = [], next = null } = await klipyService.search(searchText, {\n limit: 36,\n pos: lastNext ?? undefined,\n contentfilter: 'medium',\n });\n setLastNext(next);\n setCurrentPreviews((prev) => [...prev, ...searchResults]);\n }\n\n async function handlePreviewSelect(preview: KlipyResult | null) {\n await onSelect(preview);\n setIsMenuOpen(false);\n if (preview) klipyService.registerShare(searchText, preview.id);\n }\n\n function renderSuggestions(): ReactNode {\n return (\n <ChipContainer inline className={styles.klipyPickerSuggestionsContainer}>\n {currentSuggestions.map((suggestion) => (\n <Chip\n className={styles.klipyPickerSuggestionsItem}\n key={suggestion}\n text={suggestion}\n onClick={() => searchFor(suggestion)}\n />\n ))}\n </ChipContainer>\n );\n }\n\n function renderPreviewPicker(): ReactNode {\n return (\n <GifPreview\n previewItems={currentPreviews}\n onSelect={handlePreviewSelect}\n onLoadAdditional={handleLoadAdditional}\n />\n );\n }\n\n function renderSearchInput(): ReactNode {\n return (\n <SearchInput\n label=\"Pick gif\"\n value={searchText}\n onDebounce={searchFor}\n onChange={setSearchText}\n />\n );\n }\n\n if (isModal) {\n return (\n <div className={cx(styles.klipyPicker, className)}>\n <div className={actionButtonStyles.actionButtons}>\n <Button onClick={() => setIsMenuOpen(true)}>Pick gif</Button>\n {selected && (\n <Button styleType={ButtonStyleType.Delete} onClick={() => handlePreviewSelect(null)}>\n Remove gif\n </Button>\n )}\n </div>\n {selected && <GifView className={styles.klipyPickerSelected} src={selected} />}\n <Modal isOpen={isMenuOpen} onClose={() => setIsMenuOpen(false)}>\n <div className={styles.klipyPickerModalContent}>\n {renderSearchInput()}\n {renderSuggestions()}\n {renderPreviewPicker()}\n </div>\n </Modal>\n </div>\n );\n }\n\n return (\n <div className={cx(styles.klipyPicker, className)}>\n <FloatingMenu\n align={Align.Left}\n isOpen={currentPreviews.length > 0 && isMenuOpen}\n onOpenChange={setIsMenuOpen}\n content={\n <>\n {renderSuggestions()}\n {renderPreviewPicker()}\n </>\n }\n >\n {renderSearchInput()}\n </FloatingMenu>\n {selected && (\n <Button styleType={ButtonStyleType.Delete} onClick={() => handlePreviewSelect(null)}>\n Remove gif\n </Button>\n )}\n {selected && <GifView className={styles.klipyPickerSelected} src={selected} />}\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e={"klipyPicker-selected":`klipyPicker-selected_Watxl`,klipyPickerSelected:`klipyPicker-selected_Watxl`,"klipyPicker-modal-content":`klipyPicker-modal-content_3CBV9`,klipyPickerModalContent:`klipyPicker-modal-content_3CBV9`,"klipyPicker-suggestions-container":`klipyPicker-suggestions-container_-csDI`,klipyPickerSuggestionsContainer:`klipyPicker-suggestions-container_-csDI`,"klipyPicker-suggestions-item":`klipyPicker-suggestions-item_nHHSA`,klipyPickerSuggestionsItem:`klipyPicker-suggestions-item_nHHSA`};export{e as default};
|
|
2
|
+
//# sourceMappingURL=klipyPicker.module.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"klipyPicker.module.mjs","names":[],"sources":["../../../../package/common/klipyPicker/klipyPicker.module.pcss"],"sourcesContent":[".klipyPicker {\n &-selected {\n margin-top: 8px;\n }\n\n &-modal {\n &-content {\n display: flex;\n flex-flow: column;\n gap: var(--spacing-m);\n }\n }\n\n &-suggestions {\n &-container {\n max-width: 420px;\n }\n\n &-item {\n cursor: pointer;\n }\n }\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e from"./iconLoading.module.mjs";import"react";import t from"classnames";import{jsx as n,jsxs as r}from"react/jsx-runtime";function i({className:i=``}){return n(`div`,{className:t(e.iconLoading,i),children:r(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`-8 -1 16 14`,children:[n(`path`,{className:e.iconLoadingFirst,d:`M 0 0 C 3 5 6 5 6 12`,strokeWidth:`1.7`,fill:`none`}),n(`path`,{className:e.iconLoadingFirst,d:`M 0 0 C -3 5 -6 5 -6 12`,strokeWidth:`1.7`,fill:`none`}),n(`path`,{className:e.iconLoadingFirst,d:`M 0 0 L 0 10`,strokeWidth:`1.7`,fill:`none`}),n(`path`,{className:e.iconLoadingSecond,d:`M 0.1 10 C -3 10 -4 10 -6 12`,strokeWidth:`1.7`,fill:`none`}),n(`path`,{className:e.iconLoadingSecond,d:`M -0.1 10 C 3 10 4 10 6 12`,strokeWidth:`1.7`,fill:`none`})]})})}export{i as default};
|
|
2
|
+
//# sourceMappingURL=iconLoading.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iconLoading.mjs","names":[],"sources":["../../../../../package/common/loading/iconLoading/iconLoading.tsx"],"sourcesContent":["import React from 'react';\nimport cx from 'classnames';\n\nimport styles from './iconLoading.module.pcss';\n\nfunction IconLoading({ className = '' }) {\n return (\n <div className={cx(styles.iconLoading, className)}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"-8 -1 16 14\">\n <path\n className={styles.iconLoadingFirst}\n d=\"M 0 0 C 3 5 6 5 6 12\"\n strokeWidth=\"1.7\"\n fill=\"none\"\n />\n <path\n className={styles.iconLoadingFirst}\n d=\"M 0 0 C -3 5 -6 5 -6 12\"\n strokeWidth=\"1.7\"\n fill=\"none\"\n />\n <path className={styles.iconLoadingFirst} d=\"M 0 0 L 0 10\" strokeWidth=\"1.7\" fill=\"none\" />\n <path\n className={styles.iconLoadingSecond}\n d=\"M 0.1 10 C -3 10 -4 10 -6 12\"\n strokeWidth=\"1.7\"\n fill=\"none\"\n />\n <path\n className={styles.iconLoadingSecond}\n d=\"M -0.1 10 C 3 10 4 10 6 12\"\n strokeWidth=\"1.7\"\n fill=\"none\"\n />\n </svg>\n </div>\n );\n}\n\nexport default IconLoading;\n"],"mappings":"kIAKA,SAAS,EAAY,CAAE,YAAY,IAAM,CACvC,OACE,EAAC,MAAD,CAAK,UAAW,EAAG,EAAO,YAAa,CAAS,WAC9C,EAAC,MAAD,CAAK,MAAM,6BAA6B,QAAQ,uBAAhD,CACE,EAAC,OAAD,CACE,UAAW,EAAO,iBAClB,EAAE,uBACF,YAAY,MACZ,KAAK,MACN,CAAA,EACD,EAAC,OAAD,CACE,UAAW,EAAO,iBAClB,EAAE,0BACF,YAAY,MACZ,KAAK,MACN,CAAA,EACD,EAAC,OAAD,CAAM,UAAW,EAAO,iBAAkB,EAAE,eAAe,YAAY,MAAM,KAAK,MAAQ,CAAA,EAC1F,EAAC,OAAD,CACE,UAAW,EAAO,kBAClB,EAAE,+BACF,YAAY,MACZ,KAAK,MACN,CAAA,EACD,EAAC,OAAD,CACE,UAAW,EAAO,kBAClB,EAAE,6BACF,YAAY,MACZ,KAAK,MACN,CAAA,CACE,GACF,CAAA,CAET"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e={iconLoading:`iconLoading_wovj4`,"spin-to-oblivion":`spin-to-oblivion_0tZtm`,spinToOblivion:`spin-to-oblivion_0tZtm`,"iconLoading-first":`iconLoading-first_SBwP3`,iconLoadingFirst:`iconLoading-first_SBwP3`,"draw-line":`draw-line_1NiWA`,drawLine:`draw-line_1NiWA`,"iconLoading-second":`iconLoading-second_nHrW3`,iconLoadingSecond:`iconLoading-second_nHrW3`,"draw-line-two":`draw-line-two_HmaHl`,drawLineTwo:`draw-line-two_HmaHl`};export{e as default};
|
|
2
|
+
//# sourceMappingURL=iconLoading.module.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iconLoading.module.mjs","names":[],"sources":["../../../../../package/common/loading/iconLoading/iconLoading.module.pcss"],"sourcesContent":[".iconLoading {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n width: 100%;\n position: absolute;\n left: 0;\n top: 0;\n user-select: none;\n pointer-events: none;\n\n --draw-duration: 0.8s;\n --delay: 0.4s;\n\n svg {\n stroke-dasharray: 14;\n stroke-dashoffset: 14;\n width: 200px;\n aspect-ratio: 1;\n animation: calc(var(--draw-duration) * 3) spin-to-oblivion var(--delay) infinite;\n transform: rotate(0deg);\n stroke: var(--primary-color);\n stroke-linecap: round;\n }\n\n &-first {\n animation: calc(var(--draw-duration) * 3) draw-line var(--delay) infinite;\n }\n\n &-second {\n animation: calc(var(--draw-duration) * 3) draw-line-two var(--delay) infinite;\n }\n\n @keyframes draw-line {\n 33% {\n stroke-dashoffset: 0;\n }\n 95% {\n stroke-dashoffset: 0;\n }\n 96% {\n stroke-dashoffset: 14;\n }\n }\n\n @keyframes draw-line-two {\n 33% {\n stroke-dashoffset: 14;\n }\n 66% {\n stroke-dashoffset: 0;\n }\n 95% {\n stroke-dashoffset: 0;\n }\n 96% {\n stroke-dashoffset: 14;\n }\n }\n\n @keyframes spin-to-oblivion {\n 50% {\n transform: rotate(180deg);\n }\n 75% {\n transform: rotate(180deg) scale(0);\n }\n 100% {\n transform: rotate(180deg) scale(0);\n }\n }\n}\n"],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../../../../package/common/loading/iconLoading/index.ts"],"sourcesContent":["import IconLoading from './iconLoading.js';\n\nexport default IconLoading;\n"],"mappings":"iCAEA,IAAA,EAAe"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../../../../package/common/loading/spinnerLoading/index.ts"],"sourcesContent":["import SpinnerLoading from './spinnerLoading';\n\nexport default SpinnerLoading;\n"],"mappings":"oCAEA,IAAA,EAAe"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e from"./spinnerLoading.module.mjs";import t from"classnames";import{jsx as n}from"react/jsx-runtime";function r({className:r}){return n(`svg`,{"data-testid":`spinner`,className:t(e.spinnerLoading,r),xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 100 100`,fill:`none`,stroke:`var(--primary-color)`,children:n(`circle`,{cx:`50`,cy:`50`,r:`45`,strokeWidth:`10`})})}r.defaultProps={className:void 0};export{r as default};
|
|
2
|
+
//# sourceMappingURL=spinnerLoading.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spinnerLoading.mjs","names":[],"sources":["../../../../../package/common/loading/spinnerLoading/spinnerLoading.tsx"],"sourcesContent":["import type { ReactElement } from 'react';\nimport cx from 'classnames';\n\nimport styles from './spinnerLoading.module.pcss';\n\ninterface Properties {\n className?: string | undefined;\n}\n\nfunction SpinnerLoading({ className }: Properties): ReactElement {\n return (\n <svg\n data-testid=\"spinner\"\n className={cx(styles.spinnerLoading, className)}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 100 100\"\n fill=\"none\"\n stroke=\"var(--primary-color)\"\n >\n <circle cx=\"50\" cy=\"50\" r=\"45\" strokeWidth=\"10\" />\n </svg>\n );\n}\n\nSpinnerLoading.defaultProps = {\n className: undefined,\n};\n\nexport default SpinnerLoading;\n"],"mappings":"6GASA,SAAS,EAAe,CAAE,aAAuC,CAC/D,OACE,EAAC,MAAD,CACE,cAAY,UACZ,UAAW,EAAG,EAAO,eAAgB,CAAS,EAC9C,MAAM,6BACN,QAAQ,cACR,KAAK,OACL,OAAO,gCAEP,EAAC,SAAD,CAAQ,GAAG,KAAK,GAAG,KAAK,EAAE,KAAK,YAAY,IAAM,CAAA,CAC9C,CAAA,CAET,CAEA,EAAe,aAAe,CAC5B,UAAW,IAAA,EACb"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spinnerLoading.module.mjs","names":[],"sources":["../../../../../package/common/loading/spinnerLoading/spinnerLoading.module.pcss"],"sourcesContent":[".spinner-loading {\n width: 70px;\n height: 70px;\n\n circle {\n stroke-dasharray: 283;\n stroke-dashoffset: 281;\n stroke-linecap: round;\n animation:\n animate-spinner 2s cubic-bezier(0.89, 0.01, 0.12, 1) infinite,\n spin 3s linear infinite;\n transform-origin: center;\n }\n\n @keyframes animate-spinner {\n 0% {\n stroke-dashoffset: 281;\n }\n\n 50% {\n stroke-dashoffset: 0;\n }\n\n 100% {\n stroke-dashoffset: -281;\n }\n }\n\n @keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n }\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e from"../bodyEnd/bodyEnd.mjs";import t from"./modal.module.mjs";import{useEffect as n,useState as r}from"react";import i from"classnames";import{FontAwesomeIcon as a}from"@fortawesome/react-fontawesome";import{faXmark as o}from"@fortawesome/free-solid-svg-icons";import{jsx as s,jsxs as c}from"react/jsx-runtime";function l({children:l=null,title:u=``,isOpen:d=!1,onClose:f=()=>null,className:p=``,style:m,hideHeader:h=!1,classNames:g,styles:_}){let[v,y]=r(d),[b,x]=r(d);return n(()=>{d?(y(d),setTimeout(()=>x(!0),1)):(x(!1),setTimeout(()=>y(d),300))},[d]),v?s(e,{children:c(`div`,{className:i(t.modalContainer,g?.container),style:_?.container,children:[s(`div`,{className:i(t.modalWrapper,b&&t.modalWrapperShown,g?.backdrop),style:_?.backdrop,onClick:f}),b&&c(`div`,{className:i(t.modal,b&&t.modalShown,p,g?.modal),style:{...m,..._?.modal},onClick:e=>e.stopPropagation(),children:[!h&&c(`div`,{className:i(t.modalHeader,g?.header),style:_?.header,children:[s(`div`,{className:g?.title,style:_?.title,children:u}),s(a,{onClick:f,icon:o,className:g?.closeButton,style:_?.closeButton})]}),l]})]})}):null}export{l as default};
|
|
2
|
+
//# sourceMappingURL=modal.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modal.mjs","names":[],"sources":["../../../../package/common/modal/modal.tsx"],"sourcesContent":["import React from 'react';\nimport cx from 'classnames';\nimport BodyEnd from 'components/common/bodyEnd';\n\nimport styles from './modal.module.pcss';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faXmark as closeIcon } from '@fortawesome/free-solid-svg-icons';\nimport { ModalProps } from './modal.types';\nimport { useEffect, useState } from 'react';\n\nfunction Modal({\n children = null,\n title = '',\n isOpen = false,\n onClose = () => null,\n className = '',\n style,\n hideHeader = false,\n classNames,\n styles: slotStyles,\n}: ModalProps) {\n const [isRendered, setIsRendered] = useState(isOpen);\n const [animateIn, setAnimateIn] = useState(isOpen);\n\n useEffect(() => {\n if (isOpen) {\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setIsRendered(isOpen);\n setTimeout(() => setAnimateIn(true), 1);\n } else {\n setAnimateIn(false);\n setTimeout(() => setIsRendered(isOpen), 300);\n }\n }, [isOpen]);\n\n if (!isRendered) return null;\n\n return (\n <BodyEnd>\n <div className={cx(styles.modalContainer, classNames?.container)} style={slotStyles?.container}>\n <div\n className={cx(styles.modalWrapper, animateIn && styles.modalWrapperShown, classNames?.backdrop)}\n style={slotStyles?.backdrop}\n onClick={onClose}\n />\n {animateIn && (\n <div\n className={cx(styles.modal, animateIn && styles.modalShown, className, classNames?.modal)}\n style={{ ...style, ...slotStyles?.modal }}\n onClick={(e) => e.stopPropagation()}\n >\n {!hideHeader && (\n <div className={cx(styles.modalHeader, classNames?.header)} style={slotStyles?.header}>\n <div className={classNames?.title} style={slotStyles?.title}>{title}</div>\n <FontAwesomeIcon onClick={onClose} icon={closeIcon} className={classNames?.closeButton} style={slotStyles?.closeButton as React.CSSProperties & Record<`--fa-font-${string}`, string>} />\n </div>\n )}\n {children}\n </div>\n )}\n </div>\n </BodyEnd>\n );\n}\n\nexport default Modal;\n"],"mappings":"iUAUA,SAAS,EAAM,CACb,WAAW,KACX,QAAQ,GACR,SAAS,GACT,cAAgB,KAChB,YAAY,GACZ,QACA,aAAa,GACb,aACA,OAAQ,GACK,CACb,GAAM,CAAC,EAAY,GAAiB,EAAS,CAAM,EAC7C,CAAC,EAAW,GAAgB,EAAS,CAAM,EAejD,OAbA,MAAgB,CACV,GAEF,EAAc,CAAM,EACpB,eAAiB,EAAa,EAAI,EAAG,CAAC,IAEtC,EAAa,EAAK,EAClB,eAAiB,EAAc,CAAM,EAAG,GAAG,EAE/C,EAAG,CAAC,CAAM,CAAC,EAEN,EAGH,EAAC,EAAD,CAAA,SACE,EAAC,MAAD,CAAK,UAAW,EAAG,EAAO,eAAgB,GAAY,SAAS,EAAG,MAAO,GAAY,mBAArF,CACE,EAAC,MAAD,CACE,UAAW,EAAG,EAAO,aAAc,GAAa,EAAO,kBAAmB,GAAY,QAAQ,EAC9F,MAAO,GAAY,SACnB,QAAS,CACV,CAAA,EACA,GACC,EAAC,MAAD,CACE,UAAW,EAAG,EAAO,MAAO,GAAa,EAAO,WAAY,EAAW,GAAY,KAAK,EACxF,MAAO,CAAE,GAAG,EAAO,GAAG,GAAY,KAAM,EACxC,QAAU,GAAM,EAAE,gBAAgB,WAHpC,CAKG,CAAC,GACA,EAAC,MAAD,CAAK,UAAW,EAAG,EAAO,YAAa,GAAY,MAAM,EAAG,MAAO,GAAY,gBAA/E,CACE,EAAC,MAAD,CAAK,UAAW,GAAY,MAAO,MAAO,GAAY,eAAQ,CAAW,CAAA,EACzE,EAAC,EAAD,CAAiB,QAAS,EAAS,KAAM,EAAW,UAAW,GAAY,YAAa,MAAO,GAAY,WAA6E,CAAA,CACrL,IAEN,CACE,GAEJ,GACE,CAAA,EA1Ba,IA4B1B"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e={modal:`modal_L-Fkd`,slideIn:`slideIn_RVIHR`,fadeIn:`fadeIn_XSuIE`,"modal-container":`modal-container_qwKIm`,modalContainer:`modal-container_qwKIm`,"modal-header":`modal-header_DhsRr`,modalHeader:`modal-header_DhsRr`,"modal-wrapper":`modal-wrapper_r5wzq`,modalWrapper:`modal-wrapper_r5wzq`,"modal-wrapper-shown":`modal-wrapper-shown_F0BgK`,modalWrapperShown:`modal-wrapper-shown_F0BgK`};export{e as default};
|
|
2
|
+
//# sourceMappingURL=modal.module.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modal.module.mjs","names":[],"sources":["../../../../package/common/modal/modal.module.pcss"],"sourcesContent":["\n.modal {\n padding: 16px;\n border-radius: var(--default-border-radius);\n background: var(--background-modal);\n color: var(--text-color);\n font-family: var(--default-font);\n box-sizing: border-box;\n position: relative;\n transform-origin: bottom center;\n animation:\n slideIn 0.2s,\n fadeIn 0.3s forwards;\n max-width: 95%;\n max-height: 95%;\n overflow: auto;\n\n @media not (--breakpoint-desktop) {\n max-width: 100%;\n max-height: 100%;\n }\n\n &-container {\n position: absolute;\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n top: 0;\n left: 0;\n\n @media (--breakpoint-tablet) {\n z-index: 1;\n }\n }\n\n &-header {\n display: flex;\n gap: 8px;\n justify-content: space-between;\n margin-bottom: 16px;\n\n div {\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n svg {\n cursor: pointer;\n }\n }\n\n &-wrapper {\n position: fixed;\n width: 100%;\n height: 100%;\n background: #00000052;\n top: 0;\n left: 0;\n transition: all 0.3s ease-in-out;\n opacity: 0;\n\n &-shown {\n opacity: 1;\n }\n }\n}\n\n@keyframes slideIn {\n from {\n transform: scale(0);\n }\n to {\n transform: scale(0.99);\n }\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n"],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../../../package/common/numberInput/index.ts"],"sourcesContent":["import NumberInput from './numberInput';\n\nexport default NumberInput;\n"],"mappings":"iCAEA,IAAA,EAAe"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e from"../interactableDiv/index.mjs";import t from"../input/input.mjs";import n from"./numberInput.module.mjs";import"react";import r from"classnames";import{FontAwesomeIcon as i}from"@fortawesome/react-fontawesome";import{faChevronDown as a,faChevronUp as o}from"@fortawesome/free-solid-svg-icons";import{jsx as s,jsxs as c}from"react/jsx-runtime";import{NumericFormat as l}from"react-number-format";function u({value:u,onChange:d,formValidator:f,label:p,error:m,className:h,allowNegative:g=!1,decimalSeparator:_,thousandSeparator:v,prefix:y,suffix:b,decimalScale:x,placeholder:S,sign:C,showArrows:w=!1,step:T=1,onKeyDown:E,...D}){let O=f==null?u:f.value,k=C!=null&&O!=null?Math.abs(Number(O)):O,A=k==null?``:String(k);function j(e){let t=e;t!==void 0&&(C===`-`&&(t=-Math.abs(t)),C===`+`&&(t=Math.abs(t))),f?.set(t??null),d?.(t)}function M(e){let t=(O!=null&&O!==``?Number(O):0)+e;!g&&C!==`-`&&(t=Math.max(0,t)),C===`-`&&(t=Math.min(0,t)),j(t)}function N(e){if(e.key===`ArrowUp`){e.preventDefault(),M(e.shiftKey?T*10:T);return}if(e.key===`ArrowDown`){e.preventDefault(),M(e.shiftKey?-T*10:-T);return}E?.(e)}let P=C===`-`?`-`:C===`+`?`+`:y,F=w?c(`div`,{className:n.arrows,children:[s(e,{className:n.arrowBtn,tabIndex:-1,onMouseDown:e=>{e.preventDefault(),M(e.shiftKey?T*10:T)},children:s(i,{icon:o})}),s(e,{className:n.arrowBtn,tabIndex:-1,onMouseDown:e=>{e.preventDefault(),M(e.shiftKey?-T*10:-T)},children:s(i,{icon:a})})]}):null;return s(t,{label:p,className:r(n.numberInput,h),value:A,onChange:()=>{},formValidator:null,isValid:f?f.touched?!f.hasError():!0:!m,errorMessage:f?f.getCurrentErrorMessage()??``:m??``,placeholder:S,suffix:F,customInput:s(l,{onValueChange:e=>j(e.floatValue),allowNegative:C==null?g:!1,decimalSeparator:_,thousandSeparator:v,decimalScale:x,fixedDecimalScale:!0,prefix:P,suffix:b,onKeyDown:w?N:E,...D})})}export{u as default};
|
|
2
|
+
//# sourceMappingURL=numberInput.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"numberInput.mjs","names":[],"sources":["../../../../package/common/numberInput/numberInput.tsx"],"sourcesContent":["import type { ReactElement } from 'react';\nimport React from 'react';\nimport cx from 'classnames';\nimport { NumericFormat, NumericFormatProps } from 'react-number-format';\nimport type FormValidator from 'services/formValidation/formValidator';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faChevronUp, faChevronDown } from '@fortawesome/free-solid-svg-icons';\n\nimport styles from './numberInput.module.pcss';\nimport Input from '../input';\nimport InteractableDiv from '../interactableDiv';\n\ninterface Properties\n extends Omit<NumericFormatProps, 'onValueChange' | 'value' | 'customInput' | 'onChange' | 'step' | 'onKeyDown'> {\n value?: number | string;\n onChange?: (value: number | undefined) => void;\n formValidator?: FormValidator | null;\n label?: string;\n error?: string;\n className?: string;\n allowNegative?: boolean;\n decimalSeparator?: string;\n thousandSeparator?: string | boolean;\n prefix?: string;\n suffix?: string;\n decimalScale?: number;\n placeholder?: string;\n sign?: '+' | '-';\n showArrows?: boolean;\n step?: number;\n onKeyDown?: (e: React.KeyboardEvent<HTMLInputElement>) => void;\n}\n\nfunction NumberInput({\n value,\n onChange,\n formValidator,\n label,\n error,\n className,\n allowNegative = false,\n decimalSeparator,\n thousandSeparator,\n prefix,\n suffix,\n decimalScale,\n placeholder,\n sign,\n showArrows = false,\n step = 1,\n onKeyDown: onKeyDownProp,\n ...rest\n}: Properties): ReactElement {\n const rawValue = formValidator != null ? formValidator.value as number | string : value;\n // When a sign is forced, display the absolute value — the prefix character carries the sign visually.\n const displayValue = sign != null && rawValue != null ? Math.abs(Number(rawValue)) : rawValue;\n const controlledValue = displayValue != null ? String(displayValue) : '';\n\n function handleValueChange(floatValue: number | undefined) {\n let out = floatValue;\n if (out !== undefined) {\n if (sign === '-') out = -Math.abs(out);\n if (sign === '+') out = Math.abs(out);\n }\n if (formValidator != null) formValidator.set(out ?? null);\n onChange?.(out);\n }\n\n function handleStep(delta: number) {\n const current = rawValue != null && rawValue !== '' ? Number(rawValue) : 0;\n let next = current + delta;\n if (!allowNegative && sign !== '-') next = Math.max(0, next);\n if (sign === '-') next = Math.min(0, next);\n handleValueChange(next);\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n handleStep(e.shiftKey ? step * 10 : step);\n return;\n }\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n handleStep(e.shiftKey ? -step * 10 : -step);\n return;\n }\n onKeyDownProp?.(e);\n }\n\n const resolvedPrefix = sign === '-' ? '-' : sign === '+' ? '+' : prefix;\n\n const arrowSuffix = showArrows ? (\n <div className={styles.arrows}>\n <InteractableDiv\n className={styles.arrowBtn}\n tabIndex={-1}\n onMouseDown={(e) => { e.preventDefault(); handleStep(e.shiftKey ? step * 10 : step); }}\n >\n <FontAwesomeIcon icon={faChevronUp} />\n </InteractableDiv>\n <InteractableDiv\n className={styles.arrowBtn}\n tabIndex={-1}\n onMouseDown={(e) => { e.preventDefault(); handleStep(e.shiftKey ? -step * 10 : -step); }}\n >\n <FontAwesomeIcon icon={faChevronDown} />\n </InteractableDiv>\n </div>\n ) : null;\n\n return (\n <Input\n label={label}\n className={cx(styles.numberInput, className)}\n value={controlledValue}\n onChange={() => {}}\n formValidator={null}\n isValid={formValidator ? (formValidator.touched ? !formValidator.hasError() : true) : !error}\n errorMessage={formValidator ? (formValidator.getCurrentErrorMessage() ?? '') : (error ?? '')}\n placeholder={placeholder}\n suffix={arrowSuffix}\n customInput={\n <NumericFormat\n onValueChange={(vals) => handleValueChange(vals.floatValue)}\n allowNegative={sign != null ? false : allowNegative}\n decimalSeparator={decimalSeparator}\n thousandSeparator={thousandSeparator}\n decimalScale={decimalScale}\n fixedDecimalScale\n prefix={resolvedPrefix}\n suffix={suffix}\n onKeyDown={showArrows ? handleKeyDown : onKeyDownProp}\n {...rest}\n />\n }\n />\n );\n}\n\nexport default NumberInput;\n"],"mappings":"wZAiCA,SAAS,EAAY,CACnB,QACA,WACA,gBACA,QACA,QACA,YACA,gBAAgB,GAChB,mBACA,oBACA,SACA,SACA,eACA,cACA,OACA,aAAa,GACb,OAAO,EACP,UAAW,EACX,GAAG,GACwB,CAC3B,IAAM,EAAW,GAAiB,KAAgD,EAAzC,EAAc,MAEjD,EAAe,GAAQ,MAAQ,GAAY,KAAO,KAAK,IAAI,OAAO,CAAQ,CAAC,EAAI,EAC/E,EAAkB,GAAgB,KAA8B,GAAvB,OAAO,CAAY,EAElE,SAAS,EAAkB,EAAgC,CACzD,IAAI,EAAM,EACN,IAAQ,IAAA,KACN,IAAS,MAAK,EAAM,CAAC,KAAK,IAAI,CAAG,GACjC,IAAS,MAAK,EAAO,KAAK,IAAI,CAAG,IAEnC,GAAqC,IAAI,GAAO,IAAI,EACxD,IAAW,CAAG,CAChB,CAEA,SAAS,EAAW,EAAe,CAEjC,IAAI,GADY,GAAY,MAAQ,IAAa,GAAK,OAAO,CAAQ,EAAI,GACpD,EACjB,CAAC,GAAiB,IAAS,MAAK,EAAO,KAAK,IAAI,EAAG,CAAI,GACvD,IAAS,MAAK,EAAO,KAAK,IAAI,EAAG,CAAI,GACzC,EAAkB,CAAI,CACxB,CAEA,SAAS,EAAc,EAA0C,CAC/D,GAAI,EAAE,MAAQ,UAAW,CACvB,EAAE,eAAe,EACjB,EAAW,EAAE,SAAW,EAAO,GAAK,CAAI,EACxC,MACF,CACA,GAAI,EAAE,MAAQ,YAAa,CACzB,EAAE,eAAe,EACjB,EAAW,EAAE,SAAW,CAAC,EAAO,GAAK,CAAC,CAAI,EAC1C,MACF,CACA,IAAgB,CAAC,CACnB,CAEA,IAAM,EAAiB,IAAS,IAAM,IAAM,IAAS,IAAM,IAAM,EAE3D,EAAc,EAClB,EAAC,MAAD,CAAK,UAAW,EAAO,gBAAvB,CACE,EAAC,EAAD,CACE,UAAW,EAAO,SAClB,SAAU,GACV,YAAc,GAAM,CAAE,EAAE,eAAe,EAAG,EAAW,EAAE,SAAW,EAAO,GAAK,CAAI,CAAG,WAErF,EAAC,EAAD,CAAiB,KAAM,CAAc,CAAA,CACtB,CAAA,EACjB,EAAC,EAAD,CACE,UAAW,EAAO,SAClB,SAAU,GACV,YAAc,GAAM,CAAE,EAAE,eAAe,EAAG,EAAW,EAAE,SAAW,CAAC,EAAO,GAAK,CAAC,CAAI,CAAG,WAEvF,EAAC,EAAD,CAAiB,KAAM,CAAgB,CAAA,CACxB,CAAA,CACd,IACH,KAEJ,OACE,EAAC,EAAD,CACS,QACP,UAAW,EAAG,EAAO,YAAa,CAAS,EAC3C,MAAO,EACP,aAAgB,CAAC,EACjB,cAAe,KACf,QAAS,EAAiB,EAAc,QAAU,CAAC,EAAc,SAAS,EAAI,GAAQ,CAAC,EACvF,aAAc,EAAiB,EAAc,uBAAuB,GAAK,GAAO,GAAS,GAC5E,cACb,OAAQ,EACR,YACE,EAAC,EAAD,CACE,cAAgB,GAAS,EAAkB,EAAK,UAAU,EAC1D,cAAe,GAAQ,KAAe,EAAR,GACZ,mBACC,oBACL,eACd,kBAAA,GACA,OAAQ,EACA,SACR,UAAW,EAAa,EAAgB,EACxC,GAAI,CACL,CAAA,CAEJ,CAAA,CAEL"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"numberInput.module.mjs","names":[],"sources":["../../../../package/common/numberInput/numberInput.module.pcss"],"sourcesContent":[".numberInput {}\n\n.arrows {\n display: flex;\n flex-direction: column;\n align-self: stretch;\n border-left: 1px solid var(--border-color);\n margin: 4px 0;\n}\n\n.arrowBtn {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n background: none;\n border: none;\n cursor: pointer;\n color: var(--text-dark);\n padding: 0 6px;\n font-size: 0.55rem;\n line-height: 1;\n transition: color 0.15s, background 0.15s;\n\n &:hover {\n color: var(--primary-color);\n background: var(--background-accent-light);\n }\n\n &:active {\n color: var(--primary-lighter);\n }\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e from"../interactableDiv/index.mjs";import t from"./optionPicker.module.mjs";import n from"classnames";import{jsx as r,jsxs as i}from"react/jsx-runtime";function a({className:a=void 0,options:o,onChange:s,value:c,...l}){let u=o.findIndex(e=>e.key===c)*100/o.length;return i(`div`,{...l,className:n(t.optionPicker,a),children:[r(`div`,{className:t.optionPickerChip,style:{left:`${u}%`,width:`${100/o.length}%`}}),o.map(i=>r(e,{onClick:e=>s(i.key,e),className:n(t.optionPickerOption,i.key===c&&t.optionPickerOptionActive),tabIndex:i.key===c?-1:0,children:i.label},i.key))]})}export{a as default};
|
|
2
|
+
//# sourceMappingURL=optionPicker.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"optionPicker.mjs","names":[],"sources":["../../../../package/common/optionPicker/optionPicker.tsx"],"sourcesContent":["import type { ReactElement } from 'react';\nimport { OptionPickerProps } from './optionPicker.types';\nimport cx from 'classnames';\n\nimport styles from './optionPicker.module.pcss';\nimport InteractableDiv from '../interactableDiv';\n\n\nfunction OptionPicker({\n className = undefined,\n options,\n onChange,\n value,\n ...rest\n}: OptionPickerProps): ReactElement {\n const optionPickerLeft = options.findIndex((option) => option.key === value) * 100 / options.length;\n\n return (\n <div {...rest} className={cx(styles.optionPicker, className)}>\n <div className={styles.optionPickerChip} style={{ left: `${optionPickerLeft}%`, width: `${100 / options.length}%` }} />\n {options.map((option) => (\n <InteractableDiv\n onClick={(e) => onChange(option.key, e)}\n key={option.key}\n className={cx(\n styles.optionPickerOption,\n option.key === value && styles.optionPickerOptionActive\n )}\n tabIndex={option.key === value ? -1 : 0}\n >\n {option.label}\n </InteractableDiv>\n ))}\n </div>\n );\n}\n\nexport default OptionPicker;\n"],"mappings":"iKAQA,SAAS,EAAa,CACpB,YAAY,IAAA,GACZ,UACA,WACA,QACA,GAAG,GAC+B,CAClC,IAAM,EAAmB,EAAQ,UAAW,GAAW,EAAO,MAAQ,CAAK,EAAI,IAAM,EAAQ,OAE7F,OACE,EAAC,MAAD,CAAK,GAAI,EAAM,UAAW,EAAG,EAAO,aAAc,CAAS,WAA3D,CACE,EAAC,MAAD,CAAK,UAAW,EAAO,iBAAkB,MAAO,CAAE,KAAM,GAAG,EAAiB,GAAI,MAAO,GAAG,IAAM,EAAQ,OAAO,EAAG,CAAI,CAAA,EACrH,EAAQ,IAAK,GACZ,EAAC,EAAD,CACE,QAAU,GAAM,EAAS,EAAO,IAAK,CAAC,EAEtC,UAAW,EACT,EAAO,mBACP,EAAO,MAAQ,GAAS,EAAO,wBACjC,EACA,SAAU,EAAO,MAAQ,EAAQ,GAAK,WAErC,EAAO,KACO,EARV,EAAO,GAQG,CAClB,CACE,GAET"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e={optionPicker:`optionPicker_Yx82s`,"optionPicker-chip":`optionPicker-chip_ywtvr`,optionPickerChip:`optionPicker-chip_ywtvr`,"optionPicker-option":`optionPicker-option_uq0vK`,optionPickerOption:`optionPicker-option_uq0vK`,"optionPicker-option-active":`optionPicker-option-active_yUECW`,optionPickerOptionActive:`optionPicker-option-active_yUECW`};export{e as default};
|
|
2
|
+
//# sourceMappingURL=optionPicker.module.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"optionPicker.module.mjs","names":[],"sources":["../../../../package/common/optionPicker/optionPicker.module.pcss"],"sourcesContent":[".optionPicker{\n display: flex;\n width: 100%;\n gap: var(--spacing-m);\n border-radius: var(--default-border-radius);\n border: 1px solid var(--border-color);\n justify-content: space-around;\n position: relative;\n overflow: hidden;\n\n &-chip {\n position: absolute;\n height: 100%;\n top: 0;\n left: 0;\n background: var(--primary-color);\n border-radius: var(--default-border-radius);\n transition: left 0.25s ease-in-out, width 0.25s ease-in-out;\n }\n\n &-option {\n position: relative;\n width: 100%;\n height: 100%;\n display: block;\n text-align: center;\n cursor: pointer;\n padding: var(--spacing-m);\n overflow: hidden;\n text-overflow: ellipsis;\n border-radius: var(--default-border-radius);\n transition: color 0.25s;\n\n &:focus {\n outline: var(--primary-color) solid 2px;\n outline-offset: -2px;\n }\n\n &-active {\n color: var(--text-on-primary);\n }\n }\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e from"../../hooks/useWindowSize.mjs";import t from"./overscroll.module.mjs";import{useCallback as n,useEffect as r,useRef as i}from"react";import a from"classnames";import{Fragment as o,jsx as s,jsxs as c}from"react/jsx-runtime";function l({children:l=null,overscrollContent:u=null,overscrollContentDesktop:d=null,centerHeader:f=!0,min:p=10,max:m=80,start:h=30,unit:g=`%`,mobileOnly:_=!0,onScrollChange:v=()=>{},scrollDisabled:y=!1}){let{isMobileSize:b,height:x}=e(),S=i(null),C=i(null),w=i(null),T=i(!1),E=i(null),D=i(v);D.current=v;let O=n(e=>{let t;if(g===`%`){if(!w.current)return;let n=w.current.clientHeight;t=Math.max(n*p/100,n-e)}else t=Math.max(p,m-e);C.current&&(C.current.style.height=`${t}px`)},[p,m,g]),k=n(()=>{let e;if(g===`%`){if(!w.current)return;let t=w.current.clientHeight/m*100;e=w.current.clientHeight-h/100*t}else e=m-h;S.current&&(S.current.scrollTop=e,O(e))},[m,h,g,O]);r(()=>{let e=setTimeout(k,100);return()=>clearTimeout(e)},[k]),r(()=>{S.current&&(S.current.style.overflow=y?`hidden`:`auto`)},[y]);let A=i(b);r(()=>{b&&!A.current&&k(),A.current=b},[b,k]);let j=i(_);r(()=>{!_&&j.current&&k(),j.current=_},[_,k]);let M=i(x);r(()=>{b&&x!==M.current&&S.current&&O(S.current.scrollTop),M.current=x},[x,b,O]);function N(e){O(e.currentTarget.scrollTop),T.current||(T.current=!0,D.current(!0)),E.current&&clearTimeout(E.current),E.current=setTimeout(()=>{E.current=null,T.current=!1,D.current(!1)},500)}if(_&&!b)return d?c(`div`,{children:[d,l]}):s(o,{children:l});let P=g===`%`?`${100-p}%`:`calc(100% - ${p}px)`;return c(`div`,{className:t.overscroll,ref:S,onScroll:N,children:[s(`div`,{className:t.overscrollHeaderContainer,style:{height:`${m}${g}`},ref:w,children:s(`div`,{className:a(t.overscrollHeader,f&&t.overscrollHeaderCentered),ref:C,children:u})}),s(`div`,{style:{minHeight:P},children:l})]})}export{l as default};
|
|
2
|
+
//# sourceMappingURL=overscroll.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overscroll.mjs","names":[],"sources":["../../../../package/common/overscroll/overscroll.tsx"],"sourcesContent":["import { useRef, useEffect, useCallback } from 'react';\nimport cx from 'classnames';\nimport type { UIEvent } from 'react';\nimport useWindowSize from '../../hooks/useWindowSize';\nimport styles from './overscroll.module.pcss';\nimport type { OverscrollProps } from './overscroll.types';\n\nexport default function Overscroll({\n children = null,\n overscrollContent = null,\n overscrollContentDesktop = null,\n centerHeader = true,\n min = 10,\n max = 80,\n start = 30,\n unit = '%',\n mobileOnly = true,\n onScrollChange = () => {},\n scrollDisabled = false,\n}: OverscrollProps) {\n const { isMobileSize, height } = useWindowSize();\n\n const overscrollRef = useRef<HTMLDivElement>(null);\n const overscrollHeaderRef = useRef<HTMLDivElement>(null);\n const overscrollHeaderContainerRef = useRef<HTMLDivElement>(null);\n const isScrollingRef = useRef(false);\n const scrollTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const onScrollChangeRef = useRef(onScrollChange);\n onScrollChangeRef.current = onScrollChange;\n\n const updateHeaderHeight = useCallback(\n (scrollTop: number) => {\n let h: number;\n if (unit === '%') {\n if (!overscrollHeaderContainerRef.current) return;\n const containerH = overscrollHeaderContainerRef.current.clientHeight;\n h = Math.max((containerH * min) / 100, containerH - scrollTop);\n } else {\n h = Math.max(min, max - scrollTop);\n }\n if (overscrollHeaderRef.current) {\n overscrollHeaderRef.current.style.height = `${h}px`;\n }\n },\n [min, max, unit],\n );\n\n const scrollToInitialPosition = useCallback(() => {\n let toScroll: number;\n if (unit === '%') {\n if (!overscrollHeaderContainerRef.current) return;\n const hundredPerc = (overscrollHeaderContainerRef.current.clientHeight / max) * 100;\n toScroll =\n overscrollHeaderContainerRef.current.clientHeight - hundredPerc * (start / 100);\n } else {\n toScroll = max - start;\n }\n if (overscrollRef.current) {\n overscrollRef.current.scrollTop = toScroll;\n updateHeaderHeight(toScroll);\n }\n }, [max, start, unit, updateHeaderHeight]);\n\n // Initial scroll position on mount (and if scroll-related props change)\n useEffect(() => {\n const id = setTimeout(scrollToInitialPosition, 100);\n return () => clearTimeout(id);\n }, [scrollToInitialPosition]);\n\n // Toggle overflow when scrollDisabled changes\n useEffect(() => {\n if (overscrollRef.current) {\n overscrollRef.current.style.overflow = scrollDisabled ? 'hidden' : 'auto';\n }\n }, [scrollDisabled]);\n\n // Scroll to initial position when entering mobile view\n const prevIsMobileRef = useRef(isMobileSize);\n useEffect(() => {\n if (isMobileSize && !prevIsMobileRef.current) scrollToInitialPosition();\n prevIsMobileRef.current = isMobileSize;\n }, [isMobileSize, scrollToInitialPosition]);\n\n // Scroll to initial position when mobileOnly is turned off (full overscroll DOM just mounted)\n const prevMobileOnlyRef = useRef(mobileOnly);\n useEffect(() => {\n if (!mobileOnly && prevMobileOnlyRef.current) scrollToInitialPosition();\n prevMobileOnlyRef.current = mobileOnly;\n }, [mobileOnly, scrollToInitialPosition]);\n\n // Update header height on window resize while in mobile view\n const prevHeightRef = useRef(height);\n useEffect(() => {\n if (isMobileSize && height !== prevHeightRef.current && overscrollRef.current) {\n updateHeaderHeight(overscrollRef.current.scrollTop);\n }\n prevHeightRef.current = height;\n }, [height, isMobileSize, updateHeaderHeight]);\n\n function handleScroll(e: UIEvent<HTMLDivElement>) {\n updateHeaderHeight(e.currentTarget.scrollTop);\n if (!isScrollingRef.current) {\n isScrollingRef.current = true;\n onScrollChangeRef.current(true);\n }\n if (scrollTimeoutRef.current) clearTimeout(scrollTimeoutRef.current);\n scrollTimeoutRef.current = setTimeout(() => {\n scrollTimeoutRef.current = null;\n isScrollingRef.current = false;\n onScrollChangeRef.current(false);\n }, 500);\n }\n\n if (mobileOnly && !isMobileSize) {\n if (overscrollContentDesktop) return <div>{overscrollContentDesktop}{children}</div>;\n return <>{children}</>;\n }\n\n const contentMinHeight = unit === '%' ? `${100 - min}%` : `calc(100% - ${min}px)`;\n\n return (\n <div className={styles.overscroll} ref={overscrollRef} onScroll={handleScroll}>\n <div\n className={styles.overscrollHeaderContainer}\n style={{ height: `${max}${unit}` }}\n ref={overscrollHeaderContainerRef}\n >\n <div\n className={cx(styles.overscrollHeader, centerHeader && styles.overscrollHeaderCentered)}\n ref={overscrollHeaderRef}\n >\n {overscrollContent}\n </div>\n </div>\n <div style={{ minHeight: contentMinHeight }}>{children}</div>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e={overscroll:`overscroll_Ij750`,"overscroll-header":`overscroll-header_S6vYc`,overscrollHeader:`overscroll-header_S6vYc`,"overscroll-header-centered":`overscroll-header-centered_8VlsP`,overscrollHeaderCentered:`overscroll-header-centered_8VlsP`,"overscroll-header-container":`overscroll-header-container_iignp`,overscrollHeaderContainer:`overscroll-header-container_iignp`};export{e as default};
|
|
2
|
+
//# sourceMappingURL=overscroll.module.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overscroll.module.mjs","names":[],"sources":["../../../../package/common/overscroll/overscroll.module.pcss"],"sourcesContent":[".overscroll {\n height: 100vh;\n overflow: auto;\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n\n &::-webkit-scrollbar {\n display: none;\n }\n\n &-header {\n position: absolute;\n bottom: 0;\n width: 100%;\n\n &-centered {\n display: flex;\n justify-content: center;\n align-items: center;\n }\n\n &-container {\n position: relative;\n }\n }\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e from"./progressBar.module.mjs";import t from"classnames";import{jsx as n}from"react/jsx-runtime";function r(e){let t=e.replace(`#`,``),n=parseInt(t.substring(0,2),16),r=parseInt(t.substring(2,4),16),i=parseInt(t.substring(4,6),16);return(.299*n+.587*r+.114*i)/255>.5?`#000000`:`#ffffff`}function i({className:i=void 0,total:a=100,progress:o=0,style:s=void 0,...c}){function l(){let i=[];return Array.isArray(o)?i.push(...o):typeof o==`object`?i.push(o):i.push({amount:o}),i.map((o,c)=>{let l=a?o.amount/a*100:0;return n(`div`,{className:t(e.progressBarFill,c===i.length-1&&e.progressBarFillEnd,o.class),style:{width:`${l}%`,background:o.color||void 0,...s||{}},title:o.label?`${o.label}: ${o.amount}`:void 0,children:o.label&&n(`div`,{className:e.progressBarLabel,style:o.color?{color:r(o.color)}:{},children:o.label})},c)})}return n(`div`,{...c,className:t(e.progressBar,i),style:s,children:l()})}export{i as default};
|
|
2
|
+
//# sourceMappingURL=progressBar.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progressBar.mjs","names":[],"sources":["../../../../package/common/progressBar/progressBar.tsx"],"sourcesContent":["import type { ReactElement } from 'react';\nimport cx from 'classnames';\nimport { Progress, ProgressBarProps } from './progressBar.types';\n\nimport styles from './progressBar.module.pcss';\n\nexport function getContrastColor(hexColor: string): string {\n const hex = hexColor.replace('#', '');\n const r = parseInt(hex.substring(0, 2), 16);\n const g = parseInt(hex.substring(2, 4), 16);\n const b = parseInt(hex.substring(4, 6), 16);\n \n const luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;\n return luminance > 0.5 ? '#000000' : '#ffffff';\n}\n\nfunction ProgressBar({\n className = undefined,\n total = 100,\n progress = 0,\n style = undefined,\n ...rest\n}: ProgressBarProps): ReactElement {\n\n function renderProgressBars() {\n const progressArray: Progress[] = [];\n\n if (Array.isArray(progress)) progressArray.push(...progress);\n else if (typeof progress === 'object') progressArray.push(progress);\n else progressArray.push({ amount: progress });\n\n return progressArray.map((prog, index) => {\n const widthPercentage = !total ? 0 : (prog.amount / total) * 100;\n\n return (\n <div\n key={index}\n className={cx(\n styles.progressBarFill,\n index === progressArray.length - 1 && styles.progressBarFillEnd,\n prog.class,\n )}\n style={{\n width: `${widthPercentage}%`,\n background: prog.color || undefined,\n ...(style || {}),\n }}\n title={prog.label ? `${prog.label}: ${prog.amount}` : undefined}\n >\n {prog.label && <div className={styles.progressBarLabel} style={prog.color ? { color: getContrastColor(prog.color) } : {}}>{prog.label}</div>}\n </div>\n );\n });\n }\n\n return (\n <div {...rest} className={cx(styles.progressBar, className)} style={style}>\n {renderProgressBars()}\n </div>\n );\n}\n\nexport default ProgressBar;\n"],"mappings":"0GAMA,SAAgB,EAAiB,EAA0B,CACzD,IAAM,EAAM,EAAS,QAAQ,IAAK,EAAE,EAC9B,EAAI,SAAS,EAAI,UAAU,EAAG,CAAC,EAAG,EAAE,EACpC,EAAI,SAAS,EAAI,UAAU,EAAG,CAAC,EAAG,EAAE,EACpC,EAAI,SAAS,EAAI,UAAU,EAAG,CAAC,EAAG,EAAE,EAG1C,OADmB,KAAQ,EAAI,KAAQ,EAAI,KAAQ,GAAK,IACrC,GAAM,UAAY,SACvC,CAEA,SAAS,EAAY,CACnB,YAAY,IAAA,GACZ,QAAQ,IACR,WAAW,EACX,QAAQ,IAAA,GACR,GAAG,GAC8B,CAEjC,SAAS,GAAqB,CAC5B,IAAM,EAA4B,CAAC,EAMnC,OAJI,MAAM,QAAQ,CAAQ,EAAG,EAAc,KAAK,GAAG,CAAQ,EAClD,OAAO,GAAa,SAAU,EAAc,KAAK,CAAQ,EAC7D,EAAc,KAAK,CAAE,OAAQ,CAAS,CAAC,EAErC,EAAc,KAAK,EAAM,IAAU,CACxC,IAAM,EAAmB,EAAa,EAAK,OAAS,EAAS,IAA5B,EAEjC,OACE,EAAC,MAAD,CAEE,UAAW,EACT,EAAO,gBACP,IAAU,EAAc,OAAS,GAAK,EAAO,mBAC7C,EAAK,KACP,EACA,MAAO,CACL,MAAO,GAAG,EAAgB,GAC1B,WAAY,EAAK,OAAS,IAAA,GAC1B,GAAI,GAAS,CAAC,CAChB,EACA,MAAO,EAAK,MAAQ,GAAG,EAAK,MAAM,IAAI,EAAK,SAAW,IAAA,YAErD,EAAK,OAAS,EAAC,MAAD,CAAK,UAAW,EAAO,iBAAkB,MAAO,EAAK,MAAQ,CAAE,MAAO,EAAiB,EAAK,KAAK,CAAE,EAAI,CAAC,WAAI,EAAK,KAAW,CAAA,CACxI,EAdE,CAcF,CAET,CAAC,CACH,CAEA,OACE,EAAC,MAAD,CAAK,GAAI,EAAM,UAAW,EAAG,EAAO,YAAa,CAAS,EAAU,iBACjE,EAAmB,CACjB,CAAA,CAET"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e={progressBar:`progressBar_LO0sX`,"progressBar-fill":`progressBar-fill_rt32j`,progressBarFill:`progressBar-fill_rt32j`,"progressBar-fill-end":`progressBar-fill-end_71wL3`,progressBarFillEnd:`progressBar-fill-end_71wL3`,"progressBar-label":`progressBar-label_jWud2`,progressBarLabel:`progressBar-label_jWud2`,"progressBar-label-custom":`progressBar-label-custom_sSump`,progressBarLabelCustom:`progressBar-label-custom_sSump`};export{e as default};
|
|
2
|
+
//# sourceMappingURL=progressBar.module.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progressBar.module.mjs","names":[],"sources":["../../../../package/common/progressBar/progressBar.module.pcss"],"sourcesContent":[".progressBar{\n min-width: 100px;\n min-height: 10px;\n background-color: #e0e0e0;\n border-radius: var(--default-border-radius);\n overflow: hidden;\n display: flex;\n align-items: center;\n\n &-fill {\n height: stretch;\n background-color: var(--primary-color);\n width: 0;\n display: flex;\n align-items: center;\n overflow: hidden;\n transition: width .3s ease;\n\n &-end {\n border-radius: 0 var(--default-border-radius) var(--default-border-radius) 0;\n }\n }\n\n &-label {\n color: white;\n font-size: 12px;\n padding: 0 5px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n &-custom {\n mix-blend-mode: difference;\n }\n }\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e from"./ripple.module.mjs";import{forwardRef as t,useEffect as n,useImperativeHandle as r,useRef as i}from"react";import{jsx as a,jsxs as o}from"react/jsx-runtime";var s=t(function({disabled:t=!1,children:s,className:c,style:l,overflowHidden:u=!0,rippleAnimationLength:d=.6,rippleBackground:f=`rgba(255, 255, 255, 0.2)`,manualOnly:p=!1,...m},h){let g=i(null),_=i(null);function v(n,r){if(t)return;let i=document.createElement(`div`);i.style.left=`${n}px`,i.style.top=`${r}px`,i.style.background=f,i.classList.add(e.ripple),g.current?.appendChild(i),setTimeout(()=>{g.current?.removeChild(i)},d*1e3+50)}function y(e){if(!g.current)return;let t=g.current.getBoundingClientRect();v(e.clientX-t.x,e.clientY-t.y)}r(h,()=>({addRipple(){let e=g.current;e&&v(e.offsetWidth/2,e.offsetHeight/2)}})),n(()=>{_.current=y}),n(()=>{if(s!==void 0||p)return;let e=g.current?.parentElement;if(!e)return;let t=e=>_.current?.(e);return e.addEventListener(`click`,t),()=>e.removeEventListener(`click`,t)},[s,p]);let b={"--ripple-animation-length":`${d}s`};return s===void 0?a(`div`,{className:e.rippleContainer,ref:g,style:{overflow:u?`hidden`:`visible`,...b}}):o(`div`,{...m,className:c,onClick:p?void 0:e=>y(e),style:{position:`relative`,...l},children:[s,a(`div`,{className:e.rippleContainer,ref:g,style:{overflow:u?`hidden`:`visible`,...b}})]})});export{s as default};
|
|
2
|
+
//# sourceMappingURL=ripple.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ripple.mjs","names":[],"sources":["../../../../package/common/ripple/ripple.tsx"],"sourcesContent":["import React, { useRef, useEffect, useImperativeHandle, forwardRef } from 'react';\n\nimport styles from './ripple.module.pcss';\nimport type { RippleProps, RippleHandle } from './ripple.types';\n\nexport type { RippleProps, RippleHandle };\n\nconst Ripple = forwardRef<RippleHandle, RippleProps>(function Ripple({\n disabled = false,\n children,\n className,\n style,\n overflowHidden = true,\n rippleAnimationLength = 0.6,\n rippleBackground = 'rgba(255, 255, 255, 0.2)',\n manualOnly = false,\n ...rest\n}, ref) {\n const containerRef = useRef<HTMLDivElement>(null);\n const addRippleRef = useRef<((event: MouseEvent) => void) | null>(null);\n\n function spawnRipple(x: number, y: number) {\n if (disabled) return;\n const ripple = document.createElement('div');\n ripple.style.left = `${x}px`;\n ripple.style.top = `${y}px`;\n ripple.style.background = rippleBackground;\n ripple.classList.add(styles.ripple);\n containerRef.current?.appendChild(ripple);\n setTimeout(() => {\n containerRef.current?.removeChild(ripple);\n }, rippleAnimationLength * 1000 + 50);\n }\n\n function addRipple(event: MouseEvent | React.MouseEvent) {\n if (!containerRef.current) return;\n const pos = containerRef.current.getBoundingClientRect();\n spawnRipple(event.clientX - pos.x, event.clientY - pos.y);\n }\n\n useImperativeHandle(ref, () => ({\n addRipple() {\n const el = containerRef.current;\n if (!el) return;\n spawnRipple(el.offsetWidth / 2, el.offsetHeight / 2);\n },\n }));\n\n useEffect(() => {\n addRippleRef.current = addRipple;\n });\n\n useEffect(() => {\n if (children !== undefined || manualOnly) return;\n const parent = containerRef.current?.parentElement;\n if (!parent) return;\n const handler = (e: MouseEvent) => addRippleRef.current?.(e);\n parent.addEventListener('click', handler);\n return () => parent.removeEventListener('click', handler);\n }, [children, manualOnly]);\n\n const containerStyle: React.CSSProperties & { '--ripple-animation-length'?: string } = {\n '--ripple-animation-length': `${rippleAnimationLength}s`,\n };\n\n if (children !== undefined) {\n return (\n <div\n {...rest}\n className={className}\n onClick={manualOnly ? undefined : (e) => addRipple(e)}\n style={{\n position: 'relative',\n ...style,\n }}\n >\n {children}\n <div\n className={styles.rippleContainer}\n ref={containerRef}\n style={{\n overflow: overflowHidden ? 'hidden' : 'visible',\n ...containerStyle,\n }}\n />\n </div>\n );\n }\n\n return (\n <div\n className={styles.rippleContainer}\n ref={containerRef}\n style={{\n overflow: overflowHidden ? 'hidden' : 'visible',\n ...containerStyle,\n }}\n />\n );\n});\n\nexport default Ripple;\n"],"mappings":"4KAOA,IAAM,EAAS,EAAsC,SAAgB,CACnE,WAAW,GACX,WACA,YACA,QACA,iBAAiB,GACjB,wBAAwB,GACxB,mBAAmB,2BACnB,aAAa,GACb,GAAG,GACF,EAAK,CACN,IAAM,EAAe,EAAuB,IAAI,EAC1C,EAAe,EAA6C,IAAI,EAEtE,SAAS,EAAY,EAAW,EAAW,CACzC,GAAI,EAAU,OACd,IAAM,EAAS,SAAS,cAAc,KAAK,EAC3C,EAAO,MAAM,KAAO,GAAG,EAAE,IACzB,EAAO,MAAM,IAAM,GAAG,EAAE,IACxB,EAAO,MAAM,WAAa,EAC1B,EAAO,UAAU,IAAI,EAAO,MAAM,EAClC,EAAa,SAAS,YAAY,CAAM,EACxC,eAAiB,CACf,EAAa,SAAS,YAAY,CAAM,CAC1C,EAAG,EAAwB,IAAO,EAAE,CACtC,CAEA,SAAS,EAAU,EAAsC,CACvD,GAAI,CAAC,EAAa,QAAS,OAC3B,IAAM,EAAM,EAAa,QAAQ,sBAAsB,EACvD,EAAY,EAAM,QAAU,EAAI,EAAG,EAAM,QAAU,EAAI,CAAC,CAC1D,CAEA,EAAoB,OAAY,CAC9B,WAAY,CACV,IAAM,EAAK,EAAa,QACnB,GACL,EAAY,EAAG,YAAc,EAAG,EAAG,aAAe,CAAC,CACrD,CACF,EAAE,EAEF,MAAgB,CACd,EAAa,QAAU,CACzB,CAAC,EAED,MAAgB,CACd,GAAI,IAAa,IAAA,IAAa,EAAY,OAC1C,IAAM,EAAS,EAAa,SAAS,cACrC,GAAI,CAAC,EAAQ,OACb,IAAM,EAAW,GAAkB,EAAa,UAAU,CAAC,EAE3D,OADA,EAAO,iBAAiB,QAAS,CAAO,MAC3B,EAAO,oBAAoB,QAAS,CAAO,CAC1D,EAAG,CAAC,EAAU,CAAU,CAAC,EAEzB,IAAM,EAAiF,CACrF,4BAA6B,GAAG,EAAsB,EACxD,EA0BA,OAxBI,IAAa,IAAA,GAyBf,EAAC,MAAD,CACE,UAAW,EAAO,gBAClB,IAAK,EACL,MAAO,CACL,SAAU,EAAiB,SAAW,UACtC,GAAG,CACL,CACD,CAAA,EA9BC,EAAC,MAAD,CACE,GAAI,EACO,YACX,QAAS,EAAa,IAAA,GAAa,GAAM,EAAU,CAAC,EACpD,MAAO,CACL,SAAU,WACV,GAAG,CACL,WAPF,CASG,EACD,EAAC,MAAD,CACE,UAAW,EAAO,gBAClB,IAAK,EACL,MAAO,CACL,SAAU,EAAiB,SAAW,UACtC,GAAG,CACL,CACD,CAAA,CACE,GAcX,CAAC"}
|