userManagement, add note exam process | 255

main
alireza khaji 2 years ago
parent 3e3bea6402
commit bf4aef4e90
  1. 1
      package.json
  2. 111
      src/components/AnswerSheet/index.js
  3. 4
      src/redux/actions/book.js
  4. 105
      src/redux/reducers/book.js
  5. 22
      src/view/addExam/views/ViewExam.js
  6. 133
      src/view/addExam/views/ViewExamNote.js
  7. 25
      src/view/addExam/views/addQuestionnaireExam.js
  8. 37
      src/view/user-management/index.js
  9. 66
      yarn.lock

@ -26,6 +26,7 @@
"react-indiana-drag-scroll": "^2.1.0", "react-indiana-drag-scroll": "^2.1.0",
"react-leaflet": "^3.2.5", "react-leaflet": "^3.2.5",
"react-multi-date-picker": "^3.3.0", "react-multi-date-picker": "^3.3.0",
"react-pdf": "^5.7.2",
"react-redux": "^7.2.6", "react-redux": "^7.2.6",
"react-router-dom": "^6.2.1", "react-router-dom": "^6.2.1",
"react-scripts": "5.0.0", "react-scripts": "5.0.0",

@ -1,99 +1,106 @@
import React, { useEffect, useState } from "react"; import React, { useEffect, useState } from "react";
import { connect } from "react-redux"; import { connect } from "react-redux";
const AnswerSheet = ({ questionStart, questionEnd, optionsQuantity, selectedCourseId, passAnswers,selectedQId, addExamState }) => { const AnswerSheet = ({
questionStart,
questionEnd,
optionsQuantity,
selectedCourseId,
passAnswers,
selectedQId,
addExamState,
selectedCourse,
}) => {
const [data, setData] = useState([]); const [data, setData] = useState([]);
const [options, setOptions] = useState([]); const [options, setOptions] = useState([]);
const [success, setSuccess] = useState(selectedCourseId); const [success, setSuccess] = useState(selectedCourseId);
useEffect(() => { useEffect(() => {
let array = []; let array = [];
let optionsArray = []; let optionsArray = [];
for (var i = questionStart; i <= questionEnd; i++) { for (var i = Number(questionStart); i <= Number(questionEnd); i++) {
array.push({ array.push({
questionId:i, questionId: i,
answer: null, answer: null,
courseId: selectedCourseId, courseId: selectedCourseId,
questionnaierId: selectedQId questionnaierId: selectedQId,
}); });
} }
for (var i = 1; optionsQuantity ? i <= optionsQuantity : i <=4 ; i++) { for (var i = 1; optionsQuantity ? i <= optionsQuantity : i <= 4; i++) {
optionsArray.push({ optionsArray.push({
id: i, id: i,
active: false, active: false,
}) });
} }
setOptions(optionsArray); setOptions(optionsArray);
setData(array) setData(array);
// passAnswers(data) // passAnswers(data)
// console.log(data, options) // console.log(data, options)
}, [selectedCourseId]) }, [selectedCourseId]);
console.log(selectedCourseId) console.log(selectedCourseId);
console.log("yyyyyyyyyyyyyyyyyyyyy");
return (success == selectedCourseId && success !== undefined? console.log(data);
console.log(selectedCourse);
return success == selectedCourseId && success !== undefined ? (
<div className="w-full flex justify-center"> <div className="w-full flex justify-center">
<button className="bg-green-600 text-white p-4 mt-40 rounded-md font-bold" onClick={() => setSuccess(!selectedCourseId)}>ویرایش پاسخ ها</button> <button
className="bg-green-600 text-white p-4 mt-40 rounded-md font-bold"
onClick={() => setSuccess(!selectedCourseId)}
>
ویرایش پاسخ ها
</button>
</div> </div>
) : (
:
<div className="w-full flex flex-col border border-gray-200 rounded-xl bg-white"> <div className="w-full flex flex-col border border-gray-200 rounded-xl bg-white">
{ {data.map((item, index) => (
data.map((item, index) => (
<div className="w-full flex items-center justify-between h-14 border-b border-gray-200"> <div className="w-full flex items-center justify-between h-14 border-b border-gray-200">
<p className="w-14 flex items-center h-full justify-center border-l border-gray-200"> <p className="w-14 flex items-center h-full justify-center border-l border-gray-200">
{item.questionId} {item.questionId}
</p> </p>
<form className="flex w-full h-full px-8 items-center justify-between border-l border-gray-200"> <form className="flex w-full h-full px-8 items-center justify-between border-l border-gray-200">
{options.map((option) => (
{ <p
options.map( type="radio"
(option) => ( value={option.id}
className={`w-8 h-6 rounded-full border border-gray-400 cursor-pointer ${
<p type='radio' value={option.id} className={`w-8 h-6 rounded-full border border-gray-400 cursor-pointer ${option.id == item.answer ? 'bg-green-500' : 'bg-white'}`} option.id == item.answer ? "bg-green-500" : "bg-white"
}`}
onClick={() => { onClick={() => {
var newArray = [...data]; var newArray = [...data];
newArray[index].answer = option.id; newArray[index].answer = option.id;
setData(newArray) setData(newArray);
// console.log(data) // console.log(data)
}}
></p>
}} > ))}
</p>
)
)
}
</form> </form>
<div className="w-32 ">نمره : ۱</div>
<div className="w-32 ">
نمره : ۱
</div>
</div> </div>
)) ))}
}
{data.length > 0 && {data.length > 0 && (
<div className="w-full flex justify-center"> <div className="w-full flex justify-center">
<button className="my-2 py-2 px-4 rounded-md text-white bg-green-500 w-1/4" <button
onClick={() => {passAnswers(data); setSuccess(selectedCourseId);}} className="my-2 py-2 px-4 rounded-md text-white bg-green-500 w-1/4"
onClick={() => {
>تایید پاسخ ها</button> passAnswers(data);
</div>} setSuccess(selectedCourseId);
}}
>
تایید پاسخ ها
</button>
</div>
)}
</div> </div>
) );
} };
const mapStateToProps = (state) => ({ const mapStateToProps = (state) => ({
grades: state.publicApi.grades, grades: state.publicApi.grades,
addExamState: state.addExamReduser addExamState: state.addExamReduser,
}) });
export default connect(mapStateToProps)(AnswerSheet); export default connect(mapStateToProps)(AnswerSheet);

