@momo-kits/native-kits 0.157.1-beta.9 → 0.157.1-com.1-debug
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/build.gradle.kts +11 -0
- package/compose/build.gradle.kts +180 -0
- package/compose/build.gradle.kts.backup +180 -0
- package/compose/compose.podspec +54 -0
- package/compose/src/androidMain/kotlin/vn/momo/kits/platform/Platform.android.kt +110 -0
- package/compose/src/commonMain/composeResources/font/momosignature.otf +0 -0
- package/compose/src/commonMain/composeResources/font/momotrustdisplay.otf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_black.otf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_black.ttf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_bold.ttf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_heavy.ttf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_light.ttf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_medium.ttf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_regular.ttf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_semibold.ttf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_thin.otf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_thin.ttf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_ultralight.otf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_ultralight.ttf +0 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/AnimationSearchInput.kt +57 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/Context.kt +107 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/FloatingButton.kt +201 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/Header.kt +222 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderAnimated.kt +48 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderBackground.kt +86 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderDefault.kt +76 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderExtended.kt +76 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderRight.kt +305 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderTitle.kt +33 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/LiteScreen.kt +720 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/NavigationContainer.kt +121 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/Screen.kt +405 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/useHeaderSearchAnimation.kt +69 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Avatar.kt +157 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Badge.kt +85 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeDot.kt +32 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeRibbon.kt +340 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/BaselineView.kt +198 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Button.kt +357 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Carousel.kt +123 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/CheckBox.kt +94 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Chip.kt +136 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Collapse.kt +224 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/CupertinoOverscroll.kt +543 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Divider.kt +23 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Icon.kt +76 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/IconButton.kt +148 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Image.kt +188 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Information.kt +116 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Input.kt +448 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputDropDown.kt +172 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputMoney.kt +255 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputOTP.kt +231 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputPhoneNumber.kt +233 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputSearch.kt +254 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputTextArea.kt +241 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/LazyColumnWithBouncing.kt +364 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Loader.kt +108 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationDot.kt +56 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationNumber.kt +41 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationScroll.kt +92 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationWhiteDot.kt +40 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupNotify.kt +352 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupPromotion.kt +103 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/ProgressInfo.kt +350 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Radio.kt +70 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Rating.kt +87 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/ScaleSizeScope.kt +17 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Skeleton.kt +96 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Slider.kt +360 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Stepper.kt +256 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Steps.kt +494 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/SuggestAction.kt +131 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Swipe.kt +215 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Switch.kt +96 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/TabView.kt +449 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tag.kt +92 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Text.kt +130 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Title.kt +214 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tooltip.kt +590 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/TrustBanner.kt +177 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Uploader.kt +192 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePicker.kt +205 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerTypes.kt +29 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerUtils.kt +239 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/WheelPicker.kt +191 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/const/Colors.kt +306 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/const/Radius.kt +12 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/const/Spacing.kt +13 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/const/Theme.kt +185 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/const/Typography.kt +285 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Card.kt +2 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Item.kt +35 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Section.kt +2 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/AutomationId.kt +59 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Clickable.kt +68 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Conditional.kt +11 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/DeprecatedModifier.kt +14 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Shadow.kt +50 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Size.kt +51 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/BottomSheet.kt +239 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/ModalScreen.kt +119 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigation.kt +98 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/NavigationContainer.kt +161 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigator.kt +331 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackScreen.kt +497 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTab.kt +162 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTabBar.kt +243 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/CurvedContainer.kt +86 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/FloatingButton.kt +187 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/Header.kt +279 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderBackground.kt +80 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderRight.kt +306 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderTitle.kt +32 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderUser.kt +370 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/SnackBar.kt +132 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/platform/Platform.kt +42 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Icons.kt +1329 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Resources.kt +62 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Tracking.kt +15 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Utils.kt +88 -0
- package/compose/src/iosMain/kotlin/vn/momo/kits/platform/Platform.ios.kt +149 -0
- package/gradle/libs.versions.toml +57 -0
- package/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/gradle/wrapper/gradle-wrapper.properties +8 -0
- package/gradle.properties +26 -0
- package/gradlew +252 -0
- package/gradlew.bat +94 -0
- package/ios/Input/Input.swift +4 -0
- package/local.properties +8 -0
- package/package.json +1 -1
- package/settings.gradle.kts +52 -0
- package/src/doctor/README.md +73 -0
- package/src/doctor/package-lock.json +885 -0
- package/src/doctor/package.json +44 -0
- package/src/doctor/publish.sh +27 -0
- package/src/doctor/src/Users.json +112 -0
- package/src/doctor/src/Whitelist.json +6 -0
- package/src/doctor/src/commands/check.ts +81 -0
- package/src/doctor/src/commands/doctor.ts +193 -0
- package/src/doctor/src/index.ts +35 -0
- package/src/doctor/src/logger.ts +84 -0
- package/src/doctor/src/task/native.ts +21 -0
- package/src/doctor/src/task/utils.ts +20 -0
- package/src/doctor/src/utils/checkCoreDependencies.ts +138 -0
- package/src/doctor/src/utils/checkDeletedPackage.ts +53 -0
- package/src/doctor/src/utils/checkDeprecatedPackages.ts +168 -0
- package/src/doctor/src/utils/checkDeprecatedVersion.ts +60 -0
- package/src/doctor/src/utils/checkShareDependencies.ts +251 -0
- package/src/doctor/src/utils/checkWrongVersionCommunityPackage.ts +64 -0
- package/src/doctor/src/utils/getErrorMessage.ts +84 -0
- package/src/doctor/src/utils/scanComponentUsage.ts +206 -0
- package/src/doctor/src/utils/scanFoundationImports.ts +169 -0
- package/src/doctor/src/utils/scanMaxApiUsage.ts +86 -0
- package/src/doctor/src/utils/scanNativeModulesUsage.ts +78 -0
- package/src/doctor/src/utils/sendMessage.ts +28 -0
- package/src/doctor/tsconfig.json +14 -0
- package/src/doctor/yarn.lock +492 -0
- package/src/foundations/Application/BottomSheet.tsx +358 -0
- package/src/foundations/Application/BottomTab/BottomTabBar.tsx +320 -0
- package/src/foundations/Application/BottomTab/CustomBottomTabItem.tsx +155 -0
- package/src/foundations/Application/BottomTab/TabBarIcon.tsx +113 -0
- package/src/foundations/Application/BottomTab/index.tsx +449 -0
- package/src/foundations/Application/Components/BackgroundImageView.tsx +126 -0
- package/src/foundations/Application/Components/HeaderAnimated.tsx +69 -0
- package/src/foundations/Application/Components/HeaderBackground.tsx +83 -0
- package/src/foundations/Application/Components/HeaderExtendHeader.tsx +225 -0
- package/src/foundations/Application/Components/HeaderLeft.tsx +93 -0
- package/src/foundations/Application/Components/HeaderRight.tsx +444 -0
- package/src/foundations/Application/Components/HeaderTitle.tsx +596 -0
- package/src/foundations/Application/Components/NavigationButton.tsx +76 -0
- package/src/foundations/Application/Components/SearchHeader.tsx +127 -0
- package/src/foundations/Application/Localize.ts +44 -0
- package/src/foundations/Application/ModalScreen.tsx +148 -0
- package/src/foundations/Application/Navigation.ts +63 -0
- package/src/foundations/Application/NavigationContainer.tsx +245 -0
- package/src/foundations/Application/Navigator.ts +171 -0
- package/src/foundations/Application/ScaleSizeProvider.tsx +16 -0
- package/src/foundations/Application/StackScreen.tsx +420 -0
- package/src/foundations/Application/TooltipPortal.tsx +127 -0
- package/src/foundations/Application/WidgetContainer.tsx +162 -0
- package/src/foundations/Application/index.ts +34 -0
- package/src/foundations/Application/types.ts +350 -0
- package/src/foundations/Application/utils.tsx +239 -0
- package/src/foundations/Assets/DotAnimation.json +256 -0
- package/src/foundations/Assets/SpinnerAnimation.json +1027 -0
- package/src/foundations/Assets/icon.json +4052 -0
- package/src/foundations/Assets/icon_bank.json +506 -0
- package/src/foundations/Assets/language.json +208 -0
- package/src/foundations/Assets/lottie_circle_loader.json +1 -0
- package/src/foundations/Assets/pinAnimation.json +1 -0
- package/src/foundations/Assets/unpinAnimation.json +1 -0
- package/src/foundations/Badge/Badge.tsx +104 -0
- package/src/foundations/Badge/BadgeDot.tsx +35 -0
- package/src/foundations/Badge/BadgeDotAnimation.tsx +95 -0
- package/src/foundations/Badge/BadgeRibbon.tsx +112 -0
- package/src/foundations/Badge/Shape.tsx +29 -0
- package/src/foundations/Badge/index.tsx +8 -0
- package/src/foundations/Badge/styles.ts +125 -0
- package/src/foundations/Badge/types.ts +68 -0
- package/src/foundations/Button/index.tsx +371 -0
- package/src/foundations/Button/styles.ts +65 -0
- package/src/foundations/CheckBox/index.tsx +104 -0
- package/src/foundations/CheckBox/styles.ts +17 -0
- package/src/foundations/CheckBox/types.ts +37 -0
- package/src/foundations/Consts/colors+spacing+radius.ts +232 -0
- package/src/foundations/Consts/index.ts +4 -0
- package/src/foundations/Consts/styles.ts +52 -0
- package/src/foundations/Consts/theme.ts +121 -0
- package/src/foundations/Context/index.ts +27 -0
- package/src/foundations/Divider/DashDivider.tsx +46 -0
- package/src/foundations/Divider/index.tsx +45 -0
- package/src/foundations/FoundationList/index.tsx +12 -0
- package/src/foundations/FoundationList/types.ts +7 -0
- package/src/foundations/Icon/index.tsx +57 -0
- package/src/foundations/Icon/types.ts +32 -0
- package/src/foundations/IconButton/index.tsx +144 -0
- package/src/foundations/IconButton/styles.ts +20 -0
- package/src/foundations/Image/index.tsx +115 -0
- package/src/foundations/Image/styles.ts +7 -0
- package/src/foundations/Image/types.ts +7 -0
- package/src/foundations/Input/Input.tsx +280 -0
- package/src/foundations/Input/InputDropDown.tsx +161 -0
- package/src/foundations/Input/InputMoney.tsx +325 -0
- package/src/foundations/Input/InputOTP.tsx +299 -0
- package/src/foundations/Input/InputPhoneNumber.tsx +287 -0
- package/src/foundations/Input/InputSearch.tsx +351 -0
- package/src/foundations/Input/InputTextArea.tsx +218 -0
- package/src/foundations/Input/SystemTextInput.tsx +44 -0
- package/src/foundations/Input/TextTyping.tsx +115 -0
- package/src/foundations/Input/common.tsx +243 -0
- package/src/foundations/Input/index.tsx +373 -0
- package/src/foundations/Input/styles.ts +226 -0
- package/src/foundations/Input/utils.ts +97 -0
- package/src/foundations/Layout/Card.tsx +108 -0
- package/src/foundations/Layout/FloatingButton.tsx +179 -0
- package/src/foundations/Layout/GridSystem.tsx +137 -0
- package/src/foundations/Layout/Item.tsx +59 -0
- package/src/foundations/Layout/ItemList.tsx +66 -0
- package/src/foundations/Layout/ItemSectionList.tsx +40 -0
- package/src/foundations/Layout/Screen.tsx +644 -0
- package/src/foundations/Layout/Section.tsx +103 -0
- package/src/foundations/Layout/TrackingScope.tsx +18 -0
- package/src/foundations/Layout/index.ts +34 -0
- package/src/foundations/Layout/styles.ts +95 -0
- package/src/foundations/Layout/types.ts +40 -0
- package/src/foundations/Layout/utils.ts +47 -0
- package/src/foundations/Loader/DotLoader.tsx +37 -0
- package/src/foundations/Loader/Loader.tsx +13 -0
- package/src/foundations/Loader/ProgressBar.tsx +45 -0
- package/src/foundations/Loader/Spinner.tsx +29 -0
- package/src/foundations/Loader/index.tsx +6 -0
- package/src/foundations/Loader/styles.ts +10 -0
- package/src/foundations/Loader/types.ts +35 -0
- package/src/foundations/Loader/utils.ts +25 -0
- package/src/foundations/Pagination/Dot.tsx +19 -0
- package/src/foundations/Pagination/PaginationDot.tsx +44 -0
- package/src/foundations/Pagination/PaginationNumber.tsx +31 -0
- package/src/foundations/Pagination/PaginationScroll.tsx +99 -0
- package/src/foundations/Pagination/PaginationWhiteDot.tsx +43 -0
- package/src/foundations/Pagination/index.tsx +25 -0
- package/src/foundations/Pagination/styles.ts +51 -0
- package/src/foundations/Pagination/types.ts +40 -0
- package/src/foundations/Popup/PopupNotify.tsx +276 -0
- package/src/foundations/Popup/PopupPromotion.tsx +118 -0
- package/src/foundations/Popup/index.tsx +4 -0
- package/src/foundations/Popup/types.ts +96 -0
- package/src/foundations/Radio/index.tsx +108 -0
- package/src/foundations/Radio/styles.ts +15 -0
- package/src/foundations/Radio/types.ts +31 -0
- package/src/foundations/Skeleton/index.tsx +118 -0
- package/src/foundations/Skeleton/styles.ts +5 -0
- package/src/foundations/Skeleton/types.ts +6 -0
- package/src/foundations/Switch/index.tsx +68 -0
- package/src/foundations/Switch/styles.ts +25 -0
- package/src/foundations/Switch/types.ts +19 -0
- package/src/foundations/Tag/index.tsx +128 -0
- package/src/foundations/Tag/types.ts +41 -0
- package/src/foundations/Text/index.tsx +241 -0
- package/src/foundations/Text/styles.ts +78 -0
- package/src/foundations/Text/types.ts +53 -0
- package/src/foundations/Text/utils.ts +63 -0
- package/src/foundations/Title/index.tsx +285 -0
- package/src/foundations/Title/styles.ts +55 -0
- package/src/foundations/Title/types.ts +21 -0
- package/src/foundations/index.ts +50 -0
- package/src/foundations/package.json +35 -0
- package/src/foundations/publish.sh +17 -0
- package/src/libs/AutoComplete/index.tsx +88 -0
- package/src/libs/AutoComplete/package.json +16 -0
- package/src/libs/AutoComplete/publish.sh +16 -0
- package/src/libs/AutoComplete/styles.ts +15 -0
- package/src/libs/AutoComplete/types.ts +60 -0
- package/src/libs/Avatar/index.tsx +146 -0
- package/src/libs/Avatar/package.json +16 -0
- package/src/libs/Avatar/publish.sh +20 -0
- package/src/libs/Avatar/styles.ts +18 -0
- package/src/libs/Avatar/types.ts +57 -0
- package/src/libs/Badge/Badge.tsx +70 -0
- package/src/libs/Badge/BadgeDot.tsx +11 -0
- package/src/libs/Badge/BadgeRibbon.tsx +122 -0
- package/src/libs/Badge/Shape.tsx +29 -0
- package/src/libs/Badge/index.tsx +7 -0
- package/src/libs/Badge/package.json +16 -0
- package/src/libs/Badge/publish.sh +18 -0
- package/src/libs/Badge/styles.ts +55 -0
- package/src/libs/Badge/types.ts +63 -0
- package/src/libs/Calendar/CalendarPro.tsx +307 -0
- package/src/libs/Calendar/Day.tsx +150 -0
- package/src/libs/Calendar/HeaderControl.tsx +55 -0
- package/src/libs/Calendar/LunarDateConverter.ts +228 -0
- package/src/libs/Calendar/LunarService.ts +206 -0
- package/src/libs/Calendar/Month.tsx +118 -0
- package/src/libs/Calendar/MonthList.tsx +226 -0
- package/src/libs/Calendar/TabHeader.tsx +91 -0
- package/src/libs/Calendar/Util.ts +288 -0
- package/src/libs/Calendar/holidayData.ts +118 -0
- package/src/libs/Calendar/index.tsx +383 -0
- package/src/libs/Calendar/package.json +18 -0
- package/src/libs/Calendar/publish.sh +18 -0
- package/src/libs/Calendar/styles.ts +122 -0
- package/src/libs/Calendar/types.ts +212 -0
- package/src/libs/Carousel/animation.ts +62 -0
- package/src/libs/Carousel/index.tsx +517 -0
- package/src/libs/Carousel/package.json +18 -0
- package/src/libs/Carousel/publish.sh +16 -0
- package/src/libs/Carousel/types.ts +71 -0
- package/src/libs/Chip/index.tsx +164 -0
- package/src/libs/Chip/package.json +16 -0
- package/src/libs/Chip/publish.sh +16 -0
- package/src/libs/Chip/styles.ts +20 -0
- package/src/libs/Chip/types.ts +72 -0
- package/src/libs/Collapse/index.tsx +305 -0
- package/src/libs/Collapse/package.json +16 -0
- package/src/libs/Collapse/publish.sh +18 -0
- package/src/libs/Collapse/styles.ts +37 -0
- package/src/libs/Collapse/types.ts +84 -0
- package/src/libs/DateTimePicker/WheelPicker.tsx +163 -0
- package/src/libs/DateTimePicker/WheelPickerItem.tsx +58 -0
- package/src/libs/DateTimePicker/index.tsx +188 -0
- package/src/libs/DateTimePicker/package.json +16 -0
- package/src/libs/DateTimePicker/publish.sh +17 -0
- package/src/libs/DateTimePicker/styles.ts +31 -0
- package/src/libs/DateTimePicker/types.ts +102 -0
- package/src/libs/DateTimePicker/utils.ts +114 -0
- package/src/libs/Information/index.tsx +129 -0
- package/src/libs/Information/package.json +16 -0
- package/src/libs/Information/publish.sh +18 -0
- package/src/libs/Information/styles.ts +34 -0
- package/src/libs/Information/types.ts +79 -0
- package/src/libs/Logo/index.tsx +39 -0
- package/src/libs/Logo/package.json +17 -0
- package/src/libs/Logo/publish.sh +16 -0
- package/src/libs/Logo/styles.ts +25 -0
- package/src/libs/Logo/types.ts +13 -0
- package/src/libs/ProgressInfo/ProgressInfoHorizontal.tsx +128 -0
- package/src/libs/ProgressInfo/ProgressInfoIcon.tsx +88 -0
- package/src/libs/ProgressInfo/ProgressInfoVertical.tsx +85 -0
- package/src/libs/ProgressInfo/index.tsx +22 -0
- package/src/libs/ProgressInfo/package.json +16 -0
- package/src/libs/ProgressInfo/publish.sh +16 -0
- package/src/libs/ProgressInfo/styles.ts +46 -0
- package/src/libs/ProgressInfo/types.ts +60 -0
- package/src/libs/ProgressInfo/yarn.lock +8 -0
- package/src/libs/Rating/index.tsx +74 -0
- package/src/libs/Rating/package.json +16 -0
- package/src/libs/Rating/publish.sh +18 -0
- package/src/libs/Rating/type.ts +25 -0
- package/src/libs/Slider/Label.tsx +33 -0
- package/src/libs/Slider/helpers.ts +35 -0
- package/src/libs/Slider/hooks.tsx +218 -0
- package/src/libs/Slider/index.tsx +453 -0
- package/src/libs/Slider/package.json +16 -0
- package/src/libs/Slider/publish.sh +18 -0
- package/src/libs/Slider/styles.ts +36 -0
- package/src/libs/Stepper/NumberView.tsx +64 -0
- package/src/libs/Stepper/StepperButton.tsx +37 -0
- package/src/libs/Stepper/index.tsx +139 -0
- package/src/libs/Stepper/package.json +16 -0
- package/src/libs/Stepper/publish.sh +17 -0
- package/src/libs/Stepper/styles.ts +44 -0
- package/src/libs/Stepper/types.ts +154 -0
- package/src/libs/Steps/StepIcon.tsx +86 -0
- package/src/libs/Steps/StepsHorizontal.tsx +189 -0
- package/src/libs/Steps/StepsVertical.tsx +133 -0
- package/src/libs/Steps/index.tsx +20 -0
- package/src/libs/Steps/package.json +16 -0
- package/src/libs/Steps/publish.sh +16 -0
- package/src/libs/Steps/styles.ts +46 -0
- package/src/libs/Steps/types.ts +159 -0
- package/src/libs/Steps/utils.ts +175 -0
- package/src/libs/SuggestAction/SuggestActionView.tsx +124 -0
- package/src/libs/SuggestAction/index.tsx +3 -0
- package/src/libs/SuggestAction/package.json +16 -0
- package/src/libs/SuggestAction/publish.sh +16 -0
- package/src/libs/SuggestAction/styles.ts +30 -0
- package/src/libs/SuggestAction/types.ts +36 -0
- package/src/libs/Swipe/SwipeView.tsx +151 -0
- package/src/libs/Swipe/index.tsx +5 -0
- package/src/libs/Swipe/package.json +16 -0
- package/src/libs/Swipe/publish.sh +16 -0
- package/src/libs/Swipe/styles.ts +16 -0
- package/src/libs/Swipe/types.ts +109 -0
- package/src/libs/TabView/assets/Path.tsx +29 -0
- package/src/libs/TabView/index.tsx +184 -0
- package/src/libs/TabView/package.json +16 -0
- package/src/libs/TabView/publish.sh +16 -0
- package/src/libs/TabView/styles.ts +96 -0
- package/src/libs/TabView/tabBar/CardTabBar.tsx +137 -0
- package/src/libs/TabView/tabBar/SrollableTabBar.tsx +218 -0
- package/src/libs/TabView/tabBar/TabBar.tsx +67 -0
- package/src/libs/TabView/tabItem/CardTabItem.tsx +118 -0
- package/src/libs/TabView/tabItem/TabItem.tsx +180 -0
- package/src/libs/TabView/types.ts +166 -0
- package/src/libs/Template/HeaderSliderBanner/index.tsx +86 -0
- package/src/libs/Template/HeaderSliderBanner/types.ts +16 -0
- package/src/libs/Template/TrustBanner/CustomAvatar.tsx +39 -0
- package/src/libs/Template/TrustBanner/index.tsx +161 -0
- package/src/libs/Template/TrustBanner/styles.ts +48 -0
- package/src/libs/Template/TrustBanner/types.ts +50 -0
- package/src/libs/Template/index.tsx +4 -0
- package/src/libs/Template/package.json +18 -0
- package/src/libs/Template/publish.sh +17 -0
- package/src/libs/Title/index.tsx +284 -0
- package/src/libs/Title/package.json +17 -0
- package/src/libs/Title/publish.sh +16 -0
- package/src/libs/Title/styles.ts +54 -0
- package/src/libs/Title/types.ts +21 -0
- package/src/libs/Tooltip/TooltipButtons.tsx +54 -0
- package/src/libs/Tooltip/index.tsx +608 -0
- package/src/libs/Tooltip/package.json +16 -0
- package/src/libs/Tooltip/publish.sh +18 -0
- package/src/libs/Tooltip/styles.ts +70 -0
- package/src/libs/Tooltip/types.ts +61 -0
- package/src/libs/Uploader/index.tsx +87 -0
- package/src/libs/Uploader/package.json +17 -0
- package/src/libs/Uploader/publish.sh +18 -0
- package/src/libs/Uploader/styles.ts +30 -0
- package/src/libs/Uploader/types.ts +69 -0
- package/src/native/MoMoNative.podspec +18 -0
- package/src/native/calculator/android/build.gradle +61 -0
- package/src/native/calculator/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/src/native/calculator/android/gradle/wrapper/gradle-wrapper.properties +6 -0
- package/src/native/calculator/android/gradlew +172 -0
- package/src/native/calculator/android/gradlew.bat +84 -0
- package/src/native/calculator/android/src/main/AndroidManifest.xml +5 -0
- package/src/native/calculator/android/src/main/java/com/calculator/KeyboardViewModule.java +22 -0
- package/src/native/calculator/android/src/main/java/com/calculator/KeyboardViewPackage.java +35 -0
- package/src/native/calculator/android/src/main/java/com/calculator/modules/CalculatorKeyboardModule.java +157 -0
- package/src/native/calculator/android/src/main/java/com/calculator/views/calculatorkeyboard/CalculatorEditText.java +36 -0
- package/src/native/calculator/android/src/main/java/com/calculator/views/calculatorkeyboard/FixedRelativeLayout.java +45 -0
- package/src/native/calculator/android/src/main/java/com/calculator/views/calculatorkeyboard/MomoTextInputCalculatorManager.java +173 -0
- package/src/native/calculator/android/src/main/java/com/calculator/views/customkeyboard/RNCustomKeyboardModule.java +417 -0
- package/src/native/calculator/ios/Helper/MomoHelper.swift +16 -0
- package/src/native/calculator/ios/KeyboardView-Bridging-Header.h +60 -0
- package/src/native/calculator/ios/KeyboardView.h +19 -0
- package/src/native/calculator/ios/KeyboardView.m +56 -0
- package/src/native/calculator/ios/MomoTextInputCalculator.swift +144 -0
- package/src/native/calculator/ios/RNCustomKeyboard/RNCustomKeyboard.h +6 -0
- package/src/native/calculator/ios/RNCustomKeyboard/RNCustomKeyboard.m +143 -0
- package/src/native/package.json +14 -0
- package/src/native/publish.sh +29 -0
- package/src/native/resource/android/build.gradle +57 -0
- package/src/native/resource/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/src/native/resource/android/gradle/wrapper/gradle-wrapper.properties +6 -0
- package/src/native/resource/android/src/main/AndroidManifest.xml +6 -0
- package/src/native/resource/android/src/main/java/com/resource/RNResourceModule.java +90 -0
- package/src/native/resource/android/src/main/java/com/resource/RNResourcePackage.java +22 -0
- package/src/native/resource/ios/RNResouce.m +71 -0
- package/src/native/resource/ios/RNResource.h +5 -0
- package/example/ios/Example.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/xcschememanagement.plist +0 -14
- package/example/ios/Example.xcworkspace/xcuserdata/sophia.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/example/ios/Example.xcworkspace/xcuserdata/sophia.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +0 -6
- package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/MoMoUIKits.xcscheme +0 -58
- package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/Pods-Example.xcscheme +0 -58
- package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/SDWebImage.xcscheme +0 -58
- package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/SDWebImageSwiftUI.xcscheme +0 -58
- package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/SkeletonUI.xcscheme +0 -58
- package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/lottie-ios-LottiePrivacyInfo.xcscheme +0 -58
- package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/lottie-ios.xcscheme +0 -58
- package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/xcschememanagement.plist +0 -46
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
function Lunar(this: any) {
|
|
2
|
+
this.isleap = false;
|
|
3
|
+
this.lunarDay = 0;
|
|
4
|
+
this.lunarMonth = 0;
|
|
5
|
+
this.lunarYear = 0;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
function Solar(this: any) {
|
|
9
|
+
this.solarDay = 0;
|
|
10
|
+
this.solarMonth = 0;
|
|
11
|
+
this.solarYear = 0;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
function LunarSolarConverter(this: any) {
|
|
15
|
+
this.lunar_month_days = [
|
|
16
|
+
1887, 0x1694, 0x16aa, 0x4ad5, 0xab6, 0xc4b7, 0x4ae, 0xa56, 0xb52a, 0x1d2a,
|
|
17
|
+
0xd54, 0x75aa, 0x156a, 0x1096d, 0x95c, 0x14ae, 0xaa4d, 0x1a4c, 0x1b2a,
|
|
18
|
+
0x8d55, 0xad4, 0x135a, 0x495d, 0x95c, 0xd49b, 0x149a, 0x1a4a, 0xbaa5,
|
|
19
|
+
0x16a8, 0x1ad4, 0x52da, 0x12b6, 0xe937, 0x92e, 0x1496, 0xb64b, 0xd4a, 0xda8,
|
|
20
|
+
0x95b5, 0x56c, 0x12ae, 0x492f, 0x92e, 0xcc96, 0x1a94, 0x1d4a, 0xada9, 0xb5a,
|
|
21
|
+
0x56c, 0x726e, 0x125c, 0xf92d, 0x192a, 0x1a94, 0xdb4a, 0x16aa, 0xad4,
|
|
22
|
+
0x955b, 0x4ba, 0x125a, 0x592b, 0x152a, 0xf695, 0xd94, 0x16aa, 0xaab5, 0x9b4,
|
|
23
|
+
0x14b6, 0x6a57, 0xa56, 0x1152a, 0x1d2a, 0xd54, 0xd5aa, 0x156a, 0x96c,
|
|
24
|
+
0x94ae, 0x14ae, 0xa4c, 0x7d26, 0x1b2a, 0xeb55, 0xad4, 0x12da, 0xa95d, 0x95a,
|
|
25
|
+
0x149a, 0x9a4d, 0x1a4a, 0x11aa5, 0x16a8, 0x16d4, 0xd2da, 0x12b6, 0x936,
|
|
26
|
+
0x9497, 0x1496, 0x1564b, 0xd4a, 0xda8, 0xd5b4, 0x156c, 0x12ae, 0xa92f,
|
|
27
|
+
0x92e, 0xc96, 0x6d4a, 0x1d4a, 0x10d65, 0xb58, 0x156c, 0xb26d, 0x125c,
|
|
28
|
+
0x192c, 0x9a95, 0x1a94, 0x1b4a, 0x4b55, 0xad4, 0xf55b, 0x4ba, 0x125a,
|
|
29
|
+
0xb92b, 0x152a, 0x1694, 0x96aa, 0x15aa, 0x12ab5, 0x974, 0x14b6, 0xca57,
|
|
30
|
+
0xa56, 0x1526, 0x8e95, 0xd54, 0x15aa, 0x49b5, 0x96c, 0xd4ae, 0x149c, 0x1a4c,
|
|
31
|
+
0xbd26, 0x1aa6, 0xb54, 0x6d6a, 0x12da, 0x1695d, 0x95a, 0x149a, 0xda4b,
|
|
32
|
+
0x1a4a, 0x1aa4, 0xbb54, 0x16b4, 0xada, 0x495b, 0x936, 0xf497, 0x1496,
|
|
33
|
+
0x154a, 0xb6a5, 0xda4, 0x15b4, 0x6ab6, 0x126e, 0x1092f, 0x92e, 0xc96,
|
|
34
|
+
0xcd4a, 0x1d4a, 0xd64, 0x956c, 0x155c, 0x125c, 0x792e, 0x192c, 0xfa95,
|
|
35
|
+
0x1a94, 0x1b4a, 0xab55, 0xad4, 0x14da, 0x8a5d, 0xa5a, 0x1152b, 0x152a,
|
|
36
|
+
0x1694, 0xd6aa, 0x15aa, 0xab4, 0x94ba, 0x14b6, 0xa56, 0x7527, 0xd26, 0xee53,
|
|
37
|
+
0xd54, 0x15aa, 0xa9b5, 0x96c, 0x14ae, 0x8a4e, 0x1a4c, 0x11d26, 0x1aa4,
|
|
38
|
+
0x1b54, 0xcd6a, 0xada, 0x95c, 0x949d, 0x149a, 0x1a2a, 0x5b25, 0x1aa4,
|
|
39
|
+
0xfb52, 0x16b4, 0xaba, 0xa95b, 0x936, 0x1496, 0x9a4b, 0x154a, 0x136a5,
|
|
40
|
+
0xda4, 0x15ac,
|
|
41
|
+
];
|
|
42
|
+
|
|
43
|
+
this.solar_1_1 = [
|
|
44
|
+
1887, 0xec04c, 0xec23f, 0xec435, 0xec649, 0xec83e, 0xeca51, 0xecc46,
|
|
45
|
+
0xece3a, 0xed04d, 0xed242, 0xed436, 0xed64a, 0xed83f, 0xeda53, 0xedc48,
|
|
46
|
+
0xede3d, 0xee050, 0xee244, 0xee439, 0xee64d, 0xee842, 0xeea36, 0xeec4a,
|
|
47
|
+
0xeee3e, 0xef052, 0xef246, 0xef43a, 0xef64e, 0xef843, 0xefa37, 0xefc4b,
|
|
48
|
+
0xefe41, 0xf0054, 0xf0248, 0xf043c, 0xf0650, 0xf0845, 0xf0a38, 0xf0c4d,
|
|
49
|
+
0xf0e42, 0xf1037, 0xf124a, 0xf143e, 0xf1651, 0xf1846, 0xf1a3a, 0xf1c4e,
|
|
50
|
+
0xf1e44, 0xf2038, 0xf224b, 0xf243f, 0xf2653, 0xf2848, 0xf2a3b, 0xf2c4f,
|
|
51
|
+
0xf2e45, 0xf3039, 0xf324d, 0xf3442, 0xf3636, 0xf384a, 0xf3a3d, 0xf3c51,
|
|
52
|
+
0xf3e46, 0xf403b, 0xf424e, 0xf4443, 0xf4638, 0xf484c, 0xf4a3f, 0xf4c52,
|
|
53
|
+
0xf4e48, 0xf503c, 0xf524f, 0xf5445, 0xf5639, 0xf584d, 0xf5a42, 0xf5c35,
|
|
54
|
+
0xf5e49, 0xf603e, 0xf6251, 0xf6446, 0xf663b, 0xf684f, 0xf6a43, 0xf6c37,
|
|
55
|
+
0xf6e4b, 0xf703f, 0xf7252, 0xf7447, 0xf763c, 0xf7850, 0xf7a45, 0xf7c39,
|
|
56
|
+
0xf7e4d, 0xf8042, 0xf8254, 0xf8449, 0xf863d, 0xf8851, 0xf8a46, 0xf8c3b,
|
|
57
|
+
0xf8e4f, 0xf9044, 0xf9237, 0xf944a, 0xf963f, 0xf9853, 0xf9a47, 0xf9c3c,
|
|
58
|
+
0xf9e50, 0xfa045, 0xfa238, 0xfa44c, 0xfa641, 0xfa836, 0xfaa49, 0xfac3d,
|
|
59
|
+
0xfae52, 0xfb047, 0xfb23a, 0xfb44e, 0xfb643, 0xfb837, 0xfba4a, 0xfbc3f,
|
|
60
|
+
0xfbe53, 0xfc048, 0xfc23c, 0xfc450, 0xfc645, 0xfc839, 0xfca4c, 0xfcc41,
|
|
61
|
+
0xfce36, 0xfd04a, 0xfd23d, 0xfd451, 0xfd646, 0xfd83a, 0xfda4d, 0xfdc43,
|
|
62
|
+
0xfde37, 0xfe04b, 0xfe23f, 0xfe453, 0xfe648, 0xfe83c, 0xfea4f, 0xfec44,
|
|
63
|
+
0xfee38, 0xff04c, 0xff241, 0xff436, 0xff64a, 0xff83e, 0xffa51, 0xffc46,
|
|
64
|
+
0xffe3a, 0x10004e, 0x100242, 0x100437, 0x10064b, 0x100841, 0x100a53,
|
|
65
|
+
0x100c48, 0x100e3c, 0x10104f, 0x101244, 0x101438, 0x10164c, 0x101842,
|
|
66
|
+
0x101a35, 0x101c49, 0x101e3d, 0x102051, 0x102245, 0x10243a, 0x10264e,
|
|
67
|
+
0x102843, 0x102a37, 0x102c4b, 0x102e3f, 0x103053, 0x103247, 0x10343b,
|
|
68
|
+
0x10364f, 0x103845, 0x103a38, 0x103c4c, 0x103e42, 0x104036, 0x104249,
|
|
69
|
+
0x10443d, 0x104651, 0x104846, 0x104a3a, 0x104c4e, 0x104e43, 0x105038,
|
|
70
|
+
0x10524a, 0x10543e, 0x105652, 0x105847, 0x105a3b, 0x105c4f, 0x105e45,
|
|
71
|
+
0x106039, 0x10624c, 0x106441, 0x106635, 0x106849, 0x106a3d, 0x106c51,
|
|
72
|
+
0x106e47, 0x10703c, 0x10724f, 0x107444, 0x107638, 0x10784c, 0x107a3f,
|
|
73
|
+
0x107c53, 0x107e48,
|
|
74
|
+
];
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* @return {number}
|
|
78
|
+
*/
|
|
79
|
+
this.GetBitInt = function (data: number, length: number, shift: number) {
|
|
80
|
+
return (data & (((1 << length) - 1) << shift)) >> shift;
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
// WARNING: Dates before Oct. 1582 are inaccurate
|
|
84
|
+
/**
|
|
85
|
+
* @return {number}
|
|
86
|
+
*/
|
|
87
|
+
this.SolarToInt = function (y: number, m: number, d: number) {
|
|
88
|
+
m = (m + 9) % 12;
|
|
89
|
+
y = parseInt(String(y)) - parseInt(String(m / 10));
|
|
90
|
+
return (
|
|
91
|
+
365 * y +
|
|
92
|
+
parseInt(String(y / 4)) -
|
|
93
|
+
parseInt(String(y / 100)) +
|
|
94
|
+
parseInt(String(y / 400)) +
|
|
95
|
+
parseInt(String((m * 306 + 5) / 10)) +
|
|
96
|
+
(d - 1)
|
|
97
|
+
);
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
this.SolarFromInt = function (g: number) {
|
|
101
|
+
let y = parseInt(String((10000 * g + 14780) / 3652425));
|
|
102
|
+
let ddd =
|
|
103
|
+
g -
|
|
104
|
+
(365 * y +
|
|
105
|
+
parseInt(String(y / 4)) -
|
|
106
|
+
parseInt(String(y / 100)) +
|
|
107
|
+
parseInt(String(y / 400)));
|
|
108
|
+
if (ddd < 0) {
|
|
109
|
+
y--;
|
|
110
|
+
ddd =
|
|
111
|
+
g -
|
|
112
|
+
(365 * y +
|
|
113
|
+
parseInt(String(y / 4)) -
|
|
114
|
+
parseInt(String(y / 100)) +
|
|
115
|
+
parseInt(String(y / 400)));
|
|
116
|
+
}
|
|
117
|
+
const mi = parseInt(String((100 * ddd + 52) / 3060));
|
|
118
|
+
const mm = ((mi + 2) % 12) + 1;
|
|
119
|
+
y += parseInt(String((mi + 2) / 12));
|
|
120
|
+
const dd = ddd - parseInt(String((mi * 306 + 5) / 10)) + 1;
|
|
121
|
+
// @ts-ignore
|
|
122
|
+
const solar = new Solar();
|
|
123
|
+
solar.solarYear = parseInt(String(y));
|
|
124
|
+
solar.solarMonth = parseInt(String(mm));
|
|
125
|
+
solar.solarDay = parseInt(String(dd));
|
|
126
|
+
return solar;
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
this.LunarToSolar = function (lunar: {
|
|
130
|
+
lunarYear: number;
|
|
131
|
+
isleap: any;
|
|
132
|
+
lunarMonth: number;
|
|
133
|
+
lunarDay: number;
|
|
134
|
+
}) {
|
|
135
|
+
// year range check: only support lunar calendar from 1900
|
|
136
|
+
const minLunarYear = 1900;
|
|
137
|
+
// using converter data, maximum supported lunar year
|
|
138
|
+
const maxLunarYear = this.lunar_month_days[0] + this.lunar_month_days.length - 1;
|
|
139
|
+
if (lunar.lunarYear < minLunarYear || lunar.lunarYear > maxLunarYear) {
|
|
140
|
+
throw new Error(`LunarToSolar: year ${lunar.lunarYear} out of supported range ${minLunarYear}-${maxLunarYear}`);
|
|
141
|
+
}
|
|
142
|
+
const days =
|
|
143
|
+
this.lunar_month_days[lunar.lunarYear - this.lunar_month_days[0]];
|
|
144
|
+
const leap = this.GetBitInt(days, 4, 13);
|
|
145
|
+
let offset = 0;
|
|
146
|
+
let loopend = leap;
|
|
147
|
+
if (!lunar.isleap) {
|
|
148
|
+
if (lunar.lunarMonth <= leap || leap === 0) {
|
|
149
|
+
loopend = lunar.lunarMonth - 1;
|
|
150
|
+
} else {
|
|
151
|
+
loopend = lunar.lunarMonth;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
for (let i = 0; i < loopend; i++) {
|
|
155
|
+
offset += this.GetBitInt(days, 1, 12 - i) === 1 ? 30 : 29;
|
|
156
|
+
}
|
|
157
|
+
offset += lunar.lunarDay;
|
|
158
|
+
|
|
159
|
+
const solar11 = this.solar_1_1[lunar.lunarYear - this.solar_1_1[0]];
|
|
160
|
+
|
|
161
|
+
const y = this.GetBitInt(solar11, 12, 9);
|
|
162
|
+
const m = this.GetBitInt(solar11, 4, 5);
|
|
163
|
+
const d = this.GetBitInt(solar11, 5, 0);
|
|
164
|
+
|
|
165
|
+
return this.SolarFromInt(this.SolarToInt(y, m, d) + offset - 1);
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
this.SolarToLunar = function (solar: {
|
|
169
|
+
solarYear: number;
|
|
170
|
+
solarMonth: number;
|
|
171
|
+
solarDay: number;
|
|
172
|
+
}) {
|
|
173
|
+
// year range check: only support solar dates from 1900
|
|
174
|
+
const minSolarYear = 1900;
|
|
175
|
+
// using converter data, maximum supported solar year
|
|
176
|
+
const maxSolarYear = this.solar_1_1[0] + this.solar_1_1.length - 1;
|
|
177
|
+
if (solar.solarYear < minSolarYear || solar.solarYear > maxSolarYear) {
|
|
178
|
+
throw new Error(`SolarToLunar: year ${solar.solarYear} out of supported range ${minSolarYear}-${maxSolarYear}`);
|
|
179
|
+
}
|
|
180
|
+
// @ts-ignore
|
|
181
|
+
const lunar = new Lunar();
|
|
182
|
+
let index = solar.solarYear - this.solar_1_1[0];
|
|
183
|
+
const data =
|
|
184
|
+
(solar.solarYear << 9) | (solar.solarMonth << 5) | solar.solarDay;
|
|
185
|
+
if (this.solar_1_1[index] > data) {
|
|
186
|
+
index--;
|
|
187
|
+
}
|
|
188
|
+
const solar11 = this.solar_1_1[index];
|
|
189
|
+
const y = this.GetBitInt(solar11, 12, 9);
|
|
190
|
+
const m = this.GetBitInt(solar11, 4, 5);
|
|
191
|
+
const d = this.GetBitInt(solar11, 5, 0);
|
|
192
|
+
let offset =
|
|
193
|
+
this.SolarToInt(solar.solarYear, solar.solarMonth, solar.solarDay) -
|
|
194
|
+
this.SolarToInt(y, m, d);
|
|
195
|
+
|
|
196
|
+
const days = this.lunar_month_days[index];
|
|
197
|
+
const leap = this.GetBitInt(days, 4, 13);
|
|
198
|
+
|
|
199
|
+
const lunarY = index + this.solar_1_1[0];
|
|
200
|
+
let lunarM = 1;
|
|
201
|
+
offset += 1;
|
|
202
|
+
|
|
203
|
+
for (let i = 0; i < 13; i++) {
|
|
204
|
+
const dm = this.GetBitInt(days, 1, 12 - i) === 1 ? 30 : 29;
|
|
205
|
+
if (offset > dm) {
|
|
206
|
+
lunarM++;
|
|
207
|
+
offset -= dm;
|
|
208
|
+
} else {
|
|
209
|
+
break;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
const lunarD = parseInt(String(offset));
|
|
213
|
+
lunar.lunarYear = lunarY;
|
|
214
|
+
lunar.lunarMonth = lunarM;
|
|
215
|
+
lunar.isleap = false;
|
|
216
|
+
if (leap !== 0 && lunarM > leap) {
|
|
217
|
+
lunar.lunarMonth = lunarM - 1;
|
|
218
|
+
if (lunarM === leap + 1) {
|
|
219
|
+
lunar.isleap = true;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
lunar.lunarDay = lunarD;
|
|
224
|
+
return lunar;
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
export default LunarSolarConverter;
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
const removeFractionalPart = (number: string | number) =>
|
|
2
|
+
parseInt(String(number));
|
|
3
|
+
|
|
4
|
+
/* Compute the (integral) Julian day number of day dd/mm/yyyy, i.e., the number
|
|
5
|
+
* of days between 1/1/4713 BC (Julian calendar) and dd/mm/yyyy.
|
|
6
|
+
* Formula from http://www.tondering.dk/claus/calendar.html
|
|
7
|
+
*/
|
|
8
|
+
const jdFromDate = (dd: number, mm: number, yy: number) => {
|
|
9
|
+
let a, y, m, jd;
|
|
10
|
+
a = removeFractionalPart((14 - mm) / 12);
|
|
11
|
+
y = yy + 4800 - a;
|
|
12
|
+
m = mm + 12 * a - 3;
|
|
13
|
+
jd =
|
|
14
|
+
dd +
|
|
15
|
+
removeFractionalPart((153 * m + 2) / 5) +
|
|
16
|
+
365 * y +
|
|
17
|
+
removeFractionalPart(y / 4) -
|
|
18
|
+
removeFractionalPart(y / 100) +
|
|
19
|
+
removeFractionalPart(y / 400) -
|
|
20
|
+
32045;
|
|
21
|
+
if (jd < 2299161) {
|
|
22
|
+
jd =
|
|
23
|
+
dd +
|
|
24
|
+
removeFractionalPart((153 * m + 2) / 5) +
|
|
25
|
+
365 * y +
|
|
26
|
+
removeFractionalPart(y / 4) -
|
|
27
|
+
32083;
|
|
28
|
+
}
|
|
29
|
+
return jd;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
/* Compute the time of the k-th new moon after the new moon of 1/1/1900 13:52 UCT
|
|
33
|
+
* (measured as the number of days since 1/1/4713 BC noon UCT, e.g., 2451545.125 is 1/1/2000 15:00 UTC).
|
|
34
|
+
* Returns a floating number, e.g., 2415079.9758617813 for k=2 or 2414961.935157746 for k=-2
|
|
35
|
+
* Algorithm from: "Astronomical Algorithms" by Jean Meeus, 1998
|
|
36
|
+
*/
|
|
37
|
+
const NewMoon = (k: number) => {
|
|
38
|
+
let T, T2, T3, dr, Jd1, M, Mpr, F, C1, deltat, JdNew;
|
|
39
|
+
T = k / 1236.85; // Time in Julian centuries from 1900 January 0.5
|
|
40
|
+
T2 = T * T;
|
|
41
|
+
T3 = T2 * T;
|
|
42
|
+
dr = Math.PI / 180;
|
|
43
|
+
Jd1 = 2415020.75933 + 29.53058868 * k + 0.0001178 * T2 - 0.000000155 * T3;
|
|
44
|
+
Jd1 = Jd1 + 0.00033 * Math.sin((166.56 + 132.87 * T - 0.009173 * T2) * dr); // Mean new moon
|
|
45
|
+
M = 359.2242 + 29.10535608 * k - 0.0000333 * T2 - 0.00000347 * T3; // Sun's mean anomaly
|
|
46
|
+
Mpr = 306.0253 + 385.81691806 * k + 0.0107306 * T2 + 0.00001236 * T3; // Moon's mean anomaly
|
|
47
|
+
F = 21.2964 + 390.67050646 * k - 0.0016528 * T2 - 0.00000239 * T3; // Moon's argument of latitude
|
|
48
|
+
C1 =
|
|
49
|
+
(0.1734 - 0.000393 * T) * Math.sin(M * dr) + 0.0021 * Math.sin(2 * dr * M);
|
|
50
|
+
C1 = C1 - 0.4068 * Math.sin(Mpr * dr) + 0.0161 * Math.sin(dr * 2 * Mpr);
|
|
51
|
+
C1 = C1 - 0.0004 * Math.sin(dr * 3 * Mpr);
|
|
52
|
+
C1 = C1 + 0.0104 * Math.sin(dr * 2 * F) - 0.0051 * Math.sin(dr * (M + Mpr));
|
|
53
|
+
C1 =
|
|
54
|
+
C1 -
|
|
55
|
+
0.0074 * Math.sin(dr * (M - Mpr)) +
|
|
56
|
+
0.0004 * Math.sin(dr * (2 * F + M));
|
|
57
|
+
C1 =
|
|
58
|
+
C1 -
|
|
59
|
+
0.0004 * Math.sin(dr * (2 * F - M)) -
|
|
60
|
+
0.0006 * Math.sin(dr * (2 * F + Mpr));
|
|
61
|
+
C1 =
|
|
62
|
+
C1 +
|
|
63
|
+
0.001 * Math.sin(dr * (2 * F - Mpr)) +
|
|
64
|
+
0.0005 * Math.sin(dr * (2 * Mpr + M));
|
|
65
|
+
if (T < -11) {
|
|
66
|
+
deltat =
|
|
67
|
+
0.001 +
|
|
68
|
+
0.000839 * T +
|
|
69
|
+
0.0002261 * T2 -
|
|
70
|
+
0.00000845 * T3 -
|
|
71
|
+
0.000000081 * T * T3;
|
|
72
|
+
} else {
|
|
73
|
+
deltat = -0.000278 + 0.000265 * T + 0.000262 * T2;
|
|
74
|
+
}
|
|
75
|
+
JdNew = Jd1 + C1 - deltat;
|
|
76
|
+
return JdNew;
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
/* Compute the longitude of the sun at any time.
|
|
80
|
+
* Parameter: floating number jdn, the number of days since 1/1/4713 BC noon
|
|
81
|
+
* Algorithm from: "Astronomical Algorithms" by Jean Meeus, 1998
|
|
82
|
+
*/
|
|
83
|
+
const SunLongitude = (jdn: number) => {
|
|
84
|
+
let T, T2, dr, M, L0, DL, L;
|
|
85
|
+
T = (jdn - 2451545.0) / 36525; // Time in Julian centuries from 2000-01-01 12:00:00 GMT
|
|
86
|
+
T2 = T * T;
|
|
87
|
+
dr = Math.PI / 180; // degree to radian
|
|
88
|
+
M = 357.5291 + 35999.0503 * T - 0.0001559 * T2 - 0.00000048 * T * T2; // mean anomaly, degree
|
|
89
|
+
L0 = 280.46645 + 36000.76983 * T + 0.0003032 * T2; // mean longitude, degree
|
|
90
|
+
DL = (1.9146 - 0.004817 * T - 0.000014 * T2) * Math.sin(dr * M);
|
|
91
|
+
DL =
|
|
92
|
+
DL +
|
|
93
|
+
(0.019993 - 0.000101 * T) * Math.sin(dr * 2 * M) +
|
|
94
|
+
0.00029 * Math.sin(dr * 3 * M);
|
|
95
|
+
L = L0 + DL; // true longitude, degree
|
|
96
|
+
L = L * dr;
|
|
97
|
+
L = L - Math.PI * 2 * Math.sin(L / (Math.PI * 2)); // Normalize to (0, 2*PI)
|
|
98
|
+
return L;
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
/* Compute sun position at midnight of the day with the given Julian day number.
|
|
102
|
+
* The time zone if the time difference between local time and UTC: 7.0 for UTC+7:00.
|
|
103
|
+
* The returns a number between 0 and 11.
|
|
104
|
+
* From the day after March equinox and the 1st major term after March equinox, 0 is returned.
|
|
105
|
+
* After that, return 1, 2, 3 ...
|
|
106
|
+
*/
|
|
107
|
+
const getSunLongitude = (dayNumber: number, timeZone: number) => {
|
|
108
|
+
return removeFractionalPart(
|
|
109
|
+
(SunLongitude(dayNumber - 0.5 - timeZone / 24) / Math.PI) * 6
|
|
110
|
+
);
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
/* Compute the day of the k-th new moon in the given time zone.
|
|
114
|
+
* The time zone if the time difference between local time and UTC: 7.0 for UTC+7:00
|
|
115
|
+
*/
|
|
116
|
+
const getNewMoonDay = (k: number, timeZone: number) => {
|
|
117
|
+
return removeFractionalPart(NewMoon(k) + 0.5 + timeZone / 24);
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
/* Find the day that starts the luner month 11 of the given year for the given time zone */
|
|
121
|
+
const getLunarMonth11 = (yy: number, timeZone: number) => {
|
|
122
|
+
let k, off, nm, sunLong;
|
|
123
|
+
//off = jdFromDate(31, 12, yy) - 2415021.076998695;
|
|
124
|
+
off = jdFromDate(31, 12, yy) - 2415021;
|
|
125
|
+
k = removeFractionalPart(off / 29.530588853);
|
|
126
|
+
nm = getNewMoonDay(k, timeZone);
|
|
127
|
+
sunLong = getSunLongitude(nm, timeZone); // sun longitude at local midnight
|
|
128
|
+
if (sunLong >= 9) {
|
|
129
|
+
nm = getNewMoonDay(k - 1, timeZone);
|
|
130
|
+
}
|
|
131
|
+
return nm;
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
/* Find the index of the leap month after the month starting on the day a11. */
|
|
135
|
+
const getLeapMonthOffset = (a11: number, timeZone: number) => {
|
|
136
|
+
let k, last, arc, i;
|
|
137
|
+
k = removeFractionalPart((a11 - 2415021.076998695) / 29.530588853 + 0.5);
|
|
138
|
+
last = 0;
|
|
139
|
+
i = 1; // We start with the month following lunar month 11
|
|
140
|
+
arc = getSunLongitude(getNewMoonDay(k + i, timeZone), timeZone);
|
|
141
|
+
do {
|
|
142
|
+
last = arc;
|
|
143
|
+
i++;
|
|
144
|
+
arc = getSunLongitude(getNewMoonDay(k + i, timeZone), timeZone);
|
|
145
|
+
} while (arc !== last && i < 14);
|
|
146
|
+
return i - 1;
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
/* Comvert solar date dd/mm/yyyy to the corresponding lunar date */
|
|
150
|
+
export const convertSolar2Lunar = (
|
|
151
|
+
dd: number,
|
|
152
|
+
mm: number,
|
|
153
|
+
yy: number,
|
|
154
|
+
timeZone: number
|
|
155
|
+
) => {
|
|
156
|
+
let k,
|
|
157
|
+
dayNumber,
|
|
158
|
+
monthStart,
|
|
159
|
+
a11,
|
|
160
|
+
b11,
|
|
161
|
+
lunarDay,
|
|
162
|
+
lunarMonth,
|
|
163
|
+
lunarYear,
|
|
164
|
+
lunarLeap;
|
|
165
|
+
dayNumber = jdFromDate(dd, mm, yy);
|
|
166
|
+
k = removeFractionalPart((dayNumber - 2415021.076998695) / 29.530588853);
|
|
167
|
+
monthStart = getNewMoonDay(k + 1, timeZone);
|
|
168
|
+
if (monthStart > dayNumber) {
|
|
169
|
+
monthStart = getNewMoonDay(k, timeZone);
|
|
170
|
+
}
|
|
171
|
+
//alert(dayNumber+" -> "+monthStart);
|
|
172
|
+
a11 = getLunarMonth11(yy, timeZone);
|
|
173
|
+
b11 = a11;
|
|
174
|
+
if (a11 >= monthStart) {
|
|
175
|
+
lunarYear = yy;
|
|
176
|
+
a11 = getLunarMonth11(yy - 1, timeZone);
|
|
177
|
+
} else {
|
|
178
|
+
lunarYear = yy + 1;
|
|
179
|
+
b11 = getLunarMonth11(yy + 1, timeZone);
|
|
180
|
+
}
|
|
181
|
+
lunarDay = dayNumber - monthStart + 1;
|
|
182
|
+
let diff = removeFractionalPart((monthStart - a11) / 29);
|
|
183
|
+
lunarLeap = 0;
|
|
184
|
+
lunarMonth = diff + 10;
|
|
185
|
+
if (b11 - a11 > 365) {
|
|
186
|
+
let leapMonthDiff = getLeapMonthOffset(a11, timeZone);
|
|
187
|
+
if (diff >= leapMonthDiff) {
|
|
188
|
+
lunarMonth = diff + 10;
|
|
189
|
+
if (diff === leapMonthDiff) {
|
|
190
|
+
lunarLeap = 1;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
if (lunarMonth > 12) {
|
|
195
|
+
lunarMonth = lunarMonth - 12;
|
|
196
|
+
}
|
|
197
|
+
if (lunarMonth >= 11 && diff < 4) {
|
|
198
|
+
lunarYear -= 1;
|
|
199
|
+
}
|
|
200
|
+
return {
|
|
201
|
+
lunarDay,
|
|
202
|
+
lunarMonth: lunarMonth,
|
|
203
|
+
lunarYear,
|
|
204
|
+
isleap: lunarLeap,
|
|
205
|
+
};
|
|
206
|
+
};
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import React, {useContext, useMemo} from 'react';
|
|
2
|
+
import {View} from 'react-native';
|
|
3
|
+
import moment, {Moment} from 'moment';
|
|
4
|
+
import Day from './Day';
|
|
5
|
+
import {useScaleSize, Spacing} from '@momo-kits/foundation';
|
|
6
|
+
import {MonthProps} from './types';
|
|
7
|
+
import {ContainerContext} from './index';
|
|
8
|
+
|
|
9
|
+
const Month: React.FC<MonthProps> = ({
|
|
10
|
+
dateList,
|
|
11
|
+
holidays,
|
|
12
|
+
priceListDate,
|
|
13
|
+
minDate,
|
|
14
|
+
maxDate,
|
|
15
|
+
startDate,
|
|
16
|
+
endDate,
|
|
17
|
+
isShowLunar,
|
|
18
|
+
isDoubleDateMode,
|
|
19
|
+
disabledDays,
|
|
20
|
+
month,
|
|
21
|
+
...props
|
|
22
|
+
}) => {
|
|
23
|
+
const rows = useMemo(() => {
|
|
24
|
+
const rowCount = dateList.length / 7;
|
|
25
|
+
const rowArray = new Array(rowCount).fill('');
|
|
26
|
+
return rowArray.map((_, i) => dateList.slice(i * 7, i * 7 + 7));
|
|
27
|
+
}, [dateList]);
|
|
28
|
+
|
|
29
|
+
const findHoliday = (date?: Moment) => {
|
|
30
|
+
if (!date || !holidays || holidays.length === 0) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
const day = date.date();
|
|
34
|
+
const monthNum = date.month() + 1;
|
|
35
|
+
return (
|
|
36
|
+
holidays.find(item => item.day === day && item.month === monthNum) || null
|
|
37
|
+
);
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
const checkHoliday = (date?: Moment) => {
|
|
41
|
+
const holiday = findHoliday(date);
|
|
42
|
+
return {
|
|
43
|
+
isSolarHoliday: !!(holiday && !holiday.lunar),
|
|
44
|
+
isLunarHoliday: !!(holiday && holiday.lunar),
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
const size = useContext(ContainerContext);
|
|
49
|
+
const scaledHeight = useScaleSize(48);
|
|
50
|
+
|
|
51
|
+
// Precompute disabled dates set for fast lookup (format: YYYY-MM-DD)
|
|
52
|
+
const disabledSet = useMemo(
|
|
53
|
+
() => new Set((disabledDays || []).map(d => moment(d).format('YYYY-MM-DD'))),
|
|
54
|
+
[disabledDays]
|
|
55
|
+
);
|
|
56
|
+
|
|
57
|
+
if (!month) {
|
|
58
|
+
return <View />;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return (
|
|
62
|
+
<View style={{width: size.width}}>
|
|
63
|
+
<View
|
|
64
|
+
style={{
|
|
65
|
+
paddingHorizontal: Spacing.S,
|
|
66
|
+
width: '100%',
|
|
67
|
+
alignItems: 'center',
|
|
68
|
+
}}>
|
|
69
|
+
{rows.map((dayList, rowIndex) => (
|
|
70
|
+
<View
|
|
71
|
+
key={`row${rowIndex}`}
|
|
72
|
+
style={{
|
|
73
|
+
flexDirection: 'row',
|
|
74
|
+
alignItems: 'center',
|
|
75
|
+
marginBottom: Spacing.XS,
|
|
76
|
+
height: scaledHeight,
|
|
77
|
+
}}>
|
|
78
|
+
{dayList.map((item, i) => {
|
|
79
|
+
const {isEmpty, date: dateMoment, lunarDate} = item;
|
|
80
|
+
// compute key for price/disabled only if not empty
|
|
81
|
+
const keyDay = !isEmpty && dateMoment
|
|
82
|
+
? dateMoment.format('YYYY-MM-DD')
|
|
83
|
+
: '';
|
|
84
|
+
const priceInfo = keyDay ? priceListDate?.[keyDay] : undefined;
|
|
85
|
+
const isDisabled = keyDay
|
|
86
|
+
? disabledSet.has(keyDay)
|
|
87
|
+
: false;
|
|
88
|
+
|
|
89
|
+
return (
|
|
90
|
+
<Day
|
|
91
|
+
{...props}
|
|
92
|
+
minDate={minDate}
|
|
93
|
+
maxDate={maxDate}
|
|
94
|
+
isShowLunar={isShowLunar}
|
|
95
|
+
isDoubleDateMode={isDoubleDateMode}
|
|
96
|
+
startDate={startDate}
|
|
97
|
+
endDate={endDate}
|
|
98
|
+
{...checkHoliday(dateMoment)}
|
|
99
|
+
date={dateMoment}
|
|
100
|
+
havePriceList={!!priceListDate}
|
|
101
|
+
lunarDate={lunarDate}
|
|
102
|
+
isEmpty={isEmpty}
|
|
103
|
+
key={`day${i}`}
|
|
104
|
+
index={i}
|
|
105
|
+
price={priceInfo?.priceAsString}
|
|
106
|
+
isBestPrice={priceInfo?.isBestPrice}
|
|
107
|
+
isDisabled={isDisabled}
|
|
108
|
+
/>
|
|
109
|
+
);
|
|
110
|
+
})}
|
|
111
|
+
</View>
|
|
112
|
+
))}
|
|
113
|
+
</View>
|
|
114
|
+
</View>
|
|
115
|
+
);
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
export default React.memo(Month);
|