@orbe-agro/client-core 5.3.8 → 5.3.10
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/@ecme/assets/styles/app.css +1 -1
- package/dist/@ecme/assets/styles/components/_input.css +1 -1
- package/dist/@ecme/assets/styles/components/_select.css +1 -1
- package/dist/@ecme/assets/styles/components/_tabs.css +1 -1
- package/dist/@ecme/assets/styles/components/index.css +1 -1
- package/dist/@ecme/assets/styles/tailwind/index.css +1 -1
- package/dist/@ecme/auth/AuthContext.js.map +1 -1
- package/dist/@ecme/auth/AuthProvider.js.map +1 -1
- package/dist/@ecme/components/docs/DemoCard/CardFooter.js.map +1 -1
- package/dist/@ecme/components/docs/DemoCard/DemoCard.js.map +1 -1
- package/dist/@ecme/components/docs/DocumentationNav.js.map +1 -1
- package/dist/@ecme/components/layouts/AuthLayout/AuthLayout.js.map +1 -1
- package/dist/@ecme/components/layouts/PostLoginLayout/PostLoginLayout.js.map +1 -1
- package/dist/@ecme/components/route/AppRoute.js.map +1 -1
- package/dist/@ecme/components/shared/AbbreviateNumber.js.map +1 -1
- package/dist/@ecme/components/shared/Affix.js.map +1 -1
- package/dist/@ecme/components/shared/AutoComplete.js.map +1 -1
- package/dist/@ecme/components/shared/CalendarView.js.map +1 -1
- package/dist/@ecme/components/shared/Chart.js.map +1 -1
- package/dist/@ecme/components/shared/ConfirmDialog.js.map +1 -1
- package/dist/@ecme/components/shared/DataTable.js.map +1 -1
- package/dist/@ecme/components/shared/DebounceInput.js.map +1 -1
- package/dist/@ecme/components/shared/GanttChart/TaskListTable.js.map +1 -1
- package/dist/@ecme/components/shared/GanttChart/getStartEndDateForProject.js.map +1 -1
- package/dist/@ecme/components/shared/GanttChart/tasksPreProcess.js.map +1 -1
- package/dist/@ecme/components/shared/Masonry/breakpoints.js.map +1 -1
- package/dist/@ecme/components/shared/Masonry/useCoulmnsCount.js.map +1 -1
- package/dist/@ecme/components/shared/Masonry/useMasonry.js.map +1 -1
- package/dist/@ecme/components/shared/Masonry/useWindowWidth.js.map +1 -1
- package/dist/@ecme/components/shared/OtpInput.js.map +1 -1
- package/dist/@ecme/components/shared/PasswordInput.js.map +1 -1
- package/dist/@ecme/components/shared/RegionMap.js.map +1 -1
- package/dist/@ecme/components/shared/RichTextEditor/RichTextEditor.js.map +1 -1
- package/dist/@ecme/components/shared/StickyFooter.js.map +1 -1
- package/dist/@ecme/components/shared/StrictModeDroppable.js.map +1 -1
- package/dist/@ecme/components/shared/ToggleDrawer.js.map +1 -1
- package/dist/@ecme/components/shared/UsersAvatarGroup.js.map +1 -1
- package/dist/@ecme/components/template/HorizontalMenuContent/HorizontalMenuDropdown.js.map +1 -1
- package/dist/@ecme/components/template/HorizontalMenuContent/HorizontalMenuDropdownContent.js.map +1 -1
- package/dist/@ecme/components/template/HorizontalMenuContent/HorizontalMenuDropdownTrigger.js.map +1 -1
- package/dist/@ecme/components/template/LanguageSelector.js.map +1 -1
- package/dist/@ecme/components/template/MobileNav.js.map +1 -1
- package/dist/@ecme/components/template/Notification/Notification.js.map +1 -1
- package/dist/@ecme/components/template/Search.js.map +1 -1
- package/dist/@ecme/components/template/SideNavToggle.js.map +1 -1
- package/dist/@ecme/components/template/SidePanel/SidePanel.js.map +1 -1
- package/dist/@ecme/components/template/StackedSideNav/StackedSideNav.js.map +1 -1
- package/dist/@ecme/components/template/StackedSideNav/StackedSideNavMini.js.map +1 -1
- package/dist/@ecme/components/template/StackedSideNav/StackedSideNavSecondary.js.map +1 -1
- package/dist/@ecme/components/template/ThemeConfigurator/CopyButton.js.map +1 -1
- package/dist/@ecme/components/template/ThemeConfigurator/DirectionSwitcher.js.map +1 -1
- package/dist/@ecme/components/template/ThemeConfigurator/LayoutSwitcher.js.map +1 -1
- package/dist/@ecme/components/template/ThemeConfigurator/ModeSwitcher.js.map +1 -1
- package/dist/@ecme/components/template/UserProfileDropdown.js.map +1 -1
- package/dist/@ecme/components/template/VerticalMenuContent/VerticalMenuContent.js.map +1 -1
- package/dist/@ecme/components/ui/Alert/Alert.js.map +1 -1
- package/dist/@ecme/components/ui/Avatar/Avatar.js.map +1 -1
- package/dist/@ecme/components/ui/Avatar/AvatarGroup.js.map +1 -1
- package/dist/@ecme/components/ui/Button/Button.js.map +1 -1
- package/dist/@ecme/components/ui/Card/Card.js.map +1 -1
- package/dist/@ecme/components/ui/Checkbox/Checkbox.js.map +1 -1
- package/dist/@ecme/components/ui/Checkbox/Group.js.map +1 -1
- package/dist/@ecme/components/ui/DatePicker/BasePicker.js.map +1 -1
- package/dist/@ecme/components/ui/DatePicker/Calendar.js.map +1 -1
- package/dist/@ecme/components/ui/DatePicker/CalendarBase.js.map +1 -1
- package/dist/@ecme/components/ui/DatePicker/DatePicker.js.map +1 -1
- package/dist/@ecme/components/ui/DatePicker/DatePickerRange.js.map +1 -1
- package/dist/@ecme/components/ui/DatePicker/DateTimepicker.js.map +1 -1
- package/dist/@ecme/components/ui/DatePicker/RangeCalendar.js.map +1 -1
- package/dist/@ecme/components/ui/DatePicker/tables/DateTable.js.map +1 -1
- package/dist/@ecme/components/ui/DatePicker/tables/MonthTable.js.map +1 -1
- package/dist/@ecme/components/ui/DatePicker/tables/YearTable.js.map +1 -1
- package/dist/@ecme/components/ui/DatePicker/tables/components/Month.js.map +1 -1
- package/dist/@ecme/components/ui/DatePicker/utils/getDecadeRange.js.map +1 -1
- package/dist/@ecme/components/ui/DatePicker/utils/getMonthDays.js.map +1 -1
- package/dist/@ecme/components/ui/Dialog/Dialog.js.map +1 -1
- package/dist/@ecme/components/ui/Drawer/Drawer.js.map +1 -1
- package/dist/@ecme/components/ui/Dropdown/DropdownItem.js.map +1 -1
- package/dist/@ecme/components/ui/Dropdown/DropdownMenu.js.map +1 -1
- package/dist/@ecme/components/ui/Dropdown/context/menuContext.js.map +1 -1
- package/dist/@ecme/components/ui/Form/FormItem.js.map +1 -1
- package/dist/@ecme/components/ui/Input/Input.js.map +1 -1
- package/dist/@ecme/components/ui/Menu/MenuCollapse.js.map +1 -1
- package/dist/@ecme/components/ui/MenuItem/index.js.map +1 -1
- package/dist/@ecme/components/ui/Notification/Notification.js.map +1 -1
- package/dist/@ecme/components/ui/Pagination/Next.js.map +1 -1
- package/dist/@ecme/components/ui/Pagination/Pagers.js.map +1 -1
- package/dist/@ecme/components/ui/Pagination/Pagination.js.map +1 -1
- package/dist/@ecme/components/ui/Pagination/Prev.js.map +1 -1
- package/dist/@ecme/components/ui/Progress/Circle.js.map +1 -1
- package/dist/@ecme/components/ui/Progress/Progress.js.map +1 -1
- package/dist/@ecme/components/ui/Radio/Group.js.map +1 -1
- package/dist/@ecme/components/ui/Radio/Radio.js.map +1 -1
- package/dist/@ecme/components/ui/Segment/Segment.js.map +1 -1
- package/dist/@ecme/components/ui/Segment/SegmentItem.js.map +1 -1
- package/dist/@ecme/components/ui/Select/Select.js.map +1 -1
- package/dist/@ecme/components/ui/Steps/StepItem.js.map +1 -1
- package/dist/@ecme/components/ui/Steps/Steps.js.map +1 -1
- package/dist/@ecme/components/ui/Switcher/Switcher.js.map +1 -1
- package/dist/@ecme/components/ui/Tabs/TabNav.js.map +1 -1
- package/dist/@ecme/components/ui/TimeInput/AmPmInput.js.map +1 -1
- package/dist/@ecme/components/ui/TimeInput/TimeInput.js.map +1 -1
- package/dist/@ecme/components/ui/TimeInput/TimeInputField.js.map +1 -1
- package/dist/@ecme/components/ui/TimeInput/TimeInputRange.js.map +1 -1
- package/dist/@ecme/components/ui/TimeInput/utils/createAmPmHandler.js.map +1 -1
- package/dist/@ecme/components/ui/TimeInput/utils/createTimeHandler.js.map +1 -1
- package/dist/@ecme/components/ui/Tooltip/Arrow.js.map +1 -1
- package/dist/@ecme/components/ui/Tooltip/Tooltip.js.map +1 -1
- package/dist/@ecme/components/ui/Upload/Upload.js.map +1 -1
- package/dist/@ecme/components/ui/hooks/useCallbackRef.js.map +1 -1
- package/dist/@ecme/components/ui/hooks/useControllableState.js.map +1 -1
- package/dist/@ecme/components/ui/hooks/useDidUpdate.js.map +1 -1
- package/dist/@ecme/components/ui/hooks/useMergeRef.js.map +1 -1
- package/dist/@ecme/components/ui/hooks/useRootClose.js.map +1 -1
- package/dist/@ecme/components/ui/hooks/useTimeout.js.map +1 -1
- package/dist/@ecme/components/ui/hooks/useWindowSize.js.map +1 -1
- package/dist/@ecme/components/ui/toast/ToastWrapper.js.map +1 -1
- package/dist/@ecme/components/ui/toast/toast.js.map +1 -1
- package/dist/@ecme/components/ui/utils/chainedFunction.js.map +1 -1
- package/dist/@ecme/components/ui/utils/mapCloneElement.js.map +1 -1
- package/dist/@ecme/components/view/Activity/ActivityAvatar.js.map +1 -1
- package/dist/@ecme/components/view/Activity/ActivityEvent.js.map +1 -1
- package/dist/@ecme/components/view/ChatBox/components/Attachment.js.map +1 -1
- package/dist/@ecme/components/view/ChatBox/components/ChatInput.js.map +1 -1
- package/dist/@ecme/components/view/CreditCardDialog/CreditCardDialog.js.map +1 -1
- package/dist/@ecme/configs/chart.config.js.map +1 -1
- package/dist/@ecme/constants/theme.constant.js +23 -23
- package/dist/@ecme/constants/theme.constant.js.map +1 -1
- package/dist/@ecme/mock/fakeApi/accountsFakeApi.js.map +1 -1
- package/dist/@ecme/mock/fakeApi/aiFakeApi.js.map +1 -1
- package/dist/@ecme/mock/fakeApi/authFakeApi.js.map +1 -1
- package/dist/@ecme/mock/fakeApi/commonFakeApi.js.map +1 -1
- package/dist/@ecme/mock/fakeApi/customersFakeApi.js.map +1 -1
- package/dist/@ecme/mock/fakeApi/fileFakeApi.js.map +1 -1
- package/dist/@ecme/mock/fakeApi/helpCenterFakeApi.js.map +1 -1
- package/dist/@ecme/mock/fakeApi/ordersFakeApi.js.map +1 -1
- package/dist/@ecme/mock/fakeApi/productsFakeApi.js.map +1 -1
- package/dist/@ecme/services/ApiService.js.map +1 -1
- package/dist/@ecme/services/axios/AxiosRequestIntrceptorConfigCallback.js.map +1 -1
- package/dist/@ecme/store/authStore.js.map +1 -1
- package/dist/@ecme/store/localeStore.js.map +1 -1
- package/dist/@ecme/utils/cookiesStorage.js.map +1 -1
- package/dist/@ecme/utils/hoc/withHeaderItem.js.map +1 -1
- package/dist/@ecme/utils/hooks/useDarkMode.js.map +1 -1
- package/dist/@ecme/utils/hooks/useDirection.js.map +1 -1
- package/dist/@ecme/utils/hooks/useInfiniteScroll.js.map +1 -1
- package/dist/@ecme/utils/hooks/useInterval .js.map +1 -1
- package/dist/@ecme/utils/hooks/useLayoutGap.js.map +1 -1
- package/dist/@ecme/utils/hooks/useLocale.js.map +1 -1
- package/dist/@ecme/utils/hooks/useMenuActive.js.map +1 -1
- package/dist/@ecme/utils/hooks/useRandomBgColor.js.map +1 -1
- package/dist/@ecme/utils/hooks/useResponsive.js.map +1 -1
- package/dist/@ecme/utils/hooks/useScrollTop.js.map +1 -1
- package/dist/@ecme/utils/hooks/useThemeSchema.js.map +1 -1
- package/dist/@ecme/utils/hooks/useTimeOutMessage.js.map +1 -1
- package/dist/@ecme/utils/reorderDragable.js.map +1 -1
- package/dist/@ecme/utils/sortBy.js.map +1 -1
- package/dist/@ecme/utils/wildCardSearch.js.map +1 -1
- package/dist/@ecme/views/auth/ForgotPassword/ForgotPassword.js.map +1 -1
- package/dist/@ecme/views/auth/ForgotPassword/components/ForgotPasswordForm.js.map +1 -1
- package/dist/@ecme/views/auth/OtpVerification/OtpVerification.js.map +1 -1
- package/dist/@ecme/views/auth/OtpVerification/components/OtpVerificationForm.js.map +1 -1
- package/dist/@ecme/views/auth/ResetPassword/ResetPassword.js.map +1 -1
- package/dist/@ecme/views/auth/ResetPassword/components/ResetPasswordForm.js.map +1 -1
- package/dist/@ecme/views/auth/SignIn/components/OauthSignIn.js.map +1 -1
- package/dist/@ecme/views/auth/SignIn/components/SignInForm.js.map +1 -1
- package/dist/@ecme/views/auth/SignUp/components/SignUpForm.js.map +1 -1
- package/dist/@ecme/views/concepts/accounts/ActivityLog/ActivityLog.js.map +1 -1
- package/dist/@ecme/views/concepts/accounts/Pricing/components/PaymentDialog.js.map +1 -1
- package/dist/@ecme/views/concepts/accounts/Pricing/components/Plans.js.map +1 -1
- package/dist/@ecme/views/concepts/accounts/RolesPermissions/components/RolesPermissionsAccessDialog.js.map +1 -1
- package/dist/@ecme/views/concepts/accounts/RolesPermissions/components/RolesPermissionsGroups.js.map +1 -1
- package/dist/@ecme/views/concepts/accounts/RolesPermissions/components/RolesPermissionsUserAction.js.map +1 -1
- package/dist/@ecme/views/concepts/accounts/RolesPermissions/components/RolesPermissionsUserSelected.js.map +1 -1
- package/dist/@ecme/views/concepts/accounts/RolesPermissions/components/RolesPermissionsUserTable.js.map +1 -1
- package/dist/@ecme/views/concepts/accounts/RolesPermissions/store/rolePermissionsStore.js.map +1 -1
- package/dist/@ecme/views/concepts/accounts/Settings/components/BillingHistory.js.map +1 -1
- package/dist/@ecme/views/concepts/accounts/Settings/components/SettingIntegration.js.map +1 -1
- package/dist/@ecme/views/concepts/accounts/Settings/components/SettingMobileMenu.js.map +1 -1
- package/dist/@ecme/views/concepts/accounts/Settings/components/SettingsBilling.js.map +1 -1
- package/dist/@ecme/views/concepts/accounts/Settings/components/SettingsMenu.js.map +1 -1
- package/dist/@ecme/views/concepts/accounts/Settings/components/SettingsNotification.js.map +1 -1
- package/dist/@ecme/views/concepts/accounts/Settings/components/SettingsProfile.js.map +1 -1
- package/dist/@ecme/views/concepts/accounts/Settings/components/SettingsSecurity.js.map +1 -1
- package/dist/@ecme/views/concepts/ai/Chat/components/ChatCustomAction.js.map +1 -1
- package/dist/@ecme/views/concepts/ai/Chat/components/ChatCustomContent.js.map +1 -1
- package/dist/@ecme/views/concepts/ai/Chat/components/ChatHistory.js.map +1 -1
- package/dist/@ecme/views/concepts/ai/Chat/components/ChatHistoryItem.js.map +1 -1
- package/dist/@ecme/views/concepts/ai/Chat/components/ChatHistoryRenameDialog.js.map +1 -1
- package/dist/@ecme/views/concepts/ai/Chat/components/ChatSideNav.js.map +1 -1
- package/dist/@ecme/views/concepts/ai/Chat/components/ChatView.js.map +1 -1
- package/dist/@ecme/views/concepts/ai/Chat/hooks/useChatSend.js.map +1 -1
- package/dist/@ecme/views/concepts/ai/Chat/store/generativeChatStore.js.map +1 -1
- package/dist/@ecme/views/concepts/ai/Image/components/Gallery.js.map +1 -1
- package/dist/@ecme/views/concepts/ai/Image/components/GeneratorPrompt.js.map +1 -1
- package/dist/@ecme/views/concepts/ai/Image/components/ImageDialog.js.map +1 -1
- package/dist/@ecme/views/concepts/ai/Image/store/imageGeneratorStore.js.map +1 -1
- package/dist/@ecme/views/concepts/calendar/Calendar/Calendar.js.map +1 -1
- package/dist/@ecme/views/concepts/calendar/Calendar/components/EventDialog.js.map +1 -1
- package/dist/@ecme/views/concepts/chat/Chat/components/ChatAction.js.map +1 -1
- package/dist/@ecme/views/concepts/chat/Chat/components/ChatBody.js.map +1 -1
- package/dist/@ecme/views/concepts/chat/Chat/components/ChatList.js.map +1 -1
- package/dist/@ecme/views/concepts/chat/Chat/components/ContactInfoDrawer.js.map +1 -1
- package/dist/@ecme/views/concepts/chat/Chat/components/NewChat.js.map +1 -1
- package/dist/@ecme/views/concepts/chat/Chat/hooks/useChat.js.map +1 -1
- package/dist/@ecme/views/concepts/chat/Chat/store/chatStore.js.map +1 -1
- package/dist/@ecme/views/concepts/customers/CustomerCreate/CustomerCreate.js.map +1 -1
- package/dist/@ecme/views/concepts/customers/CustomerDetails/ActivitySection.js.map +1 -1
- package/dist/@ecme/views/concepts/customers/CustomerDetails/BillingSection.js.map +1 -1
- package/dist/@ecme/views/concepts/customers/CustomerDetails/ProfileSection.js.map +1 -1
- package/dist/@ecme/views/concepts/customers/CustomerEdit/CustomerEdit.js.map +1 -1
- package/dist/@ecme/views/concepts/customers/CustomerForm/AccountSection.js.map +1 -1
- package/dist/@ecme/views/concepts/customers/CustomerForm/CustomerForm.js.map +1 -1
- package/dist/@ecme/views/concepts/customers/CustomerForm/OverviewSection.js.map +1 -1
- package/dist/@ecme/views/concepts/customers/CustomerForm/ProfileImageSection.js.map +1 -1
- package/dist/@ecme/views/concepts/customers/CustomerList/components/CustomerListSelected.js.map +1 -1
- package/dist/@ecme/views/concepts/customers/CustomerList/components/CustomerListTable.js.map +1 -1
- package/dist/@ecme/views/concepts/customers/CustomerList/components/CustomerListTableFilter.js.map +1 -1
- package/dist/@ecme/views/concepts/customers/CustomerList/components/CustomersListTableTools.js.map +1 -1
- package/dist/@ecme/views/concepts/customers/CustomerList/store/customerListStore.js.map +1 -1
- package/dist/@ecme/views/concepts/files/FileManager/FileManager.js.map +1 -1
- package/dist/@ecme/views/concepts/files/FileManager/components/FileDetails.js.map +1 -1
- package/dist/@ecme/views/concepts/files/FileManager/components/FileItemDropdown.js.map +1 -1
- package/dist/@ecme/views/concepts/files/FileManager/components/FileManagerDeleteDialog.js.map +1 -1
- package/dist/@ecme/views/concepts/files/FileManager/components/FileManagerHeader.js.map +1 -1
- package/dist/@ecme/views/concepts/files/FileManager/components/FileManagerInviteDialog.js.map +1 -1
- package/dist/@ecme/views/concepts/files/FileManager/components/FileManagerRenameDialog.js.map +1 -1
- package/dist/@ecme/views/concepts/files/FileManager/components/UploadFile.js.map +1 -1
- package/dist/@ecme/views/concepts/files/FileManager/store/useFileManagerStore.js.map +1 -1
- package/dist/@ecme/views/concepts/help-center/Article/components/ArticleAction.js.map +1 -1
- package/dist/@ecme/views/concepts/help-center/EditArticle/components/EditArticleFooter.js.map +1 -1
- package/dist/@ecme/views/concepts/help-center/EditArticle/components/EditArticleHeader.js.map +1 -1
- package/dist/@ecme/views/concepts/help-center/ManageArticle/components/ArticleListSearch.js.map +1 -1
- package/dist/@ecme/views/concepts/help-center/ManageArticle/components/ArticleListSelected.js.map +1 -1
- package/dist/@ecme/views/concepts/help-center/ManageArticle/components/ArticleListTable.js.map +1 -1
- package/dist/@ecme/views/concepts/help-center/ManageArticle/components/ArticleTableFilter.js.map +1 -1
- package/dist/@ecme/views/concepts/help-center/ManageArticle/store/manageArticleStore.js.map +1 -1
- package/dist/@ecme/views/concepts/help-center/SupportHub/components/Article.js.map +1 -1
- package/dist/@ecme/views/concepts/help-center/SupportHub/components/ArticleList.js.map +1 -1
- package/dist/@ecme/views/concepts/help-center/SupportHub/components/Categories.js.map +1 -1
- package/dist/@ecme/views/concepts/help-center/SupportHub/components/TopSection.js.map +1 -1
- package/dist/@ecme/views/concepts/mail/Mail/components/MailBody.js.map +1 -1
- package/dist/@ecme/views/concepts/mail/Mail/components/MailBodyTop.js.map +1 -1
- package/dist/@ecme/views/concepts/mail/Mail/components/MailDetailAction.js.map +1 -1
- package/dist/@ecme/views/concepts/mail/Mail/components/MailDetailTitle.js.map +1 -1
- package/dist/@ecme/views/concepts/mail/Mail/components/MailEditor.js.map +1 -1
- package/dist/@ecme/views/concepts/mail/Mail/components/MailList.js.map +1 -1
- package/dist/@ecme/views/concepts/mail/Mail/components/MailSidebar.js.map +1 -1
- package/dist/@ecme/views/concepts/mail/Mail/hooks/useMail.js.map +1 -1
- package/dist/@ecme/views/concepts/mail/Mail/hooks/useMailAction.js.map +1 -1
- package/dist/@ecme/views/concepts/orders/OrderCreate/OrderCreate.js.map +1 -1
- package/dist/@ecme/views/concepts/orders/OrderDetails/components/OrderDetailHeaderExtra.js.map +1 -1
- package/dist/@ecme/views/concepts/orders/OrderEdit/OrderEdit.js.map +1 -1
- package/dist/@ecme/views/concepts/orders/OrderForm/OrderForm.js.map +1 -1
- package/dist/@ecme/views/concepts/orders/OrderForm/components/CustomerDetailSection.js.map +1 -1
- package/dist/@ecme/views/concepts/orders/OrderForm/components/PaymentMethodSection.js.map +1 -1
- package/dist/@ecme/views/concepts/orders/OrderForm/components/ProductSelectSection.js.map +1 -1
- package/dist/@ecme/views/concepts/orders/OrderList/components/OrderListTable.js.map +1 -1
- package/dist/@ecme/views/concepts/orders/OrderList/components/OrderListTableFilter.js.map +1 -1
- package/dist/@ecme/views/concepts/orders/OrderList/components/OrderListTableTools.js.map +1 -1
- package/dist/@ecme/views/concepts/products/ProductCreate/ProductCreate.js.map +1 -1
- package/dist/@ecme/views/concepts/products/ProductEdit/ProducEdit.js.map +1 -1
- package/dist/@ecme/views/concepts/products/ProductForm/ProductForm.js.map +1 -1
- package/dist/@ecme/views/concepts/products/ProductForm/components/GeneralSection.js.map +1 -1
- package/dist/@ecme/views/concepts/products/ProductForm/components/ImageSection.js.map +1 -1
- package/dist/@ecme/views/concepts/products/ProductForm/components/PricingSection.js.map +1 -1
- package/dist/@ecme/views/concepts/products/ProductList/components/ProducListTableTools.js.map +1 -1
- package/dist/@ecme/views/concepts/products/ProductList/components/ProductListSearch.js.map +1 -1
- package/dist/@ecme/views/concepts/products/ProductList/components/ProductListSelected.js.map +1 -1
- package/dist/@ecme/views/concepts/products/ProductList/components/ProductListTable.js.map +1 -1
- package/dist/@ecme/views/concepts/products/ProductList/components/ProductTableFilter.js.map +1 -1
- package/dist/@ecme/views/concepts/products/ProductList/store/productListStore.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/Issue/Issue.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/Issue/components/IssueBody.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/Issue/components/IssueFooter.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/Issue/components/IssueHeader.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/ProjectDetails/ProjectDetails.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/ProjectDetails/components/ProjectDetailsActivity.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/ProjectDetails/components/ProjectDetailsHeader.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/ProjectDetails/components/ProjectDetailsNavigation.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/ProjectDetails/components/ProjectDetailsSetting.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/ProjectDetails/components/ProjectDetailsTask.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/ProjectList/components/NewProjectForm.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/ProjectList/components/NewTaskField.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/ProjectList/components/ProjectListContent.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/ProjectList/components/ProjectListHeader.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/ProjectList/hooks/useProjectList.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/ProjectList/store/projectListStore.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/ScrumBoard/components/AddNewColumnContent.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/ScrumBoard/components/AddNewMemberContent.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/ScrumBoard/components/AddNewTicketContent.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/ScrumBoard/components/Board.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/ScrumBoard/components/BoardCard.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/ScrumBoard/components/BoardTitle.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/ScrumBoard/components/ScrumBoardHeader.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/ScrumBoard/components/TicketContent.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/Tasks/Tasks.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/Tasks/components/AddTask.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/Tasks/components/TaskList.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/Tasks/components/TasksHeader.js.map +1 -1
- package/dist/@ecme/views/dashboards/AnalyticDashboard/components/AnalyticChart.js.map +1 -1
- package/dist/@ecme/views/dashboards/AnalyticDashboard/components/AnalyticHeader.js.map +1 -1
- package/dist/@ecme/views/dashboards/AnalyticDashboard/components/DeviceSession.js.map +1 -1
- package/dist/@ecme/views/dashboards/AnalyticDashboard/components/Traffic.js.map +1 -1
- package/dist/@ecme/views/dashboards/EcommerceDashboard/components/Overview.js.map +1 -1
- package/dist/@ecme/views/dashboards/EcommerceDashboard/components/RecentOrder.js.map +1 -1
- package/dist/@ecme/views/dashboards/EcommerceDashboard/components/RevenueByChannel.js.map +1 -1
- package/dist/@ecme/views/dashboards/EcommerceDashboard/components/SalesTarget.js.map +1 -1
- package/dist/@ecme/views/dashboards/EcommerceDashboard/components/TopProduct.js.map +1 -1
- package/dist/@ecme/views/dashboards/MarketingDashboard/components/AdsPerformance.js.map +1 -1
- package/dist/@ecme/views/dashboards/MarketingDashboard/components/CreateCampaign.js.map +1 -1
- package/dist/@ecme/views/dashboards/MarketingDashboard/components/LeadPerformance.js.map +1 -1
- package/dist/@ecme/views/dashboards/MarketingDashboard/components/RecentCampaign.js.map +1 -1
- package/dist/@ecme/views/dashboards/ProjectDashboard/components/CreateEventDialog.js.map +1 -1
- package/dist/@ecme/views/dashboards/ProjectDashboard/components/CurrentTasks.js.map +1 -1
- package/dist/@ecme/views/dashboards/ProjectDashboard/components/Schedule.js.map +1 -1
- package/dist/@ecme/views/dashboards/ProjectDashboard/components/UpcomingSchedule.js.map +1 -1
- package/dist/@ecme/views/guide/Documentations/components/Layouts.js.map +1 -1
- package/dist/@ecme/views/guide/SharedComponentsDoc/components/CalendarViewDoc/Example.js.map +1 -1
- package/dist/@ecme/views/guide/SharedComponentsDoc/components/ConfirmDialogDoc/Example.js.map +1 -1
- package/dist/@ecme/views/guide/SharedComponentsDoc/components/CustomFormatInputDoc/Simple.js.map +1 -1
- package/dist/@ecme/views/guide/SharedComponentsDoc/components/CustomFormatInputDoc/WithForm.js.map +1 -1
- package/dist/@ecme/views/guide/SharedComponentsDoc/components/DataTableDoc/Basic.js.map +1 -1
- package/dist/@ecme/views/guide/SharedComponentsDoc/components/DataTableDoc/Checkable.js.map +1 -1
- package/dist/@ecme/views/guide/SharedComponentsDoc/components/DataTableDoc/Query.js.map +1 -1
- package/dist/@ecme/views/guide/SharedComponentsDoc/components/DebounceInputDoc/Example.js.map +1 -1
- package/dist/@ecme/views/guide/SharedComponentsDoc/components/GanttChartDoc/Example.js.map +1 -1
- package/dist/@ecme/views/guide/SharedComponentsDoc/components/MasonryDoc/Basic.js.map +1 -1
- package/dist/@ecme/views/guide/SharedComponentsDoc/components/MasonryDoc/Responsive.js.map +1 -1
- package/dist/@ecme/views/guide/SharedComponentsDoc/components/NumericInputDoc/Basic.js.map +1 -1
- package/dist/@ecme/views/guide/SharedComponentsDoc/components/NumericInputDoc/WithForm.js.map +1 -1
- package/dist/@ecme/views/guide/SharedComponentsDoc/components/OtpInputDoc/Basic.js.map +1 -1
- package/dist/@ecme/views/guide/SharedComponentsDoc/components/OtpInputDoc/Length.js.map +1 -1
- package/dist/@ecme/views/guide/SharedComponentsDoc/components/PasswordInputDoc/Example.js.map +1 -1
- package/dist/@ecme/views/guide/SharedComponentsDoc/components/PatternInputDoc/Basic.js.map +1 -1
- package/dist/@ecme/views/guide/SharedComponentsDoc/components/PatternInputDoc/WithForm.js.map +1 -1
- package/dist/@ecme/views/guide/SharedComponentsDoc/components/PresetSegmentItemOptionDoc/Example.js.map +1 -1
- package/dist/@ecme/views/guide/SharedComponentsDoc/components/RichTextEditorDoc/CustomConfig.js.map +1 -1
- package/dist/@ecme/views/guide/SharedComponentsDoc/components/RichTextEditorDoc/WithForm.js.map +1 -1
- package/dist/@ecme/views/ui-components/common/Button/ButtonWithIcon.js.map +1 -1
- package/dist/@ecme/views/ui-components/common/Button/Loading.js.map +1 -1
- package/dist/@ecme/views/ui-components/data-display/Calendar/CustomRender.js.map +1 -1
- package/dist/@ecme/views/ui-components/data-display/Table/DragAndDrop.js.map +1 -1
- package/dist/@ecme/views/ui-components/data-display/Table/Editable.js.map +1 -1
- package/dist/@ecme/views/ui-components/data-display/Table/Expanding.js.map +1 -1
- package/dist/@ecme/views/ui-components/data-display/Table/Filtering.js.map +1 -1
- package/dist/@ecme/views/ui-components/data-display/Table/Group.js.map +1 -1
- package/dist/@ecme/views/ui-components/data-display/Table/PaginationTable.js.map +1 -1
- package/dist/@ecme/views/ui-components/data-display/Table/Resizable.js.map +1 -1
- package/dist/@ecme/views/ui-components/data-display/Table/RowSelection.js.map +1 -1
- package/dist/@ecme/views/ui-components/data-display/Table/Sorting.js.map +1 -1
- package/dist/@ecme/views/ui-components/data-display/Table/SubComponent.js.map +1 -1
- package/dist/@ecme/views/ui-components/feedback/Alert/Closable.js.map +1 -1
- package/dist/@ecme/views/ui-components/feedback/Dialog/Basic.js.map +1 -1
- package/dist/@ecme/views/ui-components/feedback/Dialog/Closable.js.map +1 -1
- package/dist/@ecme/views/ui-components/feedback/Dialog/CloseWithEscBackdrop.js.map +1 -1
- package/dist/@ecme/views/ui-components/feedback/Dialog/CustomStyle.js.map +1 -1
- package/dist/@ecme/views/ui-components/feedback/Dialog/InternalScroll.js.map +1 -1
- package/dist/@ecme/views/ui-components/feedback/Dialog/Size.js.map +1 -1
- package/dist/@ecme/views/ui-components/feedback/Dialog/StaticBackdrop.js.map +1 -1
- package/dist/@ecme/views/ui-components/feedback/Drawer/Basic.js.map +1 -1
- package/dist/@ecme/views/ui-components/feedback/Drawer/Closable.js.map +1 -1
- package/dist/@ecme/views/ui-components/feedback/Drawer/CustomStyle.js.map +1 -1
- package/dist/@ecme/views/ui-components/feedback/Drawer/Footer.js.map +1 -1
- package/dist/@ecme/views/ui-components/feedback/Drawer/Placement.js.map +1 -1
- package/dist/@ecme/views/ui-components/feedback/Drawer/WidthHeight.js.map +1 -1
- package/dist/@ecme/views/ui-components/feedback/Progress/Dynamic.js.map +1 -1
- package/dist/@ecme/views/ui-components/feedback/Toast/AlertToast.js.map +1 -1
- package/dist/@ecme/views/ui-components/feedback/Toast/Closable.js.map +1 -1
- package/dist/@ecme/views/ui-components/feedback/Toast/CustomClose.js.map +1 -1
- package/dist/@ecme/views/ui-components/feedback/Toast/CustomIcon.js.map +1 -1
- package/dist/@ecme/views/ui-components/feedback/Toast/Duration.js.map +1 -1
- package/dist/@ecme/views/ui-components/feedback/Toast/Notification.js.map +1 -1
- package/dist/@ecme/views/ui-components/feedback/Toast/NotificationType.js.map +1 -1
- package/dist/@ecme/views/ui-components/feedback/Toast/Placement.js.map +1 -1
- package/dist/@ecme/views/ui-components/forms/Checkbox/Default.js.map +1 -1
- package/dist/@ecme/views/ui-components/forms/Checkbox/Group.js.map +1 -1
- package/dist/@ecme/views/ui-components/forms/DatePicker/Controlled.js.map +1 -1
- package/dist/@ecme/views/ui-components/forms/DatePicker/CustomRender.js.map +1 -1
- package/dist/@ecme/views/ui-components/forms/DatePicker/DisabledCertainDate.js.map +1 -1
- package/dist/@ecme/views/ui-components/forms/FormControl/AsyncValidation.js.map +1 -1
- package/dist/@ecme/views/ui-components/forms/FormControl/Basic.js.map +1 -1
- package/dist/@ecme/views/ui-components/forms/FormControl/DependentValidation.js.map +1 -1
- package/dist/@ecme/views/ui-components/forms/FormControl/DynamicForm.js.map +1 -1
- package/dist/@ecme/views/ui-components/forms/FormControl/FieldValidation.js.map +1 -1
- package/dist/@ecme/views/ui-components/forms/FormControl/Layout.js.map +1 -1
- package/dist/@ecme/views/ui-components/forms/FormControl/MixedFormControl.js.map +1 -1
- package/dist/@ecme/views/ui-components/forms/FormControl/SchemaValidation.js.map +1 -1
- package/dist/@ecme/views/ui-components/forms/FormControl/Sizes.js.map +1 -1
- package/dist/@ecme/views/ui-components/forms/Input/PasswordVisible.js.map +1 -1
- package/dist/@ecme/views/ui-components/forms/Radio/Group.js.map +1 -1
- package/dist/@ecme/views/ui-components/forms/Radio/Vertical.js.map +1 -1
- package/dist/@ecme/views/ui-components/forms/Segment/Controlled.js.map +1 -1
- package/dist/@ecme/views/ui-components/forms/Segment/Size.js.map +1 -1
- package/dist/@ecme/views/ui-components/forms/Select/AsyncOnSearch.js.map +1 -1
- package/dist/@ecme/views/ui-components/forms/Select/Creatable.js.map +1 -1
- package/dist/@ecme/views/ui-components/forms/Select/LoadOptionOnExpand.js.map +1 -1
- package/dist/@ecme/views/ui-components/forms/Switcher/Basic.js.map +1 -1
- package/dist/@ecme/views/ui-components/forms/Switcher/Controlled.js.map +1 -1
- package/dist/@ecme/views/ui-components/forms/Switcher/Loading.js.map +1 -1
- package/dist/@ecme/views/ui-components/forms/Upload/AvatarImage.js.map +1 -1
- package/dist/@ecme/views/ui-components/forms/Upload/BeforeUpload.js.map +1 -1
- package/dist/@ecme/views/ui-components/graph/Charts/DashedLine.js.map +1 -1
- package/dist/@ecme/views/ui-components/graph/Maps/ChoroplethQuantile.js.map +1 -1
- package/dist/@ecme/views/ui-components/graph/Maps/ChoroplethQuantize.js.map +1 -1
- package/dist/@ecme/views/ui-components/graph/Maps/MapChartWithTooltip.js.map +1 -1
- package/dist/@ecme/views/ui-components/graph/Maps/UsaStatesMapWithLabels.js.map +1 -1
- package/dist/@ecme/views/ui-components/navigation/Dropdown/Default.js.map +1 -1
- package/dist/@ecme/views/ui-components/navigation/Menu/CollapsableMenuItem.js.map +1 -1
- package/dist/@ecme/views/ui-components/navigation/Menu/Simple.js.map +1 -1
- package/dist/@ecme/views/ui-components/navigation/Pagination/Basic.js.map +1 -1
- package/dist/@ecme/views/ui-components/navigation/Pagination/Controlled.js.map +1 -1
- package/dist/@ecme/views/ui-components/navigation/Pagination/PageSize.js.map +1 -1
- package/dist/@ecme/views/ui-components/navigation/Steps/Clickable.js.map +1 -1
- package/dist/@ecme/views/ui-components/navigation/Steps/Controlled.js.map +1 -1
- package/dist/@types/@ecme/configs/chart.config.d.ts +2 -0
- package/dist/@types/@ecme/configs/chart.config.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/Ticket/ticket.endpoint.config.d.ts +1 -0
- package/dist/@types/base/configs/endpoints.config/Ticket/ticket.endpoint.config.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/centralNfe/centralNfe.d.ts +18 -0
- package/dist/@types/base/configs/endpoints.config/centralNfe/centralNfe.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/centralNfe/config/vinculoUnidadeMedida.d.ts +20 -0
- package/dist/@types/base/configs/endpoints.config/centralNfe/config/vinculoUnidadeMedida.d.ts.map +1 -0
- package/dist/@types/base/configs/endpoints.config/endpoints.navigation.d.ts +18 -0
- package/dist/@types/base/configs/endpoints.config/endpoints.navigation.d.ts.map +1 -1
- package/dist/@types/base/configs/navigation.config/modules.submenu/centralNfe/submenu.centralNfe.d.ts.map +1 -1
- package/dist/@types/base/services/modules/Ticket/TicketService.d.ts +1 -0
- package/dist/@types/base/services/modules/Ticket/TicketService.d.ts.map +1 -1
- package/dist/@types/base/services/modules/centralNfe/index.d.ts +2 -0
- package/dist/@types/base/services/modules/centralNfe/index.d.ts.map +1 -1
- package/dist/@types/base/services/modules/centralNfe/vinculoUnidadeMedida/VinculoUnidadeMedidaService.d.ts +5 -0
- package/dist/@types/base/services/modules/centralNfe/vinculoUnidadeMedida/VinculoUnidadeMedidaService.d.ts.map +1 -0
- package/dist/@types/base/services/modules/modules.query.d.ts +4 -0
- package/dist/@types/base/services/modules/modules.query.d.ts.map +1 -1
- package/dist/base/assets/styles/init.css +1 -1
- package/dist/base/components/forms/GenericForms/GenericUploadFormSection.js.map +1 -1
- package/dist/base/components/forms/NumberFormVariant/GenericNumberFormSectionPercentage.js.map +1 -1
- package/dist/base/components/shared/AceitarProcessoDialog.js.map +1 -1
- package/dist/base/components/shared/AdicionarHistoricoDialog.js.map +1 -1
- package/dist/base/components/shared/CancelarProcessoDialog.js.map +1 -1
- package/dist/base/components/shared/ConcluirProcessoDialog.js.map +1 -1
- package/dist/base/components/shared/ReabrirProcessoDialog.js.map +1 -1
- package/dist/base/components/shared/RetornarFluxAtendimentoDialog.js.map +1 -1
- package/dist/base/components/shared/TransferirParaAtendenteDialog.js.map +1 -1
- package/dist/base/components/shared/TransferirParaSolicitanteDialog.js.map +1 -1
- package/dist/base/components/shared/TransferirProcessoDialog.js.map +1 -1
- package/dist/base/components/table/ListColumn.js.map +1 -1
- package/dist/base/components/tools/NavFilter.js.map +1 -1
- package/dist/base/configs/endpoints.config/Ticket/ticket.endpoint.config.js +1 -0
- package/dist/base/configs/endpoints.config/Ticket/ticket.endpoint.config.js.map +1 -1
- package/dist/base/configs/endpoints.config/centralNfe/centralNfe.js +5 -3
- package/dist/base/configs/endpoints.config/centralNfe/centralNfe.js.map +1 -1
- package/dist/base/configs/endpoints.config/centralNfe/config/vinculoUnidadeMedida.js +10 -0
- package/dist/base/configs/endpoints.config/centralNfe/config/vinculoUnidadeMedida.js.map +1 -0
- package/dist/base/configs/navigation.config/modules.submenu/centralNfe/submenu.centralNfe.js +10 -0
- package/dist/base/configs/navigation.config/modules.submenu/centralNfe/submenu.centralNfe.js.map +1 -1
- package/dist/base/hooks/flux/useAceitarProcesso.js.map +1 -1
- package/dist/base/hooks/flux/useAdicionarHistorico.js.map +1 -1
- package/dist/base/hooks/flux/useCancelarProcesso.js.map +1 -1
- package/dist/base/hooks/flux/useConcluirProcesso.js.map +1 -1
- package/dist/base/hooks/flux/useReabrirProcesso.js.map +1 -1
- package/dist/base/hooks/flux/useRetornarFluxoAtendimento.js.map +1 -1
- package/dist/base/hooks/flux/useTransferirParaAtendente.js.map +1 -1
- package/dist/base/hooks/flux/useTransferirParaSolicitante.js.map +1 -1
- package/dist/base/hooks/flux/useTransferirProcesso.js.map +1 -1
- package/dist/base/services/modules/Ticket/TicketService.js +17 -9
- package/dist/base/services/modules/Ticket/TicketService.js.map +1 -1
- package/dist/base/services/modules/centralNfe/index.js +13 -3
- package/dist/base/services/modules/centralNfe/index.js.map +1 -1
- package/dist/base/services/modules/centralNfe/vinculoUnidadeMedida/VinculoUnidadeMedidaService.js +37 -0
- package/dist/base/services/modules/centralNfe/vinculoUnidadeMedida/VinculoUnidadeMedidaService.js.map +1 -0
- package/dist/base/services/modules/modules.query.js +7 -6
- package/dist/base/services/modules/modules.query.js.map +1 -1
- package/dist/base/services/query.js.map +1 -1
- package/dist/base/utils/functions/formUtils.js.map +1 -1
- package/dist/base/utils/functions/handleInputChangeUtils.js.map +1 -1
- package/dist/base/utils/functions/stringUtils.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbbreviateNumber.js","sources":["../../../../lib/@ecme/components/shared/AbbreviateNumber.tsx"],"sourcesContent":["type AbbreviateNumberProps = {\n value: number\n}\n\nconst AbbreviateNumber = ({ value }: AbbreviateNumberProps) => {\n function formatNumberWithSuffix(number: number) {\n if (number >= 1000000) {\n return (number / 1000000).toFixed(1) + 'M'\n } else if (number >= 1000) {\n return (number / 1000).toFixed(1) + 'K'\n } else {\n return number.toFixed(0).toString()\n }\n }\n\n return <>{formatNumberWithSuffix(value)}</>\n}\n\nexport default AbbreviateNumber\n"],"names":["AbbreviateNumber","value","formatNumberWithSuffix","number","jsx","Fragment"],"mappings":";AAIA,MAAMA,IAAmB,CAAC,EAAE,OAAAC,QAAmC;AAC3D,WAASC,EAAuBC,GAAgB;AAC5C,WAAIA,KAAU,OACFA,IAAS,KAAS,QAAQ,CAAC,IAAI,MAChCA,KAAU,OACTA,IAAS,KAAM,QAAQ,CAAC,IAAI,MAE7BA,EAAO,QAAQ,CAAC,EAAE,SAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"AbbreviateNumber.js","sources":["../../../../lib/@ecme/components/shared/AbbreviateNumber.tsx"],"sourcesContent":["type AbbreviateNumberProps = {\n value: number\n}\n\nconst AbbreviateNumber = ({ value }: AbbreviateNumberProps) => {\n function formatNumberWithSuffix(number: number) {\n if (number >= 1000000) {\n return (number / 1000000).toFixed(1) + 'M'\n } else if (number >= 1000) {\n return (number / 1000).toFixed(1) + 'K'\n } else {\n return number.toFixed(0).toString()\n }\n }\n\n return <>{formatNumberWithSuffix(value)}</>\n}\n\nexport default AbbreviateNumber\n"],"names":["AbbreviateNumber","value","formatNumberWithSuffix","number","jsx","Fragment"],"mappings":";AAIA,MAAMA,IAAmB,CAAC,EAAE,OAAAC,QAAmC;AAC3D,WAASC,EAAuBC,GAAgB;AAC5C,WAAIA,KAAU,OACFA,IAAS,KAAS,QAAQ,CAAC,IAAI,MAChCA,KAAU,OACTA,IAAS,KAAM,QAAQ,CAAC,IAAI,MAE7BA,EAAO,QAAQ,CAAC,EAAE,SAAA;AAAA,EAEjC;AAEA,SAAO,gBAAAC,EAAAC,GAAA,EAAG,UAAAH,EAAuBD,CAAK,GAAE;AAC5C;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Affix.js","sources":["../../../../lib/@ecme/components/shared/Affix.tsx"],"sourcesContent":["import { useEffect, createRef } from 'react'\nimport classNames from 'classnames'\nimport type { CommonProps } from '@/@types/common'\n\ntype AffixStyles = {\n position: string\n top: string\n width: string\n}\n\ninterface AffixProps extends CommonProps {\n offset?: number\n}\n\nfunction Affix(props: AffixProps) {\n const { offset = 0, className, children } = props\n\n const ref = createRef<HTMLDivElement>()\n const prevStyle: AffixStyles = {\n position: '',\n top: '',\n width: '',\n }\n\n const checkPosition = (distanceToBody: number, width?: number) => {\n const scrollTop = window.scrollY\n\n if (ref.current) {\n if (distanceToBody - scrollTop < offset) {\n if (ref.current.style.position !== 'fixed') {\n for (const key in prevStyle) {\n prevStyle[key as keyof AffixStyles] =\n ref.current.style[key as keyof AffixStyles]\n }\n ref.current.style.position = 'fixed'\n ref.current.style.width = width + 'px'\n ref.current.style.top = offset + 'px'\n }\n } else {\n for (const key in prevStyle) {\n ref.current.style[key as keyof AffixStyles] =\n prevStyle[key as keyof AffixStyles]\n }\n }\n }\n }\n\n useEffect(() => {\n if (typeof window.scrollY === 'undefined') {\n return\n }\n\n if (ref.current) {\n const distanceToBody =\n window.scrollY + ref.current.getBoundingClientRect().top\n const handleScroll = () => {\n if (!ref.current) {\n return\n }\n\n requestAnimationFrame(() => {\n checkPosition(distanceToBody, ref.current?.clientWidth)\n })\n }\n\n window.addEventListener('scroll', handleScroll)\n return () => {\n window.removeEventListener('scroll', handleScroll)\n }\n }\n })\n\n return (\n <div ref={ref} className={classNames('z-10', className)}>\n {children}\n </div>\n )\n}\n\nexport default Affix\n"],"names":["Affix","props","offset","className","children","ref","createRef","prevStyle","checkPosition","distanceToBody","width","scrollTop","key","useEffect","handleScroll","_a","jsx","classNames"],"mappings":";;;AAcA,SAASA,EAAMC,GAAmB;AAC9B,QAAM,EAAE,QAAAC,IAAS,GAAG,WAAAC,GAAW,UAAAC,MAAaH,GAEtCI,IAAMC,EAAA,GACNC,IAAyB;AAAA,IAC3B,UAAU;AAAA,IACV,KAAK;AAAA,IACL,OAAO;AAAA,EAAA,GAGLC,IAAgB,CAACC,GAAwBC,MAAmB;AAC9D,UAAMC,IAAY,OAAO;AAEzB,QAAIN,EAAI;AACJ,UAAII,IAAiBE,IAAYT;AAC7B,YAAIG,EAAI,QAAQ,MAAM,aAAa,SAAS;AACxC,qBAAWO,KAAOL;AACd,YAAAA,EAAUK,CAAwB,IAC9BP,EAAI,QAAQ,MAAMO,CAAwB;AAElD,UAAAP,EAAI,QAAQ,MAAM,WAAW,SAC7BA,EAAI,QAAQ,MAAM,QAAQK,IAAQ,MAClCL,EAAI,QAAQ,MAAM,MAAMH,IAAS;AAAA,
|
|
1
|
+
{"version":3,"file":"Affix.js","sources":["../../../../lib/@ecme/components/shared/Affix.tsx"],"sourcesContent":["import { useEffect, createRef } from 'react'\nimport classNames from 'classnames'\nimport type { CommonProps } from '@/@types/common'\n\ntype AffixStyles = {\n position: string\n top: string\n width: string\n}\n\ninterface AffixProps extends CommonProps {\n offset?: number\n}\n\nfunction Affix(props: AffixProps) {\n const { offset = 0, className, children } = props\n\n const ref = createRef<HTMLDivElement>()\n const prevStyle: AffixStyles = {\n position: '',\n top: '',\n width: '',\n }\n\n const checkPosition = (distanceToBody: number, width?: number) => {\n const scrollTop = window.scrollY\n\n if (ref.current) {\n if (distanceToBody - scrollTop < offset) {\n if (ref.current.style.position !== 'fixed') {\n for (const key in prevStyle) {\n prevStyle[key as keyof AffixStyles] =\n ref.current.style[key as keyof AffixStyles]\n }\n ref.current.style.position = 'fixed'\n ref.current.style.width = width + 'px'\n ref.current.style.top = offset + 'px'\n }\n } else {\n for (const key in prevStyle) {\n ref.current.style[key as keyof AffixStyles] =\n prevStyle[key as keyof AffixStyles]\n }\n }\n }\n }\n\n useEffect(() => {\n if (typeof window.scrollY === 'undefined') {\n return\n }\n\n if (ref.current) {\n const distanceToBody =\n window.scrollY + ref.current.getBoundingClientRect().top\n const handleScroll = () => {\n if (!ref.current) {\n return\n }\n\n requestAnimationFrame(() => {\n checkPosition(distanceToBody, ref.current?.clientWidth)\n })\n }\n\n window.addEventListener('scroll', handleScroll)\n return () => {\n window.removeEventListener('scroll', handleScroll)\n }\n }\n })\n\n return (\n <div ref={ref} className={classNames('z-10', className)}>\n {children}\n </div>\n )\n}\n\nexport default Affix\n"],"names":["Affix","props","offset","className","children","ref","createRef","prevStyle","checkPosition","distanceToBody","width","scrollTop","key","useEffect","handleScroll","_a","jsx","classNames"],"mappings":";;;AAcA,SAASA,EAAMC,GAAmB;AAC9B,QAAM,EAAE,QAAAC,IAAS,GAAG,WAAAC,GAAW,UAAAC,MAAaH,GAEtCI,IAAMC,EAAA,GACNC,IAAyB;AAAA,IAC3B,UAAU;AAAA,IACV,KAAK;AAAA,IACL,OAAO;AAAA,EAAA,GAGLC,IAAgB,CAACC,GAAwBC,MAAmB;AAC9D,UAAMC,IAAY,OAAO;AAEzB,QAAIN,EAAI;AACJ,UAAII,IAAiBE,IAAYT;AAC7B,YAAIG,EAAI,QAAQ,MAAM,aAAa,SAAS;AACxC,qBAAWO,KAAOL;AACd,YAAAA,EAAUK,CAAwB,IAC9BP,EAAI,QAAQ,MAAMO,CAAwB;AAElD,UAAAP,EAAI,QAAQ,MAAM,WAAW,SAC7BA,EAAI,QAAQ,MAAM,QAAQK,IAAQ,MAClCL,EAAI,QAAQ,MAAM,MAAMH,IAAS;AAAA,QACrC;AAAA;AAEA,mBAAWU,KAAOL;AACd,UAAAF,EAAI,QAAQ,MAAMO,CAAwB,IACtCL,EAAUK,CAAwB;AAAA,EAItD;AAEA,SAAAC,EAAU,MAAM;AACZ,QAAI,SAAO,OAAO,UAAY,QAI1BR,EAAI,SAAS;AACb,YAAMI,IACF,OAAO,UAAUJ,EAAI,QAAQ,wBAAwB,KACnDS,IAAe,MAAM;AACvB,QAAKT,EAAI,WAIT,sBAAsB,MAAM;;AACxB,UAAAG,EAAcC,IAAgBM,IAAAV,EAAI,YAAJ,gBAAAU,EAAa,WAAW;AAAA,QAC1D,CAAC;AAAA,MACL;AAEA,oBAAO,iBAAiB,UAAUD,CAAY,GACvC,MAAM;AACT,eAAO,oBAAoB,UAAUA,CAAY;AAAA,MACrD;AAAA,IACJ;AAAA,EACJ,CAAC,GAGG,gBAAAE,EAAC,SAAI,KAAAX,GAAU,WAAWY,EAAW,QAAQd,CAAS,GACjD,UAAAC,GACL;AAER;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoComplete.js","sources":["../../../../lib/@ecme/components/shared/AutoComplete.tsx"],"sourcesContent":["import { ReactNode, ChangeEvent, useRef, useState, useEffect } from 'react'\nimport {\n autoUpdate,\n size,\n flip,\n useId,\n useDismiss,\n useFloating,\n useInteractions,\n useListNavigation,\n useRole,\n FloatingFocusManager,\n FloatingPortal,\n} from '@floating-ui/react'\nimport Input, { InputProps } from '@/components/ui/Input'\n\ninterface ItemProps {\n children: React.ReactNode\n active: boolean\n ref?: React.Ref<HTMLDivElement>\n}\n\ntype AutoCompleteProps<T> = Omit<InputProps, 'onChange'> & {\n data: Array<T>\n optionKey: (obj: T) => string\n value: string\n onInputChange: (value: string) => void\n onOptionSelected: (option: T) => void\n renderOption: (option: T) => ReactNode\n}\n\nconst Item = ({\n children,\n active,\n ref,\n ...rest\n}: ItemProps & React.HTMLProps<HTMLDivElement>) => {\n const id = useId()\n return (\n <div\n ref={ref}\n role=\"option\"\n id={id}\n aria-selected={active}\n {...rest}\n className=\"select-option hover:text-gray-800 hover:dark:text-gray-100\"\n >\n {children}\n </div>\n )\n}\n\nfunction AutoComplete<T>(props: AutoCompleteProps<T>) {\n const {\n data = [],\n optionKey,\n value,\n onInputChange,\n onOptionSelected,\n renderOption,\n ...rest\n } = props\n const [open, setOpen] = useState(false)\n const [activeIndex, setActiveIndex] = useState<number | null>(null)\n\n const [options, setOptions] = useState<Array<T>>([])\n\n const listRef = useRef<Array<HTMLElement | null>>([])\n\n useEffect(() => {\n const items = data.filter((item) =>\n optionKey(item).toLowerCase().includes(value.toLowerCase()),\n )\n setOptions(items)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value])\n\n const { refs, floatingStyles, context } = useFloating<HTMLInputElement>({\n whileElementsMounted: autoUpdate,\n open,\n onOpenChange: setOpen,\n middleware: [\n flip({ padding: 10 }),\n size({\n apply({ rects, availableHeight, elements }) {\n Object.assign(elements.floating.style, {\n width: `${rects.reference.width}px`,\n maxHeight: `${availableHeight}px`,\n })\n },\n padding: 10,\n }),\n ],\n })\n\n const role = useRole(context, { role: 'listbox' })\n const dismiss = useDismiss(context)\n const listNav = useListNavigation(context, {\n listRef,\n activeIndex,\n onNavigate: setActiveIndex,\n virtual: true,\n loop: true,\n })\n\n const { getReferenceProps, getFloatingProps, getItemProps } =\n useInteractions([role, dismiss, listNav])\n\n function onAutoCompleteChange(event: ChangeEvent<HTMLInputElement>) {\n const value = event.target.value\n onInputChange(value)\n const items = data.filter((item) =>\n optionKey(item).toLowerCase().includes(value.toLowerCase()),\n )\n if (value && items.length > 0) {\n setOpen(true)\n setActiveIndex(0)\n } else {\n setOpen(false)\n }\n }\n\n return (\n <>\n <Input\n {...rest}\n {...getReferenceProps({\n ref: refs.setReference,\n onChange: onAutoCompleteChange,\n value: value,\n 'aria-autocomplete': 'list',\n onKeyDown(event) {\n if (\n event.key === 'Enter' &&\n activeIndex != null &&\n options[activeIndex]\n ) {\n onInputChange(optionKey(options[activeIndex]))\n setActiveIndex(null)\n setOpen(false)\n }\n },\n })}\n />\n <FloatingPortal>\n {open && (\n <FloatingFocusManager\n visuallyHiddenDismiss\n context={context}\n initialFocus={-1}\n >\n <div\n {...getFloatingProps({\n ref: refs.setFloating,\n style: {\n ...floatingStyles,\n },\n className: 'select-menu py-1',\n })}\n >\n {options.map((item, index) => (\n <Item\n {...getItemProps({\n key: optionKey(item),\n ref(node) {\n listRef.current[index] = node\n },\n onClick() {\n onInputChange(optionKey(item))\n onOptionSelected(item)\n setOpen(false)\n refs.domReference.current?.focus()\n },\n })}\n key={`auto-complete-item-${index}`}\n active={activeIndex === index}\n >\n {renderOption(item)}\n </Item>\n ))}\n </div>\n </FloatingFocusManager>\n )}\n </FloatingPortal>\n </>\n )\n}\n\nexport default AutoComplete\n"],"names":["Item","children","active","ref","rest","id","useId","jsx","AutoComplete","props","data","optionKey","value","onInputChange","onOptionSelected","renderOption","open","setOpen","useState","activeIndex","setActiveIndex","options","setOptions","listRef","useRef","useEffect","items","item","refs","floatingStyles","context","useFloating","autoUpdate","flip","size","rects","availableHeight","elements","role","useRole","dismiss","useDismiss","listNav","useListNavigation","getReferenceProps","getFloatingProps","getItemProps","useInteractions","onAutoCompleteChange","event","jsxs","Fragment","Input","FloatingPortal","FloatingFocusManager","index","createElement","node","_a"],"mappings":";;;;;AA+BA,MAAMA,IAAO,CAAC;AAAA,EACV,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,KAAAC;AAAA,EACA,GAAGC;AACP,MAAmD;AAC/C,QAAMC,IAAKC,EAAA;AACX,SACI,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,KAAAJ;AAAA,MACA,MAAK;AAAA,MACL,IAAAE;AAAA,MACA,iBAAeH;AAAA,MACd,GAAGE;AAAA,MACJ,WAAU;AAAA,MAET,UAAAH;AAAA,IAAA;AAAA,EAAA;AAGb;AAEA,SAASO,GAAgBC,GAA6B;AAClD,QAAM;AAAA,IACF,MAAAC,IAAO,CAAA;AAAA,IACP,WAAAC;AAAA,IACA,OAAAC;AAAA,IACA,eAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,cAAAC;AAAA,IACA,GAAGX;AAAA,EAAA,IACHK,GACE,CAACO,GAAMC,CAAO,IAAIC,EAAS,EAAK,GAChC,CAACC,GAAaC,CAAc,IAAIF,EAAwB,IAAI,GAE5D,CAACG,GAASC,CAAU,IAAIJ,EAAmB,CAAA,CAAE,GAE7CK,IAAUC,EAAkC,EAAE;AAEpD,EAAAC,EAAU,MAAM;AACZ,UAAMC,IAAQhB,EAAK;AAAA,MAAO,CAACiB,MACvBhB,EAAUgB,CAAI,EAAE,cAAc,SAASf,EAAM,YAAA,CAAa;AAAA,IAAA;AAE9D,IAAAU,EAAWI,CAAK;AAAA,
|
|
1
|
+
{"version":3,"file":"AutoComplete.js","sources":["../../../../lib/@ecme/components/shared/AutoComplete.tsx"],"sourcesContent":["import { ReactNode, ChangeEvent, useRef, useState, useEffect } from 'react'\nimport {\n autoUpdate,\n size,\n flip,\n useId,\n useDismiss,\n useFloating,\n useInteractions,\n useListNavigation,\n useRole,\n FloatingFocusManager,\n FloatingPortal,\n} from '@floating-ui/react'\nimport Input, { InputProps } from '@/components/ui/Input'\n\ninterface ItemProps {\n children: React.ReactNode\n active: boolean\n ref?: React.Ref<HTMLDivElement>\n}\n\ntype AutoCompleteProps<T> = Omit<InputProps, 'onChange'> & {\n data: Array<T>\n optionKey: (obj: T) => string\n value: string\n onInputChange: (value: string) => void\n onOptionSelected: (option: T) => void\n renderOption: (option: T) => ReactNode\n}\n\nconst Item = ({\n children,\n active,\n ref,\n ...rest\n}: ItemProps & React.HTMLProps<HTMLDivElement>) => {\n const id = useId()\n return (\n <div\n ref={ref}\n role=\"option\"\n id={id}\n aria-selected={active}\n {...rest}\n className=\"select-option hover:text-gray-800 hover:dark:text-gray-100\"\n >\n {children}\n </div>\n )\n}\n\nfunction AutoComplete<T>(props: AutoCompleteProps<T>) {\n const {\n data = [],\n optionKey,\n value,\n onInputChange,\n onOptionSelected,\n renderOption,\n ...rest\n } = props\n const [open, setOpen] = useState(false)\n const [activeIndex, setActiveIndex] = useState<number | null>(null)\n\n const [options, setOptions] = useState<Array<T>>([])\n\n const listRef = useRef<Array<HTMLElement | null>>([])\n\n useEffect(() => {\n const items = data.filter((item) =>\n optionKey(item).toLowerCase().includes(value.toLowerCase()),\n )\n setOptions(items)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value])\n\n const { refs, floatingStyles, context } = useFloating<HTMLInputElement>({\n whileElementsMounted: autoUpdate,\n open,\n onOpenChange: setOpen,\n middleware: [\n flip({ padding: 10 }),\n size({\n apply({ rects, availableHeight, elements }) {\n Object.assign(elements.floating.style, {\n width: `${rects.reference.width}px`,\n maxHeight: `${availableHeight}px`,\n })\n },\n padding: 10,\n }),\n ],\n })\n\n const role = useRole(context, { role: 'listbox' })\n const dismiss = useDismiss(context)\n const listNav = useListNavigation(context, {\n listRef,\n activeIndex,\n onNavigate: setActiveIndex,\n virtual: true,\n loop: true,\n })\n\n const { getReferenceProps, getFloatingProps, getItemProps } =\n useInteractions([role, dismiss, listNav])\n\n function onAutoCompleteChange(event: ChangeEvent<HTMLInputElement>) {\n const value = event.target.value\n onInputChange(value)\n const items = data.filter((item) =>\n optionKey(item).toLowerCase().includes(value.toLowerCase()),\n )\n if (value && items.length > 0) {\n setOpen(true)\n setActiveIndex(0)\n } else {\n setOpen(false)\n }\n }\n\n return (\n <>\n <Input\n {...rest}\n {...getReferenceProps({\n ref: refs.setReference,\n onChange: onAutoCompleteChange,\n value: value,\n 'aria-autocomplete': 'list',\n onKeyDown(event) {\n if (\n event.key === 'Enter' &&\n activeIndex != null &&\n options[activeIndex]\n ) {\n onInputChange(optionKey(options[activeIndex]))\n setActiveIndex(null)\n setOpen(false)\n }\n },\n })}\n />\n <FloatingPortal>\n {open && (\n <FloatingFocusManager\n visuallyHiddenDismiss\n context={context}\n initialFocus={-1}\n >\n <div\n {...getFloatingProps({\n ref: refs.setFloating,\n style: {\n ...floatingStyles,\n },\n className: 'select-menu py-1',\n })}\n >\n {options.map((item, index) => (\n <Item\n {...getItemProps({\n key: optionKey(item),\n ref(node) {\n listRef.current[index] = node\n },\n onClick() {\n onInputChange(optionKey(item))\n onOptionSelected(item)\n setOpen(false)\n refs.domReference.current?.focus()\n },\n })}\n key={`auto-complete-item-${index}`}\n active={activeIndex === index}\n >\n {renderOption(item)}\n </Item>\n ))}\n </div>\n </FloatingFocusManager>\n )}\n </FloatingPortal>\n </>\n )\n}\n\nexport default AutoComplete\n"],"names":["Item","children","active","ref","rest","id","useId","jsx","AutoComplete","props","data","optionKey","value","onInputChange","onOptionSelected","renderOption","open","setOpen","useState","activeIndex","setActiveIndex","options","setOptions","listRef","useRef","useEffect","items","item","refs","floatingStyles","context","useFloating","autoUpdate","flip","size","rects","availableHeight","elements","role","useRole","dismiss","useDismiss","listNav","useListNavigation","getReferenceProps","getFloatingProps","getItemProps","useInteractions","onAutoCompleteChange","event","jsxs","Fragment","Input","FloatingPortal","FloatingFocusManager","index","createElement","node","_a"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalendarView.js","sources":["../../../../lib/@ecme/components/shared/CalendarView.tsx"],"sourcesContent":["import classNames from '@/utils/classNames'\nimport FullCalendar from '@fullcalendar/react'\nimport dayGridPlugin from '@fullcalendar/daygrid'\nimport timeGridPlugin from '@fullcalendar/timegrid'\nimport interactionPlugin from '@fullcalendar/interaction'\nimport { CalendarOptions } from '@fullcalendar/core'\n\ntype EventColors = Record<\n string,\n {\n bg: string\n text: string\n }\n>\n\ninterface CalendarViewProps extends CalendarOptions {\n wrapperClass?: string\n eventColors?: (colors: EventColors) => EventColors\n}\n\nconst defaultColorList: Record<\n string,\n {\n bg: string\n text: string\n }\n> = {\n red: {\n bg: 'bg-[#fbddd9]',\n text: 'text-gray-900',\n },\n orange: {\n bg: 'bg-[#ffc6ab]',\n text: 'text-gray-900',\n },\n yellow: {\n bg: 'bg-[#ffd993]',\n text: 'text-gray-900',\n },\n green: {\n bg: 'bg-[#bee9d3]',\n text: 'text-gray-900',\n },\n blue: {\n bg: 'bg-[#bce9fb]',\n text: 'text-gray-900',\n },\n purple: {\n bg: 'bg-[#ccbbfc]',\n text: 'text-gray-900',\n },\n}\n\nconst CalendarView = (props: CalendarViewProps) => {\n const {\n wrapperClass,\n eventColors = () => defaultColorList,\n ...rest\n } = props\n\n return (\n <div className={classNames('calendar', wrapperClass)}>\n <FullCalendar\n initialView=\"dayGridMonth\"\n headerToolbar={{\n left: 'title',\n center: '',\n right: 'dayGridMonth,timeGridWeek,timeGridDay prev,next',\n }}\n eventContent={(arg) => {\n const { extendedProps } = arg.event\n const { isEnd, isStart } = arg\n return (\n <div\n className={classNames(\n 'custom-calendar-event',\n extendedProps.eventColor\n ? (eventColors(defaultColorList) ||\n defaultColorList)[\n extendedProps.eventColor\n ]?.bg\n : '',\n extendedProps.eventColor\n ? (eventColors(defaultColorList) ||\n defaultColorList)[\n extendedProps.eventColor\n ]?.text\n : '',\n isEnd &&\n !isStart &&\n '!rounded-tl-none !rounded-bl-none !rtl:rounded-tr-none !rtl:rounded-br-none',\n !isEnd &&\n isStart &&\n '!rounded-tr-none !rounded-br-none !rtl:rounded-tl-none !rtl:rounded-bl-none',\n )}\n >\n {!(isEnd && !isStart) && (\n <span>{arg.timeText}</span>\n )}\n <span className=\"font-bold ml-1 rtl:mr-1\">\n {arg.event.title}\n </span>\n </div>\n )\n }}\n plugins={[dayGridPlugin, timeGridPlugin, interactionPlugin]}\n {...rest}\n />\n </div>\n )\n}\n\nexport default CalendarView\n"],"names":["defaultColorList","CalendarView","props","wrapperClass","eventColors","rest","classNames","jsx","FullCalendar","arg","extendedProps","isEnd","isStart","jsxs","_a","_b","dayGridPlugin","timeGridPlugin","interactionPlugin"],"mappings":";;;;;;AAoBA,MAAMA,IAMF;AAAA,EACA,KAAK;AAAA,IACD,IAAI;AAAA,IACJ,MAAM;AAAA,EAAA;AAAA,EAEV,QAAQ;AAAA,IACJ,IAAI;AAAA,IACJ,MAAM;AAAA,EAAA;AAAA,EAEV,QAAQ;AAAA,IACJ,IAAI;AAAA,IACJ,MAAM;AAAA,EAAA;AAAA,EAEV,OAAO;AAAA,IACH,IAAI;AAAA,IACJ,MAAM;AAAA,EAAA;AAAA,EAEV,MAAM;AAAA,IACF,IAAI;AAAA,IACJ,MAAM;AAAA,EAAA;AAAA,EAEV,QAAQ;AAAA,IACJ,IAAI;AAAA,IACJ,MAAM;AAAA,EAAA;AAEd,GAEMC,IAAe,CAACC,MAA6B;AAC/C,QAAM;AAAA,IACF,cAAAC;AAAA,IACA,aAAAC,IAAc,MAAMJ;AAAA,IACpB,GAAGK;AAAA,EAAA,IACHH;AAEJ,2BACK,OAAA,EAAI,WAAWI,EAAW,YAAYH,CAAY,GAC/C,UAAA,gBAAAI;AAAA,IAACC;AAAA,IAAA;AAAA,MACG,aAAY;AAAA,MACZ,eAAe;AAAA,QACX,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,OAAO;AAAA,MAAA;AAAA,MAEX,cAAc,CAACC,MAAQ;;AACnB,cAAM,EAAE,eAAAC,MAAkBD,EAAI,OACxB,EAAE,OAAAE,GAAO,SAAAC,EAAA,IAAYH;AAC3B,eACI,gBAAAI;AAAA,UAAC;AAAA,UAAA;AAAA,YACG,WAAWP;AAAA,cACP;AAAA,cACAI,EAAc,cACPI,KAAAV,EAAYJ,CAAgB,KACzBA,GACAU,EAAc,UAClB,MAHC,gBAAAI,EAGE,KACH;AAAA,cACNJ,EAAc,cACPK,KAAAX,EAAYJ,CAAgB,KACzBA,GACAU,EAAc,UAClB,MAHC,gBAAAK,EAGE,OACH;AAAA,cACNJ,KACI,CAACC,KACD;AAAA,cACJ,CAACD,KACGC,KACA;AAAA,YAAA;AAAA,YAGP,UAAA;AAAA,cAAA,EAAED,KAAS,CAACC,MACT,gBAAAL,EAAC,QAAA,EAAM,YAAI,UAAS;AAAA,gCAEvB,QAAA,EAAK,WAAU,2BACX,UAAAE,EAAI,MAAM,MAAA,CACf;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"CalendarView.js","sources":["../../../../lib/@ecme/components/shared/CalendarView.tsx"],"sourcesContent":["import classNames from '@/utils/classNames'\nimport FullCalendar from '@fullcalendar/react'\nimport dayGridPlugin from '@fullcalendar/daygrid'\nimport timeGridPlugin from '@fullcalendar/timegrid'\nimport interactionPlugin from '@fullcalendar/interaction'\nimport { CalendarOptions } from '@fullcalendar/core'\n\ntype EventColors = Record<\n string,\n {\n bg: string\n text: string\n }\n>\n\ninterface CalendarViewProps extends CalendarOptions {\n wrapperClass?: string\n eventColors?: (colors: EventColors) => EventColors\n}\n\nconst defaultColorList: Record<\n string,\n {\n bg: string\n text: string\n }\n> = {\n red: {\n bg: 'bg-[#fbddd9]',\n text: 'text-gray-900',\n },\n orange: {\n bg: 'bg-[#ffc6ab]',\n text: 'text-gray-900',\n },\n yellow: {\n bg: 'bg-[#ffd993]',\n text: 'text-gray-900',\n },\n green: {\n bg: 'bg-[#bee9d3]',\n text: 'text-gray-900',\n },\n blue: {\n bg: 'bg-[#bce9fb]',\n text: 'text-gray-900',\n },\n purple: {\n bg: 'bg-[#ccbbfc]',\n text: 'text-gray-900',\n },\n}\n\nconst CalendarView = (props: CalendarViewProps) => {\n const {\n wrapperClass,\n eventColors = () => defaultColorList,\n ...rest\n } = props\n\n return (\n <div className={classNames('calendar', wrapperClass)}>\n <FullCalendar\n initialView=\"dayGridMonth\"\n headerToolbar={{\n left: 'title',\n center: '',\n right: 'dayGridMonth,timeGridWeek,timeGridDay prev,next',\n }}\n eventContent={(arg) => {\n const { extendedProps } = arg.event\n const { isEnd, isStart } = arg\n return (\n <div\n className={classNames(\n 'custom-calendar-event',\n extendedProps.eventColor\n ? (eventColors(defaultColorList) ||\n defaultColorList)[\n extendedProps.eventColor\n ]?.bg\n : '',\n extendedProps.eventColor\n ? (eventColors(defaultColorList) ||\n defaultColorList)[\n extendedProps.eventColor\n ]?.text\n : '',\n isEnd &&\n !isStart &&\n '!rounded-tl-none !rounded-bl-none !rtl:rounded-tr-none !rtl:rounded-br-none',\n !isEnd &&\n isStart &&\n '!rounded-tr-none !rounded-br-none !rtl:rounded-tl-none !rtl:rounded-bl-none',\n )}\n >\n {!(isEnd && !isStart) && (\n <span>{arg.timeText}</span>\n )}\n <span className=\"font-bold ml-1 rtl:mr-1\">\n {arg.event.title}\n </span>\n </div>\n )\n }}\n plugins={[dayGridPlugin, timeGridPlugin, interactionPlugin]}\n {...rest}\n />\n </div>\n )\n}\n\nexport default CalendarView\n"],"names":["defaultColorList","CalendarView","props","wrapperClass","eventColors","rest","classNames","jsx","FullCalendar","arg","extendedProps","isEnd","isStart","jsxs","_a","_b","dayGridPlugin","timeGridPlugin","interactionPlugin"],"mappings":";;;;;;AAoBA,MAAMA,IAMF;AAAA,EACA,KAAK;AAAA,IACD,IAAI;AAAA,IACJ,MAAM;AAAA,EAAA;AAAA,EAEV,QAAQ;AAAA,IACJ,IAAI;AAAA,IACJ,MAAM;AAAA,EAAA;AAAA,EAEV,QAAQ;AAAA,IACJ,IAAI;AAAA,IACJ,MAAM;AAAA,EAAA;AAAA,EAEV,OAAO;AAAA,IACH,IAAI;AAAA,IACJ,MAAM;AAAA,EAAA;AAAA,EAEV,MAAM;AAAA,IACF,IAAI;AAAA,IACJ,MAAM;AAAA,EAAA;AAAA,EAEV,QAAQ;AAAA,IACJ,IAAI;AAAA,IACJ,MAAM;AAAA,EAAA;AAEd,GAEMC,IAAe,CAACC,MAA6B;AAC/C,QAAM;AAAA,IACF,cAAAC;AAAA,IACA,aAAAC,IAAc,MAAMJ;AAAA,IACpB,GAAGK;AAAA,EAAA,IACHH;AAEJ,2BACK,OAAA,EAAI,WAAWI,EAAW,YAAYH,CAAY,GAC/C,UAAA,gBAAAI;AAAA,IAACC;AAAA,IAAA;AAAA,MACG,aAAY;AAAA,MACZ,eAAe;AAAA,QACX,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,OAAO;AAAA,MAAA;AAAA,MAEX,cAAc,CAACC,MAAQ;;AACnB,cAAM,EAAE,eAAAC,MAAkBD,EAAI,OACxB,EAAE,OAAAE,GAAO,SAAAC,EAAA,IAAYH;AAC3B,eACI,gBAAAI;AAAA,UAAC;AAAA,UAAA;AAAA,YACG,WAAWP;AAAA,cACP;AAAA,cACAI,EAAc,cACPI,KAAAV,EAAYJ,CAAgB,KACzBA,GACAU,EAAc,UAClB,MAHC,gBAAAI,EAGE,KACH;AAAA,cACNJ,EAAc,cACPK,KAAAX,EAAYJ,CAAgB,KACzBA,GACAU,EAAc,UAClB,MAHC,gBAAAK,EAGE,OACH;AAAA,cACNJ,KACI,CAACC,KACD;AAAA,cACJ,CAACD,KACGC,KACA;AAAA,YAAA;AAAA,YAGP,UAAA;AAAA,cAAA,EAAED,KAAS,CAACC,MACT,gBAAAL,EAAC,QAAA,EAAM,YAAI,UAAS;AAAA,gCAEvB,QAAA,EAAK,WAAU,2BACX,UAAAE,EAAI,MAAM,MAAA,CACf;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAGZ;AAAA,MACA,SAAS,CAACO,GAAeC,GAAgBC,CAAiB;AAAA,MACzD,GAAGb;AAAA,IAAA;AAAA,EAAA,GAEZ;AAER;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chart.js","sources":["../../../../lib/@ecme/components/shared/Chart.tsx"],"sourcesContent":["import { useRef, useEffect, useCallback, useMemo } from 'react'\nimport ApexChart from 'react-apexcharts'\nimport {\n apexLineChartDefaultOption,\n apexBarChartDefaultOption,\n apexAreaChartDefaultOption,\n apexDonutChartDefaultOption,\n apexRadarChartDefultOption,\n} from '@/configs/chart.config'\nimport { DIR_RTL } from '@/constants/theme.constant'\nimport type { ApexOptions } from 'apexcharts'\nimport type { Direction } from '@/@types/theme'\nimport type { ReactNode } from 'react'\n\nconst notDonut = ['line', 'bar', 'area']\n\ntype ChartType = 'line' | 'bar' | 'area' | 'donut' | 'radar'\n\nexport interface ChartProps {\n series?: ApexOptions['series']\n width?: string | number\n height?: string | number\n /* eslint-disable @typescript-eslint/no-explicit-any */\n xAxis?: any\n customOptions?: ApexOptions\n type?: ChartType\n direction?: Direction\n donutTitle?: string | ReactNode\n donutText?: string | ReactNode\n className?: string\n}\n\nconst Chart = (props: ChartProps) => {\n const {\n series = [],\n width = '100%',\n height = 300,\n xAxis,\n customOptions,\n type = 'line',\n direction,\n donutTitle,\n donutText,\n className,\n ...rest\n } = props\n\n const chartRef = useRef<HTMLDivElement>(null)\n\n const chartDefaultOption = useMemo(() => {\n switch (type) {\n case 'line':\n return apexLineChartDefaultOption\n case 'bar':\n return apexBarChartDefaultOption\n case 'area':\n return apexAreaChartDefaultOption\n case 'donut':\n return apexDonutChartDefaultOption\n case 'radar':\n return apexRadarChartDefultOption\n default:\n return apexLineChartDefaultOption\n }\n }, [type])\n\n let options = JSON.parse(JSON.stringify(chartDefaultOption))\n const isMobile = window.innerWidth < 768\n\n const setLegendOffset = useCallback(() => {\n if (chartRef.current) {\n const lengend = chartRef.current.querySelectorAll<HTMLDivElement>(\n 'div.apexcharts-legend',\n )[0]\n if (direction === DIR_RTL) {\n lengend.style.right = 'auto'\n lengend.style.left = '0'\n }\n if (isMobile) {\n lengend.style.position = 'relative'\n lengend.style.top = '0'\n lengend.style.justifyContent = 'start'\n lengend.style.padding = '0'\n }\n }\n }, [direction, isMobile])\n\n useEffect(() => {\n if (notDonut.includes(type as ChartType)) {\n setLegendOffset()\n }\n }, [type, setLegendOffset])\n\n if (notDonut.includes(type as ChartType)) {\n options.xaxis.categories = xAxis\n }\n\n if (customOptions) {\n options = { ...options, ...customOptions }\n }\n\n if (type === 'donut') {\n if (donutTitle) {\n options.plotOptions.pie.donut.labels.total.label = donutTitle\n }\n if (donutText) {\n options.plotOptions.pie.donut.labels.total.formatter = () =>\n donutText\n }\n }\n\n return (\n <div\n ref={chartRef}\n style={direction === DIR_RTL ? { direction: 'ltr' } : {}}\n className=\"chartRef\"\n >\n <ApexChart\n options={options}\n type={type}\n series={series}\n width={width}\n height={height}\n className={className}\n {...rest}\n />\n </div>\n )\n}\n\nexport default Chart\n"],"names":["notDonut","Chart","props","series","width","height","xAxis","customOptions","type","direction","donutTitle","donutText","className","rest","chartRef","useRef","chartDefaultOption","useMemo","apexLineChartDefaultOption","apexBarChartDefaultOption","apexAreaChartDefaultOption","apexDonutChartDefaultOption","apexRadarChartDefultOption","options","isMobile","setLegendOffset","useCallback","lengend","DIR_RTL","useEffect","jsx","ApexChart"],"mappings":";;;;;AAcA,MAAMA,IAAW,CAAC,QAAQ,OAAO,MAAM,GAkBjCC,IAAQ,CAACC,MAAsB;AACjC,QAAM;AAAA,IACF,QAAAC,IAAS,CAAA;AAAA,IACT,OAAAC,IAAQ;AAAA,IACR,QAAAC,IAAS;AAAA,IACT,OAAAC;AAAA,IACA,eAAAC;AAAA,IACA,MAAAC,IAAO;AAAA,IACP,WAAAC;AAAA,IACA,YAAAC;AAAA,IACA,WAAAC;AAAA,IACA,WAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,IACHX,GAEEY,IAAWC,EAAuB,IAAI,GAEtCC,IAAqBC,EAAQ,MAAM;AACrC,YAAQT,GAAA;AAAA,MACJ,KAAK;AACD,eAAOU;AAAA,MACX,KAAK;AACD,eAAOC;AAAA,MACX,KAAK;AACD,eAAOC;AAAA,MACX,KAAK;AACD,eAAOC;AAAA,MACX,KAAK;AACD,eAAOC;AAAA,MACX;AACI,eAAOJ;AAAA,IAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"Chart.js","sources":["../../../../lib/@ecme/components/shared/Chart.tsx"],"sourcesContent":["import { useRef, useEffect, useCallback, useMemo } from 'react'\nimport ApexChart from 'react-apexcharts'\nimport {\n apexLineChartDefaultOption,\n apexBarChartDefaultOption,\n apexAreaChartDefaultOption,\n apexDonutChartDefaultOption,\n apexRadarChartDefultOption,\n} from '@/configs/chart.config'\nimport { DIR_RTL } from '@/constants/theme.constant'\nimport type { ApexOptions } from 'apexcharts'\nimport type { Direction } from '@/@types/theme'\nimport type { ReactNode } from 'react'\n\nconst notDonut = ['line', 'bar', 'area']\n\ntype ChartType = 'line' | 'bar' | 'area' | 'donut' | 'radar'\n\nexport interface ChartProps {\n series?: ApexOptions['series']\n width?: string | number\n height?: string | number\n /* eslint-disable @typescript-eslint/no-explicit-any */\n xAxis?: any\n customOptions?: ApexOptions\n type?: ChartType\n direction?: Direction\n donutTitle?: string | ReactNode\n donutText?: string | ReactNode\n className?: string\n}\n\nconst Chart = (props: ChartProps) => {\n const {\n series = [],\n width = '100%',\n height = 300,\n xAxis,\n customOptions,\n type = 'line',\n direction,\n donutTitle,\n donutText,\n className,\n ...rest\n } = props\n\n const chartRef = useRef<HTMLDivElement>(null)\n\n const chartDefaultOption = useMemo(() => {\n switch (type) {\n case 'line':\n return apexLineChartDefaultOption\n case 'bar':\n return apexBarChartDefaultOption\n case 'area':\n return apexAreaChartDefaultOption\n case 'donut':\n return apexDonutChartDefaultOption\n case 'radar':\n return apexRadarChartDefultOption\n default:\n return apexLineChartDefaultOption\n }\n }, [type])\n\n let options = JSON.parse(JSON.stringify(chartDefaultOption))\n const isMobile = window.innerWidth < 768\n\n const setLegendOffset = useCallback(() => {\n if (chartRef.current) {\n const lengend = chartRef.current.querySelectorAll<HTMLDivElement>(\n 'div.apexcharts-legend',\n )[0]\n if (direction === DIR_RTL) {\n lengend.style.right = 'auto'\n lengend.style.left = '0'\n }\n if (isMobile) {\n lengend.style.position = 'relative'\n lengend.style.top = '0'\n lengend.style.justifyContent = 'start'\n lengend.style.padding = '0'\n }\n }\n }, [direction, isMobile])\n\n useEffect(() => {\n if (notDonut.includes(type as ChartType)) {\n setLegendOffset()\n }\n }, [type, setLegendOffset])\n\n if (notDonut.includes(type as ChartType)) {\n options.xaxis.categories = xAxis\n }\n\n if (customOptions) {\n options = { ...options, ...customOptions }\n }\n\n if (type === 'donut') {\n if (donutTitle) {\n options.plotOptions.pie.donut.labels.total.label = donutTitle\n }\n if (donutText) {\n options.plotOptions.pie.donut.labels.total.formatter = () =>\n donutText\n }\n }\n\n return (\n <div\n ref={chartRef}\n style={direction === DIR_RTL ? { direction: 'ltr' } : {}}\n className=\"chartRef\"\n >\n <ApexChart\n options={options}\n type={type}\n series={series}\n width={width}\n height={height}\n className={className}\n {...rest}\n />\n </div>\n )\n}\n\nexport default Chart\n"],"names":["notDonut","Chart","props","series","width","height","xAxis","customOptions","type","direction","donutTitle","donutText","className","rest","chartRef","useRef","chartDefaultOption","useMemo","apexLineChartDefaultOption","apexBarChartDefaultOption","apexAreaChartDefaultOption","apexDonutChartDefaultOption","apexRadarChartDefultOption","options","isMobile","setLegendOffset","useCallback","lengend","DIR_RTL","useEffect","jsx","ApexChart"],"mappings":";;;;;AAcA,MAAMA,IAAW,CAAC,QAAQ,OAAO,MAAM,GAkBjCC,IAAQ,CAACC,MAAsB;AACjC,QAAM;AAAA,IACF,QAAAC,IAAS,CAAA;AAAA,IACT,OAAAC,IAAQ;AAAA,IACR,QAAAC,IAAS;AAAA,IACT,OAAAC;AAAA,IACA,eAAAC;AAAA,IACA,MAAAC,IAAO;AAAA,IACP,WAAAC;AAAA,IACA,YAAAC;AAAA,IACA,WAAAC;AAAA,IACA,WAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,IACHX,GAEEY,IAAWC,EAAuB,IAAI,GAEtCC,IAAqBC,EAAQ,MAAM;AACrC,YAAQT,GAAA;AAAA,MACJ,KAAK;AACD,eAAOU;AAAA,MACX,KAAK;AACD,eAAOC;AAAA,MACX,KAAK;AACD,eAAOC;AAAA,MACX,KAAK;AACD,eAAOC;AAAA,MACX,KAAK;AACD,eAAOC;AAAA,MACX;AACI,eAAOJ;AAAA,IAAA;AAAA,EAEnB,GAAG,CAACV,CAAI,CAAC;AAET,MAAIe,IAAU,KAAK,MAAM,KAAK,UAAUP,CAAkB,CAAC;AAC3D,QAAMQ,IAAW,OAAO,aAAa,KAE/BC,IAAkBC,EAAY,MAAM;AACtC,QAAIZ,EAAS,SAAS;AAClB,YAAMa,IAAUb,EAAS,QAAQ;AAAA,QAC7B;AAAA,MAAA,EACF,CAAC;AACH,MAAIL,MAAcmB,MACdD,EAAQ,MAAM,QAAQ,QACtBA,EAAQ,MAAM,OAAO,MAErBH,MACAG,EAAQ,MAAM,WAAW,YACzBA,EAAQ,MAAM,MAAM,KACpBA,EAAQ,MAAM,iBAAiB,SAC/BA,EAAQ,MAAM,UAAU;AAAA,IAEhC;AAAA,EACJ,GAAG,CAAClB,GAAWe,CAAQ,CAAC;AAExB,SAAAK,EAAU,MAAM;AACZ,IAAI7B,EAAS,SAASQ,CAAiB,KACnCiB,EAAA;AAAA,EAER,GAAG,CAACjB,GAAMiB,CAAe,CAAC,GAEtBzB,EAAS,SAASQ,CAAiB,MACnCe,EAAQ,MAAM,aAAajB,IAG3BC,MACAgB,IAAU,EAAE,GAAGA,GAAS,GAAGhB,EAAA,IAG3BC,MAAS,YACLE,MACAa,EAAQ,YAAY,IAAI,MAAM,OAAO,MAAM,QAAQb,IAEnDC,MACAY,EAAQ,YAAY,IAAI,MAAM,OAAO,MAAM,YAAY,MACnDZ,KAKR,gBAAAmB;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,KAAKhB;AAAA,MACL,OAAOL,MAAcmB,IAAU,EAAE,WAAW,MAAA,IAAU,CAAA;AAAA,MACtD,WAAU;AAAA,MAEV,UAAA,gBAAAE;AAAA,QAACC;AAAAA,QAAA;AAAA,UACG,SAAAR;AAAA,UACA,MAAAf;AAAA,UACA,QAAAL;AAAA,UACA,OAAAC;AAAA,UACA,QAAAC;AAAA,UACA,WAAAO;AAAA,UACC,GAAGC;AAAA,QAAA;AAAA,MAAA;AAAA,IACR;AAAA,EAAA;AAGZ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfirmDialog.js","sources":["../../../../lib/@ecme/components/shared/ConfirmDialog.tsx"],"sourcesContent":["import {\n HiCheckCircle,\n HiOutlineInformationCircle,\n HiOutlineExclamation,\n HiOutlineExclamationCircle,\n} from 'react-icons/hi'\nimport Avatar from '@/components/ui/Avatar'\nimport Button from '@/components/ui/Button'\nimport Dialog from '@/components/ui/Dialog'\nimport type { ReactNode } from 'react'\nimport type { DialogProps } from '@/components/ui/Dialog'\nimport type { ButtonProps } from '@/components/ui/Button'\n\ntype StatusType = 'info' | 'success' | 'warning' | 'danger'\n\ninterface ConfirmDialogProps extends DialogProps {\n cancelText?: ReactNode | string\n confirmText?: ReactNode | string\n confirmButtonProps?: ButtonProps\n cancelButtonProps?: ButtonProps\n type?: StatusType\n title?: ReactNode | string\n onCancel?: () => void\n onConfirm?: () => void\n}\n\nconst StatusIcon = ({ status }: { status: StatusType }) => {\n switch (status) {\n case 'info':\n return (\n <Avatar\n className=\"bg-blue-100 text-blue-600 dark:bg-blue-500/20 dark:text-blue-100\"\n shape=\"circle\"\n >\n <span className=\"text-2xl\">\n <HiOutlineInformationCircle />\n </span>\n </Avatar>\n )\n case 'success':\n return (\n <Avatar\n className=\"bg-emerald-100 text-emerald-600 dark:bg-emerald-500/20 dark:text-emerald-100\"\n shape=\"circle\"\n >\n <span className=\"text-2xl\">\n <HiCheckCircle />\n </span>\n </Avatar>\n )\n case 'warning':\n return (\n <Avatar\n className=\"text-amber-600 bg-amber-100 dark:text-amber-100\"\n shape=\"circle\"\n >\n <span className=\"text-2xl\">\n <HiOutlineExclamationCircle />\n </span>\n </Avatar>\n )\n case 'danger':\n return (\n <Avatar\n className=\"text-red-600 bg-red-100 dark:text-red-100\"\n shape=\"circle\"\n >\n <span className=\"text-2xl\">\n <HiOutlineExclamation />\n </span>\n </Avatar>\n )\n\n default:\n return null\n }\n}\n\nconst ConfirmDialog = (props: ConfirmDialogProps) => {\n const {\n type = 'info',\n title,\n children,\n onCancel,\n onConfirm,\n cancelText = 'Cancel',\n confirmText = 'Confirm',\n confirmButtonProps,\n cancelButtonProps,\n ...rest\n } = props\n\n const handleCancel = () => {\n onCancel?.()\n }\n\n const handleConfirm = () => {\n onConfirm?.()\n }\n\n return (\n <Dialog contentClassName=\"pb-0 px-0\" {...rest}>\n <div className=\"px-6 pb-6 pt-2 flex\">\n <div>\n <StatusIcon status={type} />\n </div>\n <div className=\"ml-4 rtl:mr-4\">\n <h5 className=\"mb-2\">{title}</h5>\n {children}\n </div>\n </div>\n <div className=\"px-6 py-3 bg-gray-100 dark:bg-gray-700 rounded-bl-2xl rounded-br-2xl\">\n <div className=\"flex justify-end items-center gap-2\">\n <Button\n size=\"sm\"\n onClick={handleCancel}\n {...cancelButtonProps}\n >\n {cancelText}\n </Button>\n <Button\n size=\"sm\"\n variant=\"solid\"\n onClick={handleConfirm}\n {...confirmButtonProps}\n >\n {confirmText}\n </Button>\n </div>\n </div>\n </Dialog>\n )\n}\n\nexport default ConfirmDialog\n"],"names":["StatusIcon","status","jsx","Avatar","HiOutlineInformationCircle","HiCheckCircle","HiOutlineExclamationCircle","HiOutlineExclamation","ConfirmDialog","props","type","title","children","onCancel","onConfirm","cancelText","confirmText","confirmButtonProps","cancelButtonProps","rest","handleCancel","handleConfirm","jsxs","Dialog","Button"],"mappings":";;;;;;;AA0BA,MAAMA,IAAa,CAAC,EAAE,QAAAC,QAAqC;AACvD,UAAQA,GAAA;AAAA,IACJ,KAAK;AACD,aACI,gBAAAC;AAAA,QAACC;AAAA,QAAA;AAAA,UACG,WAAU;AAAA,UACV,OAAM;AAAA,UAEN,4BAAC,QAAA,EAAK,WAAU,YACZ,UAAA,gBAAAD,EAACE,KAA2B,EAAA,CAChC;AAAA,QAAA;AAAA,MAAA;AAAA,IAGZ,KAAK;AACD,aACI,gBAAAF;AAAA,QAACC;AAAA,QAAA;AAAA,UACG,WAAU;AAAA,UACV,OAAM;AAAA,UAEN,4BAAC,QAAA,EAAK,WAAU,YACZ,UAAA,gBAAAD,EAACG,KAAc,EAAA,CACnB;AAAA,QAAA;AAAA,MAAA;AAAA,IAGZ,KAAK;AACD,aACI,gBAAAH;AAAA,QAACC;AAAA,QAAA;AAAA,UACG,WAAU;AAAA,UACV,OAAM;AAAA,UAEN,4BAAC,QAAA,EAAK,WAAU,YACZ,UAAA,gBAAAD,EAACI,KAA2B,EAAA,CAChC;AAAA,QAAA;AAAA,MAAA;AAAA,IAGZ,KAAK;AACD,aACI,gBAAAJ;AAAA,QAACC;AAAA,QAAA;AAAA,UACG,WAAU;AAAA,UACV,OAAM;AAAA,UAEN,4BAAC,QAAA,EAAK,WAAU,YACZ,UAAA,gBAAAD,EAACK,KAAqB,EAAA,CAC1B;AAAA,QAAA;AAAA,MAAA;AAAA,IAIZ;AACI,aAAO;AAAA,EAAA;AAEnB,GAEMC,IAAgB,CAACC,MAA8B;AACjD,QAAM;AAAA,IACF,MAAAC,IAAO;AAAA,IACP,OAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,WAAAC;AAAA,IACA,YAAAC,IAAa;AAAA,IACb,aAAAC,IAAc;AAAA,IACd,oBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,IACHV,GAEEW,IAAe,MAAM;AACvB,IAAAP,KAAA,QAAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"ConfirmDialog.js","sources":["../../../../lib/@ecme/components/shared/ConfirmDialog.tsx"],"sourcesContent":["import {\n HiCheckCircle,\n HiOutlineInformationCircle,\n HiOutlineExclamation,\n HiOutlineExclamationCircle,\n} from 'react-icons/hi'\nimport Avatar from '@/components/ui/Avatar'\nimport Button from '@/components/ui/Button'\nimport Dialog from '@/components/ui/Dialog'\nimport type { ReactNode } from 'react'\nimport type { DialogProps } from '@/components/ui/Dialog'\nimport type { ButtonProps } from '@/components/ui/Button'\n\ntype StatusType = 'info' | 'success' | 'warning' | 'danger'\n\ninterface ConfirmDialogProps extends DialogProps {\n cancelText?: ReactNode | string\n confirmText?: ReactNode | string\n confirmButtonProps?: ButtonProps\n cancelButtonProps?: ButtonProps\n type?: StatusType\n title?: ReactNode | string\n onCancel?: () => void\n onConfirm?: () => void\n}\n\nconst StatusIcon = ({ status }: { status: StatusType }) => {\n switch (status) {\n case 'info':\n return (\n <Avatar\n className=\"bg-blue-100 text-blue-600 dark:bg-blue-500/20 dark:text-blue-100\"\n shape=\"circle\"\n >\n <span className=\"text-2xl\">\n <HiOutlineInformationCircle />\n </span>\n </Avatar>\n )\n case 'success':\n return (\n <Avatar\n className=\"bg-emerald-100 text-emerald-600 dark:bg-emerald-500/20 dark:text-emerald-100\"\n shape=\"circle\"\n >\n <span className=\"text-2xl\">\n <HiCheckCircle />\n </span>\n </Avatar>\n )\n case 'warning':\n return (\n <Avatar\n className=\"text-amber-600 bg-amber-100 dark:text-amber-100\"\n shape=\"circle\"\n >\n <span className=\"text-2xl\">\n <HiOutlineExclamationCircle />\n </span>\n </Avatar>\n )\n case 'danger':\n return (\n <Avatar\n className=\"text-red-600 bg-red-100 dark:text-red-100\"\n shape=\"circle\"\n >\n <span className=\"text-2xl\">\n <HiOutlineExclamation />\n </span>\n </Avatar>\n )\n\n default:\n return null\n }\n}\n\nconst ConfirmDialog = (props: ConfirmDialogProps) => {\n const {\n type = 'info',\n title,\n children,\n onCancel,\n onConfirm,\n cancelText = 'Cancel',\n confirmText = 'Confirm',\n confirmButtonProps,\n cancelButtonProps,\n ...rest\n } = props\n\n const handleCancel = () => {\n onCancel?.()\n }\n\n const handleConfirm = () => {\n onConfirm?.()\n }\n\n return (\n <Dialog contentClassName=\"pb-0 px-0\" {...rest}>\n <div className=\"px-6 pb-6 pt-2 flex\">\n <div>\n <StatusIcon status={type} />\n </div>\n <div className=\"ml-4 rtl:mr-4\">\n <h5 className=\"mb-2\">{title}</h5>\n {children}\n </div>\n </div>\n <div className=\"px-6 py-3 bg-gray-100 dark:bg-gray-700 rounded-bl-2xl rounded-br-2xl\">\n <div className=\"flex justify-end items-center gap-2\">\n <Button\n size=\"sm\"\n onClick={handleCancel}\n {...cancelButtonProps}\n >\n {cancelText}\n </Button>\n <Button\n size=\"sm\"\n variant=\"solid\"\n onClick={handleConfirm}\n {...confirmButtonProps}\n >\n {confirmText}\n </Button>\n </div>\n </div>\n </Dialog>\n )\n}\n\nexport default ConfirmDialog\n"],"names":["StatusIcon","status","jsx","Avatar","HiOutlineInformationCircle","HiCheckCircle","HiOutlineExclamationCircle","HiOutlineExclamation","ConfirmDialog","props","type","title","children","onCancel","onConfirm","cancelText","confirmText","confirmButtonProps","cancelButtonProps","rest","handleCancel","handleConfirm","jsxs","Dialog","Button"],"mappings":";;;;;;;AA0BA,MAAMA,IAAa,CAAC,EAAE,QAAAC,QAAqC;AACvD,UAAQA,GAAA;AAAA,IACJ,KAAK;AACD,aACI,gBAAAC;AAAA,QAACC;AAAA,QAAA;AAAA,UACG,WAAU;AAAA,UACV,OAAM;AAAA,UAEN,4BAAC,QAAA,EAAK,WAAU,YACZ,UAAA,gBAAAD,EAACE,KAA2B,EAAA,CAChC;AAAA,QAAA;AAAA,MAAA;AAAA,IAGZ,KAAK;AACD,aACI,gBAAAF;AAAA,QAACC;AAAA,QAAA;AAAA,UACG,WAAU;AAAA,UACV,OAAM;AAAA,UAEN,4BAAC,QAAA,EAAK,WAAU,YACZ,UAAA,gBAAAD,EAACG,KAAc,EAAA,CACnB;AAAA,QAAA;AAAA,MAAA;AAAA,IAGZ,KAAK;AACD,aACI,gBAAAH;AAAA,QAACC;AAAA,QAAA;AAAA,UACG,WAAU;AAAA,UACV,OAAM;AAAA,UAEN,4BAAC,QAAA,EAAK,WAAU,YACZ,UAAA,gBAAAD,EAACI,KAA2B,EAAA,CAChC;AAAA,QAAA;AAAA,MAAA;AAAA,IAGZ,KAAK;AACD,aACI,gBAAAJ;AAAA,QAACC;AAAA,QAAA;AAAA,UACG,WAAU;AAAA,UACV,OAAM;AAAA,UAEN,4BAAC,QAAA,EAAK,WAAU,YACZ,UAAA,gBAAAD,EAACK,KAAqB,EAAA,CAC1B;AAAA,QAAA;AAAA,MAAA;AAAA,IAIZ;AACI,aAAO;AAAA,EAAA;AAEnB,GAEMC,IAAgB,CAACC,MAA8B;AACjD,QAAM;AAAA,IACF,MAAAC,IAAO;AAAA,IACP,OAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,WAAAC;AAAA,IACA,YAAAC,IAAa;AAAA,IACb,aAAAC,IAAc;AAAA,IACd,oBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,IACHV,GAEEW,IAAe,MAAM;AACvB,IAAAP,KAAA,QAAAA;AAAA,EACJ,GAEMQ,IAAgB,MAAM;AACxB,IAAAP,KAAA,QAAAA;AAAA,EACJ;AAEA,SACI,gBAAAQ,EAACC,GAAA,EAAO,kBAAiB,aAAa,GAAGJ,GACrC,UAAA;AAAA,IAAA,gBAAAG,EAAC,OAAA,EAAI,WAAU,uBACX,UAAA;AAAA,MAAA,gBAAApB,EAAC,OAAA,EACG,UAAA,gBAAAA,EAACF,GAAA,EAAW,QAAQU,GAAM,GAC9B;AAAA,MACA,gBAAAY,EAAC,OAAA,EAAI,WAAU,iBACX,UAAA;AAAA,QAAA,gBAAApB,EAAC,MAAA,EAAG,WAAU,QAAQ,UAAAS,GAAM;AAAA,QAC3BC;AAAA,MAAA,EAAA,CACL;AAAA,IAAA,GACJ;AAAA,sBACC,OAAA,EAAI,WAAU,wEACX,UAAA,gBAAAU,EAAC,OAAA,EAAI,WAAU,uCACX,UAAA;AAAA,MAAA,gBAAApB;AAAA,QAACsB;AAAA,QAAA;AAAA,UACG,MAAK;AAAA,UACL,SAASJ;AAAA,UACR,GAAGF;AAAA,UAEH,UAAAH;AAAA,QAAA;AAAA,MAAA;AAAA,MAEL,gBAAAb;AAAA,QAACsB;AAAA,QAAA;AAAA,UACG,MAAK;AAAA,UACL,SAAQ;AAAA,UACR,SAASH;AAAA,UACR,GAAGJ;AAAA,UAEH,UAAAD;AAAA,QAAA;AAAA,MAAA;AAAA,IACL,EAAA,CACJ,EAAA,CACJ;AAAA,EAAA,GACJ;AAER;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTable.js","sources":["../../../../lib/@ecme/components/shared/DataTable.tsx"],"sourcesContent":["import {\n useMemo,\n useRef,\n useEffect,\n useState,\n useImperativeHandle,\n Fragment\n} from 'react'\nimport classNames from 'classnames'\nimport Table from '@/components/ui/Table'\nimport Pagination from '@/components/ui/Pagination'\nimport Select from '@/components/ui/Select'\nimport Checkbox from '@/components/ui/Checkbox'\nimport TableRowSkeleton from './loaders/TableRowSkeleton'\nimport Loading from './Loading'\nimport FileNotFound from '@/assets/svg/FileNotFound'\nimport {\n useReactTable,\n getCoreRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n flexRender,\n ColumnDef,\n ColumnSort,\n Row,\n CellContext,\n} from '@tanstack/react-table'\nimport type { TableProps } from '@/components/ui/Table'\nimport type { SkeletonProps } from '@/components/ui/Skeleton'\nimport type { Ref, ChangeEvent, ReactNode } from 'react'\nimport type { CheckboxProps } from '@/components/ui/Checkbox'\nimport { useTranslation } from 'react-i18next'\n\nexport type OnSortParam = { order: 'asc' | 'desc' | ''; key: string | number }\n\ntype DataTableProps<T> = {\n columns: ColumnDef<T>[]\n customNoDataIcon?: ReactNode\n data?: T[]\n loading?: boolean\n noData?: boolean\n instanceId?: string\n onCheckBoxChange?: (checked: boolean, row: T) => void\n onIndeterminateCheckBoxChange?: (checked: boolean, rows: Row<T>[]) => void\n onPaginationChange?: (page: number) => void\n onSelectChange?: (num: number) => void\n onSort?: (sort: OnSortParam) => void\n pageSizes?: number[]\n manualSorting?: boolean\n selectable?: boolean\n skeletonAvatarColumns?: number[]\n skeletonAvatarProps?: SkeletonProps\n pagingData?: {\n total: number\n pageIndex: number\n pageSize: number\n }\n checkboxChecked?: (row: T) => boolean\n indeterminateCheckboxChecked?: (row: Row<T>[]) => boolean\n ref?: Ref<DataTableResetHandle | HTMLTableElement>\n onSelectionChange?: (selected: T[]) => void\n renderSubComponent?: (row: Row<T>) => React.ReactNode\n getRowCanExpand?: (row: Row<T>) => boolean\n hidePagination?: boolean\n} & TableProps\n\ntype CheckBoxChangeEvent = ChangeEvent<HTMLInputElement>\n\ninterface IndeterminateCheckboxProps extends Omit<CheckboxProps, 'onChange'> {\n onChange: (event: CheckBoxChangeEvent) => void\n indeterminate: boolean\n onCheckBoxChange?: (event: CheckBoxChangeEvent) => void\n onIndeterminateCheckBoxChange?: (event: CheckBoxChangeEvent) => void\n}\n\nconst { Tr, Th, Td, THead, TBody, Sorter } = Table\n\nconst IndeterminateCheckbox = (props: IndeterminateCheckboxProps) => {\n const {\n indeterminate,\n onChange,\n onCheckBoxChange,\n onIndeterminateCheckBoxChange,\n ...rest\n } = props\n\n const ref = useRef<HTMLInputElement>(null)\n\n useEffect(() => {\n if (typeof indeterminate === 'boolean' && ref.current) {\n ref.current.indeterminate = !rest.checked && indeterminate\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [ref, indeterminate])\n\n const handleChange = (e: CheckBoxChangeEvent) => {\n onChange(e)\n onCheckBoxChange?.(e)\n onIndeterminateCheckBoxChange?.(e)\n }\n\n return (\n <Checkbox\n ref={ref}\n className=\"mb-0\"\n onChange={(_, e) => handleChange(e)}\n {...rest}\n />\n )\n}\n\nexport type DataTableResetHandle = {\n resetSorting: () => void\n resetSelected: () => void\n}\n\nfunction DataTable<T>(props: DataTableProps<T>) {\n const {\n skeletonAvatarColumns,\n columns: columnsProp = [],\n data = [],\n customNoDataIcon,\n loading,\n noData,\n onCheckBoxChange,\n onIndeterminateCheckBoxChange,\n onPaginationChange,\n onSelectChange,\n onSort,\n pageSizes = [10, 25, 50, 100],\n selectable = false,\n skeletonAvatarProps,\n pagingData = {\n total: 0,\n pageIndex: 1,\n pageSize: 10,\n },\n checkboxChecked,\n indeterminateCheckboxChecked,\n instanceId = 'data-table',\n ref,\n renderSubComponent = () => null,\n getRowCanExpand = () => false,\n onSelectionChange,\n hidePagination = false,\n ...rest\n } = props\n\n const { pageSize, pageIndex, total } = pagingData\n\n const [sorting, setSorting] = useState<ColumnSort[] | null>(null)\n\n const {t} = useTranslation()\n\n const pageSizeOption = useMemo(\n () =>\n pageSizes.map((number) => ({\n value: number,\n label: `${number} / ${t('common.table.pageAbbr')}`,\n })),\n [pageSizes],\n )\n\n useEffect(() => {\n if (Array.isArray(sorting)) {\n const sortOrder =\n sorting.length > 0 ? (sorting[0].desc ? 'desc' : 'asc') : ''\n const id = sorting.length > 0 ? sorting[0].id : ''\n onSort?.({ order: sortOrder, key: id })\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [sorting])\n\n const handleIndeterminateCheckBoxChange = (\n checked: boolean,\n rows: Row<T>[],\n ) => {\n if (!loading) {\n onIndeterminateCheckBoxChange?.(checked, rows)\n }\n }\n\n const handleCheckBoxChange = (checked: boolean, row: T) => {\n if (!loading) {\n onCheckBoxChange?.(checked, row)\n }\n }\n\n const finalColumns: ColumnDef<T>[] = useMemo(() => {\n const columns = columnsProp\n\n if (selectable) {\n return [\n {\n id: 'select',\n maxSize: 50,\n header: ({ table }) => (\n <IndeterminateCheckbox\n checked={\n indeterminateCheckboxChecked\n ? indeterminateCheckboxChecked(\n table.getRowModel().rows,\n )\n : table.getIsAllRowsSelected()\n }\n indeterminate={table.getIsSomeRowsSelected()}\n onChange={table.getToggleAllRowsSelectedHandler()}\n onIndeterminateCheckBoxChange={(e) => {\n handleIndeterminateCheckBoxChange(\n e.target.checked,\n table.getRowModel().rows,\n )\n }}\n />\n ),\n cell: ({ row }) => (\n <IndeterminateCheckbox\n checked={\n checkboxChecked\n ? checkboxChecked(row.original)\n : row.getIsSelected()\n }\n disabled={!row.getCanSelect()}\n indeterminate={row.getIsSomeSelected()}\n onChange={row.getToggleSelectedHandler()}\n onCheckBoxChange={(e) =>\n handleCheckBoxChange(\n e.target.checked,\n row.original,\n )\n }\n />\n ),\n },\n ...columns,\n ]\n }\n return columns\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [columnsProp, selectable, loading, checkboxChecked])\n\n const table = useReactTable({\n data,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n columns: finalColumns,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n getSortedRowModel: getSortedRowModel(),\n manualPagination: true,\n manualSorting: props.manualSorting ?? false,\n onSortingChange: (sorter) => {\n setSorting(sorter as ColumnSort[])\n },\n state: {\n sorting: sorting as ColumnSort[],\n },\n getRowCanExpand\n })\n\n const resetSorting = () => {\n table.resetSorting()\n }\n\n const resetSelected = () => {\n table.resetRowSelection(true)\n }\n\n useImperativeHandle(ref, () => ({\n resetSorting,\n resetSelected,\n }))\n\n const handlePaginationChange = (page: number) => {\n if (!loading) {\n resetSelected()\n onPaginationChange?.(page)\n }\n }\n\n const handleSelectChange = (value?: number) => {\n if (!loading) {\n onSelectChange?.(Number(value))\n }\n }\n\n const prevSelectedRef = useRef<T[]>([])\n\n useEffect(() => {\n if (!onSelectionChange) return;\n\n const selectedRows = table.getSelectedRowModel().rows.map(r => r.original as T);\n\n const isEqual = selectedRows.length === prevSelectedRef.current.length &&\n selectedRows.every((item, idx) => item === prevSelectedRef.current[idx]);\n\n if (!isEqual) {\n prevSelectedRef.current = selectedRows;\n onSelectionChange(selectedRows);\n }\n }, [table.getState().rowSelection, onSelectionChange, table]);\n\n return (\n <Loading loading={Boolean(loading && data.length !== 0)} type=\"cover\">\n <Table {...rest}>\n <THead>\n {table.getHeaderGroups().map((headerGroup) => (\n <Tr key={headerGroup.id}>\n {headerGroup.headers.map((header) => {\n return (\n <Th\n key={header.id}\n colSpan={header.colSpan}\n >\n {header.isPlaceholder ? null : (\n <div\n className={classNames(\n 'flex items-center justify-between gap-1',\n header.column.getCanSort() && 'cursor-pointer select-none',\n loading && 'pointer-events-none',\n )}\n onClick={header.column.getToggleSortingHandler()}\n >\n <span className=\"truncate\">\n {flexRender(\n header.column.columnDef.header,\n header.getContext(),\n )}\n </span>\n {header.column.getCanSort() && (\n <Sorter sort={header.column.getIsSorted()} />\n )}\n </div>\n )}\n </Th>\n )\n })}\n </Tr>\n ))}\n </THead>\n {loading && data.length === 0 ? (\n <TableRowSkeleton\n columns={(finalColumns as Array<T>).length}\n rows={pagingData.pageSize}\n avatarInColumns={skeletonAvatarColumns}\n avatarProps={skeletonAvatarProps}\n />\n ) : (\n <TBody>\n {noData ? (\n <Tr>\n <Td\n className=\"hover:bg-transparent\"\n colSpan={finalColumns.length}\n >\n <div className=\"flex flex-col items-center gap-4\">\n {customNoDataIcon ? (\n customNoDataIcon\n ) : (\n <>\n <FileNotFound />\n <span className=\"font-semibold\">\n No data found!\n </span>\n </>\n )}\n </div>\n </Td>\n </Tr>\n ) : (\n table\n .getRowModel()\n .rows.slice(0, pageSize)\n .map((row) => {\n return (\n <Fragment key={row.id}>\n <Tr key={row.id}>\n {row\n .getVisibleCells()\n .map((cell) => {\n return (\n <Td\n key={cell.id}\n style={{\n width: cell.column.getSize(),\n }}\n >\n {flexRender(\n cell.column\n .columnDef\n .cell,\n cell.getContext(),\n )}\n </Td>\n )\n })}\n </Tr>\n {row.getIsExpanded() && (\n <Tr>\n <Td colSpan={row.getVisibleCells().length}>{renderSubComponent(row)}</Td>\n </Tr>\n )}\n </Fragment>\n )\n })\n )}\n </TBody>\n )}\n </Table>\n {!hidePagination && (\n <div className=\"flex items-center justify-between mt-4\">\n <Pagination\n pageSize={pageSize}\n currentPage={pageIndex}\n total={total}\n onChange={handlePaginationChange}\n />\n <div style={{ minWidth: 130 }}>\n <Select\n instanceId={instanceId}\n size=\"sm\"\n menuPlacement=\"top\"\n isSearchable={false}\n value={pageSizeOption.filter(\n (option) => option.value === pageSize,\n )}\n options={pageSizeOption}\n onChange={(option) => handleSelectChange(option?.value)}\n />\n </div>\n </div>\n )}\n </Loading>\n )\n}\n\nexport type { ColumnDef, Row, CellContext }\nexport default DataTable\n"],"names":["Tr","Th","Td","THead","TBody","Sorter","Table","IndeterminateCheckbox","props","indeterminate","onChange","onCheckBoxChange","onIndeterminateCheckBoxChange","rest","ref","useRef","useEffect","handleChange","e","jsx","Checkbox","_","DataTable","skeletonAvatarColumns","columnsProp","data","customNoDataIcon","loading","noData","onPaginationChange","onSelectChange","onSort","pageSizes","selectable","skeletonAvatarProps","pagingData","checkboxChecked","indeterminateCheckboxChecked","instanceId","renderSubComponent","getRowCanExpand","onSelectionChange","hidePagination","pageSize","pageIndex","total","sorting","setSorting","useState","t","useTranslation","pageSizeOption","useMemo","number","sortOrder","id","handleIndeterminateCheckBoxChange","checked","rows","handleCheckBoxChange","row","finalColumns","columns","table","useReactTable","getCoreRowModel","getFilteredRowModel","getPaginationRowModel","getSortedRowModel","sorter","resetSorting","resetSelected","useImperativeHandle","handlePaginationChange","page","handleSelectChange","value","prevSelectedRef","selectedRows","r","item","idx","jsxs","Loading","headerGroup","header","classNames","flexRender","TableRowSkeleton","Fragment","FileNotFound","cell","Pagination","Select","option"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DataTable.js","sources":["../../../../lib/@ecme/components/shared/DataTable.tsx"],"sourcesContent":["import {\n useMemo,\n useRef,\n useEffect,\n useState,\n useImperativeHandle,\n Fragment\n} from 'react'\nimport classNames from 'classnames'\nimport Table from '@/components/ui/Table'\nimport Pagination from '@/components/ui/Pagination'\nimport Select from '@/components/ui/Select'\nimport Checkbox from '@/components/ui/Checkbox'\nimport TableRowSkeleton from './loaders/TableRowSkeleton'\nimport Loading from './Loading'\nimport FileNotFound from '@/assets/svg/FileNotFound'\nimport {\n useReactTable,\n getCoreRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n flexRender,\n ColumnDef,\n ColumnSort,\n Row,\n CellContext,\n} from '@tanstack/react-table'\nimport type { TableProps } from '@/components/ui/Table'\nimport type { SkeletonProps } from '@/components/ui/Skeleton'\nimport type { Ref, ChangeEvent, ReactNode } from 'react'\nimport type { CheckboxProps } from '@/components/ui/Checkbox'\nimport { useTranslation } from 'react-i18next'\n\nexport type OnSortParam = { order: 'asc' | 'desc' | ''; key: string | number }\n\ntype DataTableProps<T> = {\n columns: ColumnDef<T>[]\n customNoDataIcon?: ReactNode\n data?: T[]\n loading?: boolean\n noData?: boolean\n instanceId?: string\n onCheckBoxChange?: (checked: boolean, row: T) => void\n onIndeterminateCheckBoxChange?: (checked: boolean, rows: Row<T>[]) => void\n onPaginationChange?: (page: number) => void\n onSelectChange?: (num: number) => void\n onSort?: (sort: OnSortParam) => void\n pageSizes?: number[]\n manualSorting?: boolean\n selectable?: boolean\n skeletonAvatarColumns?: number[]\n skeletonAvatarProps?: SkeletonProps\n pagingData?: {\n total: number\n pageIndex: number\n pageSize: number\n }\n checkboxChecked?: (row: T) => boolean\n indeterminateCheckboxChecked?: (row: Row<T>[]) => boolean\n ref?: Ref<DataTableResetHandle | HTMLTableElement>\n onSelectionChange?: (selected: T[]) => void\n renderSubComponent?: (row: Row<T>) => React.ReactNode\n getRowCanExpand?: (row: Row<T>) => boolean\n hidePagination?: boolean\n} & TableProps\n\ntype CheckBoxChangeEvent = ChangeEvent<HTMLInputElement>\n\ninterface IndeterminateCheckboxProps extends Omit<CheckboxProps, 'onChange'> {\n onChange: (event: CheckBoxChangeEvent) => void\n indeterminate: boolean\n onCheckBoxChange?: (event: CheckBoxChangeEvent) => void\n onIndeterminateCheckBoxChange?: (event: CheckBoxChangeEvent) => void\n}\n\nconst { Tr, Th, Td, THead, TBody, Sorter } = Table\n\nconst IndeterminateCheckbox = (props: IndeterminateCheckboxProps) => {\n const {\n indeterminate,\n onChange,\n onCheckBoxChange,\n onIndeterminateCheckBoxChange,\n ...rest\n } = props\n\n const ref = useRef<HTMLInputElement>(null)\n\n useEffect(() => {\n if (typeof indeterminate === 'boolean' && ref.current) {\n ref.current.indeterminate = !rest.checked && indeterminate\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [ref, indeterminate])\n\n const handleChange = (e: CheckBoxChangeEvent) => {\n onChange(e)\n onCheckBoxChange?.(e)\n onIndeterminateCheckBoxChange?.(e)\n }\n\n return (\n <Checkbox\n ref={ref}\n className=\"mb-0\"\n onChange={(_, e) => handleChange(e)}\n {...rest}\n />\n )\n}\n\nexport type DataTableResetHandle = {\n resetSorting: () => void\n resetSelected: () => void\n}\n\nfunction DataTable<T>(props: DataTableProps<T>) {\n const {\n skeletonAvatarColumns,\n columns: columnsProp = [],\n data = [],\n customNoDataIcon,\n loading,\n noData,\n onCheckBoxChange,\n onIndeterminateCheckBoxChange,\n onPaginationChange,\n onSelectChange,\n onSort,\n pageSizes = [10, 25, 50, 100],\n selectable = false,\n skeletonAvatarProps,\n pagingData = {\n total: 0,\n pageIndex: 1,\n pageSize: 10,\n },\n checkboxChecked,\n indeterminateCheckboxChecked,\n instanceId = 'data-table',\n ref,\n renderSubComponent = () => null,\n getRowCanExpand = () => false,\n onSelectionChange,\n hidePagination = false,\n ...rest\n } = props\n\n const { pageSize, pageIndex, total } = pagingData\n\n const [sorting, setSorting] = useState<ColumnSort[] | null>(null)\n\n const {t} = useTranslation()\n\n const pageSizeOption = useMemo(\n () =>\n pageSizes.map((number) => ({\n value: number,\n label: `${number} / ${t('common.table.pageAbbr')}`,\n })),\n [pageSizes],\n )\n\n useEffect(() => {\n if (Array.isArray(sorting)) {\n const sortOrder =\n sorting.length > 0 ? (sorting[0].desc ? 'desc' : 'asc') : ''\n const id = sorting.length > 0 ? sorting[0].id : ''\n onSort?.({ order: sortOrder, key: id })\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [sorting])\n\n const handleIndeterminateCheckBoxChange = (\n checked: boolean,\n rows: Row<T>[],\n ) => {\n if (!loading) {\n onIndeterminateCheckBoxChange?.(checked, rows)\n }\n }\n\n const handleCheckBoxChange = (checked: boolean, row: T) => {\n if (!loading) {\n onCheckBoxChange?.(checked, row)\n }\n }\n\n const finalColumns: ColumnDef<T>[] = useMemo(() => {\n const columns = columnsProp\n\n if (selectable) {\n return [\n {\n id: 'select',\n maxSize: 50,\n header: ({ table }) => (\n <IndeterminateCheckbox\n checked={\n indeterminateCheckboxChecked\n ? indeterminateCheckboxChecked(\n table.getRowModel().rows,\n )\n : table.getIsAllRowsSelected()\n }\n indeterminate={table.getIsSomeRowsSelected()}\n onChange={table.getToggleAllRowsSelectedHandler()}\n onIndeterminateCheckBoxChange={(e) => {\n handleIndeterminateCheckBoxChange(\n e.target.checked,\n table.getRowModel().rows,\n )\n }}\n />\n ),\n cell: ({ row }) => (\n <IndeterminateCheckbox\n checked={\n checkboxChecked\n ? checkboxChecked(row.original)\n : row.getIsSelected()\n }\n disabled={!row.getCanSelect()}\n indeterminate={row.getIsSomeSelected()}\n onChange={row.getToggleSelectedHandler()}\n onCheckBoxChange={(e) =>\n handleCheckBoxChange(\n e.target.checked,\n row.original,\n )\n }\n />\n ),\n },\n ...columns,\n ]\n }\n return columns\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [columnsProp, selectable, loading, checkboxChecked])\n\n const table = useReactTable({\n data,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n columns: finalColumns,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n getSortedRowModel: getSortedRowModel(),\n manualPagination: true,\n manualSorting: props.manualSorting ?? false,\n onSortingChange: (sorter) => {\n setSorting(sorter as ColumnSort[])\n },\n state: {\n sorting: sorting as ColumnSort[],\n },\n getRowCanExpand\n })\n\n const resetSorting = () => {\n table.resetSorting()\n }\n\n const resetSelected = () => {\n table.resetRowSelection(true)\n }\n\n useImperativeHandle(ref, () => ({\n resetSorting,\n resetSelected,\n }))\n\n const handlePaginationChange = (page: number) => {\n if (!loading) {\n resetSelected()\n onPaginationChange?.(page)\n }\n }\n\n const handleSelectChange = (value?: number) => {\n if (!loading) {\n onSelectChange?.(Number(value))\n }\n }\n\n const prevSelectedRef = useRef<T[]>([])\n\n useEffect(() => {\n if (!onSelectionChange) return;\n\n const selectedRows = table.getSelectedRowModel().rows.map(r => r.original as T);\n\n const isEqual = selectedRows.length === prevSelectedRef.current.length &&\n selectedRows.every((item, idx) => item === prevSelectedRef.current[idx]);\n\n if (!isEqual) {\n prevSelectedRef.current = selectedRows;\n onSelectionChange(selectedRows);\n }\n }, [table.getState().rowSelection, onSelectionChange, table]);\n\n return (\n <Loading loading={Boolean(loading && data.length !== 0)} type=\"cover\">\n <Table {...rest}>\n <THead>\n {table.getHeaderGroups().map((headerGroup) => (\n <Tr key={headerGroup.id}>\n {headerGroup.headers.map((header) => {\n return (\n <Th\n key={header.id}\n colSpan={header.colSpan}\n >\n {header.isPlaceholder ? null : (\n <div\n className={classNames(\n 'flex items-center justify-between gap-1',\n header.column.getCanSort() && 'cursor-pointer select-none',\n loading && 'pointer-events-none',\n )}\n onClick={header.column.getToggleSortingHandler()}\n >\n <span className=\"truncate\">\n {flexRender(\n header.column.columnDef.header,\n header.getContext(),\n )}\n </span>\n {header.column.getCanSort() && (\n <Sorter sort={header.column.getIsSorted()} />\n )}\n </div>\n )}\n </Th>\n )\n })}\n </Tr>\n ))}\n </THead>\n {loading && data.length === 0 ? (\n <TableRowSkeleton\n columns={(finalColumns as Array<T>).length}\n rows={pagingData.pageSize}\n avatarInColumns={skeletonAvatarColumns}\n avatarProps={skeletonAvatarProps}\n />\n ) : (\n <TBody>\n {noData ? (\n <Tr>\n <Td\n className=\"hover:bg-transparent\"\n colSpan={finalColumns.length}\n >\n <div className=\"flex flex-col items-center gap-4\">\n {customNoDataIcon ? (\n customNoDataIcon\n ) : (\n <>\n <FileNotFound />\n <span className=\"font-semibold\">\n No data found!\n </span>\n </>\n )}\n </div>\n </Td>\n </Tr>\n ) : (\n table\n .getRowModel()\n .rows.slice(0, pageSize)\n .map((row) => {\n return (\n <Fragment key={row.id}>\n <Tr key={row.id}>\n {row\n .getVisibleCells()\n .map((cell) => {\n return (\n <Td\n key={cell.id}\n style={{\n width: cell.column.getSize(),\n }}\n >\n {flexRender(\n cell.column\n .columnDef\n .cell,\n cell.getContext(),\n )}\n </Td>\n )\n })}\n </Tr>\n {row.getIsExpanded() && (\n <Tr>\n <Td colSpan={row.getVisibleCells().length}>{renderSubComponent(row)}</Td>\n </Tr>\n )}\n </Fragment>\n )\n })\n )}\n </TBody>\n )}\n </Table>\n {!hidePagination && (\n <div className=\"flex items-center justify-between mt-4\">\n <Pagination\n pageSize={pageSize}\n currentPage={pageIndex}\n total={total}\n onChange={handlePaginationChange}\n />\n <div style={{ minWidth: 130 }}>\n <Select\n instanceId={instanceId}\n size=\"sm\"\n menuPlacement=\"top\"\n isSearchable={false}\n value={pageSizeOption.filter(\n (option) => option.value === pageSize,\n )}\n options={pageSizeOption}\n onChange={(option) => handleSelectChange(option?.value)}\n />\n </div>\n </div>\n )}\n </Loading>\n )\n}\n\nexport type { ColumnDef, Row, CellContext }\nexport default DataTable\n"],"names":["Tr","Th","Td","THead","TBody","Sorter","Table","IndeterminateCheckbox","props","indeterminate","onChange","onCheckBoxChange","onIndeterminateCheckBoxChange","rest","ref","useRef","useEffect","handleChange","e","jsx","Checkbox","_","DataTable","skeletonAvatarColumns","columnsProp","data","customNoDataIcon","loading","noData","onPaginationChange","onSelectChange","onSort","pageSizes","selectable","skeletonAvatarProps","pagingData","checkboxChecked","indeterminateCheckboxChecked","instanceId","renderSubComponent","getRowCanExpand","onSelectionChange","hidePagination","pageSize","pageIndex","total","sorting","setSorting","useState","t","useTranslation","pageSizeOption","useMemo","number","sortOrder","id","handleIndeterminateCheckBoxChange","checked","rows","handleCheckBoxChange","row","finalColumns","columns","table","useReactTable","getCoreRowModel","getFilteredRowModel","getPaginationRowModel","getSortedRowModel","sorter","resetSorting","resetSelected","useImperativeHandle","handlePaginationChange","page","handleSelectChange","value","prevSelectedRef","selectedRows","r","item","idx","jsxs","Loading","headerGroup","header","classNames","flexRender","TableRowSkeleton","Fragment","FileNotFound","cell","Pagination","Select","option"],"mappings":";;;;;;;;;;;;;;AA4EA,MAAM,EAAE,IAAAA,GAAI,IAAAC,IAAI,IAAAC,GAAI,OAAAC,IAAO,OAAAC,IAAO,QAAAC,OAAWC,GAEvCC,IAAwB,CAACC,MAAsC;AACjE,QAAM;AAAA,IACF,eAAAC;AAAA,IACA,UAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,+BAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,IACHL,GAEEM,IAAMC,EAAyB,IAAI;AAEzC,EAAAC,EAAU,MAAM;AACZ,IAAI,OAAOP,KAAkB,aAAaK,EAAI,YAC1CA,EAAI,QAAQ,gBAAgB,CAACD,EAAK,WAAWJ;AAAA,EAGrD,GAAG,CAACK,GAAKL,CAAa,CAAC;AAEvB,QAAMQ,IAAe,CAACC,MAA2B;AAC7C,IAAAR,EAASQ,CAAC,GACVP,KAAA,QAAAA,EAAmBO,IACnBN,KAAA,QAAAA,EAAgCM;AAAA,EACpC;AAEA,SACI,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACG,KAAAN;AAAA,MACA,WAAU;AAAA,MACV,UAAU,CAACO,GAAGH,MAAMD,EAAaC,CAAC;AAAA,MACjC,GAAGL;AAAA,IAAA;AAAA,EAAA;AAGhB;AAOA,SAASS,GAAad,GAA0B;AAC5C,QAAM;AAAA,IACF,uBAAAe;AAAA,IACA,SAASC,IAAc,CAAA;AAAA,IACvB,MAAAC,IAAO,CAAA;AAAA,IACP,kBAAAC;AAAA,IACA,SAAAC;AAAA,IACA,QAAAC;AAAA,IACA,kBAAAjB;AAAA,IACA,+BAAAC;AAAA,IACA,oBAAAiB;AAAA,IACA,gBAAAC;AAAA,IACA,QAAAC;AAAA,IACA,WAAAC,IAAY,CAAC,IAAI,IAAI,IAAI,GAAG;AAAA,IAC5B,YAAAC,IAAa;AAAA,IACb,qBAAAC;AAAA,IACA,YAAAC,IAAa;AAAA,MACT,OAAO;AAAA,MACP,WAAW;AAAA,MACX,UAAU;AAAA,IAAA;AAAA,IAEd,iBAAAC;AAAA,IACA,8BAAAC;AAAA,IACA,YAAAC,IAAa;AAAA,IACb,KAAAxB;AAAA,IACA,oBAAAyB,IAAqB,MAAM;AAAA,IAC3B,iBAAAC,IAAkB,MAAM;AAAA,IACxB,mBAAAC;AAAA,IACA,gBAAAC,IAAiB;AAAA,IACjB,GAAG7B;AAAA,EAAA,IACHL,GAEE,EAAE,UAAAmC,GAAU,WAAAC,GAAW,OAAAC,EAAA,IAAUV,GAEjC,CAACW,GAASC,CAAU,IAAIC,GAA8B,IAAI,GAE1D,EAAC,GAAAC,EAAA,IAAKC,GAAA,GAENC,IAAiBC;AAAA,IACnB,MACIpB,EAAU,IAAI,CAACqB,OAAY;AAAA,MACvB,OAAOA;AAAA,MACP,OAAO,GAAGA,CAAM,MAAMJ,EAAE,uBAAuB,CAAC;AAAA,IAAA,EAClD;AAAA,IACN,CAACjB,CAAS;AAAA,EAAA;AAGd,EAAAhB,EAAU,MAAM;AACZ,QAAI,MAAM,QAAQ8B,CAAO,GAAG;AACxB,YAAMQ,IACFR,EAAQ,SAAS,IAAKA,EAAQ,CAAC,EAAE,OAAO,SAAS,QAAS,IACxDS,IAAKT,EAAQ,SAAS,IAAIA,EAAQ,CAAC,EAAE,KAAK;AAChD,MAAAf,KAAA,QAAAA,EAAS,EAAE,OAAOuB,GAAW,KAAKC;IACtC;AAAA,EAEJ,GAAG,CAACT,CAAO,CAAC;AAEZ,QAAMU,IAAoC,CACtCC,GACAC,MACC;AACD,IAAK/B,KACDf,KAAA,QAAAA,EAAgC6C,GAASC;AAAA,EAEjD,GAEMC,IAAuB,CAACF,GAAkBG,MAAW;AACvD,IAAKjC,KACDhB,KAAA,QAAAA,EAAmB8C,GAASG;AAAA,EAEpC,GAEMC,IAA+BT,EAAQ,MAAM;AAC/C,UAAMU,IAAUtC;AAEhB,WAAIS,IACO;AAAA,MACH;AAAA,QACI,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,QAAQ,CAAC,EAAE,OAAA8B,QACP,gBAAA5C;AAAA,UAACZ;AAAA,UAAA;AAAA,YACG,SACI8B,IACMA;AAAA,cACI0B,EAAM,cAAc;AAAA,YAAA,IAExBA,EAAM,qBAAA;AAAA,YAEhB,eAAeA,EAAM,sBAAA;AAAA,YACrB,UAAUA,EAAM,gCAAA;AAAA,YAChB,+BAA+B,CAAC7C,MAAM;AAClC,cAAAsC;AAAA,gBACItC,EAAE,OAAO;AAAA,gBACT6C,EAAM,cAAc;AAAA,cAAA;AAAA,YAE5B;AAAA,UAAA;AAAA,QAAA;AAAA,QAGR,MAAM,CAAC,EAAE,KAAAH,EAAA,MACL,gBAAAzC;AAAA,UAACZ;AAAA,UAAA;AAAA,YACG,SACI6B,IACMA,EAAgBwB,EAAI,QAAQ,IAC5BA,EAAI,cAAA;AAAA,YAEd,UAAU,CAACA,EAAI,aAAA;AAAA,YACf,eAAeA,EAAI,kBAAA;AAAA,YACnB,UAAUA,EAAI,yBAAA;AAAA,YACd,kBAAkB,CAAC1C,MACfyC;AAAA,cACIzC,EAAE,OAAO;AAAA,cACT0C,EAAI;AAAA,YAAA;AAAA,UACR;AAAA,QAAA;AAAA,MAER;AAAA,MAGR,GAAGE;AAAA,IAAA,IAGJA;AAAA,EAEX,GAAG,CAACtC,GAAaS,GAAYN,GAASS,CAAe,CAAC,GAEhD2B,IAAQC,GAAc;AAAA,IACxB,MAAAvC;AAAA;AAAA,IAEA,SAASoC;AAAA,IACT,iBAAiBI,GAAA;AAAA,IACjB,qBAAqBC,GAAA;AAAA,IACrB,uBAAuBC,GAAA;AAAA,IACvB,mBAAmBC,GAAA;AAAA,IACnB,kBAAkB;AAAA,IAClB,eAAe5D,EAAM,iBAAiB;AAAA,IACtC,iBAAiB,CAAC6D,MAAW;AACzB,MAAAtB,EAAWsB,CAAsB;AAAA,IACrC;AAAA,IACA,OAAO;AAAA,MACH,SAAAvB;AAAA,IAAA;AAAA,IAEJ,iBAAAN;AAAA,EAAA,CACH,GAEK8B,IAAe,MAAM;AACvB,IAAAP,EAAM,aAAA;AAAA,EACV,GAEMQ,IAAgB,MAAM;AACxB,IAAAR,EAAM,kBAAkB,EAAI;AAAA,EAChC;AAEA,EAAAS,GAAoB1D,GAAK,OAAO;AAAA,IAC5B,cAAAwD;AAAA,IACA,eAAAC;AAAA,EAAA,EACF;AAEF,QAAME,IAAyB,CAACC,MAAiB;AAC7C,IAAK/C,MACD4C,EAAA,GACA1C,KAAA,QAAAA,EAAqB6C;AAAA,EAE7B,GAEMC,IAAqB,CAACC,MAAmB;AAC3C,IAAKjD,KACDG,KAAA,QAAAA,EAAiB,OAAO8C,CAAK;AAAA,EAErC,GAEMC,IAAkB9D,EAAY,EAAE;AAEtC,SAAAC,EAAU,MAAM;AACZ,QAAI,CAACyB,EAAmB;AAExB,UAAMqC,IAAef,EAAM,sBAAsB,KAAK,IAAI,CAAAgB,MAAKA,EAAE,QAAa;AAK9E,IAHgBD,EAAa,WAAWD,EAAgB,QAAQ,UAC5DC,EAAa,MAAM,CAACE,GAAMC,OAAQD,MAASH,EAAgB,QAAQI,EAAG,CAAC,MAGvEJ,EAAgB,UAAUC,GAC1BrC,EAAkBqC,CAAY;AAAA,EAEtC,GAAG,CAACf,EAAM,SAAA,EAAW,cAActB,GAAmBsB,CAAK,CAAC,GAGxD,gBAAAmB,EAACC,IAAA,EAAQ,SAAS,GAAQxD,KAAWF,EAAK,WAAW,IAAI,MAAK,SAC1D,UAAA;AAAA,IAAA,gBAAAyD,EAAC5E,GAAA,EAAO,GAAGO,GACP,UAAA;AAAA,MAAA,gBAAAM,EAAChB,IAAA,EACI,UAAA4D,EAAM,gBAAA,EAAkB,IAAI,CAACqB,MAC1B,gBAAAjE,EAACnB,GAAA,EACI,UAAAoF,EAAY,QAAQ,IAAI,CAACC,MAElB,gBAAAlE;AAAA,QAAClB;AAAA,QAAA;AAAA,UAEG,SAASoF,EAAO;AAAA,UAEf,UAAAA,EAAO,gBAAgB,OACpB,gBAAAH;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,WAAWI;AAAA,gBACP;AAAA,gBACAD,EAAO,OAAO,WAAA,KAAgB;AAAA,gBAC9B1D,KAAW;AAAA,cAAA;AAAA,cAEf,SAAS0D,EAAO,OAAO,wBAAA;AAAA,cAEvB,UAAA;AAAA,gBAAA,gBAAAlE,EAAC,QAAA,EAAK,WAAU,YACX,UAAAoE;AAAA,kBACGF,EAAO,OAAO,UAAU;AAAA,kBACxBA,EAAO,WAAA;AAAA,gBAAW,GAE1B;AAAA,gBACCA,EAAO,OAAO,WAAA,KACX,gBAAAlE,EAACd,MAAO,MAAMgF,EAAO,OAAO,cAAY,CAAG;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QAEnD;AAAA,QArBCA,EAAO;AAAA,MAAA,CAyBvB,EAAA,GA7BID,EAAY,EA8BrB,CACH,EAAA,CACL;AAAA,MACCzD,KAAWF,EAAK,WAAW,IACxB,gBAAAN;AAAA,QAACqE;AAAA,QAAA;AAAA,UACG,SAAU3B,EAA0B;AAAA,UACpC,MAAM1B,EAAW;AAAA,UACjB,iBAAiBZ;AAAA,UACjB,aAAaW;AAAA,QAAA;AAAA,MAAA,IAGjB,gBAAAf,EAACf,IAAA,EACI,UAAAwB,sBACI5B,GAAA,EACG,UAAA,gBAAAmB;AAAA,QAACjB;AAAA,QAAA;AAAA,UACG,WAAU;AAAA,UACV,SAAS2D,EAAa;AAAA,UAEtB,4BAAC,OAAA,EAAI,WAAU,oCACV,UAAAnC,KAGG,gBAAAwD,EAAAO,IAAA,EACI,UAAA;AAAA,YAAA,gBAAAtE,EAACuE,IAAA,EAAa;AAAA,YACd,gBAAAvE,EAAC,QAAA,EAAK,WAAU,iBAAgB,UAAA,iBAAA,CAEhC;AAAA,UAAA,EAAA,CACJ,EAAA,CAER;AAAA,QAAA;AAAA,MAAA,EACJ,CACJ,IAEA4C,EACK,YAAA,EACA,KAAK,MAAM,GAAGpB,CAAQ,EACtB,IAAI,CAACiB,MAEE,gBAAAsB,EAACO,IAAA,EACG,UAAA;AAAA,QAAA,gBAAAtE,EAACnB,KACI,UAAA4D,EACI,kBACA,IAAI,CAAC+B,MAEE,gBAAAxE;AAAA,UAACjB;AAAA,UAAA;AAAA,YAEG,OAAO;AAAA,cACH,OAAOyF,EAAK,OAAO,QAAA;AAAA,YAAQ;AAAA,YAG9B,UAAAJ;AAAA,cACGI,EAAK,OACA,UACA;AAAA,cACLA,EAAK,WAAA;AAAA,YAAW;AAAA,UACpB;AAAA,UAVKA,EAAK;AAAA,QAAA,CAarB,EAAA,GAnBA/B,EAAI,EAoBb;AAAA,QACCA,EAAI,cAAA,KACD,gBAAAzC,EAACnB,KACG,UAAA,gBAAAmB,EAACjB,GAAA,EAAG,SAAS0D,EAAI,kBAAkB,QAAS,UAAArB,EAAmBqB,CAAG,GAAE,EAAA,CACxE;AAAA,MAAA,EAAA,GAzBOA,EAAI,EA2BnB,CAEP,EAAA,CAEb;AAAA,IAAA,GAER;AAAA,IACC,CAAClB,KACE,gBAAAwC,EAAC,OAAA,EAAI,WAAU,0CACX,UAAA;AAAA,MAAA,gBAAA/D;AAAA,QAACyE;AAAA,QAAA;AAAA,UACG,UAAAjD;AAAA,UACA,aAAaC;AAAA,UACb,OAAAC;AAAA,UACA,UAAU4B;AAAA,QAAA;AAAA,MAAA;AAAA,wBAEb,OAAA,EAAI,OAAO,EAAE,UAAU,OACpB,UAAA,gBAAAtD;AAAA,QAAC0E;AAAA,QAAA;AAAA,UACG,YAAAvD;AAAA,UACA,MAAK;AAAA,UACL,eAAc;AAAA,UACd,cAAc;AAAA,UACd,OAAOa,EAAe;AAAA,YAClB,CAAC2C,MAAWA,EAAO,UAAUnD;AAAA,UAAA;AAAA,UAEjC,SAASQ;AAAA,UACT,UAAU,CAAC2C,MAAWnB,EAAmBmB,KAAA,gBAAAA,EAAQ,KAAK;AAAA,QAAA;AAAA,MAAA,EAC1D,CACJ;AAAA,IAAA,EAAA,CACJ;AAAA,EAAA,GAER;AAER;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DebounceInput.js","sources":["../../../../lib/@ecme/components/shared/DebounceInput.tsx"],"sourcesContent":["import Input from '@/components/ui/Input'\nimport useDebounce from '@/utils/hooks/useDebounce'\nimport type { ChangeEvent, Ref } from 'react'\nimport type { InputProps } from '@/components/ui/Input'\n\nexport type DebounceInputProps = InputProps & {\n wait?: number\n ref?: Ref<HTMLInputElement>\n}\n\nconst DebounceInput = (props: DebounceInputProps) => {\n const { wait = 500, ref, ...rest } = props\n\n function handleDebounceFn(value: ChangeEvent<HTMLInputElement>) {\n props.onChange?.(value)\n }\n\n const debounceFn = useDebounce(handleDebounceFn, wait)\n\n const handleInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n debounceFn(e)\n }\n\n return <Input ref={ref} {...rest} onChange={handleInputChange} />\n}\n\nexport default DebounceInput\n"],"names":["DebounceInput","props","wait","ref","rest","handleDebounceFn","value","_a","debounceFn","useDebounce","Input"],"mappings":";;;;AAUA,MAAMA,IAAgB,CAACC,MAA8B;AACjD,QAAM,EAAE,MAAAC,IAAO,KAAK,KAAAC,GAAK,GAAGC,MAASH;AAErC,WAASI,EAAiBC,GAAsC;;AAC5D,KAAAC,IAAAN,EAAM,aAAN,QAAAM,EAAA,KAAAN,GAAiBK;AAAA,
|
|
1
|
+
{"version":3,"file":"DebounceInput.js","sources":["../../../../lib/@ecme/components/shared/DebounceInput.tsx"],"sourcesContent":["import Input from '@/components/ui/Input'\nimport useDebounce from '@/utils/hooks/useDebounce'\nimport type { ChangeEvent, Ref } from 'react'\nimport type { InputProps } from '@/components/ui/Input'\n\nexport type DebounceInputProps = InputProps & {\n wait?: number\n ref?: Ref<HTMLInputElement>\n}\n\nconst DebounceInput = (props: DebounceInputProps) => {\n const { wait = 500, ref, ...rest } = props\n\n function handleDebounceFn(value: ChangeEvent<HTMLInputElement>) {\n props.onChange?.(value)\n }\n\n const debounceFn = useDebounce(handleDebounceFn, wait)\n\n const handleInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n debounceFn(e)\n }\n\n return <Input ref={ref} {...rest} onChange={handleInputChange} />\n}\n\nexport default DebounceInput\n"],"names":["DebounceInput","props","wait","ref","rest","handleDebounceFn","value","_a","debounceFn","useDebounce","Input"],"mappings":";;;;AAUA,MAAMA,IAAgB,CAACC,MAA8B;AACjD,QAAM,EAAE,MAAAC,IAAO,KAAK,KAAAC,GAAK,GAAGC,MAASH;AAErC,WAASI,EAAiBC,GAAsC;;AAC5D,KAAAC,IAAAN,EAAM,aAAN,QAAAM,EAAA,KAAAN,GAAiBK;AAAA,EACrB;AAEA,QAAME,IAAaC,EAAYJ,GAAkBH,CAAI;AAMrD,2BAAQQ,GAAA,EAAM,KAAAP,GAAW,GAAGC,GAAM,UAJR,CAAC,MAAqC;AAC5D,IAAAI,EAAW,CAAC;AAAA,EAChB,GAE+D;AACnE;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskListTable.js","sources":["../../../../../lib/@ecme/components/shared/GanttChart/TaskListTable.tsx"],"sourcesContent":["import classNames from '@/utils/classNames'\nimport { TbChevronRight, TbChevronDown } from 'react-icons/tb'\nimport type { Task } from 'gantt-task-react'\nimport type { ReactNode } from 'react'\n\ntype ExtendedTask = Task & { barVariant?: string }\n\nexport type ExtraCell = (task: ExtendedTask) => ReactNode | string\n\ntype TaskListTableProps = {\n rowHeight: number\n rowWidth: string\n fontFamily: string\n fontSize: string\n locale: string\n tasks: ExtendedTask[]\n selectedTaskId: string\n setSelectedTask: (taskId: string) => void\n onExpanderClick: (task: Task) => void\n extraCells?: ExtraCell[]\n}\n\nconst TaskListTable = ({\n rowHeight,\n rowWidth,\n tasks,\n onExpanderClick,\n extraCells,\n}: TaskListTableProps) => {\n return (\n <div className=\"table\">\n {tasks.map((t, rowIndex) => {\n return (\n <div\n key={`${t.id}row`}\n className=\"_34SS0\"\n style={{ height: rowHeight }}\n >\n <div\n className=\"table-cell align-middle whitespace-nowrap overflow-hidden text-ellipsis border-r border-gray-200 dark:border-gray-700 px-2\"\n style={{\n minWidth: rowWidth,\n maxWidth: rowWidth,\n }}\n title={t.name}\n >\n <div className=\"flex items-center gap-1\">\n <div\n className=\"text-lg cursor-pointer min-w-4\"\n role=\"button\"\n onClick={() => onExpanderClick(t)}\n >\n {t.hideChildren === false && (\n <TbChevronDown />\n )}\n {t.hideChildren === true && (\n <TbChevronRight />\n )}\n </div>\n <div\n className={classNames(\n 'truncate',\n typeof t.hideChildren === 'boolean' &&\n 'heading-text font-bold',\n )}\n >\n {t.name}\n </div>\n </div>\n </div>\n {extraCells?.map((cell, cellIndex) => (\n <div\n key={`${t.id}-cell-${rowIndex}-${cellIndex}`}\n className=\"table-cell align-middle whitespace-nowrap overflow-hidden text-ellipsis border-r border-gray-200 dark:border-gray-700 px-2\"\n style={{\n minWidth: rowWidth,\n maxWidth: rowWidth,\n }}\n >\n {cell(t)}\n </div>\n ))}\n </div>\n )\n })}\n </div>\n )\n}\n\nexport default TaskListTable\n"],"names":["TaskListTable","rowHeight","rowWidth","tasks","onExpanderClick","extraCells","jsx","t","rowIndex","jsxs","TbChevronDown","TbChevronRight","classNames","cell","cellIndex"],"mappings":";;;AAsBA,MAAMA,IAAgB,CAAC;AAAA,EACnB,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,YAAAC;AACJ,MAEQ,gBAAAC,EAAC,SAAI,WAAU,SACV,YAAM,IAAI,CAACC,GAAGC,MAEP,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IAEG,WAAU;AAAA,IACV,OAAO,EAAE,QAAQR,EAAA;AAAA,IAEjB,UAAA;AAAA,MAAA,gBAAAK;AAAA,QAAC;AAAA,QAAA;AAAA,UACG,WAAU;AAAA,UACV,OAAO;AAAA,YACH,UAAUJ;AAAA,YACV,UAAUA;AAAA,UAAA;AAAA,UAEd,OAAOK,EAAE;AAAA,UAET,UAAA,gBAAAE,EAAC,OAAA,EAAI,WAAU,2BACX,UAAA;AAAA,YAAA,gBAAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,WAAU;AAAA,gBACV,MAAK;AAAA,gBACL,SAAS,MAAML,EAAgBG,CAAC;AAAA,gBAE/B,UAAA;AAAA,kBAAAA,EAAE,iBAAiB,MAChB,gBAAAD,EAACI,GAAA,CAAA,CAAc;AAAA,kBAElBH,EAAE,iBAAiB,MAChB,gBAAAD,EAACK,GAAA,CAAA,CAAe;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA;AAAA,YAGxB,gBAAAL;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,WAAWM;AAAA,kBACP;AAAA,kBACA,OAAOL,EAAE,gBAAiB,aACtB;AAAA,gBAAA;AAAA,gBAGP,UAAAA,EAAE;AAAA,cAAA;AAAA,YAAA;AAAA,UACP,EAAA,CACJ;AAAA,QAAA;AAAA,MAAA;AAAA,MAEHF,KAAA,gBAAAA,EAAY,IAAI,CAACQ,GAAMC,MACpB,gBAAAL;AAAA,QAAC;AAAA,QAAA;AAAA,UAEG,WAAU;AAAA,UACV,OAAO;AAAA,YACH,UAAUP;AAAA,YACV,UAAUA;AAAA,UAAA;AAAA,UAEjB,UAAA;AAAA,YAAA;AAAA,YACUW,EAAKN,CAAC;AAAA,UAAA;AAAA,QAAA;AAAA,QAPR,GAAGA,EAAE,EAAE,SAASC,CAAQ,IAAIM,CAAS;AAAA,MAAA;AAAA,IASjD;AAAA,EAAA;AAAA,EA/CI,GAAGP,EAAE,EAAE;AAAA,CAkDvB,
|
|
1
|
+
{"version":3,"file":"TaskListTable.js","sources":["../../../../../lib/@ecme/components/shared/GanttChart/TaskListTable.tsx"],"sourcesContent":["import classNames from '@/utils/classNames'\nimport { TbChevronRight, TbChevronDown } from 'react-icons/tb'\nimport type { Task } from 'gantt-task-react'\nimport type { ReactNode } from 'react'\n\ntype ExtendedTask = Task & { barVariant?: string }\n\nexport type ExtraCell = (task: ExtendedTask) => ReactNode | string\n\ntype TaskListTableProps = {\n rowHeight: number\n rowWidth: string\n fontFamily: string\n fontSize: string\n locale: string\n tasks: ExtendedTask[]\n selectedTaskId: string\n setSelectedTask: (taskId: string) => void\n onExpanderClick: (task: Task) => void\n extraCells?: ExtraCell[]\n}\n\nconst TaskListTable = ({\n rowHeight,\n rowWidth,\n tasks,\n onExpanderClick,\n extraCells,\n}: TaskListTableProps) => {\n return (\n <div className=\"table\">\n {tasks.map((t, rowIndex) => {\n return (\n <div\n key={`${t.id}row`}\n className=\"_34SS0\"\n style={{ height: rowHeight }}\n >\n <div\n className=\"table-cell align-middle whitespace-nowrap overflow-hidden text-ellipsis border-r border-gray-200 dark:border-gray-700 px-2\"\n style={{\n minWidth: rowWidth,\n maxWidth: rowWidth,\n }}\n title={t.name}\n >\n <div className=\"flex items-center gap-1\">\n <div\n className=\"text-lg cursor-pointer min-w-4\"\n role=\"button\"\n onClick={() => onExpanderClick(t)}\n >\n {t.hideChildren === false && (\n <TbChevronDown />\n )}\n {t.hideChildren === true && (\n <TbChevronRight />\n )}\n </div>\n <div\n className={classNames(\n 'truncate',\n typeof t.hideChildren === 'boolean' &&\n 'heading-text font-bold',\n )}\n >\n {t.name}\n </div>\n </div>\n </div>\n {extraCells?.map((cell, cellIndex) => (\n <div\n key={`${t.id}-cell-${rowIndex}-${cellIndex}`}\n className=\"table-cell align-middle whitespace-nowrap overflow-hidden text-ellipsis border-r border-gray-200 dark:border-gray-700 px-2\"\n style={{\n minWidth: rowWidth,\n maxWidth: rowWidth,\n }}\n >\n {cell(t)}\n </div>\n ))}\n </div>\n )\n })}\n </div>\n )\n}\n\nexport default TaskListTable\n"],"names":["TaskListTable","rowHeight","rowWidth","tasks","onExpanderClick","extraCells","jsx","t","rowIndex","jsxs","TbChevronDown","TbChevronRight","classNames","cell","cellIndex"],"mappings":";;;AAsBA,MAAMA,IAAgB,CAAC;AAAA,EACnB,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,YAAAC;AACJ,MAEQ,gBAAAC,EAAC,SAAI,WAAU,SACV,YAAM,IAAI,CAACC,GAAGC,MAEP,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IAEG,WAAU;AAAA,IACV,OAAO,EAAE,QAAQR,EAAA;AAAA,IAEjB,UAAA;AAAA,MAAA,gBAAAK;AAAA,QAAC;AAAA,QAAA;AAAA,UACG,WAAU;AAAA,UACV,OAAO;AAAA,YACH,UAAUJ;AAAA,YACV,UAAUA;AAAA,UAAA;AAAA,UAEd,OAAOK,EAAE;AAAA,UAET,UAAA,gBAAAE,EAAC,OAAA,EAAI,WAAU,2BACX,UAAA;AAAA,YAAA,gBAAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,WAAU;AAAA,gBACV,MAAK;AAAA,gBACL,SAAS,MAAML,EAAgBG,CAAC;AAAA,gBAE/B,UAAA;AAAA,kBAAAA,EAAE,iBAAiB,MAChB,gBAAAD,EAACI,GAAA,CAAA,CAAc;AAAA,kBAElBH,EAAE,iBAAiB,MAChB,gBAAAD,EAACK,GAAA,CAAA,CAAe;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA;AAAA,YAGxB,gBAAAL;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,WAAWM;AAAA,kBACP;AAAA,kBACA,OAAOL,EAAE,gBAAiB,aACtB;AAAA,gBAAA;AAAA,gBAGP,UAAAA,EAAE;AAAA,cAAA;AAAA,YAAA;AAAA,UACP,EAAA,CACJ;AAAA,QAAA;AAAA,MAAA;AAAA,MAEHF,KAAA,gBAAAA,EAAY,IAAI,CAACQ,GAAMC,MACpB,gBAAAL;AAAA,QAAC;AAAA,QAAA;AAAA,UAEG,WAAU;AAAA,UACV,OAAO;AAAA,YACH,UAAUP;AAAA,YACV,UAAUA;AAAA,UAAA;AAAA,UAEjB,UAAA;AAAA,YAAA;AAAA,YACUW,EAAKN,CAAC;AAAA,UAAA;AAAA,QAAA;AAAA,QAPR,GAAGA,EAAE,EAAE,SAASC,CAAQ,IAAIM,CAAS;AAAA,MAAA;AAAA,IASjD;AAAA,EAAA;AAAA,EA/CI,GAAGP,EAAE,EAAE;AAAA,CAkDvB,EAAA,CACL;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getStartEndDateForProject.js","sources":["../../../../../lib/@ecme/components/shared/GanttChart/getStartEndDateForProject.ts"],"sourcesContent":["import type { ExtendedTask } from './GanttChart'\n\nfunction getStartEndDateForProject(tasks: ExtendedTask[], projectId: string) {\n const projectTasks = tasks.filter((t) => t.project === projectId)\n let start = projectTasks[0].start\n let end = projectTasks[0].end\n\n for (let i = 0; i < projectTasks.length; i++) {\n const task = projectTasks[i]\n if (start.getTime() > task.start.getTime()) {\n start = task.start\n }\n if (end.getTime() < task.end.getTime()) {\n end = task.end\n }\n }\n return [start, end]\n}\n\nexport default getStartEndDateForProject\n"],"names":["getStartEndDateForProject","tasks","projectId","projectTasks","start","end","i","task"],"mappings":"AAEA,SAASA,EAA0BC,GAAuBC,GAAmB;AACzE,QAAMC,IAAeF,EAAM,OAAO,CAAC,MAAM,EAAE,YAAYC,CAAS;AAChE,MAAIE,IAAQD,EAAa,CAAC,EAAE,OACxBE,IAAMF,EAAa,CAAC,EAAE;AAE1B,WAASG,IAAI,GAAGA,IAAIH,EAAa,QAAQG,KAAK;AAC1C,UAAMC,IAAOJ,EAAaG,CAAC;AAC3B,IAAIF,EAAM,QAAA,IAAYG,EAAK,MAAM,cAC7BH,IAAQG,EAAK,QAEbF,EAAI,QAAA,IAAYE,EAAK,IAAI,cACzBF,IAAME,EAAK;AAAA,
|
|
1
|
+
{"version":3,"file":"getStartEndDateForProject.js","sources":["../../../../../lib/@ecme/components/shared/GanttChart/getStartEndDateForProject.ts"],"sourcesContent":["import type { ExtendedTask } from './GanttChart'\n\nfunction getStartEndDateForProject(tasks: ExtendedTask[], projectId: string) {\n const projectTasks = tasks.filter((t) => t.project === projectId)\n let start = projectTasks[0].start\n let end = projectTasks[0].end\n\n for (let i = 0; i < projectTasks.length; i++) {\n const task = projectTasks[i]\n if (start.getTime() > task.start.getTime()) {\n start = task.start\n }\n if (end.getTime() < task.end.getTime()) {\n end = task.end\n }\n }\n return [start, end]\n}\n\nexport default getStartEndDateForProject\n"],"names":["getStartEndDateForProject","tasks","projectId","projectTasks","start","end","i","task"],"mappings":"AAEA,SAASA,EAA0BC,GAAuBC,GAAmB;AACzE,QAAMC,IAAeF,EAAM,OAAO,CAAC,MAAM,EAAE,YAAYC,CAAS;AAChE,MAAIE,IAAQD,EAAa,CAAC,EAAE,OACxBE,IAAMF,EAAa,CAAC,EAAE;AAE1B,WAASG,IAAI,GAAGA,IAAIH,EAAa,QAAQG,KAAK;AAC1C,UAAMC,IAAOJ,EAAaG,CAAC;AAC3B,IAAIF,EAAM,QAAA,IAAYG,EAAK,MAAM,cAC7BH,IAAQG,EAAK,QAEbF,EAAI,QAAA,IAAYE,EAAK,IAAI,cACzBF,IAAME,EAAK;AAAA,EAEnB;AACA,SAAO,CAACH,GAAOC,CAAG;AACtB;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasksPreProcess.js","sources":["../../../../../lib/@ecme/components/shared/GanttChart/tasksPreProcess.ts"],"sourcesContent":["import dayjs from 'dayjs'\nimport type { ExtendedTask } from './GanttChart'\n\nfunction hexToRgb(hex: string): string | null {\n hex = hex.replace(/^#/, '')\n\n let bigint: number\n if (hex.length === 3) {\n bigint = parseInt(\n hex.charAt(0) +\n hex.charAt(0) +\n hex.charAt(1) +\n hex.charAt(1) +\n hex.charAt(2) +\n hex.charAt(2),\n 16,\n )\n } else if (hex.length === 6) {\n bigint = parseInt(hex, 16)\n } else {\n return null\n }\n\n const r = (bigint >> 16) & 255\n const g = (bigint >> 8) & 255\n const b = bigint & 255\n\n return `rgb(${r}, ${g}, ${b})`\n}\n\nfunction isHexOrRgb(color: string): 'hex' | 'rgb' | 'invalid' {\n const hexRegex = /^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/\n const rgbRegex = /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/\n\n if (hexRegex.test(color)) {\n return 'hex'\n } else if (rgbRegex.test(color)) {\n return 'rgb'\n } else {\n return 'invalid'\n }\n}\n\nfunction applyOpacityToRgb(color: string, opacity: number): string | null {\n const rgbRegex = /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/\n const match = color.match(rgbRegex)\n\n if (match) {\n const r = parseInt(match[1], 10)\n const g = parseInt(match[2], 10)\n const b = parseInt(match[3], 10)\n\n if (opacity < 0 || opacity > 1) {\n return null // Invalid opacity value\n }\n\n return `rgba(${r}, ${g}, ${b}, ${opacity})`\n } else {\n return null // Invalid RGB color\n }\n}\n\nexport default function tasksPreProcess(\n tasks: ExtendedTask[],\n colorsMap: Record<string, string>,\n) {\n const coloredTask = tasks.map((task) => {\n task.start = dayjs(task.start).toDate()\n task.end = dayjs(task.end).toDate()\n\n if (task.barVariant && colorsMap[task.barVariant]) {\n const inputColor = colorsMap[task.barVariant]\n let color = ''\n\n if (isHexOrRgb(inputColor) === 'invalid') {\n return task\n }\n\n if (isHexOrRgb(inputColor) === 'hex') {\n color = hexToRgb(inputColor) as string\n }\n\n if (task.type === 'task') {\n task.styles = {\n progressColor: color,\n backgroundColor: applyOpacityToRgb(color, 0.5) as string,\n progressSelectedColor: color,\n backgroundSelectedColor: applyOpacityToRgb(\n color,\n 0.5,\n ) as string,\n }\n }\n\n if (task.type === 'milestone') {\n task.styles = {\n backgroundColor: color,\n backgroundSelectedColor: color,\n }\n }\n\n if (task.type === 'project') {\n task.styles = {\n progressColor: applyOpacityToRgb(\n 'rgb(255,255,255)',\n 0.3,\n ) as string,\n backgroundColor: color,\n progressSelectedColor: applyOpacityToRgb(\n 'rgb(255,255,255)',\n 0.3,\n ) as string,\n backgroundSelectedColor: color,\n }\n }\n }\n\n return task\n })\n\n return coloredTask\n}\n"],"names":["hexToRgb","hex","bigint","r","g","b","isHexOrRgb","color","hexRegex","rgbRegex","applyOpacityToRgb","opacity","match","tasksPreProcess","tasks","colorsMap","task","dayjs","inputColor"],"mappings":";AAGA,SAASA,EAASC,GAA4B;AAC1C,EAAAA,IAAMA,EAAI,QAAQ,MAAM,EAAE;AAE1B,MAAIC;AACJ,MAAID,EAAI,WAAW;AACf,IAAAC,IAAS;AAAA,MACLD,EAAI,OAAO,CAAC,IACRA,EAAI,OAAO,CAAC,IACZA,EAAI,OAAO,CAAC,IACZA,EAAI,OAAO,CAAC,IACZA,EAAI,OAAO,CAAC,IACZA,EAAI,OAAO,CAAC;AAAA,MAChB;AAAA,IAAA;AAAA,WAEGA,EAAI,WAAW;AACtB,IAAAC,IAAS,SAASD,GAAK,EAAE;AAAA;AAEzB,WAAO;AAGX,QAAME,IAAKD,KAAU,KAAM,KACrBE,IAAKF,KAAU,IAAK,KACpBG,IAAIH,IAAS;AAEnB,SAAO,OAAOC,CAAC,KAAKC,CAAC,KAAKC,CAAC;AAC/B;AAEA,SAASC,EAAWC,GAA0C;AAC1D,QAAMC,IAAW,uCACXC,IAAW;AAEjB,SAAID,EAAS,KAAKD,CAAK,IACZ,QACAE,EAAS,KAAKF,CAAK,IACnB,QAEA;AAEf;AAEA,SAASG,EAAkBH,GAAeI,GAAgC;AACtE,QAAMF,IAAW,gDACXG,IAAQL,EAAM,MAAME,CAAQ;AAElC,MAAIG,GAAO;AACP,UAAMT,IAAI,SAASS,EAAM,CAAC,GAAG,EAAE,GACzBR,IAAI,SAASQ,EAAM,CAAC,GAAG,EAAE,GACzBP,IAAI,SAASO,EAAM,CAAC,GAAG,EAAE;AAE/B,WAAID,IAAU,KAAKA,IAAU,IAClB,OAGJ,QAAQR,CAAC,KAAKC,CAAC,KAAKC,CAAC,KAAKM,CAAO;AAAA,
|
|
1
|
+
{"version":3,"file":"tasksPreProcess.js","sources":["../../../../../lib/@ecme/components/shared/GanttChart/tasksPreProcess.ts"],"sourcesContent":["import dayjs from 'dayjs'\nimport type { ExtendedTask } from './GanttChart'\n\nfunction hexToRgb(hex: string): string | null {\n hex = hex.replace(/^#/, '')\n\n let bigint: number\n if (hex.length === 3) {\n bigint = parseInt(\n hex.charAt(0) +\n hex.charAt(0) +\n hex.charAt(1) +\n hex.charAt(1) +\n hex.charAt(2) +\n hex.charAt(2),\n 16,\n )\n } else if (hex.length === 6) {\n bigint = parseInt(hex, 16)\n } else {\n return null\n }\n\n const r = (bigint >> 16) & 255\n const g = (bigint >> 8) & 255\n const b = bigint & 255\n\n return `rgb(${r}, ${g}, ${b})`\n}\n\nfunction isHexOrRgb(color: string): 'hex' | 'rgb' | 'invalid' {\n const hexRegex = /^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/\n const rgbRegex = /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/\n\n if (hexRegex.test(color)) {\n return 'hex'\n } else if (rgbRegex.test(color)) {\n return 'rgb'\n } else {\n return 'invalid'\n }\n}\n\nfunction applyOpacityToRgb(color: string, opacity: number): string | null {\n const rgbRegex = /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/\n const match = color.match(rgbRegex)\n\n if (match) {\n const r = parseInt(match[1], 10)\n const g = parseInt(match[2], 10)\n const b = parseInt(match[3], 10)\n\n if (opacity < 0 || opacity > 1) {\n return null // Invalid opacity value\n }\n\n return `rgba(${r}, ${g}, ${b}, ${opacity})`\n } else {\n return null // Invalid RGB color\n }\n}\n\nexport default function tasksPreProcess(\n tasks: ExtendedTask[],\n colorsMap: Record<string, string>,\n) {\n const coloredTask = tasks.map((task) => {\n task.start = dayjs(task.start).toDate()\n task.end = dayjs(task.end).toDate()\n\n if (task.barVariant && colorsMap[task.barVariant]) {\n const inputColor = colorsMap[task.barVariant]\n let color = ''\n\n if (isHexOrRgb(inputColor) === 'invalid') {\n return task\n }\n\n if (isHexOrRgb(inputColor) === 'hex') {\n color = hexToRgb(inputColor) as string\n }\n\n if (task.type === 'task') {\n task.styles = {\n progressColor: color,\n backgroundColor: applyOpacityToRgb(color, 0.5) as string,\n progressSelectedColor: color,\n backgroundSelectedColor: applyOpacityToRgb(\n color,\n 0.5,\n ) as string,\n }\n }\n\n if (task.type === 'milestone') {\n task.styles = {\n backgroundColor: color,\n backgroundSelectedColor: color,\n }\n }\n\n if (task.type === 'project') {\n task.styles = {\n progressColor: applyOpacityToRgb(\n 'rgb(255,255,255)',\n 0.3,\n ) as string,\n backgroundColor: color,\n progressSelectedColor: applyOpacityToRgb(\n 'rgb(255,255,255)',\n 0.3,\n ) as string,\n backgroundSelectedColor: color,\n }\n }\n }\n\n return task\n })\n\n return coloredTask\n}\n"],"names":["hexToRgb","hex","bigint","r","g","b","isHexOrRgb","color","hexRegex","rgbRegex","applyOpacityToRgb","opacity","match","tasksPreProcess","tasks","colorsMap","task","dayjs","inputColor"],"mappings":";AAGA,SAASA,EAASC,GAA4B;AAC1C,EAAAA,IAAMA,EAAI,QAAQ,MAAM,EAAE;AAE1B,MAAIC;AACJ,MAAID,EAAI,WAAW;AACf,IAAAC,IAAS;AAAA,MACLD,EAAI,OAAO,CAAC,IACRA,EAAI,OAAO,CAAC,IACZA,EAAI,OAAO,CAAC,IACZA,EAAI,OAAO,CAAC,IACZA,EAAI,OAAO,CAAC,IACZA,EAAI,OAAO,CAAC;AAAA,MAChB;AAAA,IAAA;AAAA,WAEGA,EAAI,WAAW;AACtB,IAAAC,IAAS,SAASD,GAAK,EAAE;AAAA;AAEzB,WAAO;AAGX,QAAME,IAAKD,KAAU,KAAM,KACrBE,IAAKF,KAAU,IAAK,KACpBG,IAAIH,IAAS;AAEnB,SAAO,OAAOC,CAAC,KAAKC,CAAC,KAAKC,CAAC;AAC/B;AAEA,SAASC,EAAWC,GAA0C;AAC1D,QAAMC,IAAW,uCACXC,IAAW;AAEjB,SAAID,EAAS,KAAKD,CAAK,IACZ,QACAE,EAAS,KAAKF,CAAK,IACnB,QAEA;AAEf;AAEA,SAASG,EAAkBH,GAAeI,GAAgC;AACtE,QAAMF,IAAW,gDACXG,IAAQL,EAAM,MAAME,CAAQ;AAElC,MAAIG,GAAO;AACP,UAAMT,IAAI,SAASS,EAAM,CAAC,GAAG,EAAE,GACzBR,IAAI,SAASQ,EAAM,CAAC,GAAG,EAAE,GACzBP,IAAI,SAASO,EAAM,CAAC,GAAG,EAAE;AAE/B,WAAID,IAAU,KAAKA,IAAU,IAClB,OAGJ,QAAQR,CAAC,KAAKC,CAAC,KAAKC,CAAC,KAAKM,CAAO;AAAA,EAC5C;AACI,WAAO;AAEf;AAEA,SAAwBE,EACpBC,GACAC,GACF;AAuDE,SAtDoBD,EAAM,IAAI,CAACE,MAAS;AAIpC,QAHAA,EAAK,QAAQC,EAAMD,EAAK,KAAK,EAAE,OAAA,GAC/BA,EAAK,MAAMC,EAAMD,EAAK,GAAG,EAAE,OAAA,GAEvBA,EAAK,cAAcD,EAAUC,EAAK,UAAU,GAAG;AAC/C,YAAME,IAAaH,EAAUC,EAAK,UAAU;AAC5C,UAAIT,IAAQ;AAEZ,UAAID,EAAWY,CAAU,MAAM;AAC3B,eAAOF;AAGX,MAAIV,EAAWY,CAAU,MAAM,UAC3BX,IAAQP,EAASkB,CAAU,IAG3BF,EAAK,SAAS,WACdA,EAAK,SAAS;AAAA,QACV,eAAeT;AAAA,QACf,iBAAiBG,EAAkBH,GAAO,GAAG;AAAA,QAC7C,uBAAuBA;AAAA,QACvB,yBAAyBG;AAAA,UACrBH;AAAA,UACA;AAAA,QAAA;AAAA,MACJ,IAIJS,EAAK,SAAS,gBACdA,EAAK,SAAS;AAAA,QACV,iBAAiBT;AAAA,QACjB,yBAAyBA;AAAA,MAAA,IAI7BS,EAAK,SAAS,cACdA,EAAK,SAAS;AAAA,QACV,eAAeN;AAAA,UACX;AAAA,UACA;AAAA,QAAA;AAAA,QAEJ,iBAAiBH;AAAA,QACjB,uBAAuBG;AAAA,UACnB;AAAA,UACA;AAAA,QAAA;AAAA,QAEJ,yBAAyBH;AAAA,MAAA;AAAA,IAGrC;AAEA,WAAOS;AAAA,EACX,CAAC;AAGL;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"breakpoints.js","sources":["../../../../../lib/@ecme/components/shared/Masonry/breakpoints.ts"],"sourcesContent":["import { BreakPointSpec, BreakPoints, BreakPointsArray } from './types'\n\nconst defaultBreakpoints = [640, 786, 1024, 1280, 1536]\n\nconst arrayToBreakpoints = (breakPoints: BreakPointsArray): BreakPoints => {\n return breakPoints.reduce((obj, bpValue, bpIndex) => {\n if (typeof bpValue !== 'number') {\n return obj\n }\n\n return {\n ...obj,\n ...{ [defaultBreakpoints[bpIndex]]: bpValue },\n }\n }, {})\n}\n\nexport const normalizeBreakPoints = (\n breakPoints: BreakPointSpec,\n): BreakPoints => {\n if (!Array.isArray(breakPoints)) {\n return breakPoints\n }\n\n return arrayToBreakpoints(breakPoints)\n}\n\nconst findBreakpoint = (\n breakpoints: BreakPointSpec,\n windowWidth: number,\n): number => {\n const sortedBreakPoints = Object.keys(normalizeBreakPoints(breakpoints))\n .map(Number)\n .sort((a, b) => a - b)\n\n let bp: number | null = null\n\n for (const breakPoint of sortedBreakPoints) {\n if (windowWidth > breakPoint) {\n bp = breakPoint\n }\n }\n\n return bp ?? sortedBreakPoints[0]\n}\n\nexport default findBreakpoint\n"],"names":["defaultBreakpoints","arrayToBreakpoints","breakPoints","obj","bpValue","bpIndex","normalizeBreakPoints","findBreakpoint","breakpoints","windowWidth","sortedBreakPoints","a","b","bp","breakPoint"],"mappings":"AAEA,MAAMA,IAAqB,CAAC,KAAK,KAAK,MAAM,MAAM,IAAI,GAEhDC,IAAqB,CAACC,MACjBA,EAAY,OAAO,CAACC,GAAKC,GAASC,MACjC,OAAOD,KAAY,WACZD,IAGJ;AAAA,EACH,GAAGA;AAAA,EACE,CAACH,EAAmBK,CAAO,CAAC,GAAGD;AAAQ,GAEjD,
|
|
1
|
+
{"version":3,"file":"breakpoints.js","sources":["../../../../../lib/@ecme/components/shared/Masonry/breakpoints.ts"],"sourcesContent":["import { BreakPointSpec, BreakPoints, BreakPointsArray } from './types'\n\nconst defaultBreakpoints = [640, 786, 1024, 1280, 1536]\n\nconst arrayToBreakpoints = (breakPoints: BreakPointsArray): BreakPoints => {\n return breakPoints.reduce((obj, bpValue, bpIndex) => {\n if (typeof bpValue !== 'number') {\n return obj\n }\n\n return {\n ...obj,\n ...{ [defaultBreakpoints[bpIndex]]: bpValue },\n }\n }, {})\n}\n\nexport const normalizeBreakPoints = (\n breakPoints: BreakPointSpec,\n): BreakPoints => {\n if (!Array.isArray(breakPoints)) {\n return breakPoints\n }\n\n return arrayToBreakpoints(breakPoints)\n}\n\nconst findBreakpoint = (\n breakpoints: BreakPointSpec,\n windowWidth: number,\n): number => {\n const sortedBreakPoints = Object.keys(normalizeBreakPoints(breakpoints))\n .map(Number)\n .sort((a, b) => a - b)\n\n let bp: number | null = null\n\n for (const breakPoint of sortedBreakPoints) {\n if (windowWidth > breakPoint) {\n bp = breakPoint\n }\n }\n\n return bp ?? sortedBreakPoints[0]\n}\n\nexport default findBreakpoint\n"],"names":["defaultBreakpoints","arrayToBreakpoints","breakPoints","obj","bpValue","bpIndex","normalizeBreakPoints","findBreakpoint","breakpoints","windowWidth","sortedBreakPoints","a","b","bp","breakPoint"],"mappings":"AAEA,MAAMA,IAAqB,CAAC,KAAK,KAAK,MAAM,MAAM,IAAI,GAEhDC,IAAqB,CAACC,MACjBA,EAAY,OAAO,CAACC,GAAKC,GAASC,MACjC,OAAOD,KAAY,WACZD,IAGJ;AAAA,EACH,GAAGA;AAAA,EACE,CAACH,EAAmBK,CAAO,CAAC,GAAGD;AAAQ,GAEjD,CAAA,CAAE,GAGIE,IAAuB,CAChCJ,MAEK,MAAM,QAAQA,CAAW,IAIvBD,EAAmBC,CAAW,IAH1BA,GAMTK,IAAiB,CACnBC,GACAC,MACS;AACT,QAAMC,IAAoB,OAAO,KAAKJ,EAAqBE,CAAW,CAAC,EAClE,IAAI,MAAM,EACV,KAAK,CAACG,GAAGC,MAAMD,IAAIC,CAAC;AAEzB,MAAIC,IAAoB;AAExB,aAAWC,KAAcJ;AACrB,IAAID,IAAcK,MACdD,IAAKC;AAIb,SAAOD,KAAMH,EAAkB,CAAC;AACpC;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCoulmnsCount.js","sources":["../../../../../lib/@ecme/components/shared/Masonry/useCoulmnsCount.ts"],"sourcesContent":["import { useMemo } from 'react'\n\nimport { Columns } from './types'\nimport useWindowWidth from './useWindowWidth'\nimport findBreakpoint from './breakpoints'\n\nconst DEFAULT_COLUMNS = 3\n\nconst useColumnsCount = (columns?: Columns): number => {\n const isResponsive = typeof columns === 'object'\n\n const windowWidth = useWindowWidth(isResponsive)\n\n const columnsCount = useMemo(() => {\n if (!isResponsive) {\n return columns ?? DEFAULT_COLUMNS\n }\n\n const breakPoint = findBreakpoint(columns, windowWidth)\n return columns[breakPoint] ?? DEFAULT_COLUMNS\n }, [isResponsive, windowWidth, columns])\n\n return columnsCount\n}\n\nexport default useColumnsCount\n"],"names":["DEFAULT_COLUMNS","useColumnsCount","columns","isResponsive","windowWidth","useWindowWidth","useMemo","breakPoint","findBreakpoint"],"mappings":";;;AAMA,MAAMA,IAAkB,GAElBC,IAAkB,CAACC,MAA8B;AACnD,QAAMC,IAAe,OAAOD,KAAY,UAElCE,IAAcC,EAAeF,CAAY;AAW/C,SATqBG,EAAQ,MAAM;AAC/B,QAAI,CAACH;AACD,aAAOD,KAAWF;AAGtB,UAAMO,IAAaC,EAAeN,GAASE,CAAW;AACtD,WAAOF,EAAQK,CAAU,KAAKP;AAAA,
|
|
1
|
+
{"version":3,"file":"useCoulmnsCount.js","sources":["../../../../../lib/@ecme/components/shared/Masonry/useCoulmnsCount.ts"],"sourcesContent":["import { useMemo } from 'react'\n\nimport { Columns } from './types'\nimport useWindowWidth from './useWindowWidth'\nimport findBreakpoint from './breakpoints'\n\nconst DEFAULT_COLUMNS = 3\n\nconst useColumnsCount = (columns?: Columns): number => {\n const isResponsive = typeof columns === 'object'\n\n const windowWidth = useWindowWidth(isResponsive)\n\n const columnsCount = useMemo(() => {\n if (!isResponsive) {\n return columns ?? DEFAULT_COLUMNS\n }\n\n const breakPoint = findBreakpoint(columns, windowWidth)\n return columns[breakPoint] ?? DEFAULT_COLUMNS\n }, [isResponsive, windowWidth, columns])\n\n return columnsCount\n}\n\nexport default useColumnsCount\n"],"names":["DEFAULT_COLUMNS","useColumnsCount","columns","isResponsive","windowWidth","useWindowWidth","useMemo","breakPoint","findBreakpoint"],"mappings":";;;AAMA,MAAMA,IAAkB,GAElBC,IAAkB,CAACC,MAA8B;AACnD,QAAMC,IAAe,OAAOD,KAAY,UAElCE,IAAcC,EAAeF,CAAY;AAW/C,SATqBG,EAAQ,MAAM;AAC/B,QAAI,CAACH;AACD,aAAOD,KAAWF;AAGtB,UAAMO,IAAaC,EAAeN,GAASE,CAAW;AACtD,WAAOF,EAAQK,CAAU,KAAKP;AAAA,EAClC,GAAG,CAACG,GAAcC,GAAaF,CAAO,CAAC;AAG3C;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMasonry.js","sources":["../../../../../lib/@ecme/components/shared/Masonry/useMasonry.ts"],"sourcesContent":["import { Children, ReactNode, isValidElement, useMemo } from 'react'\n\nimport useColumnsCount from './useCoulmnsCount'\nimport { Columns } from './types'\n\nconst createEmptyColumns = (count: number): Array<[]> => {\n return Array.from({ length: count }, () => [])\n}\n\nconst useMasonry = (children: ReactNode, columns?: Columns): ReactNode[][] => {\n const noOfColumns = useColumnsCount(columns)\n\n const columnsChildren = useMemo(() => {\n const group: ReactNode[][] = createEmptyColumns(noOfColumns)\n\n Children.forEach(children, (child, index) => {\n if (isValidElement(child)) {\n group[index % noOfColumns].push(child)\n }\n })\n\n return group\n }, [noOfColumns, children])\n\n return columnsChildren\n}\n\nexport default useMasonry\n"],"names":["createEmptyColumns","count","useMasonry","children","columns","noOfColumns","useColumnsCount","useMemo","group","Children","child","index","isValidElement"],"mappings":";;AAKA,MAAMA,IAAqB,CAACC,MACjB,MAAM,KAAK,EAAE,QAAQA,KAAS,MAAM,EAAE,GAG3CC,IAAa,CAACC,GAAqBC,MAAqC;AAC1E,QAAMC,IAAcC,EAAgBF,CAAO;AAc3C,SAZwBG,EAAQ,MAAM;AAClC,UAAMC,IAAuBR,EAAmBK,CAAW;AAE3D,WAAAI,EAAS,QAAQN,GAAU,CAACO,GAAOC,MAAU;AACzC,MAAIC,EAAeF,CAAK,KACpBF,EAAMG,IAAQN,CAAW,EAAE,KAAKK,CAAK;AAAA,
|
|
1
|
+
{"version":3,"file":"useMasonry.js","sources":["../../../../../lib/@ecme/components/shared/Masonry/useMasonry.ts"],"sourcesContent":["import { Children, ReactNode, isValidElement, useMemo } from 'react'\n\nimport useColumnsCount from './useCoulmnsCount'\nimport { Columns } from './types'\n\nconst createEmptyColumns = (count: number): Array<[]> => {\n return Array.from({ length: count }, () => [])\n}\n\nconst useMasonry = (children: ReactNode, columns?: Columns): ReactNode[][] => {\n const noOfColumns = useColumnsCount(columns)\n\n const columnsChildren = useMemo(() => {\n const group: ReactNode[][] = createEmptyColumns(noOfColumns)\n\n Children.forEach(children, (child, index) => {\n if (isValidElement(child)) {\n group[index % noOfColumns].push(child)\n }\n })\n\n return group\n }, [noOfColumns, children])\n\n return columnsChildren\n}\n\nexport default useMasonry\n"],"names":["createEmptyColumns","count","useMasonry","children","columns","noOfColumns","useColumnsCount","useMemo","group","Children","child","index","isValidElement"],"mappings":";;AAKA,MAAMA,IAAqB,CAACC,MACjB,MAAM,KAAK,EAAE,QAAQA,KAAS,MAAM,EAAE,GAG3CC,IAAa,CAACC,GAAqBC,MAAqC;AAC1E,QAAMC,IAAcC,EAAgBF,CAAO;AAc3C,SAZwBG,EAAQ,MAAM;AAClC,UAAMC,IAAuBR,EAAmBK,CAAW;AAE3D,WAAAI,EAAS,QAAQN,GAAU,CAACO,GAAOC,MAAU;AACzC,MAAIC,EAAeF,CAAK,KACpBF,EAAMG,IAAQN,CAAW,EAAE,KAAKK,CAAK;AAAA,IAE7C,CAAC,GAEMF;AAAA,EACX,GAAG,CAACH,GAAaF,CAAQ,CAAC;AAG9B;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWindowWidth.js","sources":["../../../../../lib/@ecme/components/shared/Masonry/useWindowWidth.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react'\n\nconst useWindowWidth = (isResponsive: boolean = true): number => {\n const [windowWidth, setWindowSize] = useState(window.innerWidth)\n\n const handleResize = useCallback(() => {\n setWindowSize(window.innerWidth)\n }, [])\n\n useEffect(() => {\n if (isResponsive) {\n window.addEventListener('resize', handleResize)\n } else {\n window.removeEventListener('resize', handleResize)\n }\n\n return () => {\n window.removeEventListener('resize', handleResize)\n }\n }, [isResponsive, handleResize])\n\n return windowWidth\n}\n\nexport default useWindowWidth\n"],"names":["useWindowWidth","isResponsive","windowWidth","setWindowSize","useState","handleResize","useCallback","useEffect"],"mappings":";AAEA,MAAMA,IAAiB,CAACC,IAAwB,OAAiB;AAC7D,QAAM,CAACC,GAAaC,CAAa,IAAIC,EAAS,OAAO,UAAU,GAEzDC,IAAeC,EAAY,MAAM;AACnC,IAAAH,EAAc,OAAO,UAAU;AAAA,
|
|
1
|
+
{"version":3,"file":"useWindowWidth.js","sources":["../../../../../lib/@ecme/components/shared/Masonry/useWindowWidth.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react'\n\nconst useWindowWidth = (isResponsive: boolean = true): number => {\n const [windowWidth, setWindowSize] = useState(window.innerWidth)\n\n const handleResize = useCallback(() => {\n setWindowSize(window.innerWidth)\n }, [])\n\n useEffect(() => {\n if (isResponsive) {\n window.addEventListener('resize', handleResize)\n } else {\n window.removeEventListener('resize', handleResize)\n }\n\n return () => {\n window.removeEventListener('resize', handleResize)\n }\n }, [isResponsive, handleResize])\n\n return windowWidth\n}\n\nexport default useWindowWidth\n"],"names":["useWindowWidth","isResponsive","windowWidth","setWindowSize","useState","handleResize","useCallback","useEffect"],"mappings":";AAEA,MAAMA,IAAiB,CAACC,IAAwB,OAAiB;AAC7D,QAAM,CAACC,GAAaC,CAAa,IAAIC,EAAS,OAAO,UAAU,GAEzDC,IAAeC,EAAY,MAAM;AACnC,IAAAH,EAAc,OAAO,UAAU;AAAA,EACnC,GAAG,CAAA,CAAE;AAEL,SAAAI,EAAU,OACFN,IACA,OAAO,iBAAiB,UAAUI,CAAY,IAE9C,OAAO,oBAAoB,UAAUA,CAAY,GAG9C,MAAM;AACT,WAAO,oBAAoB,UAAUA,CAAY;AAAA,EACrD,IACD,CAACJ,GAAcI,CAAY,CAAC,GAExBH;AACX;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OtpInput.js","sources":["../../../../lib/@ecme/components/shared/OtpInput.tsx"],"sourcesContent":["import { useEffect, useState, useRef } from 'react'\nimport Input from '@/components/ui/Input'\nimport classNames from '@/utils/classNames'\nimport type { ChangeEvent, KeyboardEvent, ClipboardEvent } from 'react'\n\ninterface OTPInputProps {\n length?: number\n value?: string\n onChange?: (value: string) => void\n disabled?: boolean\n className?: string\n inputClass?: string\n autoFocus?: boolean\n placeholder?: string\n invalid?: boolean\n}\n\nconst OTPInput = ({\n length = 6,\n value = '',\n onChange,\n disabled = false,\n className = '',\n inputClass,\n autoFocus = false,\n placeholder,\n invalid = false,\n}: OTPInputProps) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [_, setActiveInput] = useState<number>(0)\n const inputRefs = useRef<(HTMLInputElement | null)[]>([])\n\n useEffect(() => {\n inputRefs.current = Array(length)\n .fill(null)\n .map((_, i) => inputRefs.current[i] || null)\n }, [length])\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>, index: number) => {\n const newValue = e.target.value\n if (newValue.length > 1) return\n\n const newOTPValue =\n value.slice(0, index) + newValue + value.slice(index + 1)\n\n onChange?.(newOTPValue)\n\n if (newValue && index < length - 1) {\n setActiveInput(index + 1)\n inputRefs.current[index + 1]?.focus()\n }\n }\n\n const handleKeyDown = (\n e: KeyboardEvent<HTMLInputElement>,\n index: number,\n ) => {\n if (e.key === 'Backspace') {\n e.preventDefault()\n if (value[index]) {\n const newOTPValue =\n value.slice(0, index) + '' + value.slice(index + 1)\n onChange?.(newOTPValue)\n } else if (index > 0) {\n setActiveInput(index - 1)\n inputRefs.current[index - 1]?.focus()\n }\n } else if (e.key === 'ArrowLeft' && index > 0) {\n e.preventDefault()\n setActiveInput(index - 1)\n inputRefs.current[index - 1]?.focus()\n } else if (e.key === 'ArrowRight' && index < length - 1) {\n e.preventDefault()\n setActiveInput(index + 1)\n inputRefs.current[index + 1]?.focus()\n }\n }\n\n const handlePaste = (e: ClipboardEvent<HTMLInputElement>) => {\n e.preventDefault()\n const pastedData = e.clipboardData\n .getData('text/plain')\n .slice(0, length)\n if (pastedData.match(/^[0-9]+$/)) {\n onChange?.(pastedData.padEnd(length, ''))\n }\n }\n\n const setRef = (index: number) => (ref: HTMLInputElement | null) => {\n inputRefs.current[index] = ref\n }\n\n return (\n <div className={`flex gap-2 ${className}`}>\n {Array(length)\n .fill(null)\n .map((_, index) => (\n <Input\n key={index}\n ref={setRef(index)}\n className={classNames(\n 'text-center text-lg h-[58px] w-[58px]',\n inputClass,\n )}\n type=\"text\"\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n maxLength={1}\n value={value[index] || ''}\n disabled={disabled}\n autoFocus={autoFocus && index === 0}\n placeholder={placeholder}\n aria-label={`Digit ${index + 1} of ${length}`}\n invalid={invalid}\n onChange={(e) =>\n handleChange(\n e as ChangeEvent<HTMLInputElement>,\n index,\n )\n }\n onKeyDown={(e) =>\n handleKeyDown(\n e as KeyboardEvent<HTMLInputElement>,\n index,\n )\n }\n onPaste={handlePaste}\n onFocus={() => setActiveInput(index)}\n />\n ))}\n </div>\n )\n}\n\nexport default OTPInput\n"],"names":["OTPInput","length","value","onChange","disabled","className","inputClass","autoFocus","placeholder","invalid","setActiveInput","useState","inputRefs","useRef","useEffect","_","i","handleChange","e","index","newValue","newOTPValue","_a","handleKeyDown","_b","_c","handlePaste","pastedData","setRef","ref","jsx","Input","classNames"],"mappings":";;;;;AAiBA,MAAMA,IAAW,CAAC;AAAA,EACd,QAAAC,IAAS;AAAA,EACT,OAAAC,IAAQ;AAAA,EACR,UAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,WAAAC,IAAY;AAAA,EACZ,YAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,aAAAC;AAAA,EACA,SAAAC,IAAU;AACd,MAAqB;AAEjB,QAAM,CAAC,GAAGC,CAAc,IAAIC,EAAiB,CAAC,GACxCC,IAAYC,EAAoC,EAAE;AAExD,EAAAC,EAAU,MAAM;AACZ,IAAAF,EAAU,UAAU,MAAMX,CAAM,EAC3B,KAAK,IAAI,EACT,IAAI,CAACc,GAAGC,MAAMJ,EAAU,QAAQI,CAAC,KAAK,IAAI;AAAA,
|
|
1
|
+
{"version":3,"file":"OtpInput.js","sources":["../../../../lib/@ecme/components/shared/OtpInput.tsx"],"sourcesContent":["import { useEffect, useState, useRef } from 'react'\nimport Input from '@/components/ui/Input'\nimport classNames from '@/utils/classNames'\nimport type { ChangeEvent, KeyboardEvent, ClipboardEvent } from 'react'\n\ninterface OTPInputProps {\n length?: number\n value?: string\n onChange?: (value: string) => void\n disabled?: boolean\n className?: string\n inputClass?: string\n autoFocus?: boolean\n placeholder?: string\n invalid?: boolean\n}\n\nconst OTPInput = ({\n length = 6,\n value = '',\n onChange,\n disabled = false,\n className = '',\n inputClass,\n autoFocus = false,\n placeholder,\n invalid = false,\n}: OTPInputProps) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [_, setActiveInput] = useState<number>(0)\n const inputRefs = useRef<(HTMLInputElement | null)[]>([])\n\n useEffect(() => {\n inputRefs.current = Array(length)\n .fill(null)\n .map((_, i) => inputRefs.current[i] || null)\n }, [length])\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>, index: number) => {\n const newValue = e.target.value\n if (newValue.length > 1) return\n\n const newOTPValue =\n value.slice(0, index) + newValue + value.slice(index + 1)\n\n onChange?.(newOTPValue)\n\n if (newValue && index < length - 1) {\n setActiveInput(index + 1)\n inputRefs.current[index + 1]?.focus()\n }\n }\n\n const handleKeyDown = (\n e: KeyboardEvent<HTMLInputElement>,\n index: number,\n ) => {\n if (e.key === 'Backspace') {\n e.preventDefault()\n if (value[index]) {\n const newOTPValue =\n value.slice(0, index) + '' + value.slice(index + 1)\n onChange?.(newOTPValue)\n } else if (index > 0) {\n setActiveInput(index - 1)\n inputRefs.current[index - 1]?.focus()\n }\n } else if (e.key === 'ArrowLeft' && index > 0) {\n e.preventDefault()\n setActiveInput(index - 1)\n inputRefs.current[index - 1]?.focus()\n } else if (e.key === 'ArrowRight' && index < length - 1) {\n e.preventDefault()\n setActiveInput(index + 1)\n inputRefs.current[index + 1]?.focus()\n }\n }\n\n const handlePaste = (e: ClipboardEvent<HTMLInputElement>) => {\n e.preventDefault()\n const pastedData = e.clipboardData\n .getData('text/plain')\n .slice(0, length)\n if (pastedData.match(/^[0-9]+$/)) {\n onChange?.(pastedData.padEnd(length, ''))\n }\n }\n\n const setRef = (index: number) => (ref: HTMLInputElement | null) => {\n inputRefs.current[index] = ref\n }\n\n return (\n <div className={`flex gap-2 ${className}`}>\n {Array(length)\n .fill(null)\n .map((_, index) => (\n <Input\n key={index}\n ref={setRef(index)}\n className={classNames(\n 'text-center text-lg h-[58px] w-[58px]',\n inputClass,\n )}\n type=\"text\"\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n maxLength={1}\n value={value[index] || ''}\n disabled={disabled}\n autoFocus={autoFocus && index === 0}\n placeholder={placeholder}\n aria-label={`Digit ${index + 1} of ${length}`}\n invalid={invalid}\n onChange={(e) =>\n handleChange(\n e as ChangeEvent<HTMLInputElement>,\n index,\n )\n }\n onKeyDown={(e) =>\n handleKeyDown(\n e as KeyboardEvent<HTMLInputElement>,\n index,\n )\n }\n onPaste={handlePaste}\n onFocus={() => setActiveInput(index)}\n />\n ))}\n </div>\n )\n}\n\nexport default OTPInput\n"],"names":["OTPInput","length","value","onChange","disabled","className","inputClass","autoFocus","placeholder","invalid","setActiveInput","useState","inputRefs","useRef","useEffect","_","i","handleChange","e","index","newValue","newOTPValue","_a","handleKeyDown","_b","_c","handlePaste","pastedData","setRef","ref","jsx","Input","classNames"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PasswordInput.js","sources":["../../../../lib/@ecme/components/shared/PasswordInput.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { Input, InputProps } from '@/components/ui/Input'\nimport { HiOutlineEyeOff, HiOutlineEye } from 'react-icons/hi'\nimport type { MouseEvent, Ref } from 'react'\n\ninterface PasswordInputProps extends InputProps {\n onVisibleChange?: (visible: boolean) => void\n ref?: Ref<HTMLInputElement>\n}\n\nconst PasswordInput = (props: PasswordInputProps) => {\n const { onVisibleChange, ref, ...rest } = props\n\n const [pwInputType, setPwInputType] = useState('password')\n\n const onPasswordVisibleClick = (e: MouseEvent<HTMLSpanElement>) => {\n e.preventDefault()\n const nextValue = pwInputType === 'password' ? 'text' : 'password'\n setPwInputType(nextValue)\n onVisibleChange?.(nextValue === 'text')\n }\n\n return (\n <Input\n {...rest}\n ref={ref}\n type={pwInputType}\n suffix={\n <span\n className=\"cursor-pointer select-none text-xl\"\n role=\"button\"\n onClick={onPasswordVisibleClick}\n >\n {pwInputType === 'password' ? (\n <HiOutlineEyeOff />\n ) : (\n <HiOutlineEye />\n )}\n </span>\n }\n />\n )\n}\n\nexport default PasswordInput\n"],"names":["PasswordInput","props","onVisibleChange","ref","rest","pwInputType","setPwInputType","useState","jsx","Input","e","nextValue","HiOutlineEyeOff","HiOutlineEye"],"mappings":";;;;;AAUA,MAAMA,IAAgB,CAACC,MAA8B;AACjD,QAAM,EAAE,iBAAAC,GAAiB,KAAAC,GAAK,GAAGC,MAASH,GAEpC,CAACI,GAAaC,CAAc,IAAIC,EAAS,UAAU;AASzD,SACI,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACI,GAAGL;AAAA,MACJ,KAAAD;AAAA,MACA,MAAME;AAAA,MACN,QACI,gBAAAG;AAAA,QAAC;AAAA,QAAA;AAAA,UACG,WAAU;AAAA,UACV,MAAK;AAAA,UACL,SAhBe,CAACE,MAAmC;AAC/D,YAAAA,EAAE,eAAA;AACF,kBAAMC,IAAYN,MAAgB,aAAa,SAAS;AACxD,YAAAC,EAAeK,CAAS,GACxBT,KAAA,QAAAA,EAAkBS,MAAc;AAAA,
|
|
1
|
+
{"version":3,"file":"PasswordInput.js","sources":["../../../../lib/@ecme/components/shared/PasswordInput.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { Input, InputProps } from '@/components/ui/Input'\nimport { HiOutlineEyeOff, HiOutlineEye } from 'react-icons/hi'\nimport type { MouseEvent, Ref } from 'react'\n\ninterface PasswordInputProps extends InputProps {\n onVisibleChange?: (visible: boolean) => void\n ref?: Ref<HTMLInputElement>\n}\n\nconst PasswordInput = (props: PasswordInputProps) => {\n const { onVisibleChange, ref, ...rest } = props\n\n const [pwInputType, setPwInputType] = useState('password')\n\n const onPasswordVisibleClick = (e: MouseEvent<HTMLSpanElement>) => {\n e.preventDefault()\n const nextValue = pwInputType === 'password' ? 'text' : 'password'\n setPwInputType(nextValue)\n onVisibleChange?.(nextValue === 'text')\n }\n\n return (\n <Input\n {...rest}\n ref={ref}\n type={pwInputType}\n suffix={\n <span\n className=\"cursor-pointer select-none text-xl\"\n role=\"button\"\n onClick={onPasswordVisibleClick}\n >\n {pwInputType === 'password' ? (\n <HiOutlineEyeOff />\n ) : (\n <HiOutlineEye />\n )}\n </span>\n }\n />\n )\n}\n\nexport default PasswordInput\n"],"names":["PasswordInput","props","onVisibleChange","ref","rest","pwInputType","setPwInputType","useState","jsx","Input","e","nextValue","HiOutlineEyeOff","HiOutlineEye"],"mappings":";;;;;AAUA,MAAMA,IAAgB,CAACC,MAA8B;AACjD,QAAM,EAAE,iBAAAC,GAAiB,KAAAC,GAAK,GAAGC,MAASH,GAEpC,CAACI,GAAaC,CAAc,IAAIC,EAAS,UAAU;AASzD,SACI,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACI,GAAGL;AAAA,MACJ,KAAAD;AAAA,MACA,MAAME;AAAA,MACN,QACI,gBAAAG;AAAA,QAAC;AAAA,QAAA;AAAA,UACG,WAAU;AAAA,UACV,MAAK;AAAA,UACL,SAhBe,CAACE,MAAmC;AAC/D,YAAAA,EAAE,eAAA;AACF,kBAAMC,IAAYN,MAAgB,aAAa,SAAS;AACxD,YAAAC,EAAeK,CAAS,GACxBT,KAAA,QAAAA,EAAkBS,MAAc;AAAA,UACpC;AAAA,UAaiB,gBAAgB,aACb,gBAAAH,EAACI,GAAA,EAAgB,sBAEhBC,GAAA,CAAA,CAAa;AAAA,QAAA;AAAA,MAAA;AAAA,IAEtB;AAAA,EAAA;AAIhB;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RegionMap.js","sources":["../../../../lib/@ecme/components/shared/RegionMap.tsx"],"sourcesContent":["import { useState } from 'react'\nimport {\n ComposableMap,\n Geographies,\n Geography,\n Marker,\n} from 'react-simple-maps'\nimport classNames from '@/utils/classNames'\nimport { PatternCircles } from '@visx/pattern'\nimport WorldMap from '@/assets/maps/world-countries-sans-antarctica.json'\nimport { Tooltip as ReactTooltip } from 'react-tooltip'\n\nimport type { Dispatch, ReactNode, SetStateAction } from 'react'\n\ntype MarkerCallback = (markerComponet: typeof Marker) => ReactNode\n\ntype MapDataProp = {\n name: string\n value?: string | number\n color?: string\n}[]\n\ntype RegionMapProps = {\n data: MapDataProp\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n mapSource?: string | Record<string, any> | string[]\n valueSuffix?: string\n valuePrefix?: string\n marker?: MarkerCallback\n hoverable?: boolean\n}\n\ntype MapProps = Omit<RegionMapProps, 'valueSuffix' | 'valuePrefix'> & {\n prefix?: string\n suffix?: string\n}\n\ntype MapChartProps = MapProps & {\n setTooltipContent: Dispatch<SetStateAction<string>>\n}\n\nconst geoUrl = WorldMap\n\nconst getRegionValue = (\n name: unknown,\n data: MapDataProp,\n suffix = '',\n prefix = '',\n) => {\n if (data.length > 0 || name) {\n for (let i = 0; i < data.length; i++) {\n const elm = data[i]\n if (name === elm.name) {\n return `${elm.name} - ${prefix}${elm.value}${suffix}`\n }\n }\n return ''\n }\n return ''\n}\n\nconst MapChart = (props: MapChartProps) => {\n const {\n setTooltipContent,\n data,\n mapSource,\n suffix,\n prefix,\n marker,\n hoverable = true,\n } = props\n\n return (\n <ComposableMap\n style={{ transform: 'translateY(20px)' }}\n data-tip=\"\"\n height={450}\n projectionConfig={{ scale: 170 }}\n >\n <PatternCircles\n id=\"map-dots\"\n height={6}\n width={6}\n className=\"fill-gray-300 dark:fill-gray-500 \"\n strokeWidth={1}\n background=\"transparent\"\n />\n <PatternCircles\n id=\"map-dots-hover\"\n height={6}\n width={6}\n className=\"fill-gray-400 dark:fill-gray-300 \"\n strokeWidth={1}\n background=\"transparent\"\n />\n <Geographies geography={mapSource}>\n {({ geographies }) =>\n geographies.map((geo) => {\n const geoName = geo.properties.name\n return (\n <Geography\n key={geo.rsmKey}\n geography={geo}\n strokeWidth={2}\n className={classNames('stroke-transparent')}\n fill=\"url('#map-dots')\"\n style={\n hoverable\n ? {\n hover: {\n fill: \"url('#map-dots-hover')\",\n },\n }\n : {}\n }\n onMouseEnter={() => {\n setTooltipContent(\n getRegionValue(\n geoName,\n data,\n suffix,\n prefix,\n ),\n )\n }}\n onMouseLeave={() => {\n setTooltipContent('')\n }}\n />\n )\n })\n }\n </Geographies>\n {marker?.(Marker)}\n </ComposableMap>\n )\n}\n\nconst Map = (props: MapProps) => {\n const [content, setContent] = useState('')\n return (\n <>\n <MapChart {...props} setTooltipContent={setContent} />\n <ReactTooltip>{content}</ReactTooltip>\n </>\n )\n}\n\nconst RegionMap = (props: RegionMapProps) => {\n const {\n data = [],\n mapSource = geoUrl,\n valueSuffix,\n valuePrefix,\n marker,\n hoverable,\n } = props\n\n return (\n <Map\n data={data}\n mapSource={mapSource}\n prefix={valuePrefix}\n suffix={valueSuffix}\n marker={marker}\n hoverable={hoverable}\n />\n )\n}\n\nexport default RegionMap\n"],"names":["geoUrl","WorldMap","getRegionValue","name","data","suffix","prefix","i","elm","MapChart","props","setTooltipContent","mapSource","marker","hoverable","jsxs","ComposableMap","jsx","PatternCircles","Geographies","geographies","geo","geoName","Geography","classNames","Marker","Map","content","setContent","useState","Fragment","ReactTooltip","RegionMap","valueSuffix","valuePrefix"],"mappings":";;;;;;;AAyCA,MAAMA,IAASC,GAETC,IAAiB,CACnBC,GACAC,GACAC,IAAS,IACTC,IAAS,OACR;AACD,MAAIF,EAAK,SAAS,KAAKD,GAAM;AACzB,aAASI,IAAI,GAAGA,IAAIH,EAAK,QAAQG,KAAK;AAClC,YAAMC,IAAMJ,EAAKG,CAAC;AAClB,UAAIJ,MAASK,EAAI;AACb,eAAO,GAAGA,EAAI,IAAI,MAAMF,CAAM,GAAGE,EAAI,KAAK,GAAGH,CAAM;AAAA,
|
|
1
|
+
{"version":3,"file":"RegionMap.js","sources":["../../../../lib/@ecme/components/shared/RegionMap.tsx"],"sourcesContent":["import { useState } from 'react'\nimport {\n ComposableMap,\n Geographies,\n Geography,\n Marker,\n} from 'react-simple-maps'\nimport classNames from '@/utils/classNames'\nimport { PatternCircles } from '@visx/pattern'\nimport WorldMap from '@/assets/maps/world-countries-sans-antarctica.json'\nimport { Tooltip as ReactTooltip } from 'react-tooltip'\n\nimport type { Dispatch, ReactNode, SetStateAction } from 'react'\n\ntype MarkerCallback = (markerComponet: typeof Marker) => ReactNode\n\ntype MapDataProp = {\n name: string\n value?: string | number\n color?: string\n}[]\n\ntype RegionMapProps = {\n data: MapDataProp\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n mapSource?: string | Record<string, any> | string[]\n valueSuffix?: string\n valuePrefix?: string\n marker?: MarkerCallback\n hoverable?: boolean\n}\n\ntype MapProps = Omit<RegionMapProps, 'valueSuffix' | 'valuePrefix'> & {\n prefix?: string\n suffix?: string\n}\n\ntype MapChartProps = MapProps & {\n setTooltipContent: Dispatch<SetStateAction<string>>\n}\n\nconst geoUrl = WorldMap\n\nconst getRegionValue = (\n name: unknown,\n data: MapDataProp,\n suffix = '',\n prefix = '',\n) => {\n if (data.length > 0 || name) {\n for (let i = 0; i < data.length; i++) {\n const elm = data[i]\n if (name === elm.name) {\n return `${elm.name} - ${prefix}${elm.value}${suffix}`\n }\n }\n return ''\n }\n return ''\n}\n\nconst MapChart = (props: MapChartProps) => {\n const {\n setTooltipContent,\n data,\n mapSource,\n suffix,\n prefix,\n marker,\n hoverable = true,\n } = props\n\n return (\n <ComposableMap\n style={{ transform: 'translateY(20px)' }}\n data-tip=\"\"\n height={450}\n projectionConfig={{ scale: 170 }}\n >\n <PatternCircles\n id=\"map-dots\"\n height={6}\n width={6}\n className=\"fill-gray-300 dark:fill-gray-500 \"\n strokeWidth={1}\n background=\"transparent\"\n />\n <PatternCircles\n id=\"map-dots-hover\"\n height={6}\n width={6}\n className=\"fill-gray-400 dark:fill-gray-300 \"\n strokeWidth={1}\n background=\"transparent\"\n />\n <Geographies geography={mapSource}>\n {({ geographies }) =>\n geographies.map((geo) => {\n const geoName = geo.properties.name\n return (\n <Geography\n key={geo.rsmKey}\n geography={geo}\n strokeWidth={2}\n className={classNames('stroke-transparent')}\n fill=\"url('#map-dots')\"\n style={\n hoverable\n ? {\n hover: {\n fill: \"url('#map-dots-hover')\",\n },\n }\n : {}\n }\n onMouseEnter={() => {\n setTooltipContent(\n getRegionValue(\n geoName,\n data,\n suffix,\n prefix,\n ),\n )\n }}\n onMouseLeave={() => {\n setTooltipContent('')\n }}\n />\n )\n })\n }\n </Geographies>\n {marker?.(Marker)}\n </ComposableMap>\n )\n}\n\nconst Map = (props: MapProps) => {\n const [content, setContent] = useState('')\n return (\n <>\n <MapChart {...props} setTooltipContent={setContent} />\n <ReactTooltip>{content}</ReactTooltip>\n </>\n )\n}\n\nconst RegionMap = (props: RegionMapProps) => {\n const {\n data = [],\n mapSource = geoUrl,\n valueSuffix,\n valuePrefix,\n marker,\n hoverable,\n } = props\n\n return (\n <Map\n data={data}\n mapSource={mapSource}\n prefix={valuePrefix}\n suffix={valueSuffix}\n marker={marker}\n hoverable={hoverable}\n />\n )\n}\n\nexport default RegionMap\n"],"names":["geoUrl","WorldMap","getRegionValue","name","data","suffix","prefix","i","elm","MapChart","props","setTooltipContent","mapSource","marker","hoverable","jsxs","ComposableMap","jsx","PatternCircles","Geographies","geographies","geo","geoName","Geography","classNames","Marker","Map","content","setContent","useState","Fragment","ReactTooltip","RegionMap","valueSuffix","valuePrefix"],"mappings":"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"}
|