touchstudy-core 0.1.24 → 0.1.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/iconMore.d.ts +3 -0
- package/dist/assets/iconPlusCircle.d.ts +3 -0
- package/dist/components/Buttons/ActionButtons.d.ts +16 -0
- package/dist/components/Chats/ChatHeader.d.ts +3 -0
- package/dist/components/Chats/ChatItem.d.ts +5 -0
- package/dist/components/Chats/ChatList.d.ts +2 -0
- package/dist/components/Chats/apiClient/conversationService.d.ts +2 -0
- package/dist/components/Chats/components/ContentTooltip.d.ts +7 -0
- package/dist/components/Chats/components/CustomTooltip.d.ts +2 -0
- package/dist/components/Chats/components/UpdateMessageDialog.d.ts +12 -0
- package/dist/components/Chats/configs/types.d.ts +4 -0
- package/dist/components/Chats/hooks/useChatContainer.d.ts +6 -1
- package/dist/components/Chats/hooks/useDialog.d.ts +5 -2
- package/dist/components/Chats/hooks/useMessageList.d.ts +4 -0
- package/dist/components/Chats/hooks/useTooltip.d.ts +6 -0
- package/dist/components/Inputs/SearchInput.d.ts +9 -0
- package/dist/components/List/LayoutList.d.ts +6 -0
- package/dist/components/Selectors/SubjectSelector.d.ts +14 -0
- package/dist/components/Sort/SortIcon.d.ts +7 -0
- package/dist/components/Tables/EmptyRow.d.ts +3 -0
- package/dist/components/Tables/TableHeader.d.ts +9 -0
- package/dist/containers/ExamResult/configs/constants.d.ts +4 -0
- package/dist/containers/ExamResult/configs/types.d.ts +7 -1
- package/dist/containers/ExamResult/hooks/useExamResult.d.ts +1 -0
- package/dist/containers/Textbooks/apiClient/articleService.d.ts +7 -0
- package/dist/containers/Textbooks/apiClient/chapterService.d.ts +7 -0
- package/dist/containers/Textbooks/apiClient/textbookService.d.ts +7 -0
- package/dist/containers/Textbooks/components/ArticleDialog.d.ts +11 -0
- package/dist/containers/Textbooks/components/ChapterBox.d.ts +4 -0
- package/dist/containers/Textbooks/components/ChapterNameDialog.d.ts +10 -0
- package/dist/containers/Textbooks/components/TextbookActionButtons.d.ts +11 -0
- package/dist/containers/Textbooks/configs/constants.d.ts +9 -0
- package/dist/containers/Textbooks/configs/interfaces.d.ts +19 -0
- package/dist/containers/Textbooks/configs/types.d.ts +122 -0
- package/dist/containers/Textbooks/hooks/useTextbookDetail.d.ts +44 -0
- package/dist/containers/Textbooks/hooks/useTextbookList.d.ts +21 -0
- package/dist/containers/Textbooks/views/TextbookDetail.d.ts +10 -0
- package/dist/containers/Textbooks/views/TextbookList.d.ts +8 -0
- package/dist/containers/Textbooks/views/index.d.ts +3 -0
- package/dist/index.css +177 -55
- package/dist/index.d.ts +6 -2
- package/dist/index.js +3474 -767
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +3471 -770
- package/dist/index.modern.js.map +1 -1
- package/dist/layouts/LayoutContext.d.ts +1 -0
- package/dist/redux/commons/action.d.ts +3 -0
- package/dist/services/subjectService.d.ts +2 -0
- package/dist/utils/times.d.ts +4 -0
- package/dist/utils/types/pusher.d.ts +5 -0
- package/package.json +3 -1
package/dist/index.css
CHANGED
@@ -332,6 +332,36 @@
|
|
332
332
|
background-color: #0d6efd;
|
333
333
|
border-color: #0d6efd !important; }
|
334
334
|
|
335
|
+
._mQvLF {
|
336
|
+
color: #a8a8a8;
|
337
|
+
cursor: pointer; }
|
338
|
+
._mQvLF > svg._3oAH- {
|
339
|
+
color: #242424; }
|
340
|
+
._mQvLF > svg:first-child {
|
341
|
+
margin-bottom: -0.5rem; }
|
342
|
+
._mQvLF > svg:last-child {
|
343
|
+
margin-top: -0.4rem; }
|
344
|
+
|
345
|
+
._3W3aw {
|
346
|
+
display: block;
|
347
|
+
width: 100%;
|
348
|
+
padding: 0.375rem 2.25rem 0.375rem 0.75rem;
|
349
|
+
font-size: 1rem;
|
350
|
+
font-weight: 400;
|
351
|
+
line-height: 1.5;
|
352
|
+
color: #212529;
|
353
|
+
-webkit-appearance: none;
|
354
|
+
-moz-appearance: none;
|
355
|
+
appearance: none;
|
356
|
+
background-color: #fff;
|
357
|
+
background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iOCIgdmlld0JveD0iMCAwIDEyIDgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik0wLjc1Mzg3NiAxLjgxMDYyTDUuMzk1MDEgNy4yMjY3MkM1LjQ2OTgyIDcuMzEzOTcgNS41NjI2MiA3LjM4NDAxIDUuNjY3MDQgNy40MzIwM0M1Ljc3MTQ2IDcuNDgwMDUgNS44ODUwNCA3LjUwNDkxIDUuOTk5OTcgNy41MDQ5MUM2LjExNDkgNy41MDQ5MSA2LjIyODQ4IDcuNDgwMDUgNi4zMzI5IDcuNDMyMDNDNi40MzczMiA3LjM4NDAxIDYuNTMwMTIgNy4zMTM5NyA2LjYwNDkzIDcuMjI2NzJMMTEuMjQ2MSAxLjgxMDYyQzExLjY4OSAxLjI5MzY1IDExLjMyMTggMC40OTUxMTcgMTAuNjQxMSAwLjQ5NTExN0gxLjM1NzUxQzAuNjc2ODQ1IDAuNDk1MTE3IDAuMzA5NjE5IDEuMjkzNjUgMC43NTM4NzYgMS44MTA2MloiIGZpbGw9IiM0MTRFNjIiLz4KPC9zdmc+Cg=="), none;
|
358
|
+
background-repeat: no-repeat;
|
359
|
+
background-position: right 0.75rem center;
|
360
|
+
background-size: 10px 7px;
|
361
|
+
border: 1px solid #dee2e6;
|
362
|
+
border-radius: 0.375rem;
|
363
|
+
transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out; }
|
364
|
+
|
335
365
|
._2oGcJ {
|
336
366
|
width: 48px;
|
337
367
|
height: 48px;
|
@@ -456,7 +486,7 @@
|
|
456
486
|
display: none; }
|
457
487
|
|
458
488
|
._395lb {
|
459
|
-
padding:
|
489
|
+
padding: 12px !important;
|
460
490
|
display: flex !important;
|
461
491
|
align-items: center !important;
|
462
492
|
color: #FFFFFF !important;
|
@@ -521,6 +551,32 @@
|
|
521
551
|
._3hz3H > div:last-child {
|
522
552
|
padding-bottom: 16px; }
|
523
553
|
|
554
|
+
._MMQxP {
|
555
|
+
margin-bottom: 0.5rem; }
|
556
|
+
|
557
|
+
._1mJfc {
|
558
|
+
display: block;
|
559
|
+
width: 100%;
|
560
|
+
padding: 0.375rem 0.75rem;
|
561
|
+
font-size: 1rem;
|
562
|
+
font-weight: 400;
|
563
|
+
line-height: 1.5;
|
564
|
+
color: #212529;
|
565
|
+
-webkit-appearance: none;
|
566
|
+
-moz-appearance: none;
|
567
|
+
appearance: none;
|
568
|
+
background-color: #fff;
|
569
|
+
background-clip: padding-box;
|
570
|
+
border: 1px solid #dee2e6;
|
571
|
+
border-radius: 0.375rem;
|
572
|
+
transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out; }
|
573
|
+
|
574
|
+
._jADIA {
|
575
|
+
font-weight: 600 !important;
|
576
|
+
font-size: 13px !important;
|
577
|
+
line-height: 15.51px !important;
|
578
|
+
color: #202B37 !important; }
|
579
|
+
|
524
580
|
._2uc_W {
|
525
581
|
padding: 0.5rem 1.5rem;
|
526
582
|
border-radius: 6px;
|
@@ -623,9 +679,7 @@
|
|
623
679
|
background-color: #5458d5; }
|
624
680
|
|
625
681
|
._eDBpS {
|
626
|
-
background-color: #ffffff;
|
627
|
-
border: 1px solid #e4e7ec;
|
628
|
-
border-radius: 6px; }
|
682
|
+
background-color: #ffffff; }
|
629
683
|
._eDBpS ._2fMq3 {
|
630
684
|
border-bottom: 1px solid #e4e7ec;
|
631
685
|
padding: 12px 24px; }
|
@@ -636,11 +690,11 @@
|
|
636
690
|
color: #414e62; }
|
637
691
|
._eDBpS ._3gEYh {
|
638
692
|
padding: 8px 12px;
|
639
|
-
border-
|
693
|
+
border-top: 1px solid #e4e7ec;
|
640
694
|
display: flex;
|
641
695
|
flex-direction: row;
|
642
|
-
|
643
|
-
|
696
|
+
justify-content: end;
|
697
|
+
gap: 8px; }
|
644
698
|
._eDBpS ._3gEYh span:nth-child(1) {
|
645
699
|
font-family: "Pretendard";
|
646
700
|
font-weight: 600;
|
@@ -716,7 +770,7 @@
|
|
716
770
|
font-family: "Pretendard";
|
717
771
|
font-weight: 600;
|
718
772
|
font-size: 12px;
|
719
|
-
color: #
|
773
|
+
color: #414E62; }
|
720
774
|
._eDBpS ._2K_sx ._1Z_F3 {
|
721
775
|
font-family: "Pretendard";
|
722
776
|
font-weight: 600;
|
@@ -756,7 +810,8 @@
|
|
756
810
|
flex-direction: row;
|
757
811
|
align-items: center;
|
758
812
|
border: 1px solid #e4e7ec;
|
759
|
-
border-radius: 6px;
|
813
|
+
border-radius: 6px;
|
814
|
+
margin: 24px; }
|
760
815
|
|
761
816
|
._1fNkb {
|
762
817
|
width: 36px;
|
@@ -788,61 +843,66 @@
|
|
788
843
|
font-size: 16px;
|
789
844
|
color: #414e62; }
|
790
845
|
|
791
|
-
._1_fJu {
|
792
|
-
|
793
|
-
|
794
|
-
|
846
|
+
._1_fJu ._o1txm {
|
847
|
+
font-family: "Pretendard";
|
848
|
+
padding: 10.5px 24px;
|
849
|
+
font-weight: 700;
|
850
|
+
font-size: 16px;
|
851
|
+
color: #414e62; }
|
852
|
+
|
853
|
+
._1_fJu ._bT5nf thead {
|
854
|
+
background-color: #f9fafb; }
|
855
|
+
._1_fJu ._bT5nf thead th {
|
795
856
|
font-family: "Pretendard";
|
796
|
-
|
797
|
-
font-
|
798
|
-
|
799
|
-
|
800
|
-
._1_fJu ._bT5nf thead {
|
801
|
-
|
802
|
-
|
803
|
-
|
804
|
-
|
805
|
-
|
806
|
-
|
807
|
-
|
808
|
-
|
809
|
-
|
810
|
-
|
811
|
-
|
812
|
-
|
857
|
+
font-weight: 600;
|
858
|
+
font-size: 13px;
|
859
|
+
color: #97a1af;
|
860
|
+
padding: 12px 16px; }
|
861
|
+
._1_fJu ._bT5nf thead ._3Umg0 {
|
862
|
+
border-right: 1px solid #e4e7ec;
|
863
|
+
padding: 12px 16px; }
|
864
|
+
|
865
|
+
._1_fJu ._bT5nf tbody {
|
866
|
+
font-family: "Pretendard";
|
867
|
+
font-weight: 500;
|
868
|
+
font-size: 13px;
|
869
|
+
border-bottom: 1px solid #e4e7ec; }
|
870
|
+
._1_fJu ._bT5nf tbody td {
|
871
|
+
vertical-align: middle; }
|
872
|
+
._1_fJu ._bT5nf tbody ._3dRMF {
|
873
|
+
padding: 8px 16px;
|
874
|
+
border-right: 1px solid #e4e7ec;
|
875
|
+
color: #97a1af; }
|
876
|
+
._1_fJu ._bT5nf tbody ._2tcBP {
|
877
|
+
text-align: center;
|
813
878
|
font-family: "Pretendard";
|
814
|
-
font-weight:
|
879
|
+
font-weight: 700;
|
815
880
|
font-size: 13px; }
|
816
|
-
|
817
|
-
|
818
|
-
|
819
|
-
|
820
|
-
|
821
|
-
|
822
|
-
._1_fJu ._bT5nf tbody .
|
823
|
-
text-align: center;
|
881
|
+
._1_fJu ._bT5nf tbody ._1AFeb {
|
882
|
+
display: flex;
|
883
|
+
flex-direction: row;
|
884
|
+
justify-content: center;
|
885
|
+
align-items: center;
|
886
|
+
gap: 10px; }
|
887
|
+
._1_fJu ._bT5nf tbody ._1AFeb span {
|
824
888
|
font-family: "Pretendard";
|
825
|
-
font-weight:
|
826
|
-
font-size:
|
827
|
-
|
828
|
-
|
829
|
-
flex-direction: row;
|
830
|
-
justify-content: center;
|
831
|
-
align-items: center;
|
832
|
-
gap: 10px; }
|
833
|
-
._1_fJu ._bT5nf tbody ._1AFeb span {
|
834
|
-
font-family: "Pretendard";
|
835
|
-
font-weight: 600;
|
836
|
-
font-size: 11px;
|
837
|
-
padding: 4px 8px;
|
838
|
-
border-radius: 6px; }
|
889
|
+
font-weight: 600;
|
890
|
+
font-size: 11px;
|
891
|
+
padding: 4px 8px;
|
892
|
+
border-radius: 6px; }
|
839
893
|
|
840
894
|
._oTqG7 {
|
841
|
-
border: 1px solid #e4e7ec;
|
842
|
-
|
895
|
+
border-top: 1px solid #e4e7ec;
|
896
|
+
background-color: #F9FAFB; }
|
843
897
|
._oTqG7 :hover {
|
844
898
|
cursor: pointer; }
|
845
899
|
|
900
|
+
._oTqG7:first-child {
|
901
|
+
border-top: none; }
|
902
|
+
|
903
|
+
._oTqG7:last-child {
|
904
|
+
border-bottom: 1px solid #e4e7ec; }
|
905
|
+
|
846
906
|
._35eIx {
|
847
907
|
display: flex;
|
848
908
|
border-bottom: 1px solid #e4e7ec;
|
@@ -885,6 +945,7 @@
|
|
885
945
|
font-family: "Pretendard";
|
886
946
|
font-weight: 500;
|
887
947
|
font-size: 12px;
|
948
|
+
background-color: #FFF;
|
888
949
|
color: #f34b4b; }
|
889
950
|
._2dpMR ._1lSOX {
|
890
951
|
min-width: 36px;
|
@@ -900,6 +961,7 @@
|
|
900
961
|
font-family: "Pretendard";
|
901
962
|
font-weight: 500;
|
902
963
|
font-size: 12px;
|
964
|
+
background-color: #FFF;
|
903
965
|
color: #1ee288; }
|
904
966
|
._1ONUt ._1lSOX {
|
905
967
|
min-width: 36px;
|
@@ -1033,6 +1095,26 @@
|
|
1033
1095
|
overflow-x: auto;
|
1034
1096
|
-webkit-overflow-scrolling: touch; }
|
1035
1097
|
|
1098
|
+
._1RYOQ {
|
1099
|
+
margin-bottom: 0.5rem; }
|
1100
|
+
|
1101
|
+
._3VRVT {
|
1102
|
+
display: block;
|
1103
|
+
width: 100%;
|
1104
|
+
padding: 0.375rem 0.75rem;
|
1105
|
+
font-size: 1rem;
|
1106
|
+
font-weight: 400;
|
1107
|
+
line-height: 1.5;
|
1108
|
+
color: #212529;
|
1109
|
+
-webkit-appearance: none;
|
1110
|
+
-moz-appearance: none;
|
1111
|
+
appearance: none;
|
1112
|
+
background-color: #fff;
|
1113
|
+
background-clip: padding-box;
|
1114
|
+
border: 1px solid #dee2e6;
|
1115
|
+
border-radius: 0.375rem;
|
1116
|
+
transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out; }
|
1117
|
+
|
1036
1118
|
._3oCSh {
|
1037
1119
|
font-weight: 600 !important;
|
1038
1120
|
font-size: 13px !important;
|
@@ -1051,3 +1133,43 @@
|
|
1051
1133
|
padding: 12px !important;
|
1052
1134
|
border-radius: 6px !important;
|
1053
1135
|
background-color: #5458D5 !important; }
|
1136
|
+
|
1137
|
+
._3xZHo p {
|
1138
|
+
font-size: 13px;
|
1139
|
+
font-weight: 700;
|
1140
|
+
color: #6d6e6f;
|
1141
|
+
margin: 0; }
|
1142
|
+
|
1143
|
+
._3xZHo button {
|
1144
|
+
border-radius: 6px;
|
1145
|
+
padding: 8px 12px;
|
1146
|
+
border: 1px solid #aeabac;
|
1147
|
+
background: #fff;
|
1148
|
+
cursor: pointer;
|
1149
|
+
display: flex;
|
1150
|
+
gap: 8px;
|
1151
|
+
align-items: center; }
|
1152
|
+
|
1153
|
+
._1DtWq {
|
1154
|
+
display: flex;
|
1155
|
+
justify-content: space-between; }
|
1156
|
+
|
1157
|
+
._1a_vw {
|
1158
|
+
display: block;
|
1159
|
+
width: 100%;
|
1160
|
+
padding: 0.375rem 2.25rem 0.375rem 0.75rem;
|
1161
|
+
font-size: 1rem;
|
1162
|
+
font-weight: 400;
|
1163
|
+
line-height: 1.5;
|
1164
|
+
color: #212529;
|
1165
|
+
-webkit-appearance: none;
|
1166
|
+
-moz-appearance: none;
|
1167
|
+
appearance: none;
|
1168
|
+
background-color: #fff;
|
1169
|
+
background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iOCIgdmlld0JveD0iMCAwIDEyIDgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik0wLjc1Mzg3NiAxLjgxMDYyTDUuMzk1MDEgNy4yMjY3MkM1LjQ2OTgyIDcuMzEzOTcgNS41NjI2MiA3LjM4NDAxIDUuNjY3MDQgNy40MzIwM0M1Ljc3MTQ2IDcuNDgwMDUgNS44ODUwNCA3LjUwNDkxIDUuOTk5OTcgNy41MDQ5MUM2LjExNDkgNy41MDQ5MSA2LjIyODQ4IDcuNDgwMDUgNi4zMzI5IDcuNDMyMDNDNi40MzczMiA3LjM4NDAxIDYuNTMwMTIgNy4zMTM5NyA2LjYwNDkzIDcuMjI2NzJMMTEuMjQ2MSAxLjgxMDYyQzExLjY4OSAxLjI5MzY1IDExLjMyMTggMC40OTUxMTcgMTAuNjQxMSAwLjQ5NTExN0gxLjM1NzUxQzAuNjc2ODQ1IDAuNDk1MTE3IDAuMzA5NjE5IDEuMjkzNjUgMC43NTM4NzYgMS44MTA2MloiIGZpbGw9IiM0MTRFNjIiLz4KPC9zdmc+Cg=="), none;
|
1170
|
+
background-repeat: no-repeat;
|
1171
|
+
background-position: right 0.75rem center;
|
1172
|
+
background-size: 10px 7px;
|
1173
|
+
border: 1px solid #dee2e6;
|
1174
|
+
border-radius: 0.375rem;
|
1175
|
+
transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out; }
|
package/dist/index.d.ts
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import { setLoading, setAlert, setUser, setLanguage, setReFetchUserAcademies } from "./redux/commons/action";
|
1
|
+
import { setLoading, setAlert, setUser, setLanguage, setReFetchUserAcademies, setReadyRegisterPusher } from "./redux/commons/action";
|
2
2
|
import { BASE_URL, SUPER_ADMIN_BASE_URL, ACCESS_TOKEN, PUSHER_CONFIG, EXAM_CHANNEL, EXAM_STUDENT_CHANNEL, DATE_MIN_VALUE, DATE_TIME_MIN_VALUE, ACADEMY_DOMAIN, getAcademyDomain, AcademyHeaders } from "./utils/constants";
|
3
3
|
import utcToLocalTime from "./utils/utcToLocalTime";
|
4
4
|
import Login from "./containers/Login/views/Login";
|
@@ -33,6 +33,7 @@ import { ConversationResponse } from "./components/Chats/configs/types";
|
|
33
33
|
import usePusherConversation from "./components/Chats/hooks/usePusherConversation";
|
34
34
|
import { ToastContainer, toast } from "react-toastify";
|
35
35
|
import { Role } from "./containers/Login/configs/constants";
|
36
|
+
import { TextbookDetail, TextbookList } from './containers/Textbooks/views';
|
36
37
|
import useLanguage from "./utils/hooks/useLanguage";
|
37
38
|
import * as CoreHooks from "./utils/hooks";
|
38
39
|
import { LANGUAGES } from "./configs/constants";
|
@@ -57,4 +58,7 @@ import ScoreSelector from "./components/Selectors/ScoreSelector";
|
|
57
58
|
import useCategorySelect from "./containers/Select/Category/hook/useCategorySelect";
|
58
59
|
import ArticleCategorySelector from "./components/Selectors/ArticleCategorySelector";
|
59
60
|
import InputText from "./components/Inputs/InputText";
|
60
|
-
|
61
|
+
import * as Textbook from "./containers/Textbooks/views";
|
62
|
+
import SubjectSelector from "./components/Selectors/SubjectSelector";
|
63
|
+
import * as timeUtils from "./utils/times";
|
64
|
+
export { diffFromNow, formatTime, utcToLocalTime, setLoading, setReadyRegisterPusher, BASE_URL, SUPER_ADMIN_BASE_URL, ACCESS_TOKEN, Login, store, setAlert, setUser, Loading, NotFound, LayoutContext, api, apiUpload, ConfirmDialog, CommonDialog, CustomPagination, useGoogleSignOut, PUSHER_CONFIG, ExamEvent, EXAM_CHANNEL, EXAM_STUDENT_CHANNEL, setLanguage, i18n, TheLanguageDropdown, TheAcademyDropdown, useTranslation, I18nextProvider, DATE_MIN_VALUE, DATE_TIME_MIN_VALUE, ACADEMY_DOMAIN, minutesToTimeSpan, toISOString, canAccessRoute, CustomSelect, CustomAsyncSelect, CustomSelectOption, getAccessToken, ChatContainer, IChatContainerProps, IChatItemProps, IChatHeaderProps, IInputChatProps, ChatItemType, useChatContainer, ConversationResponse, usePusherConversation, ExamResultV2, ToastContainer, toast, Role, useLanguage, useSwitchAcademy, LANGUAGES, CustomCreatable, moment, ExamDetailView, ExamDetailViewProps, Exam, Question, ArticleGroup, getAcademyDomain, useSubjectSelect, useLogin, useAutoAcademyDomain, LoginAccessTokenRequest, LoginRequest, setReFetchUserAcademies, ChatTypes, AcademyHeaders, Types, Enums, CoreHooks, ArticleGroupView, AnswerCountSelector, QuestionCountSelector, ScoreSelector, ArticleCategorySelector, SubjectSelector, useCategorySelect, InputText, Textbook, TextbookDetail, TextbookList, timeUtils };
|