@ -4,6 +4,10 @@ const book = {
(data = {}) => (data = {}) =>
async (dispatch) => async (dispatch) =>
await proxy.get("product/list", data, { dispatch }), await proxy.get("product/list", data, { dispatch }),
schoolUser:
(data = {}) =>
async (dispatch) =>
await proxy.get("product/schoolUsers", data, { dispatch }),
info: info:
(data = {}) => (data = {}) =>
async (dispatch) => async (dispatch) =>

@ -3,107 +3,8 @@ import { toast } from "react-toastify";
const initialState = { const initialState = {
loading: false, loading: false,
error: null, error: null,
list: [ list: [],
{ schoolUserList :[],
id:1,
name: 'عربی دوازدهم',
product: [{ price: 1000000,}],
vodTeacher: 'علی عبدالمالکی'
}, {
id:1,
name: 'عربی دوازدهم',
product: [{ price: 1000000,}],
vodTeacher: 'علی عبدالمالکی'
}, {
id:1,
name: 'عربی دوازدهم',
product: [{ price: 1000000,}],
vodTeacher: 'علی عبدالمالکی'
}, {
id:1,
name: 'عربی دوازدهم',
product: [{ price: 1000000,}],
vodTeacher: 'علی عبدالمالکی'
}, {
id:1,
name: 'عربی دوازدهم',
product: [{ price: 1000000,}],
vodTeacher: 'علی عبدالمالکی'
}, {
id:1,
name: 'عربی دوازدهم',
product: [{ price: 1000000,}],
vodTeacher: 'علی عبدالمالکی'
}, {
id:1,
name: 'عربی دوازدهم',
product: [{ price: 1000000,}],
vodTeacher: 'علی عبدالمالکی'
}, {
id:1,
name: 'عربی دوازدهم',
product: [{ price: 1000000,}],
vodTeacher: 'علی عبدالمالکی'
}, {
id:1,
name: 'عربی دوازدهم',
product: [{ price: 1000000,}],
vodTeacher: 'علی عبدالمالکی'
}, {
id:1,
name: 'عربی دوازدهم',
product: [{ price: 1000000,}],
vodTeacher: 'علی عبدالمالکی'
}, {
id:1,
name: 'عربی دوازدهم',
product: [{ price: 1000000,}],
vodTeacher: 'علی عبدالمالکی'
}, {
id:1,
name: 'عربی دوازدهم',
product: [{ price: 1000000,}],
vodTeacher: 'علی عبدالمالکی'
}, {
id:1,
name: 'عربی دوازدهم',
product: [{ price: 1000000,}],
vodTeacher: 'علی عبدالمالکی'
}, {
id:1,
name: 'عربی دوازدهم',
product: [{ price: 1000000,}],
vodTeacher: 'علی عبدالمالکی'
}, {
id:1,
name: 'عربی دوازدهم',
product: [{ price: 1000000,}],
vodTeacher: 'علی عبدالمالکی'
}, {
id:1,
name: 'عربی دوازدهم',
product: [{ price: 1000000,}],
vodTeacher: 'علی عبدالمالکی'
},
],
info: null, info: null,
searchResult: [], searchResult: [],
filterResult: [], filterResult: [],
@ -161,6 +62,8 @@ export default function book(state = initialState, action) {
}; };
case "product/info": case "product/info":
return { ...state, loading: false, info: data, error: null }; return { ...state, loading: false, info: data, error: null };
case "product/schoolUser":
return { ...state, loading: false, schoolUserList: data, error: null };
case "book/lesson/active": case "book/lesson/active":
return { return {
...state, ...state,

@ -12,6 +12,7 @@ import Preview from "../../../components/AnswerSheet/preview";
import { exam } from "../../../redux/actions"; import { exam } from "../../../redux/actions";
import moment from "jalali-moment"; import moment from "jalali-moment";
import preview from "../../../components/AnswerSheet/preview"; import preview from "../../../components/AnswerSheet/preview";
import ViewExamNote from "./ViewExamNote";
const ViewExam = ({ const ViewExam = ({
addExamState, addExamState,
@ -26,7 +27,7 @@ const ViewExam = ({
useEffect(() => { useEffect(() => {
window.scrollTo(0, 0); window.scrollTo(0, 0);
console.log("oooooooooooooooooooooooooooooo"); console.log("oooooooooooooooooooooooooooooo");
console.log(addExamState); // console.log(addExamState);
console.log(examId); console.log(examId);
}, []); }, []);
@ -88,7 +89,7 @@ const ViewExam = ({
return ( return (
<div className="w-[95%] flex flex-col mx-10"> <div className="w-[95%] flex flex-col mx-10">
<div className="w-4/5 py-6 flex items-center"> <div className="w-full h-[8vh] flex items-center">
<h1 className="text-2xl font-bold ml-6"> <h1 className="text-2xl font-bold ml-6">
آزمون {examPreview?.exam?.name} آزمون {examPreview?.exam?.name}
</h1> </h1>
@ -98,9 +99,9 @@ const ViewExam = ({
</h3> </h3>
</div> </div>
<div className="w-full mt-6 pb-6 border-b"> <div className="w-full border-b">
{examPreview?.exam?.type && ( {examPreview?.exam?.type === 1 && (
<div className="w-full"> <div className="w-full mt-6 pb-6">
{examPreview?.questions?.map((item, index) => ( {examPreview?.questions?.map((item, index) => (
<div <div
key={index} key={index}
@ -154,9 +155,16 @@ const ViewExam = ({
))} ))}
</div> </div>
)} )}
{examPreview?.exam?.type === 2 && (
<ViewExamNote
notes={examPreview?.notes}
questions={examPreview?.questions}
/>
)}
{/* <ViewExamNote /> */}
</div> </div>
<div className="w-full flex justify-end font-bold mt-6"> <div className="w-full h-[8vh] flex justify-end font-bold mt-[1vh]">
<button <button
className="py-4 font-bold px-6 rounded-lg text-red52 mr-4" className="py-4 font-bold px-6 rounded-lg text-red52 mr-4"
onClick={() => backStep()} onClick={() => backStep()}
@ -164,7 +172,7 @@ const ViewExam = ({
بازگشت به مرحله قبلی بازگشت به مرحله قبلی
</button> </button>
<button <button
className="bg-red52 py-4 px-6 rounded-lg text-white mr-4" className="bg-red52 h-full px-6 rounded-lg text-white mr-4"
onClick={submitHandler} onClick={submitHandler}
> >
تایید آزمون تایید آزمون

@ -0,0 +1,133 @@
import React, { useEffect } from 'react'
import { useState } from 'react';
// import { Document, Page } from "react-pdf";
import { Viewer, Worker } from "@react-pdf-viewer/core";
// Import the styles
import "@react-pdf-viewer/core/lib/styles/index.css";
const optionNum = ["", "الف", "ب", "پ", "ت", "ث", "ج", "چ", "ح"];
const ViewExamNote = ({ notes ,questions}) => {
const [activeNote,setActiveNote]=useState(0);
const [activeFileId, setActiveFileId] = useState(null);
const changeNoteHandler=(index,fileId)=>{
setActiveNote(index);
setActiveFileId(fileId);
}
useEffect(()=>{
setActiveFileId(notes[0].fileId);
},[notes])
console.log("rrrrrrrrrrrr============")
console.log(activeFileId);
const createOptions = (item) => {
let optionsList = [];
for (let i = 0; i < item.type; i++) {
optionsList.push(item[`option${i + 1}`]);
}
console.log("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
console.log(optionsList);
return optionsList;
};
return (
<div className="w-full h-[76vh] py-2 flex items-start justify-between">
{/* ----note------------- */}
<div className="w-1/2 h-full">
<div className="w-full h-10 border flex items-center">
{notes?.map((item, index) => (
<div
key={index}
className="h-full px-3 flex items-center text-sm cursor-pointer"
style={
activeNote === index
? { backgroundColor: "black", color: "#fff" }
: null
}
onClick={() => changeNoteHandler(index, item.fileId)}
>
{item?.name}
</div>
))}
</div>
{activeFileId && (
<div
className="pdf-viewer w-full mt-2"
style={{ height: "calc(100% - 48px)" }}
>
<Worker workerUrl="https://unpkg.com/pdfjs-dist@2.13.216/build/pdf.worker.min.js">
<Viewer
fileUrl={`https://new.andishmand.ir/api/v1/file/${activeFileId}`}
/>
</Worker>
{/* <Document
file={`https://new.andishmand.ir/api/v1/file/${activeFileId}`}
onLoadSuccess={onDocumentLoadSuccess}
>
<Page pageNumber={pageNumber} />
</Document>
<p>
صفحه {pageNumber} از {numPages}
</p> */}
</div>
)}
</div>
{/* ------answers-------------- */}
<div className="w-1/2 h-full border-r overflow-y-auto px-3">
{questions?.map((item, index) => (
<div key={index} className="w-full mb-4 border-b border-[#d3d3d3]">
<div className="w-full flex items-center">
<div className="w-8 h-8 bg-gray-300 flex items-center justify-center rounded-md ml-2">
{index + 1}
</div>
<div className="w-full text-lg text-right">
{item?.text}{" "}
<span className="text-sm">{`(نمره : ${
item?.score || 1
})`}</span>
</div>
</div>
<div className="w-full mt-4">
{createOptions(item).map((choice, index2) => (
<div key={index2} className="w-full flex items-stretch mb-2">
<div
className="w-12 py-3 rounded-r-md flex items-center justify-center bg-gray-300"
style={
index2 + 1 === Number(item.answer)
? { backgroundColor: "#65A30D", color: "#fff" }
: null
}
>
{optionNum[index2 + 1]}
</div>
<div
className="py-3 rounded-l-md flex items-center px-2 bg-gray-200"
style={
index2 + 1 === Number(item.answer)
? {
backgroundColor: "#84CC16",
color: "#fff",
width: "calc(100% - 48px)",
}
: { width: "calc(100% - 48px)" }
}
>
{choice}
</div>
</div>
))}
</div>
</div>
))}
</div>
</div>
);
};
export default ViewExamNote

@ -26,6 +26,7 @@ let lastCourseIndex;
let lastQuestionType = 2; let lastQuestionType = 2;
let eqCounter = 0; let eqCounter = 0;
let eqCounter2 = 0; let eqCounter2 = 0;
let lastSubexamId;
const AddQuestionnaireExam = ({ const AddQuestionnaireExam = ({
grades, grades,
addExamState, addExamState,
@ -135,7 +136,9 @@ const AddQuestionnaireExam = ({
// type: "", // type: "",
// payload: newQuestionaire, // payload: newQuestionaire,
// }); // });
addExamQuestionaires(newQuestionaire); let newQuestionaireWithNewId = newQuestionaire;
newQuestionaireWithNewId = { ...newQuestionaireWithNewId,id:Math.ceil(Math.random()*10000)};
addExamQuestionaires(newQuestionaireWithNewId);
setQuestionairePopUp(false); setQuestionairePopUp(false);
addNote({ addNote({
name: newQuestionaire.name, name: newQuestionaire.name,
@ -160,6 +163,8 @@ const AddQuestionnaireExam = ({
console.log(NoteList); console.log(NoteList);
console.log("========subexamArray========="); console.log("========subexamArray=========");
console.log(subexamArray); console.log(subexamArray);
console.log("---==========questionnaires==========-----");
console.log(addExamState?.questionnaires);
const submitLessonhandler = () => { const submitLessonhandler = () => {
addQuestionnaireCourse(newCourse); addQuestionnaireCourse(newCourse);
setAddCoursePopup(false); setAddCoursePopup(false);
@ -269,18 +274,24 @@ const AddQuestionnaireExam = ({
// questionStart; // questionStart;
// questionEnd; // questionEnd;
let newList = subexamArray; let newList = subexamArray;
let Index =0;
for(let i=0;i<newList.length;i++){
if(newList[i]?.subexamId===lastSubExamAdd){
Index = i;
}
}
for (let i = 0; i < data.length; i++) { for (let i = 0; i < data.length; i++) {
if (newList[lastCourseIndex]?.question) { if (newList[Index]?.question) {
newList[lastCourseIndex].question = [ newList[Index].question = [
...newList[lastCourseIndex]?.question, ...newList[Index]?.question,
{ {
number: Number(newCourse.questionStart) + i, number: Number(newCourse.questionStart) + i,
coefficient: subexamArray[lastCourseIndex]?.coefficient, coefficient: subexamArray[Index]?.coefficient,
answer: data[i].answer, answer: data[i].answer,
}, },
]; ];
} else { } else {
newList[lastCourseIndex].question = [ newList[Index].question = [
{ {
number: Number(newCourse.questionStart) + i, number: Number(newCourse.questionStart) + i,
coefficient: subexamArray[i]?.coefficient, coefficient: subexamArray[i]?.coefficient,
@ -709,8 +720,10 @@ const AddQuestionnaireExam = ({
<div className="w-4/5 py-8"> <div className="w-4/5 py-8">
<AnswerSheet <AnswerSheet
selectedCourseId={selectedCourse?.id} selectedCourseId={selectedCourse?.id}
selectedCourse={selectedCourse}
selectedQId={selectedQuestionare?.id} selectedQId={selectedQuestionare?.id}
questionEnd={selectedCourse?.questionEnd} questionEnd={selectedCourse?.questionEnd}
optionsQuantity={selectedCourse?.optionsNumber}
questionStart={selectedCourse?.questionStart} questionStart={selectedCourse?.questionStart}
passAnswers={(data) => { passAnswers={(data) => {
// dispatch({ type: "ADD_ANSWERS", payload: data }) // dispatch({ type: "ADD_ANSWERS", payload: data })

@ -7,7 +7,7 @@ import Table from "../../components/Table";
import * as actions from "../../redux/actions"; import * as actions from "../../redux/actions";
import Editor from "./layouts/Editor"; import Editor from "./layouts/Editor";
const source = "user"; const source = "book";
const title = " مدیریت کاربران"; const title = " مدیریت کاربران";
const UserManagement = ({ const UserManagement = ({
@ -18,11 +18,12 @@ const UserManagement = ({
add, add,
update, update,
getSchoolList, getSchoolList,
schoolList schoolList,
schoolUserList,
}) => { }) => {
useMemo(() => { useMemo(() => {
// getData({ num: 1000 }); // getData({ num: 1000 });
getSchoolList({ productType :7}); getSchoolList({ productType: 7 });
}, []); }, []);
// console.log(info); // console.log(info);
console.log(schoolList); console.log(schoolList);
@ -47,27 +48,43 @@ const UserManagement = ({
// ]); // ]);
const [activeOtherTab, setActiveOtherTab] = useState(false); const [activeOtherTab, setActiveOtherTab] = useState(false);
const [fake, setFake] = useState(0); const [fake, setFake] = useState(0);
const [schoolId, setSchoolId] = useState(null);
const [setp, setStep] = useState(1);
const submitHandler = () => {
getData({ id: schoolId });
setStep(2);
};
return ( return (
<div <div
className="UserManagement w-[95.5%] h-screen max-h-screen bg-[#F8F8F8] overflow-y-auto rtl relative" className="UserManagement w-[95.5%] h-screen max-h-screen bg-[#F8F8F8] overflow-y-auto rtl relative"
// style={{ width: "calc(100% - 4.5%)" }} // style={{ width: "calc(100% - 4.5%)" }}
> >
{setp === 1 && (
<div className="w-full h-full absolute top-0 left-0 bg-[#ffffff10] backdrop-blur z-[100] flex items-center justify-center"> <div className="w-full h-full absolute top-0 left-0 bg-[#ffffff10] backdrop-blur z-[100] flex items-center justify-center">
<div className="w-1/2 py-4 px-2 rounded bg-white flex items-center justify-between"> <div className="w-1/2 py-4 px-2 rounded bg-white flex items-center justify-between">
<select <select
name="UserManagement-school-select" name="UserManagement-school-select"
id="UserManagement-school-select" id="UserManagement-school-select"
className="w-[70%] h-12 rounded px-1 py-0" className="w-[70%] h-12 rounded px-1 py-0"
onChange={(e) => setSchoolId(e.target.value)}
> >
{schoolList?.map((item,index)=>( <option value={null}>انتخاب مدرسه</option>
<option key={index} value={item.id}>{item?.name}</option> {schoolList?.map((item, index) => (
<option key={index} value={item.id}>
{item?.name}
</option>
))} ))}
</select> </select>
<div className="h-12 w-[25%] rounded flex items-center justify-center text-white bg-red52"> <div
className="h-12 w-[25%] rounded flex items-center justify-center text-white bg-red52 cursor-pointer"
onClick={submitHandler}
>
تایید تایید
</div> </div>
</div> </div>
</div> </div>
)}
<div className="flex flex-1 w-full pt-12 pb-4"> <div className="flex flex-1 w-full pt-12 pb-4">
<Table <Table
data={info.list || []} data={info.list || []}
@ -89,13 +106,15 @@ const UserManagement = ({
); );
}; };
const mapStateToProps = (state) => ({ const mapStateToProps = (state) => ({
info: state[source], info: state[source].schoolUserList,
tabs: state.table.tabs, tabs: state.table.tabs,
schoolList: state.book.list schoolList: state.book.list,
schoolUserList: state.book.schoolUserList,
}); });
const mapDispatchToProps = { const mapDispatchToProps = {
getData: actions[source].list, // getData: actions[source].list,
getData: actions[source].schoolUser,
setTabs: actions.table.setTab, setTabs: actions.table.setTab,
update: actions[source].update, update: actions[source].update,
add: actions[source].add, add: actions[source].add,

@ -1014,6 +1014,13 @@
core-js-pure "^3.19.0" core-js-pure "^3.19.0"
regenerator-runtime "^0.13.4" regenerator-runtime "^0.13.4"
"@babel/runtime@^7.0.0":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.6.tgz#6a1ef59f838debd670421f8c7f2cbb8da9751580"
integrity sha512-t9wi7/AW6XtKahAe20Yw0/mMljKq0B1r2fPdvaAdV/KPDZewFXdaaa6K7lxmZBZ8FBNpCiAT6iHPmd6QO9bKfQ==
dependencies:
regenerator-runtime "^0.13.4"
"@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2":
version "7.16.5" version "7.16.5"
resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.5.tgz" resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.5.tgz"
@ -4359,7 +4366,7 @@ file-entry-cache@^6.0.1:
dependencies: dependencies:
flat-cache "^3.0.4" flat-cache "^3.0.4"
file-loader@^6.2.0: file-loader@^6.0.0, file-loader@^6.2.0:
version "6.2.0" version "6.2.0"
resolved "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz" resolved "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz"
integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==
@ -6149,6 +6156,11 @@ magic-string@^0.25.0, magic-string@^0.25.7:
dependencies: dependencies:
sourcemap-codec "^1.4.4" sourcemap-codec "^1.4.4"
make-cancellable-promise@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/make-cancellable-promise/-/make-cancellable-promise-1.1.0.tgz#b4e9fcb31db3a27417e44f80cffa598ec9ac9f4e"
integrity sha512-X5Opjm2xcZsOLuJ+Bnhb4t5yfu4ehlA3OKEYLtqUchgVzL/QaqW373ZUVxVHKwvJ38cmYuR4rAHD2yUvAIkTPA==
make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0:
version "3.1.0" version "3.1.0"
resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz"
@ -6156,6 +6168,11 @@ make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0:
dependencies: dependencies:
semver "^6.0.0" semver "^6.0.0"
make-event-props@^1.1.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/make-event-props/-/make-event-props-1.3.0.tgz#2434cb390d58bcf40898d009ef5b1f936de9671b"
integrity sha512-oWiDZMcVB1/A487251hEWza1xzgCzl6MXxe9aF24l5Bt9N9UEbqTqKumEfuuLhmlhRZYnc+suVvW4vUs8bwO7Q==
makeerror@1.0.12: makeerror@1.0.12:
version "1.0.12" version "1.0.12"
resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz"
@ -6229,11 +6246,21 @@ memoize-one@^5.1.1:
resolved "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz" resolved "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz"
integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==
merge-class-names@^1.1.1:
version "1.4.2"
resolved "https://registry.yarnpkg.com/merge-class-names/-/merge-class-names-1.4.2.tgz#78d6d95ab259e7e647252a7988fd25a27d5a8835"
integrity sha512-bOl98VzwCGi25Gcn3xKxnR5p/WrhWFQB59MS/aGENcmUc6iSm96yrFDF0XSNurX9qN4LbJm0R9kfvsQ17i8zCw==
merge-descriptors@1.0.1: merge-descriptors@1.0.1:
version "1.0.1" version "1.0.1"
resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz"
integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=
merge-refs@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/merge-refs/-/merge-refs-1.0.0.tgz#388348bce22e623782c6df9d3c4fc55888276120"
integrity sha512-WZ4S5wqD9FCR9hxkLgvcHJCBxzXzy3VVE6p8W2OzxRzB+hLRlcadGE2bW9xp2KSzk10rvp4y+pwwKO6JQVguMg==
merge-stream@^2.0.0: merge-stream@^2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz"
@ -6775,6 +6802,11 @@ pbf@^3.2.1:
ieee754 "^1.1.12" ieee754 "^1.1.12"
resolve-protobuf-schema "^2.1.0" resolve-protobuf-schema "^2.1.0"
pdfjs-dist@2.12.313:
version "2.12.313"
resolved "https://registry.yarnpkg.com/pdfjs-dist/-/pdfjs-dist-2.12.313.tgz#62f2273737bb956267ae2e02cdfaddcb1099819c"
integrity sha512-1x6iXO4Qnv6Eb+YFdN5JdUzt4pAkxSp3aLAYPX93eQCyg/m7QFzXVWJHJVtoW48CI8HCXju4dSkhQZwoheL5mA==
pdfjs-dist@^2.13.216: pdfjs-dist@^2.13.216:
version "2.13.216" version "2.13.216"
resolved "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.13.216.tgz" resolved "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.13.216.tgz"
@ -7423,6 +7455,15 @@ prompts@^2.0.1, prompts@^2.4.2:
kleur "^3.0.3" kleur "^3.0.3"
sisteransi "^1.0.5" sisteransi "^1.0.5"
prop-types@^15.6.2:
version "15.8.1"
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"
integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
dependencies:
loose-envify "^1.4.0"
object-assign "^4.1.1"
react-is "^16.13.1"
prop-types@^15.7.2: prop-types@^15.7.2:
version "15.8.0" version "15.8.0"
resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.0.tgz" resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.0.tgz"
@ -7673,6 +7714,22 @@ react-multi-date-picker@^3.3.0:
react-date-object "^2.1.5" react-date-object "^2.1.5"
react-element-popper "^2.1.6" react-element-popper "^2.1.6"
react-pdf@^5.7.2:
version "5.7.2"
resolved "https://registry.yarnpkg.com/react-pdf/-/react-pdf-5.7.2.tgz#c458dedf7983822668b40dcac1eae052c1f6e056"
integrity sha512-hdDwvf007V0i2rPCqQVS1fa70CXut17SN3laJYlRHzuqcu8sLLjEoeXihty6c0Ev5g1mw31b8OT8EwRw1s8C4g==
dependencies:
"@babel/runtime" "^7.0.0"
file-loader "^6.0.0"
make-cancellable-promise "^1.0.0"
make-event-props "^1.1.0"
merge-class-names "^1.1.1"
merge-refs "^1.0.0"
pdfjs-dist "2.12.313"
prop-types "^15.6.2"
tiny-invariant "^1.0.0"
tiny-warning "^1.0.0"
react-redux@^7.2.0, react-redux@^7.2.6: react-redux@^7.2.0, react-redux@^7.2.6:
version "7.2.6" version "7.2.6"
resolved "https://registry.npmjs.org/react-redux/-/react-redux-7.2.6.tgz" resolved "https://registry.npmjs.org/react-redux/-/react-redux-7.2.6.tgz"
@ -8783,11 +8840,16 @@ timsort@^0.3.0:
resolved "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz" resolved "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz"
integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=
tiny-invariant@^1.0.6: tiny-invariant@^1.0.0, tiny-invariant@^1.0.6:
version "1.2.0" version "1.2.0"
resolved "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.2.0.tgz" resolved "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.2.0.tgz"
integrity sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg== integrity sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg==
tiny-warning@^1.0.0:
version "1.0.3"
resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754"
integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==
tinyqueue@^2.0.3: tinyqueue@^2.0.3:
version "2.0.3" version "2.0.3"
resolved "https://registry.npmjs.org/tinyqueue/-/tinyqueue-2.0.3.tgz" resolved "https://registry.npmjs.org/tinyqueue/-/tinyqueue-2.0.3.tgz"

Loading…
Cancel
Save