ソースを参照

Finished feature 695

feature/695
djordjemitrovic00 3年前
コミット
a7646a9f29
40個のファイルの変更1034行の追加630行の削除
  1. 433
    314
      package-lock.json
  2. 2
    0
      package.json
  3. 7
    3
      src/AppRoutes.js
  4. 1
    1
      src/components/Admin/Sidebar/Sidebar.styled.js
  5. 2
    8
      src/components/Cards/ChatCard/ChatCard.js
  6. 6
    2
      src/components/Cards/ChatCard/ChatCard.styled.js
  7. 2
    2
      src/components/Cards/CreateOfferCard/ThirdPart/ThirdPartCreateOffer.styled.js
  8. 1
    1
      src/components/Cards/ProfileCard/BigProfileCard/BigProfileCard.js
  9. 13
    4
      src/components/Cards/ProfileCard/EditProfile/EditProfile.js
  10. 5
    0
      src/components/Cards/ProfileCard/EditProfile/EditProfile.styled.js
  11. 6
    2
      src/components/Cards/ProfileCard/EditProfile/PIBField/PIBField.js
  12. 38
    4
      src/components/ChatColumn/ChatColumn.js
  13. 16
    2
      src/components/ChatColumn/ChatColumn.styled.js
  14. 29
    3
      src/components/DirectChat/MiniChatColumn/MiniChatColumn.js
  15. 17
    2
      src/components/DirectChat/MiniChatColumn/MiniChatColumn.styled.js
  16. 2
    1
      src/components/Header/DrawerContainer/DrawerContainer.js
  17. 1
    1
      src/components/MarketPlace/Header/Header.js
  18. 1
    1
      src/components/MarketPlace/MarketPlace.js
  19. 38
    30
      src/components/Paging/Paging.js
  20. 53
    3
      src/components/Styles/globalStyleComponents.js
  21. 17
    0
      src/enums/sortEnum.js
  22. 16
    3
      src/hooks/useOffers/useOffers.js
  23. 2
    2
      src/layouts/AdminLayout/AdminLayout.js
  24. 3
    3
      src/layouts/ChatGridLayout/ChatGridLayout.styled.js
  25. 2
    3
      src/layouts/ChatLayout/ChatLayout.styled.js
  26. 36
    5
      src/pages/AdminHomePage/AdminUsersPage/AdminUsersPage.js
  27. 14
    1
      src/pages/Chat/Chat.js
  28. 6
    4
      src/pages/Chat/Chat.styled.js
  29. 24
    2
      src/pages/ChatMessages/ChatMessages.js
  30. 4
    11
      src/pages/ChatMessages/ChatMessages.styled.js
  31. 3
    3
      src/pages/RegisterPages/Register/ThirdPart/ThirdPartOfRegistration.js
  32. 2
    35
      src/pages/RegisterPages/Register/ThirdPart/ThirdPartOfRegistration.styled.js
  33. 3
    1
      src/request/chatRequest.js
  34. 2
    2
      src/request/profileRequest.js
  35. 2
    2
      src/socket/socket.js
  36. 2
    2
      src/store/actions/profile/profileActionConstants.js
  37. 9
    2
      src/store/saga/chatSaga.js
  38. 24
    3
      src/store/saga/profileSaga.js
  39. 5
    1
      src/store/selectors/profileSelectors.js
  40. 185
    161
      yarn.lock

+ 433
- 314
package-lock.json
ファイル差分が大きすぎるため省略します
ファイルの表示


+ 2
- 0
package.json ファイルの表示

"react-scripts": "4.0.3", "react-scripts": "4.0.3",
"react-select": "^4.3.1", "react-select": "^4.3.1",
"react-singleton-hook": "^3.4.0", "react-singleton-hook": "^3.4.0",
"react-spring": "^8.0.27",
"react-swipeable": "^7.0.0",
"react-toastify": "^9.0.3", "react-toastify": "^9.0.3",
"redux": "^4.1.0", "redux": "^4.1.0",
"redux-persist": "^6.0.0", "redux-persist": "^6.0.0",

+ 7
- 3
src/AppRoutes.js ファイルの表示

/* eslint-disable */ /* eslint-disable */
import React from "react"; import React from "react";
import { Redirect, Route, Switch } from "react-router-dom";
import { Redirect, Route, Switch, useLocation } from "react-router-dom";


import { import {
LOGIN_PAGE, LOGIN_PAGE,
ADMIN_SUBCATEGORIES_PAGE, ADMIN_SUBCATEGORIES_PAGE,
// POLICY_PRIVACY_PAGE, // POLICY_PRIVACY_PAGE,
} from "./constants/pages"; } from "./constants/pages";
// import SlideRoutes from "react-slide-routes";
import LoginPage from "./pages/LoginPage/LoginPage"; import LoginPage from "./pages/LoginPage/LoginPage";
import AdminLoginPage from "./pages/AdminLoginPage/AdminLoginPage"; import AdminLoginPage from "./pages/AdminLoginPage/AdminLoginPage";
import HomePage from "./pages/HomePage/HomePageMUI"; import HomePage from "./pages/HomePage/HomePageMUI";
// import PrivacyPolicyPage from "./pages/PrivacyPolicy/PrivacyPolicyPage"; // import PrivacyPolicyPage from "./pages/PrivacyPolicy/PrivacyPolicyPage";


const AppRoutes = () => { const AppRoutes = () => {
// const location = useLocation();
return ( return (
<Switch> <Switch>
<Route exact path={BASE_PAGE} component={HomePage} /> <Route exact path={BASE_PAGE} component={HomePage} />
return <HomePage key={props.match.params.id} />; return <HomePage key={props.match.params.id} />;
}} }}
/> />
<PrivateRoute path={CHAT_MESSAGE_PAGE} component={ChatMessagesPage} />
<PrivateRoute path={CHAT_PAGE} component={ChatPage} />
{/* <SlideRoutes location={location}> */}
<PrivateRoute exact path={CHAT_PAGE} component={ChatPage} />
<PrivateRoute path={CHAT_MESSAGE_PAGE} component={ChatMessagesPage} />
{/* </SlideRoutes> */}
<PrivateRoute path={MY_OFFERS_PAGE} component={MyOffers} /> <PrivateRoute path={MY_OFFERS_PAGE} component={MyOffers} />
<Redirect from="*" to={NOT_FOUND_PAGE} /> <Redirect from="*" to={NOT_FOUND_PAGE} />
</Switch> </Switch>

+ 1
- 1
src/components/Admin/Sidebar/Sidebar.styled.js ファイルの表示

@media (max-width: 1536px) { @media (max-width: 1536px) {
width: 25%; width: 25%;
} }
@media (max-width: 600px) {
@media (max-width: 900px) {
display: none; display: none;
} }
`; `;

+ 2
- 8
src/components/Cards/ChatCard/ChatCard.js ファイルの表示

import MobileOfferDetails from "./MobileOfferDetails/MobileOfferDetails"; import MobileOfferDetails from "./MobileOfferDetails/MobileOfferDetails";
import useIsMobile from "../../../hooks/useIsMobile"; import useIsMobile from "../../../hooks/useIsMobile";
import { getImageUrl, variants } from "../../../util/helpers/imageUrlGetter"; import { getImageUrl, variants } from "../../../util/helpers/imageUrlGetter";
import history from "../../../store/utils/history";
import { replaceInRoute } from "../../../util/helpers/routeHelpers";
import { CHAT_MESSAGE_PAGE } from "../../../constants/pages";


// Chat card is shown only on mobile phones (route /messages) // Chat card is shown only on mobile phones (route /messages)
const ChatCard = (props) => { const ChatCard = (props) => {
}, [props.chat]); }, [props.chat]);


const routeToItem = () => { const routeToItem = () => {
history.push(
replaceInRoute(CHAT_MESSAGE_PAGE, {
idChat: chat?.chat?._id,
})
);
props.navigateToChat(chat?.chat?._id);
}; };


