npm-pkg-hook 1.3.9 → 1.4.0
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/.babelrc +2 -10
- package/.env +5 -1
- package/dist/index.js +17953 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +17711 -0
- package/dist/index.mjs.map +1 -0
- package/eslint.config.mjs +154 -0
- package/expire.json +1 -0
- package/index.d.ts +2 -0
- package/jest.config.ts +9 -0
- package/package.json +45 -36
- package/src/config/client/errors.ts +39 -0
- package/src/config/content/en.json +5 -0
- package/src/config/content/es.json +5 -0
- package/src/config/content/index.ts +16 -0
- package/src/hooks/addTenMinutes/index.ts +14 -0
- package/src/hooks/calculateLogLatHaversine/index.ts +41 -0
- package/src/hooks/completeSchedules/index.ts +22 -0
- package/src/hooks/convertToMilitaryTime/index.ts +18 -0
- package/src/hooks/generateStoreURL/index.ts +41 -0
- package/src/hooks/generateTemplate/index.ts +66 -0
- package/src/hooks/getCardType/index.ts +24 -0
- package/src/hooks/getCategoriesWithProduct/{index.js → index.ts} +7 -7
- package/src/hooks/getGlobalSession/index.ts +69 -0
- package/src/hooks/getSession/index.ts +72 -0
- package/src/hooks/getTodayTimestamps/index.ts +70 -0
- package/src/hooks/getTotalHours/index.ts +76 -0
- package/src/hooks/handleLogin/index.ts +14 -0
- package/src/hooks/index.ts +154 -0
- package/src/hooks/isTokenExpired/index.ts +17 -0
- package/src/hooks/newMessageSubscription/index.ts +28 -0
- package/src/hooks/newStoreOrderSubscription/index.ts +26 -0
- package/src/hooks/{useStatusOpenStore/helpers/index.js → statusOpenStores/helpers/index.ts} +24 -1
- package/src/hooks/statusOpenStores/index.ts +221 -0
- package/src/hooks/updateExtProductFoodsOptional/{index.js → index.ts} +15 -6
- package/src/hooks/useAcumulateDate/index.ts +18 -0
- package/src/hooks/useAllStoresPendingToRegister/index.ts +37 -0
- package/src/hooks/useAmountInput/index.ts +127 -0
- package/src/hooks/useAnimationText/{index.jsx → index.ts} +2 -2
- package/src/hooks/useAsideCart/index.ts +217 -0
- package/src/hooks/useBanner/{index.js → index.ts} +2 -1
- package/src/hooks/useCart/{queries.js → queries.ts} +11 -1
- package/src/hooks/useCart/useCart/helpers/{index.js → index.ts} +10 -6
- package/src/hooks/useCart/useCart/{index.js → index.ts} +58 -44
- package/src/hooks/useCart/useGetCart/{index.js → index.ts} +6 -3
- package/src/hooks/useCatWithProduct/{index.js → index.ts} +17 -7
- package/src/hooks/useCatWithProduct/{queries.js → queries.ts} +50 -23
- package/src/hooks/useCatWithProduct/types/index.ts +104 -0
- package/src/hooks/useCatWithProductClient/{index.js → index.ts} +19 -18
- package/src/hooks/useCatWithProductClient/{queries.js → queries.ts} +1 -0
- package/src/hooks/useCategoriesProduct/{index.js → index.ts} +3 -1
- package/src/hooks/useCategoriesProduct/{queries.js → queries.ts} +2 -2
- package/src/hooks/useCategoryInStore/index.ts +167 -0
- package/src/hooks/useCategoryInStore/{queries.js → queries.ts} +2 -2
- package/src/hooks/useCategoryStore/{index.js → index.ts} +4 -3
- package/src/hooks/useCategoryStore/{queries.js → queries.ts} +2 -2
- package/src/hooks/useChartData/{index.js → index.ts} +31 -34
- package/src/hooks/useChartData/useChartData/{index.js → index.ts} +31 -30
- package/src/hooks/useChartData/useChartDataAllOrders/{index.js → index.ts} +4 -4
- package/src/hooks/useChatRoomSubscription/index.ts +28 -0
- package/src/hooks/useCheckbox/{index.js → index.ts} +1 -1
- package/src/hooks/useCities/index.ts +14 -0
- package/src/hooks/useCities/queries.ts +12 -0
- package/src/hooks/useClients/{index.js → index.ts} +36 -10
- package/src/hooks/useClients/queries.ts +215 -0
- package/src/hooks/useColorByLetters/helpers/alea.ts +73 -0
- package/src/hooks/useColorByLetters/helpers/colors.ts +45 -0
- package/src/hooks/useColorByLetters/helpers/index.ts +24 -0
- package/src/hooks/useColorByLetters/helpers/mersenne_twister.ts +118 -0
- package/src/hooks/useColorByLetters/index.ts +24 -0
- package/src/hooks/useConnection/index.ts +24 -0
- package/src/hooks/useCountries/index.ts +20 -0
- package/src/hooks/useCountries/queries.ts +12 -0
- package/src/hooks/useCreateDeliveryTime/index.ts +51 -0
- package/src/hooks/useCreateOrderStatusType/index.ts +134 -0
- package/src/hooks/useCreateProduct/helpers/index.ts +23 -0
- package/src/hooks/useCreateProduct/helpers/manageCacheDataCatProduct/{index.js → index.ts} +1 -1
- package/src/hooks/useCreateProduct/helpers/useEditImageProduct/{index.js → index.ts} +14 -8
- package/src/hooks/useCreateProduct/index.ts +337 -0
- package/src/hooks/useCreateStorePendingToRegister/index.ts +17 -0
- package/src/hooks/useCreateStorePendingToRegister/queries.ts +10 -0
- package/src/hooks/useDashboardComponents/index.ts +50 -0
- package/src/hooks/useDeleteExtraProductFoods/index.ts +13 -0
- package/src/hooks/useDeleteSubProductOptional/{index.js → index.ts} +5 -3
- package/src/hooks/useDeliveryTime/index.ts +29 -0
- package/src/hooks/useDepartments/index.ts +14 -0
- package/src/hooks/useDepartments/queries.ts +13 -0
- package/src/hooks/useDessert/{index.js → index.ts} +162 -114
- package/src/hooks/useDessertWithPrice/helpers/index.ts +76 -0
- package/src/hooks/useDessertWithPrice/index.ts +381 -0
- package/src/hooks/useDessertWithPrice/queries.ts +18 -0
- package/src/hooks/useDevWS/index.ts +53 -0
- package/src/hooks/useDevices/index.ts +2 -0
- package/src/hooks/useDevices/queries.ts +28 -0
- package/src/hooks/useDevices/useGetDevices.ts +28 -0
- package/src/hooks/useDevices/useRegisterDevices.ts +75 -0
- package/src/hooks/useDownloadReports/helpers/downloadFileFromResponse.ts +21 -0
- package/src/hooks/useDownloadReports/index.ts +2 -0
- package/src/hooks/useDownloadReports/useDownloadReportByDay/index.ts +105 -0
- package/src/hooks/useDownloadReports/useGetReportByDateRange/index.ts +116 -0
- package/src/hooks/useDrag/{index.js → index.ts} +16 -0
- package/src/hooks/useDropzone/{index.js → index.ts} +2 -2
- package/src/hooks/useDynamicAuth/{index.js → index.ts} +2 -1
- package/src/hooks/useEditCategory/{index.js → index.ts} +14 -14
- package/src/hooks/useEditOneExtProductFoodOptional/index.ts +28 -0
- package/src/hooks/useEditOneExtProductFoodOptional/{queries.js → queries.ts} +2 -2
- package/src/hooks/useEditSubProductOptional/index.ts +12 -0
- package/src/hooks/useEmployee/index.ts +18 -0
- package/src/hooks/useEmployee/queries.ts +85 -0
- package/src/hooks/useEmployee/useCreateEmployee.ts +90 -0
- package/src/hooks/useEvent/{index.js → index.ts} +1 -0
- package/src/hooks/useFavoriteStores/index.ts +31 -0
- package/src/hooks/useFavoriteStores/queries.ts +54 -0
- package/src/hooks/useFetchMoreInteractions/index.jsx +26 -26
- package/src/hooks/useFilterConfigs/index.ts +173 -0
- package/src/hooks/useFingerprintjs/{index.js → index.ts} +32 -7
- package/src/hooks/useFormTools/index.ts +143 -0
- package/src/hooks/useFormatDate/index.ts +91 -0
- package/src/hooks/useFullScreenMode/{index.js → index.ts} +1 -5
- package/src/hooks/useGetAllLocationUser/index.ts +13 -0
- package/src/hooks/useGetAllLocationUser/queries.ts +44 -0
- package/src/hooks/{useSales/useGetAllSales/index.js → useGetAllSales/index.ts} +3 -2
- package/src/hooks/useGetCookies/index.ts +43 -0
- package/src/hooks/useGetExtProductFoodsSubOptionalAll/{index.js → index.ts} +2 -1
- package/src/hooks/useGetFoodRecomended/{index.js → index.ts} +2 -1
- package/src/hooks/useGetMessagesToRoom/index.ts +23 -0
- package/src/hooks/useGetMinPrice/{index.js → index.ts} +2 -1
- package/src/hooks/useGetOneStoreRating/{index.js → index.ts} +2 -1
- package/src/hooks/useGetSalesAmountToday/index.ts +31 -0
- package/src/hooks/useGetStoreCookie/index.ts +21 -0
- package/src/hooks/useGoogleLogin/{index.js → index.ts} +14 -5
- package/src/hooks/useHover/{index.js → index.ts} +3 -0
- package/src/hooks/useImageOptimization/{index.js → index.ts} +4 -0
- package/src/hooks/useImageUploaderProduct/helper/canvasUtils.ts +146 -0
- package/src/hooks/useImageUploaderProduct/helper/getOrientation.ts +54 -0
- package/src/hooks/useImageUploaderProduct/helper/index.ts +5 -0
- package/src/hooks/useImageUploaderProduct/index.ts +295 -0
- package/src/hooks/useImageWeight/{index.js → index.ts} +4 -0
- package/src/hooks/useImagesStore/index.ts +227 -0
- package/src/hooks/useImagesStore/{queries.js → queries.ts} +4 -68
- package/src/hooks/useImagesStore/utils/index.ts +4 -0
- package/src/hooks/useIncomingOrders/index.ts +11 -0
- package/src/hooks/useIncomingOrders/queries.ts +87 -0
- package/src/hooks/useIntersection/{index.js → index.ts} +1 -1
- package/src/hooks/useInventory/index.ts +2 -0
- package/src/hooks/useInventory/queries.ts +58 -0
- package/src/hooks/useInventory/useGetProductsInStock.ts +16 -0
- package/src/hooks/useInventory/useUpdateManageStock.ts +41 -0
- package/src/hooks/useLazyScript/{index.js → index.ts} +3 -0
- package/src/hooks/useLocalBackendIp/index.ts +34 -0
- package/src/hooks/useLocalSorage/{index.js → index.ts} +3 -3
- package/src/hooks/useLocationManager/index.ts +63 -0
- package/src/hooks/useLoginEmployeeInStore/index.ts +38 -0
- package/src/hooks/useLogout/helpers/BroadcastChannel.ts +74 -0
- package/src/hooks/useLogout/helpers/apiBaseUrl.ts +12 -0
- package/src/hooks/useLogout/helpers/fetchData.ts +37 -0
- package/src/hooks/useLogout/helpers/getCsrfToken.ts +37 -0
- package/src/hooks/useLogout/helpers/index.ts +65 -0
- package/src/hooks/useLogout/helpers/logger.ts +88 -0
- package/src/hooks/useLogout/helpers/parseUrl.ts +39 -0
- package/src/hooks/useLogout/index.ts +105 -0
- package/src/hooks/useManageNewOrder/helpers/index.ts +45 -0
- package/src/hooks/useManageNewOrder/index.ts +104 -0
- package/src/hooks/useManageQueryParams/index.ts +120 -0
- package/src/hooks/useMobile/index.ts +65 -0
- package/src/hooks/useModules/helpers/index.ts +1 -0
- package/src/hooks/useModules/helpers/validateModules.ts +43 -0
- package/src/hooks/useModules/index.ts +124 -0
- package/src/hooks/useMouse/index.ts +55 -0
- package/src/hooks/useOrderStatusTypes/index.ts +2 -0
- package/src/hooks/useOrderStatusTypes/useOrderStatusTypes/index.ts +133 -0
- package/src/hooks/useOrderStatusTypes/useUpdateOrderStatusPriorities/index.ts +99 -0
- package/src/hooks/useOrders/index.ts +3 -0
- package/src/hooks/useOrders/queries.ts +99 -0
- package/src/hooks/useOrders/useChangeOrderState/index.ts +128 -0
- package/src/hooks/useOrders/{index.js → useOrdersFromStore/index.ts} +20 -18
- package/src/hooks/usePWAInstall/index.ts +38 -0
- package/src/hooks/usePaymentMethod/index.ts +3 -0
- package/src/hooks/usePaymentMethod/paymentMethod.gql.ts +62 -0
- package/src/hooks/usePaymentMethod/paymentMethod.types.ts +28 -0
- package/src/hooks/usePaymentMethod/useCreatePaymentMethod/index.ts +25 -0
- package/src/hooks/usePaymentMethod/useGetAllPaymentMethods/index.ts +19 -0
- package/src/hooks/usePaymentMethod/useGetPaymentMethod/index.ts +26 -0
- package/src/hooks/usePortFetcher/index.ts +33 -0
- package/src/hooks/usePrintSaleTicket/index.ts +68 -0
- package/src/hooks/useProductsFood/index.ts +341 -0
- package/src/hooks/useProductsFood/{queriesStore.js → queriesStore.ts} +151 -84
- package/src/hooks/useProductsFood/types/index.ts +0 -0
- package/src/hooks/useProductsFood/useEditProduct.ts +49 -0
- package/src/hooks/useProductsFood/usetagsProducts.ts +101 -0
- package/src/hooks/useProviders/useProvidersCreateStore/{index.js → index.ts} +2 -1
- package/src/hooks/useProviders/useProvidersDataStore/{index.js → index.ts} +2 -1
- package/src/hooks/useProvidersStore/{index.js → index.ts} +2 -1
- package/src/hooks/usePushNotificationOrder/index.ts +52 -0
- package/src/hooks/usePushNotifications/helpers/index.ts +123 -0
- package/src/hooks/usePushNotifications/index.ts +150 -0
- package/src/hooks/useQueryLocationsMap/index.ts +20 -0
- package/src/hooks/useQueryLocationsMap/queries.ts +40 -0
- package/src/hooks/useRatingArrayData/{index.js → index.ts} +4 -4
- package/src/hooks/useRatingArrayData/{queries.js → queries.ts} +1 -1
- package/src/hooks/useReactToPrint/index.ts +4 -0
- package/src/hooks/useRemoveExtraProductFoodsOptional/{index.js → index.ts} +2 -1
- package/src/hooks/useRemoveExtraProductFoodsOptional/{queries.js → queries.ts} +4 -4
- package/src/hooks/useReport/{index.js → index.ts} +5 -5
- package/src/hooks/useReport/{queries.js → queries.ts} +4 -55
- package/src/hooks/useRestaurant/helpers/index.ts +28 -0
- package/src/hooks/useRestaurant/helpers/manageStatusOpen.ts +26 -0
- package/src/hooks/useRestaurant/index.ts +71 -0
- package/src/hooks/useRestaurant/{queries.js → queries.ts} +2 -1
- package/src/hooks/useRoads/index.ts +20 -0
- package/src/hooks/useRoads/queries.ts +13 -0
- package/src/hooks/useRoles/index.ts +4 -0
- package/src/hooks/useRoles/queries.ts +70 -0
- package/src/hooks/useRoles/useCreateRole.ts +40 -0
- package/src/hooks/useRoles/useGetRoles.ts +37 -0
- package/src/hooks/useRoles/useRemoveRoles.ts +40 -0
- package/src/hooks/useRoles/useUpdateRolesPriority.ts +44 -0
- package/src/hooks/useSales/helpers/add-product.utils.ts +120 -0
- package/src/hooks/useSales/helpers/apply-discount-to-cart.utils.ts +292 -0
- package/src/hooks/useSales/helpers/comment-product.utils.ts +41 -0
- package/src/hooks/useSales/helpers/constants/index.ts +38 -0
- package/src/hooks/useSales/helpers/extras.utils.ts +42 -0
- package/src/hooks/useSales/helpers/filterProductsByCarProId.utils.ts +17 -0
- package/src/hooks/useSales/helpers/increment-product-quantity.utils.ts +76 -0
- package/src/hooks/useSales/helpers/index.ts +3 -0
- package/src/hooks/useSales/helpers/initializer.utils.ts +22 -0
- package/src/hooks/useSales/helpers/isStockInsufficient.ts +3 -0
- package/src/hooks/useSales/helpers/remove-product.utils.test.ts +49 -0
- package/src/hooks/useSales/helpers/remove-product.utils.ts +34 -0
- package/src/hooks/useSales/helpers/resolveProduct.ts +29 -0
- package/src/hooks/useSales/helpers/useAddToCart.ts +64 -0
- package/src/hooks/useSales/index.ts +1418 -0
- package/src/hooks/useSales/{queries.js → queries.ts} +256 -166
- package/src/hooks/useSales/types/index.ts +206 -0
- package/src/hooks/useSales/types/use-sales.types.ts +8 -0
- package/src/hooks/useSales/useGetSale.ts +21 -0
- package/src/hooks/useSales/useTotalSales.ts +24 -0
- package/src/hooks/useSaveAvailableProduct/helpers/{index.js → index.ts} +4 -4
- package/src/hooks/useSaveAvailableProduct/{index.js → index.ts} +7 -1
- package/src/hooks/useSaveLocation/index.ts +17 -0
- package/src/hooks/useSaveLocation/queries.ts +19 -0
- package/src/hooks/useSchedule/{index.jsx → index.ts} +16 -4
- package/src/hooks/useSchedule/{index.js → schedule.ts} +22 -15
- package/src/hooks/useScheduleData/{index.js → index.ts} +21 -9
- package/src/hooks/useSetImageProducts/index.ts +59 -0
- package/src/hooks/useSetImageProducts/queries.ts +18 -0
- package/src/hooks/useSetSession/{index.js → index.ts} +16 -17
- package/src/hooks/useSetupSchedule/helpers/index.ts +85 -0
- package/src/hooks/useSetupSchedule/index.ts +284 -0
- package/src/hooks/useStatusOpenStore/helpers/index.ts +124 -0
- package/src/hooks/useStatusOpenStore/{index.js → index.ts} +39 -16
- package/src/hooks/useStatusOrdersClient/{index.js → index.ts} +3 -2
- package/src/hooks/useStatusOrdersClient/{queries.js → queries.ts} +2 -2
- package/src/hooks/useStock/index.ts +1 -0
- package/src/hooks/useStock/useStockUpdatedAllSubscription.ts +40 -0
- package/src/hooks/useStockMovements/helpers/index.ts +16 -0
- package/src/hooks/useStockMovements/index.ts +39 -0
- package/src/hooks/useStore/index.ts +83 -0
- package/src/hooks/useStore/{queries.js → queries.ts} +71 -71
- package/src/hooks/useStoreContacts/{index.js → index.ts} +11 -5
- package/src/hooks/useStoreTable/index.ts +2 -0
- package/src/hooks/useStoreTable/queries.ts +47 -0
- package/src/hooks/useStoreTable/useStoreTableCreate.ts +77 -0
- package/src/hooks/useStoreTable/useStoreTables.ts +15 -0
- package/src/hooks/useSubscriptionValidation/index.ts +112 -0
- package/src/hooks/useTagProducts/index.ts +3 -0
- package/src/hooks/useTagProducts/useDeleteOneTag.ts +106 -0
- package/src/hooks/useTagProducts/useGetAllTags.ts +68 -0
- package/src/hooks/useTagProducts/useRegisterMultipleTags.ts +157 -0
- package/src/hooks/useTheme/index.ts +65 -0
- package/src/hooks/useTimeAgo/{useTimeAgo.js → useTimeAgo.ts} +7 -7
- package/src/hooks/useTokenCards/index.ts +45 -0
- package/src/hooks/useTopProductsMovements/index.ts +27 -0
- package/src/hooks/useTotalAllSales/index.ts +25 -0
- package/src/hooks/useTotalProductsInStock/index.ts +23 -0
- package/src/hooks/useTotalProductsSold/index.ts +23 -0
- package/src/hooks/useTotalProductsSolded/index.ts +20 -0
- package/src/hooks/useUpdateCart/{index.js → index.ts} +3 -2
- package/src/hooks/useUpdateCartCookie/index.ts +60 -0
- package/src/hooks/useUpdateDashboardComponent/index.ts +91 -0
- package/src/hooks/useUpdateExistingOrders/{index.js → index.ts} +5 -11
- package/src/hooks/useUpdateExtProductFoodsSubOptional/index.ts +61 -0
- package/src/hooks/useUpdateModuleOrder/index.ts +37 -0
- package/src/hooks/useUpdateMultipleExtProduct/index.ts +34 -0
- package/src/hooks/useUpdateMultipleExtProduct/queries.ts +33 -0
- package/src/hooks/useUpdateMultipleProducts/index.ts +117 -0
- package/src/hooks/useUpdateMultipleProducts/queries.ts +51 -0
- package/src/hooks/useUploadProducts/helpers/index.ts +1 -0
- package/src/hooks/useUploadProducts/helpers/parseNumber.ts +37 -0
- package/src/hooks/useUploadProducts/helpers/validateProductDataExcel.ts +73 -0
- package/src/hooks/useUploadProducts/index.ts +442 -0
- package/src/hooks/useUpsertGoal/index.ts +68 -0
- package/src/hooks/useUser/{index.js → index.ts} +11 -4
- package/src/hooks/useUser/{queries.js → queries.ts} +9 -4
- package/src/hooks/useWeeklyStockMovement/helpers/index.ts +32 -0
- package/src/hooks/useWeeklyStockMovement/index.ts +52 -0
- package/src/hooks/useWindowSize/{index.js → index.ts} +9 -2
- package/src/index.ts +12 -0
- package/src/security/index.ts +1 -0
- package/src/services/index.ts +1 -0
- package/src/utils/UtilDateRange.ts +56 -0
- package/src/utils/generateCode.ts +222 -0
- package/src/utils/index.ts +2 -0
- package/src/utils/utils.ts +344 -0
- package/tsconfig.eslint.json +17 -0
- package/tsconfig.json +21 -0
- package/tsup.config.ts +24 -0
- package/.eslintrc.js +0 -38
- package/.eslintrc.json +0 -127
- package/next.config.js +0 -126
- package/src/config/client/errors.js +0 -26
- package/src/hooks/getGlobalSession/index.js +0 -49
- package/src/hooks/getSession/index.js +0 -18
- package/src/hooks/handleLogin/index.js +0 -10
- package/src/hooks/index.js +0 -77
- package/src/hooks/useAcumulateDate/index.js +0 -16
- package/src/hooks/useAsideCart/index.js +0 -155
- package/src/hooks/useCategoryInStore/index.js +0 -98
- package/src/hooks/useClients/queries.js +0 -127
- package/src/hooks/useConnection/index.js +0 -22
- package/src/hooks/useCreateProduct/index.js +0 -291
- package/src/hooks/useDevices/index.js +0 -35
- package/src/hooks/useDevices/queries.js +0 -19
- package/src/hooks/useEditOneExtProductFoodOptional/index.js +0 -28
- package/src/hooks/useEditSubProductOptional/index.js +0 -11
- package/src/hooks/useEmployee/index.js +0 -13
- package/src/hooks/useEmployee/queries.js +0 -17
- package/src/hooks/useFavoriteStores/index.js +0 -19
- package/src/hooks/useFavoriteStores/queries.js +0 -47
- package/src/hooks/useFormTools/index.js +0 -100
- package/src/hooks/useFormatDate/index.js +0 -33
- package/src/hooks/useGetStoreCookie/index.js +0 -22
- package/src/hooks/useImagesStore/index.js +0 -183
- package/src/hooks/useLogout/helpers/BroadcastChannel.js +0 -32
- package/src/hooks/useLogout/helpers/apiBaseUrl.js +0 -8
- package/src/hooks/useLogout/helpers/fetchData.js +0 -29
- package/src/hooks/useLogout/helpers/getCsrfToken.js +0 -30
- package/src/hooks/useLogout/helpers/index.js +0 -54
- package/src/hooks/useLogout/helpers/logger.js +0 -72
- package/src/hooks/useLogout/helpers/parseUrl.js +0 -36
- package/src/hooks/useLogout/index.js +0 -46
- package/src/hooks/useManageQueryParams/index.js +0 -37
- package/src/hooks/useMobile/index.js +0 -39
- package/src/hooks/useOrders/queries.js +0 -328
- package/src/hooks/useProductsFood/index.js +0 -234
- package/src/hooks/useProductsFood/useEditProduct.js +0 -8
- package/src/hooks/useProductsFood/usetagsProducts.js +0 -94
- package/src/hooks/useRestaurant/index.js +0 -19
- package/src/hooks/useSales/helpers/index.js +0 -8
- package/src/hooks/useSales/index.js +0 -1102
- package/src/hooks/useSales/useGetSale.js +0 -13
- package/src/hooks/useSales/useTotalSales.js +0 -24
- package/src/hooks/useStore/index.js +0 -70
- package/src/hooks/useUpdateExtProductFoodsSubOptional/index.js +0 -38
- package/src/index.jsx +0 -4
- package/src/utils/index.js +0 -141
- /package/src/config/client/{index.js → index.ts} +0 -0
- /package/src/hooks/getCategoriesWithProduct/helpers/{index.js → index.ts} +0 -0
- /package/src/hooks/useAnimationFrame/{index.js → index.ts} +0 -0
- /package/src/hooks/useAsideCart/helpers/{index.js → index.ts} +0 -0
- /package/src/hooks/useAsideCart/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useCart/{index.js → index.ts} +0 -0
- /package/src/hooks/useDeleteSubProductOptional/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useDessert/helpers/{index.js → index.ts} +0 -0
- /package/src/hooks/useDynamicAuth/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useEditSubProductOptional/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useFetchJson/{index.js → index.ts} +0 -0
- /package/src/hooks/useFormatNumberPhone/{index.js → index.ts} +0 -0
- /package/src/hooks/useGenerateNumberArray/{index.js → index.ts} +0 -0
- /package/src/hooks/useGetFoodRecomended/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useGetMinPrice/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useGetOneStoreRating/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useGoogleLogin/{loadScript.js → loadScript.ts} +0 -0
- /package/src/hooks/useGoogleLogin/{removeScript.js → removeScript.ts} +0 -0
- /package/src/hooks/useInnerHtml/{index.js → index.ts} +0 -0
- /package/src/hooks/useKeypress/{index.js → index.ts} +0 -0
- /package/src/hooks/useLocationNavigate/{index.js → index.ts} +0 -0
- /package/src/{security/index.js → hooks/useManageNewOrder/helpers/mock.ts} +0 -0
- /package/src/hooks/useMutateHeight/{index.js → index.ts} +0 -0
- /package/src/hooks/useOrderClient/{index.js → index.ts} +0 -0
- /package/src/hooks/useProviders/{index.js → index.ts} +0 -0
- /package/src/hooks/useProviders/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useProvidersStore/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useReactToPrint/{index.js → index.txt} +0 -0
- /package/src/hooks/useSaveAvailableProduct/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useSchedule/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useScroll/{index.js → index.ts} +0 -0
- /package/src/hooks/useScrollRotate/{index.js → index.ts} +0 -0
- /package/src/hooks/useSetState/{index.js → index.ts} +0 -0
- /package/src/hooks/useStatusOrdersClient/helpers/{index.js → index.ts} +0 -0
- /package/src/hooks/useStoreCalendar/{index.js → index.ts} +0 -0
- /package/src/hooks/useStoreContacts/{queries.js → queries.ts} +0 -0
- /package/src/mock/dessert/{index.js → index.ts} +0 -0
- /package/src/mock/{index.js → index.ts} +0 -0
|
@@ -1,39 +1,39 @@
|
|
|
1
1
|
import React, {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
useEffect,
|
|
3
|
+
useRef,
|
|
4
|
+
useState
|
|
5
5
|
} from 'react'
|
|
6
6
|
|
|
7
7
|
export const useFetchMoreInteractions = ({
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
render,
|
|
9
|
+
fetchMore = true,
|
|
10
|
+
callback = () => {}
|
|
11
11
|
}) => {
|
|
12
|
-
|
|
12
|
+
const loadingRef = useRef()
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
const useOnScreen = ref => {
|
|
15
|
+
const [isIntersecting, setIsIntersecting] = useState(false)
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
const observer = new IntersectionObserver(
|
|
18
|
+
([entry]) => {return setIsIntersecting(entry.isIntersecting)}
|
|
19
|
+
)
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
if (ref.current) observer.observe(ref.current)
|
|
23
|
+
// Remove the observer as soon as the component is unmounted
|
|
24
|
+
return () => { observer.disconnect() }
|
|
25
|
+
}, [ref, observer])
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
return isIntersecting
|
|
28
|
+
}
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
const isVisible = useOnScreen(loadingRef)
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
if (isVisible && fetchMore) callback()
|
|
34
|
+
}, [isVisible, callback, fetchMore])
|
|
35
35
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
return <div ref={loadingRef}>
|
|
37
|
+
{isVisible && fetchMore ? render || <div style={{ background: 'red' }} >Loading...{isVisible && 'lol'}</div> : <></>}
|
|
38
|
+
</div>
|
|
39
39
|
}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
// useFilterConfigs.ts
|
|
2
|
+
import { gql, useQuery } from '@apollo/client'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* GraphQL query: expects the backend to return a JSON (or custom scalar) containing filterTabs
|
|
6
|
+
*/
|
|
7
|
+
const GET_FILTER_CONFIGS = gql`
|
|
8
|
+
query GetFilterConfigs($idStore: String) {
|
|
9
|
+
filterConfigs(idStore: $idStore) {
|
|
10
|
+
id
|
|
11
|
+
idStore
|
|
12
|
+
filterTabs
|
|
13
|
+
active
|
|
14
|
+
priority
|
|
15
|
+
createdAt
|
|
16
|
+
updatedAt
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
`
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Type definitions matching DB/json structure
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* @typedef {Object} FilterValue
|
|
27
|
+
* @property {string} [id]
|
|
28
|
+
* @property {string} description
|
|
29
|
+
* @property {number|string|null} [value]
|
|
30
|
+
* @property {string|null} [imageUrn]
|
|
31
|
+
*/
|
|
32
|
+
export type FilterValue = {
|
|
33
|
+
id?: string
|
|
34
|
+
description: string
|
|
35
|
+
value?: number | string | null
|
|
36
|
+
imageUrn?: string | null
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* @typedef {Object} FilterGroup
|
|
41
|
+
* @property {string} id
|
|
42
|
+
* @property {string} description
|
|
43
|
+
* @property {string} displayType
|
|
44
|
+
* @property {FilterValue[]} values
|
|
45
|
+
*/
|
|
46
|
+
export type FilterGroup = {
|
|
47
|
+
id: string
|
|
48
|
+
description: string
|
|
49
|
+
displayType: string
|
|
50
|
+
values: FilterValue[]
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* @typedef {Object} FilterTab
|
|
55
|
+
* @property {string} id
|
|
56
|
+
* @property {string} name
|
|
57
|
+
* @property {FilterGroup[]} filterGroups
|
|
58
|
+
*/
|
|
59
|
+
export type FilterTab = {
|
|
60
|
+
id: string
|
|
61
|
+
name: string
|
|
62
|
+
filterGroups: FilterGroup[]
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* @typedef {Object} FilterConfigRecord
|
|
67
|
+
* @property {string} id
|
|
68
|
+
* @property {string|null} idStore
|
|
69
|
+
* @property {FilterTab[]} filterTabs
|
|
70
|
+
* @property {boolean} active
|
|
71
|
+
* @property {number} priority
|
|
72
|
+
*/
|
|
73
|
+
export type FilterConfigRecord = {
|
|
74
|
+
id: string
|
|
75
|
+
idStore: string | null
|
|
76
|
+
filterTabs: FilterTab[]
|
|
77
|
+
active: boolean
|
|
78
|
+
priority: number
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Runtime guard to ensure shape is roughly correct
|
|
83
|
+
* @param anyData any
|
|
84
|
+
* @returns boolean
|
|
85
|
+
*/
|
|
86
|
+
const isFilterTabs = (anyData: any): any is FilterTab[] => {
|
|
87
|
+
if (!Array.isArray(anyData)) return false
|
|
88
|
+
for (const tab of anyData) {
|
|
89
|
+
if (typeof tab?.id !== 'string' || typeof tab?.name !== 'string') return false
|
|
90
|
+
if (!Array.isArray(tab.filterGroups)) return false
|
|
91
|
+
for (const g of tab.filterGroups) {
|
|
92
|
+
if (typeof g?.id !== 'string') return false
|
|
93
|
+
if (!Array.isArray(g.values)) return false
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return true
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Hook options
|
|
101
|
+
*/
|
|
102
|
+
export type UseFilterConfigsOptions = {
|
|
103
|
+
idStore?: string | null
|
|
104
|
+
pollIntervalMs?: number
|
|
105
|
+
skip?: boolean
|
|
106
|
+
onError?: (err: Error) => void
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Hook return
|
|
111
|
+
*/
|
|
112
|
+
export type UseFilterConfigsResult = {
|
|
113
|
+
data: FilterTab[]
|
|
114
|
+
rawRecords: FilterConfigRecord[] | null
|
|
115
|
+
loading: boolean
|
|
116
|
+
error: Error | null
|
|
117
|
+
refetch: () => Promise<void>
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Custom hook to fetch filter configs from GraphQL and expose typed, validated tabs.
|
|
122
|
+
* - Returns empty array when data is invalid (defensive).
|
|
123
|
+
* - Accepts idStore and poll interval as parameters for flexibility.
|
|
124
|
+
*
|
|
125
|
+
* @param {UseFilterConfigsOptions} options
|
|
126
|
+
* @returns {UseFilterConfigsResult}
|
|
127
|
+
*/
|
|
128
|
+
export const useFilterConfigs = ({
|
|
129
|
+
skip = false,
|
|
130
|
+
onError
|
|
131
|
+
}: UseFilterConfigsOptions = {}): UseFilterConfigsResult => {
|
|
132
|
+
const { data, loading, error, refetch } = useQuery(
|
|
133
|
+
GET_FILTER_CONFIGS,
|
|
134
|
+
{
|
|
135
|
+
skip
|
|
136
|
+
}
|
|
137
|
+
)
|
|
138
|
+
|
|
139
|
+
if (error && onError) onError(error as Error)
|
|
140
|
+
|
|
141
|
+
const rawRecords =
|
|
142
|
+
Array.isArray((data as any)?.filterConfigs) ? (data as any).filterConfigs as FilterConfigRecord[] : null
|
|
143
|
+
|
|
144
|
+
let tabs: FilterTab[] = []
|
|
145
|
+
|
|
146
|
+
if (rawRecords && rawRecords.length > 0) {
|
|
147
|
+
// pick the active config with highest priority (lowest number)
|
|
148
|
+
const active = rawRecords
|
|
149
|
+
.filter(r => {return r.active !== false})
|
|
150
|
+
.sort((a, b) => {return (a.priority ?? 9999) - (b.priority ?? 9999)})[0]
|
|
151
|
+
|
|
152
|
+
const candidate = active ?? rawRecords[0]
|
|
153
|
+
|
|
154
|
+
if (candidate && isFilterTabs(candidate.filterTabs)) {
|
|
155
|
+
tabs = candidate.filterTabs
|
|
156
|
+
} else {
|
|
157
|
+
// defensive logging — don't throw to avoid crashing UI, return empty array
|
|
158
|
+
|
|
159
|
+
console.warn('useFilterConfigs: invalid filterTabs structure', candidate?.filterTabs)
|
|
160
|
+
tabs = []
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
return {
|
|
165
|
+
data: [{ 'id': 'BASIC', 'name': 'Básicos', 'filterGroups': [{ 'id': 'DELIVERY_MODE', 'description': 'Modo de entrega', 'displayType': 'WORD_CLOUD_SINGLE', 'values': [{ 'id': 'DELIVERY', 'description': 'Entrega' }, { 'id': 'TAKEOUT', 'description': 'Pra retirar' }] }, { 'id': 'SORTING', 'description': 'Ordenar por', 'displayType': 'GRID', 'values': [{ 'id': 'DEFAULT', 'description': 'Ordenação Padrão' }, { 'id': 'PRICE_RANGE:ASC', 'description': 'Preço' }, { 'id': 'USER_RATING:DESC', 'description': 'Avaliação' }, { 'id': 'DELIVERY_TIME:ASC', 'description': 'Tempo de Entrega' }, { 'id': 'DELIVERY_FEE:ASC', 'description': 'Taxa de Entrega' }, { 'id': 'DISTANCE:ASC', 'description': 'Menor distância' }] }, { 'id': 'DISTANCE', 'description': 'Distância', 'displayType': 'SLIDER', 'values': [{ 'id': 'MIN_VALUE', 'description': '1' }, { 'id': 'MAX_VALUE', 'description': '10' }] }, { 'id': 'DELIVERY_FEE', 'description': 'Taxa de entrega', 'displayType': 'WORD_CLOUD_SINGLE', 'values': [{ 'id': 'FREE', 'description': 'Grátis', 'value': 0 }, { 'id': 'MAX_FIVE', 'description': 'até R$ 5,00', 'value': 5 }, { 'id': 'MAX_TEN', 'description': 'até R$ 10,00', 'value': 10 }] }, { 'id': 'TAGS', 'description': 'Filtros especiais', 'displayType': 'CHECKBOX', 'values': [{ 'id': 'SUPER_RESTAURANT', 'imageUrn': 'SUPER_RESTAURANT.png', 'description': 'Super-Restaurantes' }, { 'id': 'SUPPORTS_ORDER_TRACKING', 'imageUrn': 'SUPPORTS_ORDER_TRACKING.png', 'description': 'Entrega Parceira' }, { 'id': 'SUPPORTS_ANY_TRACKING', 'imageUrn': 'SUPPORTS_ANY_TRACKING.png', 'description': 'Entrega Rastreável' }, { 'id': 'SUPPORTS_SCHEDULING', 'imageUrn': 'SUPPORTS_SCHEDULING.png', 'description': 'Aceita agendamento' }] }] }, { 'id': 'CATEGORY', 'name': 'Categorias', 'filterGroups': [{ 'id': 'MERCHANT_TYPE', 'description': 'Tipo de loja', 'displayType': 'GRID', 'values': [{ 'id': 'ALL', 'description': 'Todas as lojas' }, { 'id': 'RESTAURANT', 'description': 'Restaurante' }, { 'id': 'MARKET', 'description': 'Mercado' }] }, { 'id': 'AVAILABLE_CATEGORIES', 'description': 'Categorias', 'displayType': 'WORD_CLOUD', 'values': [{ 'description': 'Africana', 'id': 'AF1' }, { 'description': 'Alemã', 'id': 'ALE' }, { 'description': 'Árabe', 'id': 'ARA' }, { 'description': 'Argentina', 'id': 'AR1' }, { 'description': 'Asiática', 'id': 'ASI' }, { 'description': 'Açaí', 'id': 'AC1' }, { 'description': 'Baiana', 'id': 'BA1' }, { 'description': 'Bebidas', 'id': 'BEB' }, { 'description': 'Brasileira', 'id': 'BRA' }, { 'description': 'Cafeteria', 'id': 'CA1' }, { 'description': 'Carnes', 'id': 'CAR' }, { 'description': 'Casa de Sucos', 'id': 'CS1' }, { 'description': 'Chinesa', 'id': 'CHI' }, { 'description': 'Colombiana', 'id': 'CO1' }, { 'description': 'Congelados Fit', 'id': 'CF1' }, { 'description': 'Congelados', 'id': 'CN1' }, { 'description': 'Contemporânea', 'id': 'CNT' }, { 'description': 'Conveniência', 'id': 'CV1' }, { 'description': 'Coreana', 'id': 'CR1' }, { 'description': 'Cozinha rápida', 'id': 'CRP' }, { 'description': 'Crepe', 'id': 'CP1' }, { 'description': 'Doces & Bolos', 'id': 'DCE' }, { 'description': 'Espanhola', 'id': 'ES1' }, { 'description': 'Francesa', 'id': 'FRA' }, { 'description': 'Frangos', 'id': 'FR1' }, { 'description': 'Frutos do mar', 'id': 'FRU' }, { 'description': 'Gaúcha', 'id': 'GA1' }, { 'description': 'Grega', 'id': 'GRC' }, { 'description': 'Hambúrguer', 'id': 'BUR' }, { 'description': 'Indiana', 'id': 'IND' }, { 'description': 'Italiana', 'id': 'ITA' }, { 'description': 'Japonesa', 'id': 'JAP' }, { 'description': 'Lanches', 'id': 'LCH' }, { 'description': 'Marmita', 'id': 'MA1' }, { 'description': 'Marroquina', 'id': 'MAR' }, { 'description': 'Mediterrânea', 'id': 'MED' }, { 'description': 'Mercado 🛒', 'id': 'MER' }, { 'description': 'Mexicana', 'id': 'MEX' }, { 'description': 'Mineira', 'id': 'MI1' }, { 'description': 'Nordestina', 'id': 'NO1' }, { 'description': 'Padaria', 'id': 'PA1' }, { 'description': 'Panqueca', 'id': 'PQC' }, { 'description': 'Paranaense', 'id': 'PR1' }, { 'description': 'Pastel', 'id': 'PAS' }, { 'description': 'Peixes', 'id': 'PX1' }, { 'description': 'Peruana', 'id': 'PER' }, { 'description': 'Pizza', 'id': 'PIZ' }, { 'description': 'Portuguesa', 'id': 'POR' }, { 'description': 'Presentes', 'id': 'PRE' }, { 'description': 'Salgados', 'id': 'SAG' }, { 'description': 'Saudável', 'id': 'SAU' }, { 'description': 'Sopas & Caldos', 'id': 'SP1' }, { 'description': 'Sorvetes', 'id': 'SOR' }, { 'description': 'Tailandesa', 'id': 'THA' }, { 'description': 'Tapioca', 'id': 'TA1' }, { 'description': 'Típica do Norte', 'id': 'TN1' }, { 'description': 'Variada', 'id': 'VAR' }, { 'description': 'Vegana', 'id': 'VE1' }, { 'description': 'Vegetariana', 'id': 'VEG' }, { 'description': 'Xis', 'id': 'XI1' }, { 'description': 'Yakisoba', 'id': 'YA1' }] }] }, { 'id': 'PAYMENT', 'name': 'Pagamentos', 'filterGroups': [{ 'id': 'MEDIUM_PRICE', 'description': 'Preço médio', 'displayType': 'WORD_CLOUD_SINGLE', 'values': [{ 'id': 'CHEAPEST', 'description': '$' }, { 'id': 'CHEAP', 'description': '$$' }, { 'id': 'MODERATE', 'description': '$$$' }, { 'id': 'EXPENSIVE', 'description': '$$$$' }, { 'id': 'MOST_EXPENSIVE', 'description': '$$$$$' }] }, { 'id': 'ONLINE_PAYMENTS', 'description': 'Pagamento pelo app', 'displayType': 'WORD_CLOUD', 'values': [{ 'id': 'PIX', 'description': 'pix' }, { 'id': 'ELO', 'description': 'Elo' }, { 'id': 'MC', 'description': 'Mastercard' }, { 'id': 'MCMA', 'description': 'Mastercard Maestro' }, { 'id': 'VIS', 'description': 'Visa' }, { 'id': 'VISE', 'description': 'Visa Electron' }, { 'id': 'AM', 'description': 'Amex' }, { 'id': 'DNR', 'description': 'Diners' }] }, { 'id': 'ONLINE_PAYMENTS_VR', 'description': 'Vale-refeição/alimentação pelo app', 'displayType': 'WORD_CLOUD', 'values': [{ 'id': 'IMV', 'description': 'iFood Refeição' }, { 'id': 'VRO', 'description': 'VR Refeição' }, { 'id': 'SRP', 'description': 'Sodexo Refeição' }, { 'id': 'ALR', 'description': 'Alelo Refeição' }, { 'id': 'TRO', 'description': 'Ticket' }, { 'id': 'BENRON', 'description': 'Ben Refeição' }] }, { 'id': 'OFFLINE_PAYMENTS', 'description': 'Pagamento na entrega', 'displayType': 'WORD_CLOUD', 'values': [{ 'id': 'DIN', 'description': 'Dinheiro' }, { 'id': 'RSODEX', 'description': 'Sodexo' }, { 'id': 'VVREST', 'description': 'Vale Alelo Refeição' }, { 'id': 'VR_SMA', 'description': 'VR Refeição' }, { 'id': 'BENVVR', 'description': 'Ben Refeição' }, { 'id': 'TRE', 'description': 'Ticket' }, { 'id': 'RDREST', 'description': 'Mastercard - Crédito' }, { 'id': 'MEREST', 'description': 'Mastercard' }, { 'id': 'VSREST', 'description': 'Visa - Crédito' }, { 'id': 'VIREST', 'description': 'Visa' }, { 'id': 'REC', 'description': 'Elo - Crédito' }, { 'id': 'RED', 'description': 'Elo' }, { 'id': 'RHIP', 'description': 'Hipercard' }, { 'id': 'TVER', 'description': 'Verocard' }, { 'id': 'RAM', 'description': 'American Express' }, { 'id': 'CPRCAR', 'description': 'Cooper Card' }, { 'id': 'GRNCAR', 'description': 'Green Card' }, { 'id': 'GRNCPL', 'description': 'Green Card (papel)' }, { 'id': 'RSELE', 'description': 'Refeisul' }, { 'id': 'VALECA', 'description': 'Vale Card' }, { 'id': 'BANRC', 'description': 'Banricompras - Crédito' }, { 'id': 'BANRD', 'description': 'Banricompras' }, { 'id': 'DNREST', 'description': 'Diners' }, { 'id': 'GOODC', 'description': 'Goodcard' }, { 'id': 'VERDEC', 'description': 'Verdecard' }, { 'id': 'CHE', 'description': 'Cheque' }] }] }],
|
|
166
|
+
rawRecords,
|
|
167
|
+
loading,
|
|
168
|
+
error: error ? (error as Error) : null,
|
|
169
|
+
refetch: async () => {
|
|
170
|
+
await refetch()
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
import md5 from 'md5'
|
|
1
|
+
// import md5 from 'md5'
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
*
|
|
5
|
+
*/
|
|
3
6
|
async function getCPUInfo () {
|
|
4
7
|
if (navigator.hardwareConcurrency) {
|
|
5
8
|
try {
|
|
@@ -25,6 +28,9 @@ async function getCPUInfo () {
|
|
|
25
28
|
}
|
|
26
29
|
}
|
|
27
30
|
|
|
31
|
+
/**
|
|
32
|
+
*
|
|
33
|
+
*/
|
|
28
34
|
async function generateFingerprint () {
|
|
29
35
|
const canvas = document.createElement('canvas')
|
|
30
36
|
const audioContext = new (window.AudioContext || window.webkitAudioContext)()
|
|
@@ -50,7 +56,7 @@ async function generateFingerprint () {
|
|
|
50
56
|
language,
|
|
51
57
|
colorDepth,
|
|
52
58
|
availableScreenHeight,
|
|
53
|
-
plugins: Array.from(navigator.plugins).map(plugin => plugin.name).join(','),
|
|
59
|
+
plugins: Array.from(navigator.plugins).map(plugin => {return plugin.name}).join(','),
|
|
54
60
|
timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,
|
|
55
61
|
hardwareConcurrency: cpuInfo.logicalCores || 'unknown',
|
|
56
62
|
platformVersion: navigator.platformVersion || 'unknown'
|
|
@@ -68,12 +74,15 @@ async function generateFingerprint () {
|
|
|
68
74
|
}
|
|
69
75
|
|
|
70
76
|
const fingerprint = JSON.stringify(fingerprintData)
|
|
71
|
-
const uniqueID = md5(fingerprint)
|
|
72
|
-
|
|
73
|
-
return uniqueID
|
|
77
|
+
// const uniqueID = md5(fingerprint)
|
|
78
|
+
return fingerprint
|
|
74
79
|
}
|
|
75
80
|
|
|
76
81
|
// Función para generar huella digital del audio
|
|
82
|
+
/**
|
|
83
|
+
*
|
|
84
|
+
* @param audioContext
|
|
85
|
+
*/
|
|
77
86
|
async function generateAudioFingerprint (audioContext) {
|
|
78
87
|
if (audioContext) {
|
|
79
88
|
try {
|
|
@@ -95,6 +104,10 @@ async function generateAudioFingerprint (audioContext) {
|
|
|
95
104
|
}
|
|
96
105
|
|
|
97
106
|
// Función para generar huella digital del canvas
|
|
107
|
+
/**
|
|
108
|
+
*
|
|
109
|
+
* @param canvas
|
|
110
|
+
*/
|
|
98
111
|
async function generateCanvasFingerprint (canvas) {
|
|
99
112
|
if (canvas) {
|
|
100
113
|
try {
|
|
@@ -124,6 +137,9 @@ async function generateCanvasFingerprint (canvas) {
|
|
|
124
137
|
return { width: 0, height: 0 }
|
|
125
138
|
}
|
|
126
139
|
|
|
140
|
+
/**
|
|
141
|
+
*
|
|
142
|
+
*/
|
|
127
143
|
async function getWebGLInfo () {
|
|
128
144
|
if ('WebGLRenderingContext' in window) {
|
|
129
145
|
const canvas = document.createElement('canvas')
|
|
@@ -142,6 +158,9 @@ async function getWebGLInfo () {
|
|
|
142
158
|
return 'webgl-info-not-supported'
|
|
143
159
|
}
|
|
144
160
|
|
|
161
|
+
/**
|
|
162
|
+
*
|
|
163
|
+
*/
|
|
145
164
|
function getInstalledFonts () {
|
|
146
165
|
const fonts = []
|
|
147
166
|
|
|
@@ -154,6 +173,9 @@ function getInstalledFonts () {
|
|
|
154
173
|
return fonts.join(',')
|
|
155
174
|
}
|
|
156
175
|
|
|
176
|
+
/**
|
|
177
|
+
*
|
|
178
|
+
*/
|
|
157
179
|
function getTouchscreenInfo () {
|
|
158
180
|
if ('maxTouchPoints' in navigator) {
|
|
159
181
|
const maxTouchPoints = navigator.maxTouchPoints
|
|
@@ -165,8 +187,11 @@ function getTouchscreenInfo () {
|
|
|
165
187
|
return 'touchscreen-info-not-supported'
|
|
166
188
|
}
|
|
167
189
|
|
|
190
|
+
/**
|
|
191
|
+
*
|
|
192
|
+
*/
|
|
168
193
|
export async function fingerprintJs () {
|
|
169
194
|
const fingerprint = await generateFingerprint()
|
|
170
|
-
const uniqueID = md5(fingerprint)
|
|
171
|
-
return
|
|
195
|
+
// const uniqueID = md5(fingerprint)
|
|
196
|
+
return fingerprint
|
|
172
197
|
}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import {
|
|
2
|
+
useCallback,
|
|
3
|
+
useEffect,
|
|
4
|
+
useState
|
|
5
|
+
} from 'react'
|
|
6
|
+
|
|
7
|
+
import { validationSubmitHooks } from '../../utils'
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
interface UseFormToolsProps {
|
|
11
|
+
initialValues?: Record<string, any>;
|
|
12
|
+
sendNotification?: ({
|
|
13
|
+
title,
|
|
14
|
+
description,
|
|
15
|
+
backgroundColor
|
|
16
|
+
}: {
|
|
17
|
+
title?: string;
|
|
18
|
+
description?: string;
|
|
19
|
+
backgroundColor?: string;
|
|
20
|
+
}) => void;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* @param root0
|
|
25
|
+
* @param root0.initialValues
|
|
26
|
+
* @param root0.sendNotification
|
|
27
|
+
* @version 0.0.1
|
|
28
|
+
* @description Hook con herramientas de validación y eventos de cambio
|
|
29
|
+
* @return {Array} devuelve la función onChange a ejecutar y el estado de error de cada input
|
|
30
|
+
*/
|
|
31
|
+
export const useFormTools = ({
|
|
32
|
+
initialValues = {},
|
|
33
|
+
sendNotification = ({
|
|
34
|
+
title = '',
|
|
35
|
+
description = '',
|
|
36
|
+
backgroundColor = ''
|
|
37
|
+
}) => {
|
|
38
|
+
console.log({ title, description, backgroundColor })
|
|
39
|
+
}
|
|
40
|
+
}: UseFormToolsProps = {}) => {
|
|
41
|
+
const [dataForm, setDataForm] = useState<Record<string, any>>({ ...initialValues })
|
|
42
|
+
const [errorForm, setErrorForm] = useState<Record<string, boolean>>({})
|
|
43
|
+
const [errorSubmit, setErrorSubmit] = useState(false)
|
|
44
|
+
const [calledSubmit, setCalledSubmit] = useState(false)
|
|
45
|
+
// Handle Change
|
|
46
|
+
const handleChange = useCallback((e: React.ChangeEvent<HTMLInputElement>, error: boolean) => {
|
|
47
|
+
setDataForm({ ...dataForm, [e.target.name]: e.target.value })
|
|
48
|
+
setErrorForm({ ...errorForm, [e.target.name]: error })
|
|
49
|
+
}, [setDataForm, dataForm, errorForm, setErrorForm])
|
|
50
|
+
|
|
51
|
+
// Forzar datos desde una ventana externa
|
|
52
|
+
const handleForcedData = useCallback((data: Record<string, any>) => {
|
|
53
|
+
setDataForm(data)
|
|
54
|
+
}, [setDataForm])
|
|
55
|
+
|
|
56
|
+
// Forzar datos de error desde una ventana externa
|
|
57
|
+
const setForcedError = useCallback((errors: Record<string, boolean>) => {
|
|
58
|
+
setErrorForm(errors)
|
|
59
|
+
}, [setErrorForm])
|
|
60
|
+
|
|
61
|
+
// Handle submit, al enviar formulario
|
|
62
|
+
const listErrors = Object.values(errorForm)
|
|
63
|
+
const errors = listErrors.find((error) => {
|
|
64
|
+
return error === true
|
|
65
|
+
})
|
|
66
|
+
|
|
67
|
+
const handleSubmit = ({
|
|
68
|
+
event,
|
|
69
|
+
msgError = '',
|
|
70
|
+
msgSuccess,
|
|
71
|
+
action = () => { return Promise.resolve() },
|
|
72
|
+
actionAfterSuccess = () => { }
|
|
73
|
+
}: {
|
|
74
|
+
event: React.FormEvent<HTMLFormElement>,
|
|
75
|
+
msgError?: string,
|
|
76
|
+
msgSuccess?: string,
|
|
77
|
+
action?: () => Promise<any>,
|
|
78
|
+
actionAfterSuccess?: () => void
|
|
79
|
+
}) => {
|
|
80
|
+
event.preventDefault()
|
|
81
|
+
setCalledSubmit(true)
|
|
82
|
+
let errSub = false
|
|
83
|
+
|
|
84
|
+
// Valida los errores locales
|
|
85
|
+
for (const x in errorForm) {
|
|
86
|
+
if (errorForm[x]) errSub = true
|
|
87
|
+
}
|
|
88
|
+
if (errSub) {
|
|
89
|
+
sendNotification({
|
|
90
|
+
description: 'Completa los campos requeridos',
|
|
91
|
+
title: 'Error',
|
|
92
|
+
backgroundColor: 'error'
|
|
93
|
+
})
|
|
94
|
+
}
|
|
95
|
+
if (errors) {
|
|
96
|
+
setErrorSubmit(true)
|
|
97
|
+
return setForcedError({ ...errorForm })
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
if (errSub) return setErrorSubmit(errSub)
|
|
101
|
+
|
|
102
|
+
// Valida los errores desde el evento
|
|
103
|
+
const errores = validationSubmitHooks(event.currentTarget.elements)
|
|
104
|
+
setErrorForm(errores)
|
|
105
|
+
for (const x in errores) {
|
|
106
|
+
// @ts-ignore
|
|
107
|
+
if (errores[x]) errSub = true
|
|
108
|
+
}
|
|
109
|
+
if (errSub) return setErrorSubmit(errSub)
|
|
110
|
+
|
|
111
|
+
// Ejecuta la accion si es válido
|
|
112
|
+
if (!errSub && typeof action === 'function') {
|
|
113
|
+
const result = action()
|
|
114
|
+
if (result && typeof result.then === 'function') {
|
|
115
|
+
result.then((res) => {
|
|
116
|
+
if (res) {
|
|
117
|
+
sendNotification({
|
|
118
|
+
title: msgSuccess ?? 'Operación exitosa',
|
|
119
|
+
description: 'Operación exitosa',
|
|
120
|
+
backgroundColor: 'success'
|
|
121
|
+
})
|
|
122
|
+
if (actionAfterSuccess) actionAfterSuccess()
|
|
123
|
+
}
|
|
124
|
+
}).catch((e) => {
|
|
125
|
+
sendNotification({
|
|
126
|
+
title: msgError || e?.message || 'Ha ocurrido un error',
|
|
127
|
+
backgroundColor: 'error'
|
|
128
|
+
})
|
|
129
|
+
})
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
setErrorSubmit(errSub)
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
useEffect(() => { return setCalledSubmit(false) }, [calledSubmit])
|
|
137
|
+
useEffect(() => {
|
|
138
|
+
return setCalledSubmit(false)
|
|
139
|
+
},
|
|
140
|
+
[])
|
|
141
|
+
|
|
142
|
+
return [handleChange, handleSubmit, handleForcedData, { dataForm, errorForm, errorSubmit, calledSubmit, setForcedError }]
|
|
143
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
interface UseFormatDateProps {
|
|
2
|
+
date?: string | number | Date;
|
|
3
|
+
local?: string;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
export const useFormatDate = ({
|
|
7
|
+
date,
|
|
8
|
+
local = 'ES-CO'
|
|
9
|
+
}: UseFormatDateProps = {}) => {
|
|
10
|
+
const dateToFormat = new Date(date ?? Date.now())
|
|
11
|
+
const fullDate = dateToFormat.toLocaleDateString(local, { year: 'numeric', month: '2-digit', day: '2-digit' })
|
|
12
|
+
const day = fullDate.split('/')[0]
|
|
13
|
+
const month = fullDate.split('/')[1]
|
|
14
|
+
const year = fullDate.split('/')[2]
|
|
15
|
+
const yearMonthDay = dateToFormat.toLocaleDateString('ES-CO')
|
|
16
|
+
const numberDay = dateToFormat.getDay()
|
|
17
|
+
const shortDayName = dateToFormat.toLocaleDateString(local, { weekday: 'short' })
|
|
18
|
+
const longDayName = dateToFormat.toLocaleDateString(local, { weekday: 'long' })
|
|
19
|
+
const hourMinutes12 = dateToFormat.toLocaleTimeString('ES-CO', { hour: '2-digit', minute: '2-digit' })
|
|
20
|
+
const hourMinutes24 = dateToFormat.toLocaleTimeString('ES-CO', { hour: '2-digit', minute: '2-digit', hour12: false })
|
|
21
|
+
const handleHourPmAM = (hour: string) => {
|
|
22
|
+
const hourPmAm = new Date(`1/1/1999 ${hour}`).toLocaleString('en-US', { hour: 'numeric', minute: 'numeric', hour12: true })
|
|
23
|
+
return hour ? hourPmAm : ''
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Formats a date into Colombian time zone and Spanish locale for POS display.
|
|
27
|
+
* Example output: "15 de mayo de 2025 a las 14:23"
|
|
28
|
+
*
|
|
29
|
+
* @param {string | number | Date} dateInput - Date to format (ISO string, timestamp or Date object)
|
|
30
|
+
* @returns {string} - Formatted date string in Colombian time
|
|
31
|
+
*/
|
|
32
|
+
function formatDateInTimeZone (dateInput : string | number | Date): string {
|
|
33
|
+
const timeZone = 'America/Bogota'
|
|
34
|
+
const locale = 'es-CO'
|
|
35
|
+
const options: Intl.DateTimeFormatOptions = {
|
|
36
|
+
timeZone,
|
|
37
|
+
year: 'numeric',
|
|
38
|
+
month: 'long',
|
|
39
|
+
day: '2-digit',
|
|
40
|
+
hour: '2-digit',
|
|
41
|
+
minute: '2-digit',
|
|
42
|
+
hour12: false
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const date = new Date(dateInput)
|
|
46
|
+
const formatted = new Intl.DateTimeFormat(locale, options).format(date)
|
|
47
|
+
|
|
48
|
+
// Cambiar coma por "a las" para mejor legibilidad
|
|
49
|
+
return formatted.replace(',', ' a las')
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Formats a date into YYYY-MM-DD using a given IANA timezone.
|
|
53
|
+
*
|
|
54
|
+
* @param {string | number | Date} inputDate - The date to format.
|
|
55
|
+
* @param {string} timeZone - IANA timezone string (default is "America/Bogota").
|
|
56
|
+
* @returns {string} Formatted date string in YYYY-MM-DD.
|
|
57
|
+
* @throws {Error} If the input date is invalid.
|
|
58
|
+
*/
|
|
59
|
+
const formatToLocalDateYMD = (inputDate: string | number | Date, timeZone = 'America/Bogota') => {
|
|
60
|
+
const date = new Date(inputDate)
|
|
61
|
+
|
|
62
|
+
if (isNaN(date.getTime())) {
|
|
63
|
+
throw new Error('Invalid date input provided to formatToLocalDateYMD')
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
const localDateStr = date.toLocaleString('en-US', { timeZone })
|
|
67
|
+
const localDate = new Date(localDateStr)
|
|
68
|
+
|
|
69
|
+
const year = localDate.getFullYear()
|
|
70
|
+
const month = String(localDate.getMonth() + 1).padStart(2, '0')
|
|
71
|
+
const day = String(localDate.getDate()).padStart(2, '0')
|
|
72
|
+
|
|
73
|
+
return `${year}-${month}-${day}`
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
return {
|
|
77
|
+
day,
|
|
78
|
+
fullDate,
|
|
79
|
+
formatToLocalDateYMD,
|
|
80
|
+
hourMinutes12,
|
|
81
|
+
numberDay,
|
|
82
|
+
yearMonthDay,
|
|
83
|
+
hourMinutes24,
|
|
84
|
+
longDayName,
|
|
85
|
+
shortDayName,
|
|
86
|
+
month,
|
|
87
|
+
year,
|
|
88
|
+
handleHourPmAM,
|
|
89
|
+
formatDateInTimeZone
|
|
90
|
+
}
|
|
91
|
+
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import React, { useState, useRef, useEffect } from 'react'
|
|
2
|
-
import styled from 'styled-components'
|
|
3
2
|
|
|
4
3
|
export const useFullscreenMode = () => {
|
|
5
4
|
const [isFullscreen, setFullscreen] = useState(false)
|
|
@@ -56,10 +55,7 @@ export const useFullscreenMode = () => {
|
|
|
56
55
|
}
|
|
57
56
|
|
|
58
57
|
const ToggleIcon = (
|
|
59
|
-
<
|
|
58
|
+
<button onDoubleClick={() => { return (!isFullscreen ? goFullscreen() : exitFullScreen()) }}>{!isFullscreen ? 'FullScreen' : 'Normal'}</button>
|
|
60
59
|
)
|
|
61
60
|
return [elementRef, ToggleIcon] // Icon, ref
|
|
62
61
|
}
|
|
63
|
-
const Button = styled.button`
|
|
64
|
-
|
|
65
|
-
`
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { useQuery } from '@apollo/client'
|
|
2
|
+
|
|
3
|
+
import { GET_ALL_LOCATIONS } from './queries'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* useGetAllLocationUser
|
|
7
|
+
* @returns {any}
|
|
8
|
+
*/
|
|
9
|
+
export const useGetAllLocationUser = () => {
|
|
10
|
+
const { data, loading } = useQuery(GET_ALL_LOCATIONS)
|
|
11
|
+
|
|
12
|
+
return [data, { loading }]
|
|
13
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { gql } from '@apollo/client'
|
|
2
|
+
|
|
3
|
+
export const GET_ALL_LOCATIONS = gql`
|
|
4
|
+
|
|
5
|
+
query getUserLocations {
|
|
6
|
+
getUserLocations {
|
|
7
|
+
locationId
|
|
8
|
+
# id
|
|
9
|
+
cId
|
|
10
|
+
dId
|
|
11
|
+
ctId
|
|
12
|
+
uLatitud
|
|
13
|
+
uLongitude
|
|
14
|
+
uLocationKnow
|
|
15
|
+
uPiso
|
|
16
|
+
DatCre
|
|
17
|
+
DatMod
|
|
18
|
+
pais {
|
|
19
|
+
cId
|
|
20
|
+
cName
|
|
21
|
+
cCalCod
|
|
22
|
+
cState
|
|
23
|
+
cDatCre
|
|
24
|
+
cDatMod
|
|
25
|
+
}
|
|
26
|
+
city {
|
|
27
|
+
ctId
|
|
28
|
+
dId
|
|
29
|
+
cName
|
|
30
|
+
cState
|
|
31
|
+
cDatCre
|
|
32
|
+
cDatMod
|
|
33
|
+
}
|
|
34
|
+
department {
|
|
35
|
+
dId
|
|
36
|
+
cId
|
|
37
|
+
dName
|
|
38
|
+
dState
|
|
39
|
+
dDatCre
|
|
40
|
+
dDatMod
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
`
|