return ( return (


ChatCard.propTypes = { ChatCard.propTypes = {
chat: PropTypes.any, chat: PropTypes.any,
navigateToChat: PropTypes.func,
}; };
ChatCard.defaultProps = { ChatCard.defaultProps = {
halfwidth: false, halfwidth: false,

+ 6
- 2
src/components/Cards/ChatCard/ChatCard.styled.js ファイルの表示

box-sizing: border-box; box-sizing: border-box;
margin: 10px 0; margin: 10px 0;
background-color: ${(props) => background-color: ${(props) =>
props.sponsored === "true" ? selectedTheme.colors.backgroundSponsoredColor : "white"};
props.sponsored === "true"
? selectedTheme.colors.backgroundSponsoredColor
: "white"};
border-radius: 4px; border-radius: 4px;
${(props) => ${(props) =>
props.sponsored === "true" && `border: 1px solid ${selectedTheme.colors.borderSponsoredColor};`}
props.sponsored === "true" &&
`border: 1px solid ${selectedTheme.colors.borderSponsoredColor};`}
padding: 16px; padding: 16px;
max-width: 2000px; max-width: 2000px;
height: 180px; height: 180px;
position: relative; position: relative;
gap: 18px; gap: 18px;

@media (max-width: 550px) { @media (max-width: 550px) {
max-height: 108px; max-height: 108px;
margin: 0; margin: 0;

+ 2
- 2
src/components/Cards/CreateOfferCard/ThirdPart/ThirdPartCreateOffer.styled.js ファイルの表示

import { Box } from "@mui/material"; import { Box } from "@mui/material";
import styled from "styled-components"; import styled from "styled-components";
import { PrimaryButton } from "../../../Buttons/PrimaryButton/PrimaryButton";
import { PrimaryAnimatedButton } from "../../../Styles/globalStyleComponents";
import ItemDetailsCard from "../../ItemDetailsCard/ItemDetailsCard"; import ItemDetailsCard from "../../ItemDetailsCard/ItemDetailsCard";


export const CreateOfferFormContainer = styled(Box)` export const CreateOfferFormContainer = styled(Box)`
export const PreviewCard = styled(ItemDetailsCard)` export const PreviewCard = styled(ItemDetailsCard)`
width: auto; width: auto;
`; `;
export const PublishButton = styled(PrimaryButton)`
export const PublishButton = styled(PrimaryAnimatedButton)`
width: 332px; width: 332px;
margin-top: 16px; margin-top: 16px;
/* position: absolute; /* position: absolute;

+ 1
- 1
src/components/Cards/ProfileCard/BigProfileCard/BigProfileCard.js ファイルの表示

type: "deleteUser", type: "deleteUser",
}); });
}; };
console.log(props.profile);
// console.log(props.profile);
const blockUser = () => { const blockUser = () => {
setDeleteOrEditModal({ setDeleteOrEditModal({
show: true, show: true,

+ 13
- 4
src/components/Cards/ProfileCard/EditProfile/EditProfile.js ファイルの表示

DetailsInfo, DetailsInfo,
ButtonsContainer, ButtonsContainer,
ProfileImagePicker, ProfileImagePicker,
FinishButton,
} from "./EditProfile.styled"; } from "./EditProfile.styled";
import selectedTheme from "../../../../themes"; import selectedTheme from "../../../../themes";
import { useFormik } from "formik"; import { useFormik } from "formik";
ADMIN_USERS_PAGE, ADMIN_USERS_PAGE,
PROFILE_PAGE, PROFILE_PAGE,
} from "../../../../constants/pages"; } from "../../../../constants/pages";
import { selectIsLoadingByActionType } from "../../../../store/selectors/loadingSelectors";
import { PROFILE_EDIT_ADMIN_SCOPE, PROFILE_EDIT_SCOPE } from "../../../../store/actions/profile/profileActionConstants";


const EditProfile = (props) => { const EditProfile = (props) => {
const [profileImage, setProfileImage] = useState(props.profile.image); const [profileImage, setProfileImage] = useState(props.profile.image);
const [showDetails, setShowDetails] = useState(true); const [showDetails, setShowDetails] = useState(true);
const { t } = useTranslation(); const { t } = useTranslation();
const dispatch = useDispatch(); const dispatch = useDispatch();
const isLoadingEdit = useSelector(
selectIsLoadingByActionType(
props.isAdmin ? PROFILE_EDIT_ADMIN_SCOPE : PROFILE_EDIT_SCOPE
)
);
const { isMobile } = useIsMobile(); const { isMobile } = useIsMobile();
const userId = useSelector(selectUserId); const userId = useSelector(selectUserId);
const locations = useSelector((state) => state.locations.locations); const locations = useSelector((state) => state.locations.locations);
if (routeMatches(ADMIN_USERS_PAGE) || routeMatches(ADMIN_HOME_PAGE)) if (routeMatches(ADMIN_USERS_PAGE) || routeMatches(ADMIN_HOME_PAGE))
dispatch(fetchAllProfilesAsAdmin()); dispatch(fetchAllProfilesAsAdmin());
props.reFetchProfile(); props.reFetchProfile();
props.closeModalHandler();
}; };


const handleSubmit = (values) => { const handleSubmit = (values) => {
}) })
); );
} }
props.closeModalHandler();
}; };
const initialValues = useMemo( const initialValues = useMemo(
() => editProfileInitialValues(props?.profile), () => editProfileInitialValues(props?.profile),
{showBasic && ( {showBasic && (
<BasicInfo> <BasicInfo>
<FirmNameField formik={formik} /> <FirmNameField formik={formik} />
<PIBField formik={formik} />
<PIBField formik={formik} isAdmin={props.isAdmin} />
<LocationField formik={formik} /> <LocationField formik={formik} />
</BasicInfo> </BasicInfo>
)} )}
</SaveButton> </SaveButton>
</> </>
)} )}
<SaveButton
<FinishButton
type="submit" type="submit"
variant="contained" variant="contained"
height={isMobile ? "44px" : "48px"} height={isMobile ? "44px" : "48px"}
width={isMobile ? "155px" : "335px"} width={isMobile ? "155px" : "335px"}
buttoncolor={selectedTheme.colors.primaryPurple} buttoncolor={selectedTheme.colors.primaryPurple}
textcolor="white" textcolor="white"
isLoading={isLoadingEdit}
> >
{t("common.save")} {t("common.save")}
</SaveButton>
</FinishButton>
</ButtonsContainer> </ButtonsContainer>
</EditProfileContainer> </EditProfileContainer>
</> </>

+ 5
- 0
src/components/Cards/ProfileCard/EditProfile/EditProfile.styled.js ファイルの表示

import { PrimaryButton } from "../../../Buttons/PrimaryButton/PrimaryButton"; import { PrimaryButton } from "../../../Buttons/PrimaryButton/PrimaryButton";
import { Label } from "../../../CheckBox/Label"; import { Label } from "../../../CheckBox/Label";
import selectedTheme from "../../../../themes"; import selectedTheme from "../../../../themes";
import { PrimaryAnimatedButton } from "../../../Styles/globalStyleComponents";


export const EditProfileContainer = styled(Box)` export const EditProfileContainer = styled(Box)`
background-color: #fff; background-color: #fff;
font-size: 12px; font-size: 12px;
letter-spacing: 1.5px; letter-spacing: 1.5px;
`; `;
export const FinishButton = styled(PrimaryAnimatedButton)`
font-size: 12px;
letter-spacing: 1.5px;
`


export const ButtonsContainer = styled(Box)` export const ButtonsContainer = styled(Box)`
display: flex; display: flex;

+ 6
- 2
src/components/Cards/ProfileCard/EditProfile/PIBField/PIBField.js ファイルの表示

name="firmPIB" name="firmPIB"
type="number" type="number"
value={props.formik.values.firmPIB} value={props.formik.values.firmPIB}
onChange={props.formik.handleChange}
onChange={(event) => {
console.dir(event.target);
props.formik.setFieldValue("firmPIB", event.target.value)
}}
error={props.formik.touched.firmPIB && props.formik.errors.firmPIB} error={props.formik.touched.firmPIB && props.formik.errors.firmPIB}
margin="normal" margin="normal"
fullWidth fullWidth
disabled
disabled={!props.isAdmin}
/> />
</> </>
); );


PIBField.propTypes = { PIBField.propTypes = {
formik: PropTypes.any, formik: PropTypes.any,
isAdmin: PropTypes.bool,
}; };


export default PIBField; export default PIBField;

+ 38
- 4
src/components/ChatColumn/ChatColumn.js ファイルの表示

import React, { useState, useEffect } from "react"; import React, { useState, useEffect } from "react";
import PropTypes from "prop-types";
import ChatCard from "../Cards/ChatCard/ChatCard"; import ChatCard from "../Cards/ChatCard/ChatCard";
import { import {
ChatColumnContainer, ChatColumnContainer,
ChatPagingText,
HeaderBack, HeaderBack,
HeaderSelect, HeaderSelect,
ListContainer, ListContainer,
import { selectIsLoadingByActionType } from "../../store/selectors/loadingSelectors"; import { selectIsLoadingByActionType } from "../../store/selectors/loadingSelectors";
import { CHAT_SCOPE } from "../../store/actions/chat/chatActionConstants"; import { CHAT_SCOPE } from "../../store/actions/chat/chatActionConstants";
import SkeletonChatColumn from "./SkeletonChatColumn/SkeletonChatColumn"; import SkeletonChatColumn from "./SkeletonChatColumn/SkeletonChatColumn";
import Paging from "../Paging/Paging";
import usePaging from "../../hooks/useOffers/usePaging";
import useIsMobile from "../../hooks/useIsMobile";


export const DownArrow = (props) => { export const DownArrow = (props) => {
<IconStyled {...props}> <IconStyled {...props}>
</IconStyled>; </IconStyled>;
}; };


export const ChatColumn = () => {
export const ChatColumn = (props) => {
const dispatch = useDispatch(); const dispatch = useDispatch();
const sorting = useSorting(); const sorting = useSorting();
const { t } = useTranslation(); const { t } = useTranslation();
const { isMobile } = useIsMobile();
const [sortOption, setSortOption] = useState(sortEnum.INITIAL); const [sortOption, setSortOption] = useState(sortEnum.INITIAL);
const chats = useSelector(selectLatestChats); const chats = useSelector(selectLatestChats);
const paging = usePaging();
const isLoadingChats = useSelector(selectIsLoadingByActionType(CHAT_SCOPE)); const isLoadingChats = useSelector(selectIsLoadingByActionType(CHAT_SCOPE));
useEffect(() => { useEffect(() => {
dispatch(fetchChats());
}, []);
dispatch(
fetchChats({
currentPage: paging.currentPage,
})
);
}, [paging.currentPage]);


useEffect(() => { useEffect(() => {
if (!isMobile) {
history.goBack();
return;
}
addMesageListener(({ succeed, data }) => { addMesageListener(({ succeed, data }) => {
if (succeed) { if (succeed) {
dispatch( dispatch(
} }
} }
}; };
const handleChangePage = (newPage) => paging.changePage(newPage);


return ( return (
<> <>
</TitleSortContainer> </TitleSortContainer>
<ListContainer> <ListContainer>
{chats.map((item, index) => ( {chats.map((item, index) => (
<ChatCard key={index} chat={item} />
<ChatCard key={index} chat={item} navigateToChat={props.navigateToChat} />
))} ))}
</ListContainer> </ListContainer>
<Paging
elementsPerPage={6}
customPaging
current={paging.currentPage}
pages={
chats.length === 6 ? paging.currentPage + 1 : paging.currentPage
}
changePage={handleChangePage}
>
<ChatPagingText>
{(paging.currentPage - 1) * 6 + 1}-
{(paging.currentPage - 1) * 6 + chats.length}
</ChatPagingText>
</Paging>
</ChatColumnContainer> </ChatColumnContainer>
)} )}
</> </>
); );
}; };


ChatColumn.propTypes = {
navigateToChat: PropTypes.func,
}

export default ChatColumn; export default ChatColumn;

+ 16
- 2
src/components/ChatColumn/ChatColumn.styled.js ファイルの表示

import { Box } from "@mui/material";
import { Box, Typography } from "@mui/material";
import { Container } from "@mui/system"; import { Container } from "@mui/system";
import styled from "styled-components"; import styled from "styled-components";
import selectedTheme from "../../themes"; import selectedTheme from "../../themes";
import Select from "../Select/Select"; import Select from "../Select/Select";


export const ChatColumnContainer = styled(Container)` export const ChatColumnContainer = styled(Container)`
margin-bottom: 40px;
margin-bottom: 10px;
padding-bottom:60px;
position: relative;
`; `;


export const ListContainer = styled(Box)` export const ListContainer = styled(Box)`
top: -12px; top: -12px;
} }
`; `;
export const ChatPagingText = styled(Typography)`
font-family: ${selectedTheme.fonts.textFont};
color: ${selectedTheme.colors.primaryPurple};
position: relative;
top: 6px;
margin-left: 36px;
margin-right: 36px;
font-style: normal;
font-weight: 700;
font-size: 16px;
line-height: 21px;
`;

+ 29
- 3
src/components/DirectChat/MiniChatColumn/MiniChatColumn.js ファイルの表示

import React, { useEffect, useMemo } from "react"; import React, { useEffect, useMemo } from "react";
import PropTypes from "prop-types"; import PropTypes from "prop-types";
import { MiniChatColumnContainer, MinIChatColumnList } from "./MiniChatColumn.styled";
import {
ChatPagingText,
MiniChatColumnContainer,
MinIChatColumnList,
} from "./MiniChatColumn.styled";
import MiniChatCard from "../../Cards/MiniChatCard/MiniChatCard"; import MiniChatCard from "../../Cards/MiniChatCard/MiniChatCard";
import { useDispatch, useSelector } from "react-redux"; import { useDispatch, useSelector } from "react-redux";
import { import {
import SkeletonMiniChatColumn from "./SkeletonMiniChatColumn/SkeletonMiniChatColumn"; import SkeletonMiniChatColumn from "./SkeletonMiniChatColumn/SkeletonMiniChatColumn";
import { selectIsLoadingByActionType } from "../../../store/selectors/loadingSelectors"; import { selectIsLoadingByActionType } from "../../../store/selectors/loadingSelectors";
import { CHAT_SCOPE } from "../../../store/actions/chat/chatActionConstants"; import { CHAT_SCOPE } from "../../../store/actions/chat/chatActionConstants";
import usePaging from "../../../hooks/useOffers/usePaging";
import Paging from "../../Paging/Paging";


const MiniChatColumn = () => { const MiniChatColumn = () => {
const chats = useSelector(selectLatestChats); const chats = useSelector(selectLatestChats);
const offer = useSelector(selectOffer); const offer = useSelector(selectOffer);
const location = useLocation(); const location = useLocation();
const dispatch = useDispatch(); const dispatch = useDispatch();
const paging = usePaging();
const isLoadingMiniChat = useSelector( const isLoadingMiniChat = useSelector(
selectIsLoadingByActionType(CHAT_SCOPE) selectIsLoadingByActionType(CHAT_SCOPE)
); );
}, [offer, location.state]); }, [offer, location.state]);


useEffect(() => { useEffect(() => {
dispatch(fetchChats());
}, []);
dispatch(
fetchChats({
currentPage: paging.currentPage,
})
);
}, [paging.currentPage]);
const handleChangePage = (newPage) => paging.changePage(newPage);
return ( return (
<> <>
{isLoadingMiniChat || isLoadingMiniChat === undefined ? ( {isLoadingMiniChat || isLoadingMiniChat === undefined ? (
); );
})} })}
</MinIChatColumnList> </MinIChatColumnList>
<Paging
elementsPerPage={6}
customPaging
current={paging.currentPage}
pages={
chats.length === 6 ? paging.currentPage + 1 : paging.currentPage
}
changePage={handleChangePage}
>
<ChatPagingText>
{(paging.currentPage - 1) * 6 + 1}-
{(paging.currentPage - 1) * 6 + chats.length}
</ChatPagingText>
</Paging>
</MiniChatColumnContainer> </MiniChatColumnContainer>
)} )}
</> </>

+ 17
- 2
src/components/DirectChat/MiniChatColumn/MiniChatColumn.styled.js ファイルの表示

import { Box } from "@mui/material";
import { Box, Typography } from "@mui/material";
import styled from "styled-components"; import styled from "styled-components";
import selectedTheme from "../../../themes";


export const MiniChatColumnContainer = styled(Box)` export const MiniChatColumnContainer = styled(Box)`
position: relative;
padding-bottom: 50px;
@media (max-width: 600px) { @media (max-width: 600px) {
display: none; display: none;
} }
`; `;
export const MinIChatColumnList = styled(Box)` export const MinIChatColumnList = styled(Box)`
max-height: calc(100vh - 173px);
/* max-height: calc(100vh - 173px); */
overflow-y: auto; overflow-y: auto;
padding-right: 5px; padding-right: 5px;
&::-webkit-scrollbar { &::-webkit-scrollbar {
scrollbar-width: thin; scrollbar-width: thin;
scrollbar-color: #ddd; scrollbar-color: #ddd;
`; `;
export const ChatPagingText = styled(Typography)`
font-family: ${selectedTheme.fonts.textFont};
color: ${selectedTheme.colors.primaryPurple};
position: relative;
top: 6px;
margin-left: 36px;
margin-right: 36px;
font-style: normal;
font-weight: 700;
font-size: 16px;
line-height: 21px;
`;

+ 2
- 1
src/components/Header/DrawerContainer/DrawerContainer.js ファイルの表示

const DrawerContainer = forwardRef((props, ref) => { const DrawerContainer = forwardRef((props, ref) => {
const [openDrawer, setOpenDrawer] = useState(false); const [openDrawer, setOpenDrawer] = useState(false);
const { isMobile } = useIsMobile(); const { isMobile } = useIsMobile();

console.log("openDrawer", openDrawer)
console.log("isMobile", isMobile)
useImperativeHandle(ref, () => ({ useImperativeHandle(ref, () => ({
handleToggleDrawer, handleToggleDrawer,
})); }));

+ 1
- 1
src/components/MarketPlace/Header/Header.js ファイルの表示



const handleChangeSelect = (event) => { const handleChangeSelect = (event) => {
console.log(sorting); console.log(sorting);
if (!props.users) sorting?.changeSorting(event.target.value);
sorting?.changeSorting(event.target.value);
}; };
const handleClickCategory = () => { const handleClickCategory = () => {
props?.offers?.filters?.locations.clear(); props?.offers?.filters?.locations.clear();

+ 1
- 1
src/components/MarketPlace/MarketPlace.js ファイルの表示

const MarketPlace = (props) => { const MarketPlace = (props) => {
const [isGrid, setIsGrid] = useState(false); const [isGrid, setIsGrid] = useState(false);
const offers = props.offers; const offers = props.offers;
console.log("MARKETPLACE")
return ( return (
<MarketPlaceContainer> <MarketPlaceContainer>
<Header <Header

+ 38
- 30
src/components/Paging/Paging.js ファイルの表示

<ArrowIcon side="left" /> <ArrowIcon side="left" />
</Arrow> </Arrow>


{threeDotsBefore && (
<React.Fragment>
<PageNumber onClick={() => props.changePage(1)}>1</PageNumber>
{props.current - 3 !== 1 && <ThreeDots>...</ThreeDots>}
</React.Fragment>
)}

{/* Pages */}
{pagesAsArray.map((item, index) => {
const pageNum = props.current - 2 + moving++;
if (pageNum > pages) return;
if (pageNum < 1) return;
return (
<PageNumber
current={pageNum === props.current}
key={index}
onClick={() => props.changePage(pageNum)}
>
{pageNum}
</PageNumber>
);
})}

{threeDotsAfter && (
<React.Fragment>
{props.current + 3 !== pages && <ThreeDots>...</ThreeDots>}
<PageNumber onClick={() => props.changePage(pages)}>
{pages}
</PageNumber>
</React.Fragment>
{props.customPaging ? (
props.children
) : (
<>
{threeDotsBefore && (
<React.Fragment>
<PageNumber onClick={() => props.changePage(1)}>1</PageNumber>
{props.current - 3 !== 1 && <ThreeDots>...</ThreeDots>}
</React.Fragment>
)}
{/* Pages */}
{pagesAsArray.map((item, index) => {
const pageNum = props.current - 2 + moving++;
if (pageNum > pages) return;
if (pageNum < 1) return;
return (
<PageNumber
current={pageNum === props.current}
key={index}
onClick={() => props.changePage(pageNum)}
>
{pageNum}
</PageNumber>
);
})}
{threeDotsAfter && (
<React.Fragment>
{props.current + 3 !== pages && <ThreeDots>...</ThreeDots>}
<PageNumber onClick={() => props.changePage(pages)}>
{pages}
</PageNumber>
</React.Fragment>
)}{" "}
</>
)} )}


{/* Right arrow */} {/* Right arrow */}
pages: PropTypes.number, pages: PropTypes.number,
current: PropTypes.number, current: PropTypes.number,
changePage: PropTypes.func, changePage: PropTypes.func,
customPaging: PropTypes.bool,
};
Paging.defaultProps = {
elementsPerPage: 10,
}; };


export default Paging; export default Paging;

+ 53
- 3
src/components/Styles/globalStyleComponents.js ファイルの表示

import { Box } from "@mui/material"; import { Box } from "@mui/material";
import styled, { keyframes } from "styled-components";
import styled, { css, keyframes } from "styled-components";
import selectedTheme from "../../themes"; import selectedTheme from "../../themes";
import { PrimaryButton } from "../Buttons/PrimaryButton/PrimaryButton";


const SkeletonBackgroundAnimation = keyframes` const SkeletonBackgroundAnimation = keyframes`
0% { 0% {
100% { 100% {
background-color: ${selectedTheme.colors.primaryPurple}; background-color: ${selectedTheme.colors.primaryPurple};
} }
`
`;
export const ButtonLoadingEllipseAnimation = keyframes` export const ButtonLoadingEllipseAnimation = keyframes`
0% { 0% {
left: -24px; left: -24px;
100% { 100% {
left: -48px; left: -48px;
} }
`
`;


export const BackgroundTransition = styled(Box)` export const BackgroundTransition = styled(Box)`
border-radius: 4px; border-radius: 4px;
border-radius: 4px; border-radius: 4px;
animation: ${SkeletonItemAnimation} 1.6s infinite; animation: ${SkeletonItemAnimation} 1.6s infinite;
`; `;
export const transitionOnLoadFromLeft = keyframes`
0% {
transform: translateX(-100%);
}
100% {
transform: translateX(0);
}
`;
export const transitionOnLoadFromRight = keyframes`
0% {
transform: translateX(100%);
}
100% {
transform: translateX(0);
}
`;
export const PrimaryAnimatedButton = styled(PrimaryButton)`
${(props) =>
props.isLoading &&
css`
cursor: default;
`}
& button {
position: relative;
/* background-color: green !important; */
animation: ${(props) =>
props.isLoading
? css`
${ButtonLoadingAnimation} 2.2s infinite;
`
: ""};
/* animation: ${ButtonLoadingAnimation} 2s infinite; */
}
${(props) =>
props.isLoading &&
css`
& button::after {
content: "";
width: 47px;
height: 96px;
background-color: green;
position: absolute;
top: -24px;
background-color: ${selectedTheme.colors.borderSponsoredColor};
filter: blur(45px);
animation: ${ButtonLoadingEllipseAnimation} 2.2s infinite;
}
`}
`;

+ 17
- 0
src/enums/sortEnum.js ファイルの表示

mainText: "Najstarije dodate", mainText: "Najstarije dodate",
queryString: "oldest" queryString: "oldest"
} }
}
export const sortUsersEnum = {
INITIAL: {
value: 0,
mainText: "Sortiraj po",
queryString: ""
},
NEW: {
value: 1,
mainText: "Najskorije registrovan",
queryString: "newest"
},
OLD: {
value: 2,
mainText: "Najstarije registrovan",
queryString: "oldest"
}
} }

+ 16
- 3
src/hooks/useOffers/useOffers.js ファイルの表示

}, []); }, []);


useEffect(() => { useEffect(() => {
if (!queryStringHook.historyStateCleared) {
if (!queryStringHook.historyStateCleared && history.location.state) {
clearFiltersAndApply(); clearFiltersAndApply();
dispatch(setHeaderString(makeHeaderStringHelper({}))); dispatch(setHeaderString(makeHeaderStringHelper({})));
history.location.state = {}; history.location.state = {};
console.log("applyfilters"); console.log("applyfilters");
setFiltersCleared(true); setFiltersCleared(true);
}; };
// const applySorting = () => {
// filters.apply();
// console.log("ovde");
// const newQueryString = makeQueryStringHelper(
// filters,
// paging,
// search,
// sorting
// );
// paging.changePage(1);
// newQueryString.set(KEY_PAGE, 1);
// dispatch(setQueryString(convertQueryStringForBackend(newQueryString)));
// };


const clearFiltersAndApply = () => { const clearFiltersAndApply = () => {
clear(); clear();
console.log('clearfiltersandapply filterscleared')
console.log("clearfiltersandapply filterscleared");
setFiltersCleared(true); setFiltersCleared(true);
}; };


const clearOnlyFiltersAndApply = () => { const clearOnlyFiltersAndApply = () => {
filters.clear(); filters.clear();
paging.changePage(1); paging.changePage(1);
console.log('clearonlyfiltersandapply filterscleared')
console.log("clearonlyfiltersandapply filterscleared");


setFiltersCleared(true); setFiltersCleared(true);
}; };

+ 2
- 2
src/layouts/AdminLayout/AdminLayout.js ファイルの表示

<AdminLayoutContainer className={props.className}> <AdminLayoutContainer className={props.className}>
{props.children} {props.children}
<Grid container maxHeight="xl"> <Grid container maxHeight="xl">
<LeftCard item xs={0} sm={3} md={3} lg={3} xl={2.4}>
<LeftCard item xs={0} sm={0} md={3} lg={4} xl={3}>
{props.leftCard} {props.leftCard}
</LeftCard> </LeftCard>
<Content item xs={12} sm={9} md={9} lg={9} xl={9.6}>
<Content item xs={12} sm={12} md={9} lg={8} xl={9}>
{props.content} {props.content}
</Content> </Content>
</Grid> </Grid>

+ 3
- 3
src/layouts/ChatGridLayout/ChatGridLayout.styled.js ファイルの表示

import { Grid } from "@mui/material";
import { Container } from "@mui/system";
import { Box, Grid } from "@mui/material";
// import { Container } from "@mui/system";
import styled from "styled-components"; import styled from "styled-components";




export const ChatGridLayoutContainer = styled(Container)`
export const ChatGridLayoutContainer = styled(Box)`
margin-top: 120px; margin-top: 120px;
margin-left: 0; margin-left: 0;
margin-right: 0; margin-right: 0;

+ 2
- 3
src/layouts/ChatLayout/ChatLayout.styled.js ファイルの表示

import { Grid } from "@mui/material";
import { Container } from "@mui/system";
import { Box, Grid } from "@mui/material";
import styled from "styled-components"; import styled from "styled-components";




export const ChatLayoutContainer = styled(Container)`
export const ChatLayoutContainer = styled(Box)`
`; `;


export const ChatContent = styled(Grid)` export const ChatContent = styled(Grid)`

+ 36
- 5
src/pages/AdminHomePage/AdminUsersPage/AdminUsersPage.js ファイルの表示

import React, { useEffect, useMemo } from "react"; import React, { useEffect, useMemo } from "react";
import PropTypes from "prop-types"; import PropTypes from "prop-types";
import { useDispatch, useSelector } from "react-redux"; import { useDispatch, useSelector } from "react-redux";
import { selectAllProfiles } from "../../../store/selectors/profileSelectors";
import {
selectAllProfiles,
selectTotalProfiles,
} from "../../../store/selectors/profileSelectors";
import { fetchAllProfilesAsAdmin } from "../../../store/actions/profile/profileActions"; import { fetchAllProfilesAsAdmin } from "../../../store/actions/profile/profileActions";
import { import {
AdminUsersHeader, AdminUsersHeader,
} from "./AdminUsersPage.styled"; } from "./AdminUsersPage.styled";
import BigProfileCard from "../../../components/Cards/ProfileCard/BigProfileCard/BigProfileCard"; import BigProfileCard from "../../../components/Cards/ProfileCard/BigProfileCard/BigProfileCard";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import usePaging from "../../../hooks/useOffers/usePaging";
import { useState } from "react";
import Paging from "../../../components/Paging/Paging";
import useSorting from "../../../hooks/useOffers/useSorting";
import { sortUsersEnum } from "../../../enums/sortEnum";


const AdminUsersPage = () => { const AdminUsersPage = () => {
const dispatch = useDispatch(); const dispatch = useDispatch();
const [searchValue, setSearchValue] = useState("");
const { t } = useTranslation(); const { t } = useTranslation();
const paging = usePaging();
const sorting = useSorting(() => {}, sortUsersEnum);
const allUsers = useSelector(selectAllProfiles); const allUsers = useSelector(selectAllProfiles);
const totalUsers = useSelector(selectTotalProfiles);
const allUsersToShow = useMemo( const allUsersToShow = useMemo(
() => (Array.isArray(allUsers) ? allUsers : []), () => (Array.isArray(allUsers) ? allUsers : []),
[allUsers] [allUsers]
); );
useEffect(() => { useEffect(() => {
dispatch(fetchAllProfilesAsAdmin());
}, []);
dispatch(
fetchAllProfilesAsAdmin({
currentPage: paging.currentPage,
searchValue: searchValue,
sortOption: sorting.selectedSortOptionLocally
})
);
}, [paging.currentPage, searchValue, sorting.selectedSortOptionLocally]);

const handleChangePage = (newPage) => {
paging.changePage(newPage);
};


const handleSearch = () => {};
const handleSearch = (data) => {
console.log(data);
paging.changePage(1);
setSearchValue(data);
};


return ( return (
<AdminUsersPageContainer> <AdminUsersPageContainer>
/> />
<AdminUsersHeader <AdminUsersHeader
myOffers myOffers
hideSorting
category category
hideGrid hideGrid
isAdmin isAdmin
users users
hideBackButton hideBackButton
sorting={sorting}
/> />
<AdminUsersList> <AdminUsersList>
{allUsersToShow.map((singleUser) => ( {allUsersToShow.map((singleUser) => (
<BigProfileCard key={singleUser._id} profile={singleUser} /> <BigProfileCard key={singleUser._id} profile={singleUser} />
))} ))}
</AdminUsersList> </AdminUsersList>
<Paging
totalElements={totalUsers}
current={paging.currentPage}
changePage={handleChangePage}
/>
</> </>
</AdminUsersPageContainer> </AdminUsersPageContainer>
); );

+ 14
- 1
src/pages/Chat/Chat.js ファイルの表示

import React from "react"; import React from "react";
import { useHistory } from "react-router-dom";
import { ChatColumn } from "../../components/ChatColumn/ChatColumn"; import { ChatColumn } from "../../components/ChatColumn/ChatColumn";
import { CHAT_MESSAGE_PAGE } from "../../constants/pages";
import ChatLayout from "../../layouts/ChatLayout/ChatLayout"; import ChatLayout from "../../layouts/ChatLayout/ChatLayout";
import { replaceInRoute } from "../../util/helpers/routeHelpers";
import { ChatPageContainer } from "./Chat.styled"; import { ChatPageContainer } from "./Chat.styled";


export const ChatPage = () => { export const ChatPage = () => {
const history = useHistory();
const navigateToChat = (chatId) => {
setTimeout(() => {
history.push(
replaceInRoute(CHAT_MESSAGE_PAGE, {
idChat: chatId,
})
);
}, 120);
};
return ( return (
<ChatPageContainer> <ChatPageContainer>
<ChatLayout content={<ChatColumn />} />
<ChatLayout content={<ChatColumn navigateToChat={navigateToChat} />} />
</ChatPageContainer> </ChatPageContainer>
); );
}; };

+ 6
- 4
src/pages/Chat/Chat.styled.js ファイルの表示

import { Container } from "@mui/system"; import { Container } from "@mui/system";
import styled from "styled-components"; import styled from "styled-components";


import { transitionOnLoadFromLeft } from "../../components/Styles/globalStyleComponents";


export const ChatPageContainer = styled(Container)` export const ChatPageContainer = styled(Container)`
padding: 0;
padding: 0;
margin: 0; margin: 0;
animation: 0.2s ease 0s 1 ${transitionOnLoadFromLeft};
margin-top: 80px; margin-top: 80px;
height: 100%; height: 100%;
width: 100%; width: 100%;
flex: 1; flex: 1;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
position: relative;
left: 0px;
@media (max-width: 600px) { @media (max-width: 600px) {
margin-top: 100px; margin-top: 100px;
} }
`;
`;

+ 24
- 2
src/pages/ChatMessages/ChatMessages.js ファイルの表示

import DirectChat from "../../components/DirectChat/DirectChat"; import DirectChat from "../../components/DirectChat/DirectChat";
import MiniChatColumn from "../../components/DirectChat/MiniChatColumn/MiniChatColumn"; import MiniChatColumn from "../../components/DirectChat/MiniChatColumn/MiniChatColumn";
import ChatGridLayout from "../../layouts/ChatGridLayout/ChatGridLayout"; import ChatGridLayout from "../../layouts/ChatGridLayout/ChatGridLayout";

import { useSwipeable } from "react-swipeable";
import {
ChatMessagesPageContainer,
SwiperContainer,
} from "./ChatMessages.styled";
import { useHistory } from "react-router-dom";
export const ChatMessagesPage = () => { export const ChatMessagesPage = () => {
const history = useHistory();
console.log("rerender");
const goBack = () => {
history.goBack();
};
const handlersBox = useSwipeable({
onSwipedRight: () => setTimeout(goBack, 0),
trackMouse: false,
// preventDefaultTouchmoveEvent: true
});
return ( return (
<ChatGridLayout content={<DirectChat />} leftCard={<MiniChatColumn />} />
<SwiperContainer {...handlersBox}>
<ChatMessagesPageContainer>
<ChatGridLayout
content={<DirectChat />}
leftCard={<MiniChatColumn />}
/>
</ChatMessagesPageContainer>
</SwiperContainer>
); );
}; };



+ 4
- 11
src/pages/ChatMessages/ChatMessages.styled.js ファイルの表示

import { Container } from "@mui/system"; import { Container } from "@mui/system";
import styled from "styled-components"; import styled from "styled-components";
import { transitionOnLoadFromRight } from "../../components/Styles/globalStyleComponents";


export const ChatMessagesPageContainer = styled(Container)` export const ChatMessagesPageContainer = styled(Container)`
padding: 0;
margin: 0;
margin-top: 80px;
height: 100%;
width: 100%;
max-width: none;
flex: 1;
display: flex;
@media (max-width: 600px) { @media (max-width: 600px) {
margin-top: 80px;
animation: 0.2s ease 0s 1 ${transitionOnLoadFromRight};
} }
`;
`;
export const SwiperContainer = styled.div``;

+ 3
- 3
src/pages/RegisterPages/Register/ThirdPart/ThirdPartOfRegistration.js ファイルの表示

import React, { useEffect } from "react"; import React, { useEffect } from "react";
import PropTypes from "prop-types"; import PropTypes from "prop-types";
import { import {
FinishRegistrationButton,
FormContainer, FormContainer,
RegisterDescription, RegisterDescription,
} from "./ThirdPartOfRegistration.styled"; } from "./ThirdPartOfRegistration.styled";
import thirdPartInitialValues from "../../../../initialValues/registerInitialValues/thirdPartInitialValues"; import thirdPartInitialValues from "../../../../initialValues/registerInitialValues/thirdPartInitialValues";
import ErrorMessage from "./ErrorMessage/ErrorMessage"; import ErrorMessage from "./ErrorMessage/ErrorMessage";
import thirdPartValidation from "../../../../validations/registerValidations/thirdPartValidation"; import thirdPartValidation from "../../../../validations/registerValidations/thirdPartValidation";
import { PrimaryAnimatedButton } from "../../../../components/Styles/globalStyleComponents";


const ThirdPartOfRegistration = (props) => { const ThirdPartOfRegistration = (props) => {
const { t } = useTranslation(); const { t } = useTranslation();


<ErrorMessage formik={formik} /> <ErrorMessage formik={formik} />


<FinishRegistrationButton
<PrimaryAnimatedButton
type="submit" type="submit"
variant="contained" variant="contained"
height="48px" height="48px"
isLoading={props.isLoading} isLoading={props.isLoading}
> >
{t("common.continue")} {t("common.continue")}
</FinishRegistrationButton>
</PrimaryAnimatedButton>
</FormContainer> </FormContainer>
); );
}; };

+ 2
- 35
src/pages/RegisterPages/Register/ThirdPart/ThirdPartOfRegistration.styled.js ファイルの表示

import { Typography } from "@mui/material"; import { Typography } from "@mui/material";
import styled, { css } from "styled-components";
import { PrimaryButton } from "../../../../components/Buttons/PrimaryButton/PrimaryButton";
import {
ButtonLoadingAnimation,
ButtonLoadingEllipseAnimation,
} from "../../../../components/Styles/globalStyleComponents";
import styled from "styled-components";
import selectedTheme from "../../../../themes"; import selectedTheme from "../../../../themes";


export const FormContainer = styled.form` export const FormContainer = styled.form`
margin-top: 14px; margin-top: 14px;
} }
`; `;
export const FinishRegistrationButton = styled(PrimaryButton)`
${props => props.isLoading && css`
cursor: default;
`}
& button {
position: relative;
/* background-color: green !important; */
animation: ${(props) =>
props.isLoading
? css`
${ButtonLoadingAnimation} 2.2s infinite;
`
: ""};
/* animation: ${ButtonLoadingAnimation} 2s infinite; */
}
${props => props.isLoading && css`
& button::after {
content: "";
width: 47px;
height: 96px;
background-color: green;
position: absolute;
top: -24px;
background-color: ${selectedTheme.colors.borderSponsoredColor};
filter: blur(45px);
animation: ${ButtonLoadingEllipseAnimation} 2.2s infinite;
}
`}
`;


+ 3
- 1
src/request/chatRequest.js ファイルの表示



export const attemptFetchChats = (payload) => { export const attemptFetchChats = (payload) => {
return getRequest( return getRequest(
replaceInUrl(apiEndpoints.chat.getUserChats, { userId: payload })
replaceInUrl(apiEndpoints.chat.getUserChats + "?" + payload.queryString, {
userId: payload.userId,
})
); );
}; };
export const attemptFetchHeaderChats = (payload) => { export const attemptFetchHeaderChats = (payload) => {

+ 2
- 2
src/request/profileRequest.js ファイルの表示



export const attemptFetchAllProfiles = () => export const attemptFetchAllProfiles = () =>
getRequest(apiEndpoints.users.getAllProfiles); getRequest(apiEndpoints.users.getAllProfiles);
export const attemptFetchAllProfilesAsAdmin = () =>
getRequest(apiEndpoints.users.getAllProfilesAsAdmin);
export const attemptFetchAllProfilesAsAdmin = (payload) =>
getRequest(apiEndpoints.users.getAllProfilesAsAdmin + "?" + payload);


export const attemptEditProfile = (payload, requestData) => export const attemptEditProfile = (payload, requestData) =>
putRequest(apiEndpoints.users.editProfile + "/" + payload, requestData); putRequest(apiEndpoints.users.editProfile + "/" + payload, requestData);

+ 2
- 2
src/socket/socket.js ファイルの表示

import io from "socket.io-client"; import io from "socket.io-client";


// export const socket = io("https://trampa-api-test.dilig.net/", {
export const socket = io("https://trampa-api-test.dilig.net/", {
// export const socket = io("http://localhost:3001/", { // export const socket = io("http://localhost:3001/", {
export const socket = io(process.env.REACT_APP_BASE_API_URL, {
// export const socket = io(process.env.REACT_APP_BASE_API_URL, {
transports: ["websocket"], transports: ["websocket"],
reconnectionAttempts: 5, reconnectionAttempts: 5,
}); });

+ 2
- 2
src/store/actions/profile/profileActionConstants.js ファイルの表示

export const PROFILE_MINE_SET = createSetType("PROFILE_MINE_SET"); export const PROFILE_MINE_SET = createSetType("PROFILE_MINE_SET");
export const PROFILE_ALL_SET = createSetType("PROFILE_ALL_SET"); export const PROFILE_ALL_SET = createSetType("PROFILE_ALL_SET");


const PROFILE_EDIT_SCOPE = "PROFILE_EDIT_SCOPE";
export const PROFILE_EDIT_SCOPE = "PROFILE_EDIT_SCOPE";
export const PROFILE_EDIT = createFetchType(PROFILE_EDIT_SCOPE); export const PROFILE_EDIT = createFetchType(PROFILE_EDIT_SCOPE);
export const PROFILE_EDIT_SUCCESS = createSuccessType(PROFILE_EDIT_SCOPE); export const PROFILE_EDIT_SUCCESS = createSuccessType(PROFILE_EDIT_SCOPE);
export const PROFILE_EDIT_ERROR = createErrorType(PROFILE_EDIT_SCOPE); export const PROFILE_EDIT_ERROR = createErrorType(PROFILE_EDIT_SCOPE);


const PROFILE_EDIT_ADMIN_SCOPE = "PROFILE_EDIT_ADMIN_SCOPE";
export const PROFILE_EDIT_ADMIN_SCOPE = "PROFILE_EDIT_ADMIN_SCOPE";
export const PROFILE_EDIT_ADMIN = createFetchType(PROFILE_EDIT_ADMIN_SCOPE); export const PROFILE_EDIT_ADMIN = createFetchType(PROFILE_EDIT_ADMIN_SCOPE);
export const PROFILE_EDIT_ADMIN_SUCCESS = createSuccessType(PROFILE_EDIT_ADMIN_SCOPE); export const PROFILE_EDIT_ADMIN_SUCCESS = createSuccessType(PROFILE_EDIT_ADMIN_SCOPE);
export const PROFILE_EDIT_ADMIN_ERROR = createErrorType(PROFILE_EDIT_ADMIN_SCOPE); export const PROFILE_EDIT_ADMIN_ERROR = createErrorType(PROFILE_EDIT_ADMIN_SCOPE);

+ 9
- 2
src/store/saga/chatSaga.js ファイルの表示

import { selectExchange } from "../selectors/exchangeSelector"; import { selectExchange } from "../selectors/exchangeSelector";
import { selectUserId } from "../selectors/loginSelectors"; import { selectUserId } from "../selectors/loginSelectors";
import { sendMessage as SendMessageSocket } from "../../socket/socket"; import { sendMessage as SendMessageSocket } from "../../socket/socket";
import { KEY_PAGE, KEY_SIZE } from "../../constants/queryStringConstants";


function* fetchChats() {
function* fetchChats({ payload }) {
try { try {
const userId = yield select(selectUserId); const userId = yield select(selectUserId);
const data = yield call(attemptFetchChats, userId);
const queryObject = new URLSearchParams();
queryObject.set(KEY_SIZE, "6");
queryObject.set(KEY_PAGE, payload.currentPage);
const data = yield call(attemptFetchChats, {
userId,
queryString: queryObject.toString(),
});
yield call(console.dir, data); yield call(console.dir, data);
yield put(setChats([...data.data])); yield put(setChats([...data.data]));
yield put(fetchChatsSuccess()); yield put(fetchChatsSuccess());

+ 24
- 3
src/store/saga/profileSaga.js ファイルの表示

import { all, call, put, takeLatest, select } from "@redux-saga/core/effects"; import { all, call, put, takeLatest, select } from "@redux-saga/core/effects";
import {
KEY_NAME,
KEY_PAGE,
KEY_SIZE,
KEY_SORT_DATE,
} from "../../constants/queryStringConstants";
import { sortUsersEnum } from "../../enums/sortEnum";
import { import {
attemptEditProfile, attemptEditProfile,
attemptEditProfileAsAdmin, attemptEditProfileAsAdmin,
} }
} }


function* fetchAllProfilesAsAdmin() {
function* fetchAllProfilesAsAdmin({ payload }) {
try { try {
const data = yield call(attemptFetchAllProfilesAsAdmin);
if (data) yield put(setAllProfiles(data.data.users));
yield call(console.log, payload);
const queryObject = new URLSearchParams();
queryObject.set(KEY_SIZE, "10");
if (payload?.searchValue && payload?.searchValue?.length !== 0)
queryObject.set(KEY_NAME, payload.searchValue);
if (payload?.sortOption?.value === sortUsersEnum.OLD.value)
queryObject.set(KEY_SORT_DATE, "false");
if (payload?.sortOption?.value === sortUsersEnum.NEW.value)
queryObject.set(KEY_SORT_DATE, "true");

queryObject.set(KEY_PAGE, payload.currentPage);
const data = yield call(
attemptFetchAllProfilesAsAdmin,
queryObject.toString()
);
if (data) yield put(setAllProfiles(data.data));
yield put(fetchAllProfilesAsAdminSuccess()); yield put(fetchAllProfilesAsAdminSuccess());
} catch (e) { } catch (e) {
yield put(fetchAllProfilesAsAdminError()); yield put(fetchAllProfilesAsAdminError());

+ 5
- 1
src/store/selectors/profileSelectors.js ファイルの表示

); );
export const selectAllProfiles = createSelector( export const selectAllProfiles = createSelector(
profileSelector, profileSelector,
(state) => state.allProfiles
(state) => state.allProfiles?.users
); );
export const selectTotalProfiles = createSelector(
profileSelector,
state => state.allProfiles?.total
)

+ 185
- 161
yarn.lock ファイルの表示

# yarn lockfile v1 # yarn lockfile v1




"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.5.5":
"integrity" "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g=="
"resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz"
"version" "7.12.13"
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.5.5":
"integrity" "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q=="
"resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz"
"version" "7.18.6"
dependencies: dependencies:
"@babel/highlight" "^7.12.13"
"@babel/highlight" "^7.18.6"


"@babel/code-frame@7.10.4": "@babel/code-frame@7.10.4":
"integrity" "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==" "integrity" "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg=="
"semver" "^5.4.1" "semver" "^5.4.1"
"source-map" "^0.5.0" "source-map" "^0.5.0"


"@babel/generator@^7.12.1", "@babel/generator@^7.14.2", "@babel/generator@^7.14.3":
"integrity" "sha512-bn0S6flG/j0xtQdz3hsjJ624h3W0r3llttBMfyHX3YrZ/KtLYr15bjA0FXkgW7FpvrDuTuElXeVjiKlYRpnOFA=="
"resolved" "https://registry.npmjs.org/@babel/generator/-/generator-7.14.3.tgz"
"version" "7.14.3"
"@babel/generator@^7.12.1", "@babel/generator@^7.14.3", "@babel/generator@^7.19.4":
"integrity" "sha512-DxbNz9Lz4aMZ99qPpO1raTbcrI1ZeYh+9NR9qhfkQIbFtVEqotHojEBxHzmxhVONkGt6VyrqVQcgpefMy9pqcg=="
"resolved" "https://registry.npmjs.org/@babel/generator/-/generator-7.19.5.tgz"
"version" "7.19.5"
dependencies: dependencies:
"@babel/types" "^7.14.2"
"@babel/types" "^7.19.4"
"@jridgewell/gen-mapping" "^0.3.2"
"jsesc" "^2.5.1" "jsesc" "^2.5.1"
"source-map" "^0.5.0"


"@babel/helper-annotate-as-pure@^7.10.4", "@babel/helper-annotate-as-pure@^7.12.13":
"integrity" "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw=="
"resolved" "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz"
"version" "7.12.13"
dependencies:
"@babel/types" "^7.12.13"

"@babel/helper-annotate-as-pure@^7.16.0":
"@babel/helper-annotate-as-pure@^7.10.4", "@babel/helper-annotate-as-pure@^7.12.13", "@babel/helper-annotate-as-pure@^7.16.0", "@babel/helper-annotate-as-pure@^7.18.6":
"integrity" "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==" "integrity" "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA=="
"resolved" "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz" "resolved" "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz"
"version" "7.18.6" "version" "7.18.6"
"browserslist" "^4.16.6" "browserslist" "^4.16.6"
"semver" "^6.3.0" "semver" "^6.3.0"


"@babel/helper-create-class-features-plugin@^7.12.1", "@babel/helper-create-class-features-plugin@^7.13.0", "@babel/helper-create-class-features-plugin@^7.14.0", "@babel/helper-create-class-features-plugin@^7.14.3", "@babel/helper-create-class-features-plugin@^7.14.4":
"integrity" "sha512-idr3pthFlDCpV+p/rMgGLGYIVtazeatrSOQk8YzO2pAepIjQhCN3myeihVg58ax2bbbGK9PUE1reFi7axOYIOw=="
"resolved" "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.4.tgz"
"version" "7.14.4"
"@babel/helper-create-class-features-plugin@^7.12.1", "@babel/helper-create-class-features-plugin@^7.13.0", "@babel/helper-create-class-features-plugin@^7.14.0", "@babel/helper-create-class-features-plugin@^7.14.3", "@babel/helper-create-class-features-plugin@^7.19.0":
"integrity" "sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw=="
"resolved" "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz"
"version" "7.19.0"
dependencies: dependencies:
"@babel/helper-annotate-as-pure" "^7.12.13"
"@babel/helper-function-name" "^7.14.2"
"@babel/helper-member-expression-to-functions" "^7.13.12"
"@babel/helper-optimise-call-expression" "^7.12.13"
"@babel/helper-replace-supers" "^7.14.4"
"@babel/helper-split-export-declaration" "^7.12.13"
"@babel/helper-annotate-as-pure" "^7.18.6"
"@babel/helper-environment-visitor" "^7.18.9"
"@babel/helper-function-name" "^7.19.0"
"@babel/helper-member-expression-to-functions" "^7.18.9"
"@babel/helper-optimise-call-expression" "^7.18.6"
"@babel/helper-replace-supers" "^7.18.9"
"@babel/helper-split-export-declaration" "^7.18.6"


"@babel/helper-create-regexp-features-plugin@^7.12.13": "@babel/helper-create-regexp-features-plugin@^7.12.13":
"integrity" "sha512-JIB2+XJrb7v3zceV2XzDhGIB902CmKGSpSl4q2C6agU9SNLG/2V1RtFRGPG1Ajh9STj3+q6zJMOC+N/pp2P9DA==" "integrity" "sha512-JIB2+XJrb7v3zceV2XzDhGIB902CmKGSpSl4q2C6agU9SNLG/2V1RtFRGPG1Ajh9STj3+q6zJMOC+N/pp2P9DA=="
"resolve" "^1.14.2" "resolve" "^1.14.2"
"semver" "^6.1.2" "semver" "^6.1.2"


"@babel/helper-environment-visitor@^7.18.9":
"integrity" "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg=="
"resolved" "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz"
"version" "7.18.9"

"@babel/helper-explode-assignable-expression@^7.12.13": "@babel/helper-explode-assignable-expression@^7.12.13":
"integrity" "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==" "integrity" "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA=="
"resolved" "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz" "resolved" "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz"
dependencies: dependencies:
"@babel/types" "^7.13.0" "@babel/types" "^7.13.0"


"@babel/helper-function-name@^7.12.13", "@babel/helper-function-name@^7.14.2":
"integrity" "sha512-NYZlkZRydxw+YT56IlhIcS8PAhb+FEUiOzuhFTfqDyPmzAhRge6ua0dQYT/Uh0t/EDHq05/i+e5M2d4XvjgarQ=="
"resolved" "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.2.tgz"
"version" "7.14.2"
dependencies:
"@babel/helper-get-function-arity" "^7.12.13"
"@babel/template" "^7.12.13"
"@babel/types" "^7.14.2"

"@babel/helper-get-function-arity@^7.12.13":
"integrity" "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg=="
"resolved" "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz"
"version" "7.12.13"
"@babel/helper-function-name@^7.12.13", "@babel/helper-function-name@^7.14.2", "@babel/helper-function-name@^7.19.0":
"integrity" "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w=="
"resolved" "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz"
"version" "7.19.0"
dependencies: dependencies:
"@babel/types" "^7.12.13"
"@babel/template" "^7.18.10"
"@babel/types" "^7.19.0"


"@babel/helper-hoist-variables@^7.13.0":
"integrity" "sha512-1eMtTrXtrwscjcAeO4BVK+vvkxaLJSPFz1w1KLawz6HLNi9bPFGBNwwDyVfiu1Tv/vRRFYfoGaKhmAQPGPn5Wg=="
"resolved" "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.16.tgz"
"version" "7.13.16"
"@babel/helper-hoist-variables@^7.13.0", "@babel/helper-hoist-variables@^7.18.6":
"integrity" "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q=="
"resolved" "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz"
"version" "7.18.6"
dependencies: dependencies:
"@babel/traverse" "^7.13.15"
"@babel/types" "^7.13.16"
"@babel/types" "^7.18.6"


"@babel/helper-member-expression-to-functions@^7.13.12":
"integrity" "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw=="
"resolved" "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz"
"version" "7.13.12"
"@babel/helper-member-expression-to-functions@^7.18.9":
"integrity" "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg=="
"resolved" "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz"
"version" "7.18.9"
dependencies: dependencies:
"@babel/types" "^7.13.12"
"@babel/types" "^7.18.9"


"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.13.12": "@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.13.12":
"integrity" "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==" "integrity" "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA=="
"@babel/traverse" "^7.14.2" "@babel/traverse" "^7.14.2"
"@babel/types" "^7.14.2" "@babel/types" "^7.14.2"


"@babel/helper-optimise-call-expression@^7.12.13":
"integrity" "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA=="
"resolved" "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz"
"version" "7.12.13"
"@babel/helper-optimise-call-expression@^7.12.13", "@babel/helper-optimise-call-expression@^7.18.6":
"integrity" "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA=="
"resolved" "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz"
"version" "7.18.6"
dependencies: dependencies:
"@babel/types" "^7.12.13"
"@babel/types" "^7.18.6"


"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
"integrity" "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ=="
"resolved" "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz"
"version" "7.13.0"
"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
"integrity" "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw=="
"resolved" "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz"
"version" "7.19.0"


"@babel/helper-remap-async-to-generator@^7.13.0": "@babel/helper-remap-async-to-generator@^7.13.0":
"integrity" "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==" "integrity" "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg=="
"@babel/helper-wrap-function" "^7.13.0" "@babel/helper-wrap-function" "^7.13.0"
"@babel/types" "^7.13.0" "@babel/types" "^7.13.0"


"@babel/helper-replace-supers@^7.12.13", "@babel/helper-replace-supers@^7.13.12", "@babel/helper-replace-supers@^7.14.4":
"integrity" "sha512-zZ7uHCWlxfEAAOVDYQpEf/uyi1dmeC7fX4nCf2iz9drnCwi1zvwXL3HwWWNXUQEJ1k23yVn3VbddiI9iJEXaTQ=="
"resolved" "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.4.tgz"
"version" "7.14.4"
"@babel/helper-replace-supers@^7.12.13", "@babel/helper-replace-supers@^7.13.12", "@babel/helper-replace-supers@^7.14.4", "@babel/helper-replace-supers@^7.18.9":
"integrity" "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw=="
"resolved" "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz"
"version" "7.19.1"
dependencies: dependencies:
"@babel/helper-member-expression-to-functions" "^7.13.12"
"@babel/helper-optimise-call-expression" "^7.12.13"
"@babel/traverse" "^7.14.2"
"@babel/types" "^7.14.4"
"@babel/helper-environment-visitor" "^7.18.9"
"@babel/helper-member-expression-to-functions" "^7.18.9"
"@babel/helper-optimise-call-expression" "^7.18.6"
"@babel/traverse" "^7.19.1"
"@babel/types" "^7.19.0"


"@babel/helper-simple-access@^7.13.12": "@babel/helper-simple-access@^7.13.12":
"integrity" "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==" "integrity" "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA=="
dependencies: dependencies:
"@babel/types" "^7.12.1" "@babel/types" "^7.12.1"


"@babel/helper-split-export-declaration@^7.12.13":
"integrity" "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg=="
"resolved" "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz"
"version" "7.12.13"
"@babel/helper-split-export-declaration@^7.12.13", "@babel/helper-split-export-declaration@^7.18.6":
"integrity" "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA=="
"resolved" "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz"
"version" "7.18.6"
dependencies: dependencies:
"@babel/types" "^7.12.13"
"@babel/types" "^7.18.6"


"@babel/helper-validator-identifier@^7.12.11", "@babel/helper-validator-identifier@^7.14.0":
"integrity" "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A=="
"resolved" "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz"
"version" "7.14.0"
"@babel/helper-string-parser@^7.19.4":
"integrity" "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw=="
"resolved" "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz"
"version" "7.19.4"


"@babel/helper-validator-identifier@^7.18.6":
"integrity" "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g=="
"resolved" "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz"
"version" "7.18.6"
"@babel/helper-validator-identifier@^7.12.11", "@babel/helper-validator-identifier@^7.14.0", "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1":
"integrity" "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w=="
"resolved" "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz"
"version" "7.19.1"


"@babel/helper-validator-option@^7.12.1", "@babel/helper-validator-option@^7.12.17": "@babel/helper-validator-option@^7.12.1", "@babel/helper-validator-option@^7.12.17":
"integrity" "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw=="
"resolved" "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz"
"version" "7.12.17"
"integrity" "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw=="
"resolved" "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz"
"version" "7.18.6"


"@babel/helper-wrap-function@^7.13.0": "@babel/helper-wrap-function@^7.13.0":
"integrity" "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==" "integrity" "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA=="
"@babel/traverse" "^7.14.0" "@babel/traverse" "^7.14.0"
"@babel/types" "^7.14.0" "@babel/types" "^7.14.0"


"@babel/highlight@^7.10.4", "@babel/highlight@^7.12.13":
"integrity" "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg=="
"resolved" "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz"
"version" "7.14.0"
"@babel/highlight@^7.10.4", "@babel/highlight@^7.18.6":
"integrity" "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g=="
"resolved" "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz"
"version" "7.18.6"
dependencies: dependencies:
"@babel/helper-validator-identifier" "^7.14.0"
"@babel/helper-validator-identifier" "^7.18.6"
"chalk" "^2.0.0" "chalk" "^2.0.0"
"js-tokens" "^4.0.0" "js-tokens" "^4.0.0"


"@babel/parser@^7.1.0", "@babel/parser@^7.12.13", "@babel/parser@^7.12.3", "@babel/parser@^7.14.2", "@babel/parser@^7.14.3", "@babel/parser@^7.7.0":
"integrity" "sha512-ArliyUsWDUqEGfWcmzpGUzNfLxTdTp6WU4IuP6QFSp9gGfWS6boxFCkJSJ/L4+RG8z/FnIU3WxCk6hPL9SSWeA=="
"resolved" "https://registry.npmjs.org/@babel/parser/-/parser-7.14.4.tgz"
"version" "7.14.4"
"@babel/parser@^7.1.0", "@babel/parser@^7.12.3", "@babel/parser@^7.14.3", "@babel/parser@^7.18.10", "@babel/parser@^7.19.4", "@babel/parser@^7.7.0":
"integrity" "sha512-qpVT7gtuOLjWeDTKLkJ6sryqLliBaFpAtGeqw5cs5giLldvh+Ch0plqnUMKoVAUS6ZEueQQiZV+p5pxtPitEsA=="
"resolved" "https://registry.npmjs.org/@babel/parser/-/parser-7.19.4.tgz"
"version" "7.19.4"


"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.13.12": "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.13.12":
"integrity" "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==" "integrity" "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ=="
"@babel/helper-plugin-utils" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3"


"@babel/plugin-syntax-flow@^7.12.1": "@babel/plugin-syntax-flow@^7.12.1":
"integrity" "sha512-J/RYxnlSLXZLVR7wTRsozxKT8qbsx1mNKJzXEEjQ0Kjx1ZACcyHgbanNWNCFtc36IzuWhYWPpvJFFoexoOWFmA=="
"resolved" "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.13.tgz"
"version" "7.12.13"
"integrity" "sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A=="
"resolved" "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz"
"version" "7.18.6"
dependencies: dependencies:
"@babel/helper-plugin-utils" "^7.12.13"
"@babel/helper-plugin-utils" "^7.18.6"


"@babel/plugin-syntax-import-meta@^7.8.3": "@babel/plugin-syntax-import-meta@^7.8.3":
"integrity" "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==" "integrity" "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g=="
dependencies: dependencies:
"@babel/helper-plugin-utils" "^7.12.13" "@babel/helper-plugin-utils" "^7.12.13"


"@babel/plugin-syntax-typescript@^7.12.13":
"integrity" "sha512-cHP3u1JiUiG2LFDKbXnwVad81GvfyIOmCD6HIEId6ojrY0Drfy2q1jw7BwN7dE84+kTnBjLkXoL3IEy/3JPu2w=="
"resolved" "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.13.tgz"
"version" "7.12.13"
"@babel/plugin-syntax-typescript@^7.18.6":
"integrity" "sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA=="
"resolved" "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz"
"version" "7.18.6"
dependencies: dependencies:
"@babel/helper-plugin-utils" "^7.12.13"
"@babel/helper-plugin-utils" "^7.18.6"


"@babel/plugin-transform-arrow-functions@^7.12.1", "@babel/plugin-transform-arrow-functions@^7.13.0": "@babel/plugin-transform-arrow-functions@^7.12.1", "@babel/plugin-transform-arrow-functions@^7.13.0":
"integrity" "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==" "integrity" "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg=="
"@babel/helper-plugin-utils" "^7.12.13" "@babel/helper-plugin-utils" "^7.12.13"


"@babel/plugin-transform-typescript@^7.12.1": "@babel/plugin-transform-typescript@^7.12.1":
"integrity" "sha512-WYdcGNEO7mCCZ2XzRlxwGj3PgeAr50ifkofOUC/+IN/GzKLB+biDPVBUAQN2C/dVZTvEXCp80kfQ1FFZPrwykQ=="
"resolved" "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.14.4.tgz"
"version" "7.14.4"
"integrity" "sha512-z6fnuK9ve9u/0X0rRvI9MY0xg+DOUaABDYOe+/SQTxtlptaBB/V9JIUxJn6xp3lMBeb9qe8xSFmHU35oZDXD+w=="
"resolved" "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.19.3.tgz"
"version" "7.19.3"
dependencies: dependencies:
"@babel/helper-create-class-features-plugin" "^7.14.4"
"@babel/helper-plugin-utils" "^7.13.0"
"@babel/plugin-syntax-typescript" "^7.12.13"
"@babel/helper-create-class-features-plugin" "^7.19.0"
"@babel/helper-plugin-utils" "^7.19.0"
"@babel/plugin-syntax-typescript" "^7.18.6"


"@babel/plugin-transform-unicode-escapes@^7.12.1", "@babel/plugin-transform-unicode-escapes@^7.12.13": "@babel/plugin-transform-unicode-escapes@^7.12.1", "@babel/plugin-transform-unicode-escapes@^7.12.13":
"integrity" "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==" "integrity" "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw=="
"core-js-pure" "^3.0.0" "core-js-pure" "^3.0.0"
"regenerator-runtime" "^0.13.4" "regenerator-runtime" "^0.13.4"


"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2", "@babel/runtime@7.12.1":
"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.1", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2", "@babel/runtime@7.12.1":
"integrity" "sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA==" "integrity" "sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA=="
"resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.1.tgz" "resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.1.tgz"
"version" "7.12.1" "version" "7.12.1"
dependencies: dependencies:
"regenerator-runtime" "^0.13.4" "regenerator-runtime" "^0.13.4"


"@babel/template@^7.10.4", "@babel/template@^7.12.13", "@babel/template@^7.3.3":
"integrity" "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA=="
"resolved" "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz"
"version" "7.12.13"
dependencies:
"@babel/code-frame" "^7.12.13"
"@babel/parser" "^7.12.13"
"@babel/types" "^7.12.13"

"@babel/traverse@^7.1.0", "@babel/traverse@^7.12.1", "@babel/traverse@^7.13.0", "@babel/traverse@^7.13.15", "@babel/traverse@^7.14.0", "@babel/traverse@^7.14.2", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.0":
"integrity" "sha512-TsdRgvBFHMyHOOzcP9S6QU0QQtjxlRpEYOy3mcCO5RgmC305ki42aSAmfZEMSSYBla2oZ9BMqYlncBaKmD/7iA=="
"resolved" "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.2.tgz"
"version" "7.14.2"
dependencies:
"@babel/code-frame" "^7.12.13"
"@babel/generator" "^7.14.2"
"@babel/helper-function-name" "^7.14.2"
"@babel/helper-split-export-declaration" "^7.12.13"
"@babel/parser" "^7.14.2"
"@babel/types" "^7.14.2"
"@babel/template@^7.10.4", "@babel/template@^7.12.13", "@babel/template@^7.18.10", "@babel/template@^7.3.3":
"integrity" "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA=="
"resolved" "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz"
"version" "7.18.10"
dependencies:
"@babel/code-frame" "^7.18.6"
"@babel/parser" "^7.18.10"
"@babel/types" "^7.18.10"

"@babel/traverse@^7.1.0", "@babel/traverse@^7.12.1", "@babel/traverse@^7.13.0", "@babel/traverse@^7.14.0", "@babel/traverse@^7.14.2", "@babel/traverse@^7.19.1", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.0":
"integrity" "sha512-w3K1i+V5u2aJUOXBFFC5pveFLmtq1s3qcdDNC2qRI6WPBQIDaKFqXxDEqDO/h1dQ3HjsZoZMyIy6jGLq0xtw+g=="
"resolved" "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.4.tgz"
"version" "7.19.4"
dependencies:
"@babel/code-frame" "^7.18.6"
"@babel/generator" "^7.19.4"
"@babel/helper-environment-visitor" "^7.18.9"
"@babel/helper-function-name" "^7.19.0"
"@babel/helper-hoist-variables" "^7.18.6"
"@babel/helper-split-export-declaration" "^7.18.6"
"@babel/parser" "^7.19.4"
"@babel/types" "^7.19.4"
"debug" "^4.1.0" "debug" "^4.1.0"
"globals" "^11.1.0" "globals" "^11.1.0"


"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.12.6", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.13.16", "@babel/types@^7.14.0", "@babel/types@^7.14.2", "@babel/types@^7.14.4", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0":
"integrity" "sha512-lCj4aIs0xUefJFQnwwQv2Bxg7Omd6bgquZ6LGC+gGMh6/s5qDVfjuCMlDmYQ15SLsWHd9n+X3E75lKIhl5Lkiw=="
"resolved" "https://registry.npmjs.org/@babel/types/-/types-7.14.4.tgz"
"version" "7.14.4"
dependencies:
"@babel/helper-validator-identifier" "^7.14.0"
"to-fast-properties" "^2.0.0"

"@babel/types@^7.18.6":
"integrity" "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg=="
"resolved" "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz"
"version" "7.18.9"
"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.12.6", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.14.0", "@babel/types@^7.14.2", "@babel/types@^7.14.4", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.19.4", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0":
"integrity" "sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw=="
"resolved" "https://registry.npmjs.org/@babel/types/-/types-7.19.4.tgz"
"version" "7.19.4"
dependencies: dependencies:
"@babel/helper-validator-identifier" "^7.18.6"
"@babel/helper-string-parser" "^7.19.4"
"@babel/helper-validator-identifier" "^7.19.1"
"to-fast-properties" "^2.0.0" "to-fast-properties" "^2.0.0"


"@bcoe/v8-coverage@^0.2.3": "@bcoe/v8-coverage@^0.2.3":
"@types/yargs" "^15.0.0" "@types/yargs" "^15.0.0"
"chalk" "^4.0.0" "chalk" "^4.0.0"


"@jridgewell/gen-mapping@^0.3.2":
"integrity" "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A=="
"resolved" "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz"
"version" "0.3.2"
dependencies:
"@jridgewell/set-array" "^1.0.1"
"@jridgewell/sourcemap-codec" "^1.4.10"
"@jridgewell/trace-mapping" "^0.3.9"

"@jridgewell/resolve-uri@3.1.0":
"integrity" "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w=="
"resolved" "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz"
"version" "3.1.0"

"@jridgewell/set-array@^1.0.1":
"integrity" "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw=="
"resolved" "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz"
"version" "1.1.2"

"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@1.4.14":
"integrity" "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw=="
"resolved" "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz"
"version" "1.4.14"

"@jridgewell/trace-mapping@^0.3.9":
"integrity" "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g=="
"resolved" "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz"
"version" "0.3.17"
dependencies:
"@jridgewell/resolve-uri" "3.1.0"
"@jridgewell/sourcemap-codec" "1.4.14"

"@mui/base@5.0.0-alpha.84": "@mui/base@5.0.0-alpha.84":
"integrity" "sha512-uDx+wGVytS+ZHiWHyzUyijY83GSIXJpzSJ0PGc/8/s+8nBzeHvaPKrAyJz15ASLr52hYRA6PQGqn0eRAsB7syQ==" "integrity" "sha512-uDx+wGVytS+ZHiWHyzUyijY83GSIXJpzSJ0PGc/8/s+8nBzeHvaPKrAyJz15ASLr52hYRA6PQGqn0eRAsB7syQ=="
"resolved" "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.84.tgz" "resolved" "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.84.tgz"
"url-parse-lax" "^3.0.0" "url-parse-lax" "^3.0.0"


"graceful-fs@^4.1.11", "graceful-fs@^4.1.15", "graceful-fs@^4.1.2", "graceful-fs@^4.1.3", "graceful-fs@^4.1.6", "graceful-fs@^4.2.0", "graceful-fs@^4.2.4": "graceful-fs@^4.1.11", "graceful-fs@^4.1.15", "graceful-fs@^4.1.2", "graceful-fs@^4.1.3", "graceful-fs@^4.1.6", "graceful-fs@^4.2.0", "graceful-fs@^4.2.4":
"integrity" "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ=="
"resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz"
"version" "4.2.6"
"integrity" "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA=="
"resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz"
"version" "4.2.10"


"growly@^1.3.0": "growly@^1.3.0":
"integrity" "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" "integrity" "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE="
"util" "^0.11.0" "util" "^0.11.0"
"vm-browserify" "^1.0.1" "vm-browserify" "^1.0.1"


"node-modules-regexp@^1.0.0":
"integrity" "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA="
"resolved" "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz"
"version" "1.0.0"

"node-notifier@^8.0.0": "node-notifier@^8.0.0":
"integrity" "sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==" "integrity" "sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg=="
"resolved" "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.2.tgz" "resolved" "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.2.tgz"
"version" "2.0.4" "version" "2.0.4"


"pirates@^4.0.1": "pirates@^4.0.1":
"integrity" "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA=="
"resolved" "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz"
"version" "4.0.1"
dependencies:
"node-modules-regexp" "^1.0.0"
"integrity" "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ=="
"resolved" "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz"
"version" "4.0.5"


"pkg-dir@^2.0.0": "pkg-dir@^2.0.0":
"integrity" "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=" "integrity" "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s="
"resolved" "https://registry.npmjs.org/react-singleton-hook/-/react-singleton-hook-3.4.0.tgz" "resolved" "https://registry.npmjs.org/react-singleton-hook/-/react-singleton-hook-3.4.0.tgz"
"version" "3.4.0" "version" "3.4.0"


"react-spring@^8.0.27":
"integrity" "sha512-nDpWBe3ZVezukNRandTeLSPcwwTMjNVu1IDq9qA/AMiUqHuRN4BeSWvKr3eIxxg1vtiYiOLy4FqdfCP5IoP77g=="
"resolved" "https://registry.npmjs.org/react-spring/-/react-spring-8.0.27.tgz"
"version" "8.0.27"
dependencies:
"@babel/runtime" "^7.3.1"
"prop-types" "^15.5.8"

"react-swipeable@^7.0.0":
"integrity" "sha512-NI7KGfQ6gwNFN0Hor3vytYW3iRfMMaivGEuxcADOOfBCx/kqwXE8IfHFxEcxSUkxCYf38COLKYd9EMYZghqaUA=="
"resolved" "https://registry.npmjs.org/react-swipeable/-/react-swipeable-7.0.0.tgz"
"version" "7.0.0"

"react-themeable@^1.1.0": "react-themeable@^1.1.0":
"integrity" "sha512-kl5tQ8K+r9IdQXZd8WLa+xxYN04lLnJXRVhHfdgwsUJr/SlKJxIejoc9z9obEkx1mdqbTw1ry43fxEUwyD9u7w==" "integrity" "sha512-kl5tQ8K+r9IdQXZd8WLa+xxYN04lLnJXRVhHfdgwsUJr/SlKJxIejoc9z9obEkx1mdqbTw1ry43fxEUwyD9u7w=="
"resolved" "https://registry.npmjs.org/react-themeable/-/react-themeable-1.1.0.tgz" "resolved" "https://registry.npmjs.org/react-themeable/-/react-themeable-1.1.0.tgz"
"async-limiter" "~1.0.0" "async-limiter" "~1.0.0"


"ws@^7.4.5": "ws@^7.4.5":
"integrity" "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A=="
"resolved" "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz"
"version" "7.4.6"
"integrity" "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q=="
"resolved" "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz"
"version" "7.5.9"


"ws@~8.2.3": "ws@~8.2.3":
"integrity" "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==" "integrity" "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA=="

読み込み中…
キャンセル
保存