@instructure/quiz-core 17.19.2 → 17.19.3-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (530) hide show
  1. package/lib/banks/api/bankEntries.js +203 -0
  2. package/lib/banks/api/banks.js +315 -0
  3. package/lib/banks/api/tagAssociations.js +128 -0
  4. package/lib/banks/components/AddBankEntryModal/index.js +47 -0
  5. package/lib/banks/components/AddBankEntryModal/presenter.js +156 -0
  6. package/lib/banks/components/AddToBankModal/index.js +53 -0
  7. package/lib/banks/components/AddToBankModal/presenter.js +238 -0
  8. package/lib/banks/components/Bank/index.js +60 -0
  9. package/lib/banks/components/Bank/presenter.js +390 -0
  10. package/lib/banks/components/Bank/theme.js +21 -0
  11. package/lib/banks/components/BankEntriesList/index.js +30 -0
  12. package/lib/banks/components/BankEntriesList/presenter.js +93 -0
  13. package/lib/banks/components/BankEntriesList/theme.js +13 -0
  14. package/lib/banks/components/BankEntry/index.js +97 -0
  15. package/lib/banks/components/BankEntry/presenter.js +763 -0
  16. package/lib/banks/components/BankEntry/theme.js +31 -0
  17. package/lib/banks/components/BankEntryRow/BankEntryRow.examples.js +55 -0
  18. package/lib/banks/components/BankEntryRow/index.js +68 -0
  19. package/lib/banks/components/BankEntryRow/presenter.js +453 -0
  20. package/lib/banks/components/BankEntryRow/theme.js +30 -0
  21. package/lib/banks/components/BankSearch/BankSearch.stories.js +75 -0
  22. package/lib/banks/components/BankSearch/index.js +49 -0
  23. package/lib/banks/components/BankSearch/presenter.js +243 -0
  24. package/lib/banks/components/BankSearch/theme.js +16 -0
  25. package/lib/banks/components/Banks/index.js +58 -0
  26. package/lib/banks/components/Banks/noResults.svg +56 -0
  27. package/lib/banks/components/Banks/presenter.js +480 -0
  28. package/lib/banks/components/Banks/theme.js +20 -0
  29. package/lib/banks/components/BanksList/index.js +38 -0
  30. package/lib/banks/components/BanksList/presenter.js +390 -0
  31. package/lib/banks/components/BanksList/theme.js +28 -0
  32. package/lib/banks/components/CopyMoveBankEntryModal/index.js +56 -0
  33. package/lib/banks/components/CopyMoveBankEntryModal/presenter.js +264 -0
  34. package/lib/banks/components/CreateBankModal/index.js +64 -0
  35. package/lib/banks/components/CreateBankModal/presenter.js +190 -0
  36. package/lib/banks/components/CreateBankModal/theme.js +16 -0
  37. package/lib/banks/components/EditBankModal/index.js +56 -0
  38. package/lib/banks/components/EditBankModal/presenter.js +183 -0
  39. package/lib/banks/components/EditBankModal/theme.js +15 -0
  40. package/lib/banks/components/HeaderMenu/index.js +34 -0
  41. package/lib/banks/components/HeaderMenu/presenter.js +100 -0
  42. package/lib/banks/components/HeaderMenu/theme.js +15 -0
  43. package/lib/banks/components/NavWrapper/NavWrapper.examples.js +27 -0
  44. package/lib/banks/components/NavWrapper/index.js +24 -0
  45. package/lib/banks/components/NavWrapper/presenter.js +189 -0
  46. package/lib/banks/components/NavWrapper/theme.js +24 -0
  47. package/lib/banks/components/SharingModal/ContextualButton/index.js +80 -0
  48. package/lib/banks/components/SharingModal/ShareList/ShareList.examples.js +30 -0
  49. package/lib/banks/components/SharingModal/ShareList/index.js +253 -0
  50. package/lib/banks/components/SharingModal/ShareList/theme.js +10 -0
  51. package/lib/banks/components/SharingModal/asyncSearch.js +399 -0
  52. package/lib/banks/components/SharingModal/index.js +45 -0
  53. package/lib/banks/components/SharingModal/presenter.js +530 -0
  54. package/lib/banks/components/SharingModal/theme.js +17 -0
  55. package/lib/building/api/items.js +255 -0
  56. package/lib/building/api/qtiImports.js +135 -0
  57. package/lib/building/api/quizEntries.js +380 -0
  58. package/lib/building/api/quizzes.js +285 -0
  59. package/lib/building/api/stimuli.js +92 -0
  60. package/lib/building/components/QTIImportModal/index.js +54 -0
  61. package/lib/building/components/layout/Sidebar/Sidebar.examples.js +134 -0
  62. package/lib/building/components/layout/Sidebar/SidebarItem/index.js +86 -0
  63. package/lib/building/components/layout/Sidebar/SidebarItem/presenter.js +159 -0
  64. package/lib/building/components/layout/Sidebar/Stimulus/index.js +87 -0
  65. package/lib/building/components/layout/Sidebar/Stimulus/presenter.js +167 -0
  66. package/lib/building/components/layout/Sidebar/index.js +80 -0
  67. package/lib/building/components/layout/Sidebar/presenter.js +267 -0
  68. package/lib/building/components/layout/Sidebar/theme.js +13 -0
  69. package/lib/building/components/layout/header/BuildingButtons/index.js +56 -0
  70. package/lib/building/components/layout/header/BuildingButtons/presenter.js +195 -0
  71. package/lib/building/components/layout/header/BuildingButtons/theme.js +19 -0
  72. package/lib/building/components/layout/header/SDKBuildingButtons/index.js +27 -0
  73. package/lib/building/components/resources/ActionButtons/index.js +40 -0
  74. package/lib/building/components/resources/ActionButtons/presenter.js +194 -0
  75. package/lib/building/components/resources/ActionButtons/theme.js +16 -0
  76. package/lib/building/components/resources/AddToBankOptions/index.js +119 -0
  77. package/lib/building/components/resources/AddToBankOptions/theme.js +15 -0
  78. package/lib/building/components/resources/BanksTray/index.js +34 -0
  79. package/lib/building/components/resources/BanksTray/presenter.js +233 -0
  80. package/lib/building/components/resources/DeleteStimulusModal/index.js +54 -0
  81. package/lib/building/components/resources/DeleteStimulusModal/presenter.js +316 -0
  82. package/lib/building/components/resources/DeleteStimulusModal/theme.js +17 -0
  83. package/lib/building/components/resources/ItemFeedbackModal/index.js +52 -0
  84. package/lib/building/components/resources/ItemFeedbackModal/presenter.js +183 -0
  85. package/lib/building/components/resources/ItemFeedbackModal/theme.js +13 -0
  86. package/lib/building/components/resources/MoveImmutableModal/index.js +54 -0
  87. package/lib/building/components/resources/MoveImmutableModal/presenter.js +140 -0
  88. package/lib/building/components/resources/quiz/editButton/EditButton.js +89 -0
  89. package/lib/building/components/resources/quiz/instructions/Edit/index.js +22 -0
  90. package/lib/building/components/resources/quiz/instructions/Edit/presenter.js +142 -0
  91. package/lib/building/components/resources/quiz/instructions/Edit/theme.js +14 -0
  92. package/lib/building/components/resources/quiz/instructions/Instructions/Instructions.examples.js +34 -0
  93. package/lib/building/components/resources/quiz/instructions/Instructions/index.js +39 -0
  94. package/lib/building/components/resources/quiz/instructions/Instructions/presenter.js +223 -0
  95. package/lib/building/components/resources/quiz/instructions/Instructions/theme.js +20 -0
  96. package/lib/building/components/resources/quiz/instructions/Show/index.js +97 -0
  97. package/lib/building/components/resources/quiz/instructions/Show/theme.js +16 -0
  98. package/lib/building/components/resources/quiz/title/Edit/index.js +214 -0
  99. package/lib/building/components/resources/quiz/title/Edit/theme.js +24 -0
  100. package/lib/building/components/resources/quiz/title/Show/index.js +97 -0
  101. package/lib/building/components/resources/quiz/title/Show/theme.js +16 -0
  102. package/lib/building/components/resources/quiz/title/Title/Title.examples.js +51 -0
  103. package/lib/building/components/resources/quiz/title/Title/index.js +42 -0
  104. package/lib/building/components/resources/quiz/title/Title/presenter.js +217 -0
  105. package/lib/building/components/resources/quiz/title/Title/theme.js +20 -0
  106. package/lib/building/components/resources/quizEntry/QuizEntry/index.js +98 -0
  107. package/lib/building/components/resources/quizEntry/QuizEntry/presenter.js +435 -0
  108. package/lib/building/components/resources/quizEntry/QuizEntry/theme.js +19 -0
  109. package/lib/building/components/resources/quizEntry/QuizEntryBank/QuizEntryBankEdit/index.js +41 -0
  110. package/lib/building/components/resources/quizEntry/QuizEntryBank/QuizEntryBankEdit/presenter.js +291 -0
  111. package/lib/building/components/resources/quizEntry/QuizEntryBank/QuizEntryBankEdit/theme.js +28 -0
  112. package/lib/building/components/resources/quizEntry/QuizEntryBank/QuizEntryBankShow/index.js +139 -0
  113. package/lib/building/components/resources/quizEntry/QuizEntryBank/QuizEntryBankShow/theme.js +20 -0
  114. package/lib/building/components/resources/quizEntry/QuizEntryEdit/Footer/index.js +39 -0
  115. package/lib/building/components/resources/quizEntry/QuizEntryEdit/Footer/presenter.js +299 -0
  116. package/lib/building/components/resources/quizEntry/QuizEntryEdit/Footer/theme.js +17 -0
  117. package/lib/building/components/resources/quizEntry/QuizEntryEdit/Header/index.js +366 -0
  118. package/lib/building/components/resources/quizEntry/QuizEntryEdit/Header/theme.js +21 -0
  119. package/lib/building/components/resources/quizEntry/QuizEntryEdit/index.js +98 -0
  120. package/lib/building/components/resources/quizEntry/QuizEntryEdit/presenter.js +545 -0
  121. package/lib/building/components/resources/quizEntry/QuizEntryEdit/theme.js +17 -0
  122. package/lib/building/components/resources/quizEntry/QuizEntryShow/index.js +51 -0
  123. package/lib/building/components/resources/quizEntry/QuizEntryShow/presenter.js +385 -0
  124. package/lib/building/components/resources/quizEntry/QuizEntryShow/theme.js +33 -0
  125. package/lib/common/actions/addInteractionTypes.js +15 -0
  126. package/lib/common/actions/alerts.js +72 -0
  127. package/lib/common/actions/bankEntries.js +26 -0
  128. package/lib/common/actions/bankSearch.js +51 -0
  129. package/lib/common/actions/banks.js +71 -0
  130. package/lib/common/actions/config.js +23 -0
  131. package/lib/common/actions/dragAndDrop.js +15 -0
  132. package/lib/common/actions/editing.js +33 -0
  133. package/lib/common/actions/errorsShowing.js +35 -0
  134. package/lib/common/actions/features.js +23 -0
  135. package/lib/common/actions/items.js +15 -0
  136. package/lib/common/actions/modal.js +86 -0
  137. package/lib/common/actions/moderation.js +22 -0
  138. package/lib/common/actions/modifications.js +560 -0
  139. package/lib/common/actions/outcomes.js +31 -0
  140. package/lib/common/actions/postMessage.js +15 -0
  141. package/lib/common/actions/printing.js +23 -0
  142. package/lib/common/actions/qtiImports.js +22 -0
  143. package/lib/common/actions/quizEntries.js +56 -0
  144. package/lib/common/actions/quizSessionEvents.js +17 -0
  145. package/lib/common/actions/quizSessionResults.js +17 -0
  146. package/lib/common/actions/quizSessions.js +129 -0
  147. package/lib/common/actions/quizzes.js +74 -0
  148. package/lib/common/actions/regrading.js +31 -0
  149. package/lib/common/actions/reporting.js +47 -0
  150. package/lib/common/actions/scrolling.js +24 -0
  151. package/lib/common/actions/sessionItemResults.js +17 -0
  152. package/lib/common/actions/sessionItems.js +17 -0
  153. package/lib/common/actions/sharedBanks.js +38 -0
  154. package/lib/common/actions/sidebar.js +25 -0
  155. package/lib/common/actions/stimuli.js +15 -0
  156. package/lib/common/actions/tagAssociations.js +113 -0
  157. package/lib/common/actions/taking.js +160 -0
  158. package/lib/common/actions/ui.js +83 -0
  159. package/lib/common/actions/upload.js +57 -0
  160. package/lib/common/api/callHandlers.js +217 -0
  161. package/lib/common/api/camelizeHelpers.js +40 -0
  162. package/lib/common/api/features.js +27 -0
  163. package/lib/common/api/fileUpload.js +48 -0
  164. package/lib/common/api/getPersistenceActions.js +140 -0
  165. package/lib/common/api/helpers.js +197 -0
  166. package/lib/common/api/interactionTypes.js +24 -0
  167. package/lib/common/api/quizSessions.js +236 -0
  168. package/lib/common/api/quizzes.js +55 -0
  169. package/lib/common/api/schema.js +109 -0
  170. package/lib/common/components/ConfirmationModal/index.js +37 -0
  171. package/lib/common/components/ConfirmationModal/presenter.js +156 -0
  172. package/lib/common/components/ImportModal/ImportFileSelector/index.js +167 -0
  173. package/lib/common/components/ImportModal/ImportFileSelector/theme.js +23 -0
  174. package/lib/common/components/ImportModal/index.js +78 -0
  175. package/lib/common/components/ImportModal/presenter.js +442 -0
  176. package/lib/common/components/ImportModal/theme.js +13 -0
  177. package/lib/common/components/LearnosityCalculator/index.js +196 -0
  178. package/lib/common/components/Pin/Pin.examples.js +20 -0
  179. package/lib/common/components/Pin/index.js +13 -0
  180. package/lib/common/components/Pin/presenter.js +88 -0
  181. package/lib/common/components/PreviewFrame/examples.config.js +24 -0
  182. package/lib/common/components/PreviewFrame/index.js +71 -0
  183. package/lib/common/components/PrintFontSizeModal/index.js +13 -0
  184. package/lib/common/components/PrintFontSizeModal/presenter.js +204 -0
  185. package/lib/common/components/PrintFontSizeModal/theme.js +17 -0
  186. package/lib/common/components/RichContentInput/RceImageImportModal/index.js +28 -0
  187. package/lib/common/components/RichContentInput/RceImageImportModal/presenter.js +115 -0
  188. package/lib/common/components/RichContentInput/index.js +33 -0
  189. package/lib/common/components/RichContentInput/presenter.js +102 -0
  190. package/lib/common/components/SDKApp/index.js +206 -0
  191. package/lib/common/components/SDKApp/theme.js +10 -0
  192. package/lib/common/components/SDKHeaderCalculator.js +29 -0
  193. package/lib/common/components/SDKMenuButton.js +27 -0
  194. package/lib/common/components/SDKTimer.js +29 -0
  195. package/lib/common/components/alerts/index.js +33 -0
  196. package/lib/common/components/alerts/presenter.js +115 -0
  197. package/lib/common/components/alerts/theme.js +18 -0
  198. package/lib/common/components/layout/Page/index.js +102 -0
  199. package/lib/common/components/layout/Page/theme.js +17 -0
  200. package/lib/common/components/layout/header/Calculator/index.js +36 -0
  201. package/lib/common/components/layout/header/Calculator/presenter.js +84 -0
  202. package/lib/common/components/layout/header/HeaderMenuButton/index.js +39 -0
  203. package/lib/common/components/layout/header/HeaderMenuButton/presenter.js +86 -0
  204. package/lib/common/components/layout/header/HeaderMenuButton/theme.js +18 -0
  205. package/lib/common/components/layout/header/Timer/index.js +48 -0
  206. package/lib/common/components/layout/header/Timer/presenter.js +201 -0
  207. package/lib/common/components/layout/header/Timer/theme.js +25 -0
  208. package/lib/common/components/layout/sidebar/PositionSummary/index.js +81 -0
  209. package/lib/common/components/layout/sidebar/PositionSummary/theme.js +22 -0
  210. package/lib/common/components/layout/sidebar/Sidebar/Pin.js +78 -0
  211. package/lib/common/components/layout/sidebar/Sidebar/Sidebar.examples.js +46 -0
  212. package/lib/common/components/layout/sidebar/Sidebar/index.js +338 -0
  213. package/lib/common/components/layout/sidebar/Sidebar/theme.js +50 -0
  214. package/lib/common/components/layout/sidebar/SidebarItem/index.js +46 -0
  215. package/lib/common/components/layout/sidebar/SidebarItem/presenter.js +235 -0
  216. package/lib/common/components/layout/sidebar/SidebarItem/theme.js +33 -0
  217. package/lib/common/components/layout/sidebar/Stimulus/Collection/index.js +20 -0
  218. package/lib/common/components/layout/sidebar/Stimulus/Collection/presenter.js +195 -0
  219. package/lib/common/components/layout/sidebar/Stimulus/Collection/theme.js +17 -0
  220. package/lib/common/components/layout/sidebar/Stimulus/Summary/index.js +20 -0
  221. package/lib/common/components/layout/sidebar/Stimulus/Summary/presenter.js +182 -0
  222. package/lib/common/components/layout/sidebar/Stimulus/Summary/theme.js +20 -0
  223. package/lib/common/components/layout/sidebar/Stimulus/Title/index.js +89 -0
  224. package/lib/common/components/layout/sidebar/Stimulus/Title/theme.js +10 -0
  225. package/lib/common/components/layout/sidebar/Stimulus/index.js +42 -0
  226. package/lib/common/components/layout/sidebar/Stimulus/presenter.js +202 -0
  227. package/lib/common/components/layout/sidebar/Stimulus/theme.js +26 -0
  228. package/lib/common/components/resources/BankSelection/BankSelection.examples.js +26 -0
  229. package/lib/common/components/resources/BankSelection/index.js +39 -0
  230. package/lib/common/components/resources/BankSelection/presenter.js +253 -0
  231. package/lib/common/components/resources/WarningWrapper/index.js +167 -0
  232. package/lib/common/components/resources/WarningWrapper/theme.js +20 -0
  233. package/lib/common/components/resources/entry/EntrySave/index.js +40 -0
  234. package/lib/common/components/resources/entry/EntrySave/presenter.js +221 -0
  235. package/lib/common/components/resources/item/ItemEdit/index.js +91 -0
  236. package/lib/common/components/resources/item/ItemEdit/presenter.js +231 -0
  237. package/lib/common/components/resources/item/ItemOverride/index.js +55 -0
  238. package/lib/common/components/resources/item/ItemOverride/presenter.js +108 -0
  239. package/lib/common/components/resources/item/ItemShow/index.js +71 -0
  240. package/lib/common/components/resources/positionBox/PositionBox.js +78 -0
  241. package/lib/common/components/resources/positionBox/theme.js +21 -0
  242. package/lib/common/components/resources/quiz/AddContent/Body/index.js +42 -0
  243. package/lib/common/components/resources/quiz/AddContent/Body/presenter.js +207 -0
  244. package/lib/common/components/resources/quiz/AddContent/Body/theme.js +20 -0
  245. package/lib/common/components/resources/quiz/AddContent/Button/index.js +129 -0
  246. package/lib/common/components/resources/quiz/AddContent/Button/theme.js +30 -0
  247. package/lib/common/components/resources/quiz/AddContent/Modal/index.js +44 -0
  248. package/lib/common/components/resources/quiz/AddContent/Modal/presenter.js +103 -0
  249. package/lib/common/components/resources/quiz/AddContent/Popover/index.js +54 -0
  250. package/lib/common/components/resources/quiz/AddContent/Popover/presenter.js +185 -0
  251. package/lib/common/components/resources/quiz/AddContent/Popover/theme.js +15 -0
  252. package/lib/common/components/resources/quiz/info/QuizInfo.js +52 -0
  253. package/lib/common/components/resources/quiz/instructions/Instructions.js +76 -0
  254. package/lib/common/components/resources/quiz/instructions/theme.js +15 -0
  255. package/lib/common/components/resources/quiz/title/Title.js +78 -0
  256. package/lib/common/components/resources/quiz/title/theme.js +16 -0
  257. package/lib/common/components/resources/quizSessionResult/Header/index.js +119 -0
  258. package/lib/common/components/resources/quizSessionResult/Header/theme.js +17 -0
  259. package/lib/common/components/resources/quizSessionResult/Info/Info.examples.js +46 -0
  260. package/lib/common/components/resources/quizSessionResult/Info/index.js +321 -0
  261. package/lib/common/components/resources/quizSessionResult/Info/theme.js +20 -0
  262. package/lib/common/components/resources/sessionItemResult/ResultStimulus/index.js +129 -0
  263. package/lib/common/components/resources/sessionItemResult/ResultStimulus/theme.js +39 -0
  264. package/lib/common/components/resources/sessionItemResult/SessionItemResult/index.js +30 -0
  265. package/lib/common/components/resources/sessionItemResult/SessionItemResult/presenter.js +392 -0
  266. package/lib/common/components/resources/sessionItemResult/SessionItemResult/theme.js +37 -0
  267. package/lib/common/components/resources/sessionItemResult/SessionItemResultsList/index.js +123 -0
  268. package/lib/common/components/resources/sessionItemResult/SessionItemResultsList/theme.js +21 -0
  269. package/lib/common/components/resources/stimulus/Stimulus/index.js +45 -0
  270. package/lib/common/components/resources/stimulus/Stimulus/presenter.js +255 -0
  271. package/lib/common/components/resources/stimulus/Stimulus/theme.js +22 -0
  272. package/lib/common/components/resources/stimulus/StimulusEdit/index.js +81 -0
  273. package/lib/common/components/resources/stimulus/StimulusEdit/presenter.js +558 -0
  274. package/lib/common/components/resources/stimulus/StimulusEdit/theme.js +24 -0
  275. package/lib/common/components/resources/stimulus/StimulusEditInfo/index.js +39 -0
  276. package/lib/common/components/resources/stimulus/StimulusEditInfo/presenter.js +247 -0
  277. package/lib/common/components/resources/stimulus/StimulusEditInfo/theme.js +18 -0
  278. package/lib/common/components/resources/stimulus/StimulusShow/index.js +142 -0
  279. package/lib/common/components/resources/stimulus/StimulusShow/theme.js +22 -0
  280. package/lib/common/components/resources/stimulus/StimulusShowInfo/StimulusShowInfo.examples.js +22 -0
  281. package/lib/common/components/resources/stimulus/StimulusShowInfo/index.js +87 -0
  282. package/lib/common/components/shared/Card/CardContent/index.js +73 -0
  283. package/lib/common/components/shared/Card/CardContent/theme.js +24 -0
  284. package/lib/common/components/shared/Card/CardWrapper/index.js +72 -0
  285. package/lib/common/components/shared/Card/CardWrapper/theme.js +21 -0
  286. package/lib/common/components/shared/Card/index.js +46 -0
  287. package/lib/common/components/shared/ExpandButton/index.js +90 -0
  288. package/lib/common/components/shared/ExpandButton/theme.js +12 -0
  289. package/lib/common/components/shared/FormattedDuration/FormattedDuration.examples.js +27 -0
  290. package/lib/common/components/shared/FormattedDuration/index.js +126 -0
  291. package/lib/common/components/shared/IfFeature/index.js +24 -0
  292. package/lib/common/components/shared/IfFeature/presenter.js +56 -0
  293. package/lib/common/components/shared/InteractionTypes/index.js +20 -0
  294. package/lib/common/components/shared/InteractionTypes/presenter.js +197 -0
  295. package/lib/common/components/shared/InteractionTypes/theme.js +18 -0
  296. package/lib/common/components/shared/PaginatedCollection/index.js +36 -0
  297. package/lib/common/components/shared/PaginatedCollection/presenter.js +228 -0
  298. package/lib/common/components/shared/PaginatedCollection/theme.js +17 -0
  299. package/lib/common/components/shared/Paginator/index.js +90 -0
  300. package/lib/common/components/shared/Paginator/theme.js +13 -0
  301. package/lib/common/components/shared/PrintTrigger/index.js +43 -0
  302. package/lib/common/components/shared/PrintTrigger/presenter.js +151 -0
  303. package/lib/common/components/shared/TagDisplay/index.js +105 -0
  304. package/lib/common/components/shared/TagDisplay/theme.js +10 -0
  305. package/lib/common/components/shared/TagSelect/index.js +13 -0
  306. package/lib/common/components/shared/TagSelect/presenter.js +306 -0
  307. package/lib/common/components/shared/TagSuggestSelect/index.js +36 -0
  308. package/lib/common/components/shared/TagSuggestSelect/presenter.js +135 -0
  309. package/lib/common/components/shared/TagWrapper/index.js +13 -0
  310. package/lib/common/components/shared/TagWrapper/presenter.js +89 -0
  311. package/lib/common/components/shared/TimeUnitsInput/TimeUnitsInput.examples.js +25 -0
  312. package/lib/common/components/shared/TimeUnitsInput/index.js +366 -0
  313. package/lib/common/components/shared/drag_and_drop/DragAndDropZone/index.js +126 -0
  314. package/lib/common/components/shared/drag_and_drop/DragAndDropZone/theme.js +25 -0
  315. package/lib/common/components/shared/drag_and_drop/DragHandle/index.js +51 -0
  316. package/lib/common/components/shared/drag_and_drop/DragHandle/presenter.js +324 -0
  317. package/lib/common/components/shared/drag_and_drop/dragAndDropUtils.js +403 -0
  318. package/lib/common/components/shared/errors/Errors.js +81 -0
  319. package/lib/common/components/shared/errors/theme.js +16 -0
  320. package/lib/common/components/shared/file_selector/FileSelector.js +90 -0
  321. package/lib/common/components/shared/file_selector/theme.js +18 -0
  322. package/lib/common/components/shared/functionality/componentWithOutsideClick.js +94 -0
  323. package/lib/common/components/shared/functionality/disableDraggingOverride.js +22 -0
  324. package/lib/common/components/shared/functionality/makeEditable.js +152 -0
  325. package/lib/common/components/shared/functionality/makeScrollable.js +174 -0
  326. package/lib/common/components/shared/overlay/Overlay.js +95 -0
  327. package/lib/common/components/shared/overlay/theme.js +17 -0
  328. package/lib/common/components/shared/return_button/ReturnButton.js +66 -0
  329. package/lib/common/components/shared/spinner/Spinner.js +92 -0
  330. package/lib/common/components/shared/spinner/theme.js +13 -0
  331. package/lib/common/kinesis/QuizEventsLogger.js +155 -0
  332. package/lib/common/kinesis/StreamQueue.js +141 -0
  333. package/lib/common/kinesis/client.js +66 -0
  334. package/lib/common/kinesis/config.js +54 -0
  335. package/lib/common/kinesis/eventTypes.js +48 -0
  336. package/lib/common/middleware/alertTimerMiddleware.js +32 -0
  337. package/lib/common/middleware/crossDomainMessagingMiddleware.js +25 -0
  338. package/lib/common/middleware/eventLoggerMiddleware.js +42 -0
  339. package/lib/common/middleware/persistedStorageMiddleware.js +66 -0
  340. package/lib/common/react-redux.js +21 -0
  341. package/lib/common/records/Alert.js +37 -0
  342. package/lib/common/records/Bank.js +129 -0
  343. package/lib/common/records/BankEntry.js +96 -0
  344. package/lib/common/records/Item.js +151 -0
  345. package/lib/common/records/ItemAnalysis.js +177 -0
  346. package/lib/common/records/QtiImport.js +63 -0
  347. package/lib/common/records/Quiz.js +205 -0
  348. package/lib/common/records/QuizAnalysis.js +121 -0
  349. package/lib/common/records/QuizEntry.js +543 -0
  350. package/lib/common/records/QuizSession.js +219 -0
  351. package/lib/common/records/QuizSessionEvent.js +65 -0
  352. package/lib/common/records/QuizSessionResult.js +90 -0
  353. package/lib/common/records/Response.js +65 -0
  354. package/lib/common/records/SessionItem.js +150 -0
  355. package/lib/common/records/SessionItemResult.js +91 -0
  356. package/lib/common/records/Stimulus.js +101 -0
  357. package/lib/common/records/baseRecord.js +116 -0
  358. package/lib/common/records/index.js +135 -0
  359. package/lib/common/records/reduxRecord.js +46 -0
  360. package/lib/common/reducers/alerts.js +28 -0
  361. package/lib/common/reducers/bankEntries.js +38 -0
  362. package/lib/common/reducers/bankSearch.js +50 -0
  363. package/lib/common/reducers/banks.js +71 -0
  364. package/lib/common/reducers/calls.js +28 -0
  365. package/lib/common/reducers/config.js +32 -0
  366. package/lib/common/reducers/dragAndDrop.js +25 -0
  367. package/lib/common/reducers/editing.js +25 -0
  368. package/lib/common/reducers/errorsShowing.js +31 -0
  369. package/lib/common/reducers/features.js +28 -0
  370. package/lib/common/reducers/interactionTypes.js +33 -0
  371. package/lib/common/reducers/items.js +36 -0
  372. package/lib/common/reducers/modal.js +45 -0
  373. package/lib/common/reducers/moderation.js +34 -0
  374. package/lib/common/reducers/modifications.js +225 -0
  375. package/lib/common/reducers/outcomes.js +37 -0
  376. package/lib/common/reducers/printing.js +26 -0
  377. package/lib/common/reducers/qtiImports.js +39 -0
  378. package/lib/common/reducers/quizEntries.js +182 -0
  379. package/lib/common/reducers/quizSessionEvents.js +36 -0
  380. package/lib/common/reducers/quizSessionResults.js +34 -0
  381. package/lib/common/reducers/quizSessions.js +68 -0
  382. package/lib/common/reducers/quizzes.js +77 -0
  383. package/lib/common/reducers/regrading.js +39 -0
  384. package/lib/common/reducers/reporting.js +72 -0
  385. package/lib/common/reducers/scrolling.js +28 -0
  386. package/lib/common/reducers/sessionItemResults.js +34 -0
  387. package/lib/common/reducers/sessionItems.js +36 -0
  388. package/lib/common/reducers/sharedBanks.js +45 -0
  389. package/lib/common/reducers/sidebar.js +30 -0
  390. package/lib/common/reducers/stimuli.js +36 -0
  391. package/lib/common/reducers/tagAssociations.js +140 -0
  392. package/lib/common/reducers/taking.js +143 -0
  393. package/lib/common/reducers/ui.js +51 -0
  394. package/lib/common/reducers/upload.js +41 -0
  395. package/lib/common/selectors/calculator.js +39 -0
  396. package/lib/common/selectors/calls.js +14 -0
  397. package/lib/common/selectors/interactionTypes.js +45 -0
  398. package/lib/common/selectors/items.js +28 -0
  399. package/lib/common/selectors/qtiImports.js +35 -0
  400. package/lib/common/selectors/quizSessionResults.js +25 -0
  401. package/lib/common/selectors/quizSessions.js +54 -0
  402. package/lib/common/selectors/quizzes.js +146 -0
  403. package/lib/common/selectors/reporting.js +26 -0
  404. package/lib/common/selectors/sessionItemResults.js +41 -0
  405. package/lib/common/selectors/sessionItems.js +53 -0
  406. package/lib/common/selectors/taking.js +64 -0
  407. package/lib/common/selectors/ui.js +12 -0
  408. package/lib/common/util/CustomPropTypes.js +88 -0
  409. package/lib/common/util/ElementsForSelectors.js +22 -0
  410. package/lib/common/util/ExhaustivePaginatedFetcher.js +127 -0
  411. package/lib/common/util/Fetcher.js +455 -0
  412. package/lib/common/util/MultiWeakMap.js +88 -0
  413. package/lib/common/util/PaginatedFetcher.js +110 -0
  414. package/lib/common/util/ThunkQueue.js +163 -0
  415. package/lib/common/util/TimeRecordingService.js +85 -0
  416. package/lib/common/util/TimerService.js +210 -0
  417. package/lib/common/util/cachePreviousArgs.js +32 -0
  418. package/lib/common/util/callHelpers.js +48 -0
  419. package/lib/common/util/componentForItem.js +40 -0
  420. package/lib/common/util/crossDomainMessaging.js +14 -0
  421. package/lib/common/util/debounceLatestPromise.js +38 -0
  422. package/lib/common/util/featureCheck.js +58 -0
  423. package/lib/common/util/fetchHelpers.js +14 -0
  424. package/lib/common/util/formatTimespan.js +68 -0
  425. package/lib/common/util/generateDisplayPositions.js +34 -0
  426. package/lib/common/util/httpHeaders.js +28 -0
  427. package/lib/common/util/immutableHelpers.js +36 -0
  428. package/lib/common/util/instUIMessages.js +17 -0
  429. package/lib/common/util/interactionTypeMetadata.js +60 -0
  430. package/lib/common/util/interactionTypePropsHelper.js +99 -0
  431. package/lib/common/util/interactionTypeRecordForItem.js +36 -0
  432. package/lib/common/util/jsonify.js +39 -0
  433. package/lib/common/util/keyboardClickable.js +17 -0
  434. package/lib/common/util/maxContent.js +22 -0
  435. package/lib/common/util/modalHelpers.js +13 -0
  436. package/lib/common/util/noop.js +12 -0
  437. package/lib/common/util/persistedState.js +61 -0
  438. package/lib/common/util/printUtils.js +50 -0
  439. package/lib/common/util/renderAlerts.js +34 -0
  440. package/lib/common/util/serializeEvent.js +43 -0
  441. package/lib/common/util/sessionStore.js +81 -0
  442. package/lib/common/util/valMap.js +20 -0
  443. package/lib/common/util/warningHelpers.js +160 -0
  444. package/lib/common/util/windowChecks.js +27 -0
  445. package/lib/common/util/withCachedArguments.js +41 -0
  446. package/lib/common/util/withDynamoPagination.js +136 -0
  447. package/lib/common/util/withStateCache.js +63 -0
  448. package/lib/config.js +46 -0
  449. package/lib/configureStore.js +175 -0
  450. package/lib/grading/api/quizEntryRegrades.js +50 -0
  451. package/lib/grading/api/updateResults.js +50 -0
  452. package/lib/index.js +1534 -0
  453. package/lib/moderating/api/quizSessionEvents.js +28 -0
  454. package/lib/moderating/api/quizSessions.js +66 -0
  455. package/lib/moderating/components/events/Event.js +111 -0
  456. package/lib/moderating/components/events/ResponseEvent.js +143 -0
  457. package/lib/moderating/components/events/SessionStartEvent.js +70 -0
  458. package/lib/moderating/components/events/theme.js +18 -0
  459. package/lib/moderating/components/resources/AccommodationsModal/AccommodationsModal.examples.js +23 -0
  460. package/lib/moderating/components/resources/AccommodationsModal/ExtraAttemptSettings/ExtraAttemptsInput/index.js +140 -0
  461. package/lib/moderating/components/resources/AccommodationsModal/ExtraAttemptSettings/ExtraAttemptsInput/{}.examples.js +28 -0
  462. package/lib/moderating/components/resources/AccommodationsModal/ExtraAttemptSettings/index.js +133 -0
  463. package/lib/moderating/components/resources/AccommodationsModal/ExtraTimeMultiplier/index.js +172 -0
  464. package/lib/moderating/components/resources/AccommodationsModal/ExtraTimeSettings/ExtraTimeSettings.examples.js +56 -0
  465. package/lib/moderating/components/resources/AccommodationsModal/ExtraTimeSettings/index.js +173 -0
  466. package/lib/moderating/components/resources/AccommodationsModal/index.js +164 -0
  467. package/lib/moderating/components/resources/ElapsedTime.js +81 -0
  468. package/lib/moderating/components/resources/ModerateTable/index.js +62 -0
  469. package/lib/moderating/components/resources/ModerateTable/presenter.js +442 -0
  470. package/lib/moderating/components/resources/ModerateTable/theme.js +15 -0
  471. package/lib/moderating/components/resources/ModerateTableRow/ModerateTableRow.examples.js +86 -0
  472. package/lib/moderating/components/resources/ModerateTableRow/index.js +31 -0
  473. package/lib/moderating/components/resources/ModerateTableRow/presenter.js +416 -0
  474. package/lib/moderating/components/resources/ModerateTableRow/story.js +27 -0
  475. package/lib/moderating/components/resources/ModerateTableRow/theme.js +14 -0
  476. package/lib/moderating/components/resources/OutstandingQuizzesModal/OutstandingQuizzesModal.examples.js +86 -0
  477. package/lib/moderating/components/resources/OutstandingQuizzesModal/index.js +35 -0
  478. package/lib/moderating/components/resources/OutstandingQuizzesModal/presenter.js +203 -0
  479. package/lib/moderating/components/sidebar/ModerateTray/ModerateTray.examples.js +20 -0
  480. package/lib/moderating/components/sidebar/ModerateTray/index.js +28 -0
  481. package/lib/moderating/components/sidebar/ModerateTray/presenter.js +189 -0
  482. package/lib/moderating/components/sidebar/ResetQuiz/index.js +52 -0
  483. package/lib/moderating/components/sidebar/ResetQuiz/presenter.js +125 -0
  484. package/lib/package.json +1 -0
  485. package/lib/reduxStore.js +49 -0
  486. package/lib/reporting/api/itemAnalyses.js +27 -0
  487. package/lib/reporting/api/quizAnalyses.js +30 -0
  488. package/lib/reporting/components/Caption/index.js +76 -0
  489. package/lib/reporting/components/Caption/theme.js +16 -0
  490. package/lib/reporting/components/MetricsListItem/index.js +88 -0
  491. package/lib/reporting/components/MetricsListItem/theme.js +10 -0
  492. package/lib/reporting/components/charts/CentileDistribution/CentileDistribution.examples.js +32 -0
  493. package/lib/reporting/components/charts/CentileDistribution/index.js +13 -0
  494. package/lib/reporting/components/charts/CentileDistribution/presenter.js +191 -0
  495. package/lib/reporting/components/charts/CentileDistribution/theme.js +16 -0
  496. package/lib/reporting/components/charts/Distribution/CentileDistribution.js +14 -0
  497. package/lib/reporting/components/charts/Distribution/Distribution.js +14 -0
  498. package/lib/reporting/components/charts/Distribution/QuintileDistribution.js +14 -0
  499. package/lib/reporting/components/charts/Distribution/index.js +13 -0
  500. package/lib/reporting/components/charts/Distribution/presenter.js +386 -0
  501. package/lib/reporting/components/charts/Distribution/theme.js +19 -0
  502. package/lib/reporting/components/charts/Legend/index.js +94 -0
  503. package/lib/reporting/components/charts/Legend/theme.js +24 -0
  504. package/lib/reporting/components/charts/QuintileDistribution/QuintileDistribution.examples.js +16 -0
  505. package/lib/reporting/components/charts/QuintileDistribution/index.js +13 -0
  506. package/lib/reporting/components/charts/QuintileDistribution/presenter.js +175 -0
  507. package/lib/reporting/components/charts/QuintileDistribution/theme.js +16 -0
  508. package/lib/reporting/components/itemAnalysis/AnswerFrequencySummary/AnswerFrequencySummary.examples.js +45 -0
  509. package/lib/reporting/components/itemAnalysis/AnswerFrequencySummary/index.js +189 -0
  510. package/lib/reporting/components/itemAnalysis/AnswerFrequencySummary/theme.js +33 -0
  511. package/lib/reporting/components/itemAnalysis/ItemAnalysisRow/ItemAnalysisRow.examples.js +60 -0
  512. package/lib/reporting/components/itemAnalysis/ItemAnalysisRow/index.js +28 -0
  513. package/lib/reporting/components/itemAnalysis/ItemAnalysisRow/presenter.js +337 -0
  514. package/lib/reporting/components/itemAnalysis/ItemAnalysisRow/theme.js +32 -0
  515. package/lib/reporting/components/quizAnalysis/QuizAnalysisOverview.js +188 -0
  516. package/lib/reporting/components/quizAnalysis/theme.js +20 -0
  517. package/lib/reporting/components/resources/OutcomeAnalysis/index.js +30 -0
  518. package/lib/reporting/components/resources/OutcomeAnalysis/presenter.js +129 -0
  519. package/lib/reporting/components/resources/QuizAndItemAnalysis/QuizAndItemAnalysis.examples.js +190 -0
  520. package/lib/reporting/components/resources/QuizAndItemAnalysis/index.js +45 -0
  521. package/lib/reporting/components/resources/QuizAndItemAnalysis/presenter.js +340 -0
  522. package/lib/reporting/components/resources/QuizAndItemAnalysis/theme.js +20 -0
  523. package/lib/reporting/components/resources/ReportCard/index.js +89 -0
  524. package/lib/reporting/components/resources/ReportCard/theme.js +20 -0
  525. package/lib/reporting/components/resources/ReportList/index.js +84 -0
  526. package/lib/reporting/components/resources/ReportList/theme.js +17 -0
  527. package/lib/taking/api/taking.js +371 -0
  528. package/lib/taking/learnosity/index.js +195 -0
  529. package/lib/taking/learnosity/loader.js +87 -0
  530. package/package.json +11 -11
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
11
+
12
+ var _valMap2 = _interopRequireDefault(require("../util/valMap.js"));
13
+
14
+ var _camelizeHelpers = _interopRequireDefault(require("./camelizeHelpers.js"));
15
+
16
+ var _banks = require("../actions/banks.js");
17
+
18
+ var _bankEntries = require("../actions/bankEntries.js");
19
+
20
+ var _addInteractionTypes = require("../actions/addInteractionTypes.js");
21
+
22
+ var _items = require("../actions/items.js");
23
+
24
+ var _reporting = require("../actions/reporting.js");
25
+
26
+ var _qtiImports = require("../actions/qtiImports.js");
27
+
28
+ var _quizEntries = require("../actions/quizEntries.js");
29
+
30
+ var _quizSessionEvents = require("../actions/quizSessionEvents.js");
31
+
32
+ var _quizSessionResults = require("../actions/quizSessionResults.js");
33
+
34
+ var _quizSessions = require("../actions/quizSessions.js");
35
+
36
+ var _quizzes = require("../actions/quizzes.js");
37
+
38
+ var _sessionItemResults = require("../actions/sessionItemResults.js");
39
+
40
+ var _sessionItems = require("../actions/sessionItems.js");
41
+
42
+ var _stimuli = require("../actions/stimuli.js");
43
+
44
+ var _taking = require("../actions/taking.js");
45
+
46
+ var _sharedBanks = require("../actions/sharedBanks.js");
47
+
48
+ // getPersistenceActions is given an object that 'normalizr' returns
49
+ // is iterates over the different types of objects that can come
50
+ // back from the api, maps their type to an action, then returns
51
+ // an array of actions to dispatch (which persist the data to the store)
52
+ var getPersistenceActions = function getPersistenceActions(normalizedResp) {
53
+ var _valMap = (0, _valMap2.default)(normalizedResp.entities, _camelizeHelpers.default),
54
+ banks = _valMap.banks,
55
+ bankEntries = _valMap.bankEntries,
56
+ interactionTypes = _valMap.interactionTypes,
57
+ itemAnalyses = _valMap.itemAnalyses,
58
+ items = _valMap.items,
59
+ qtiImports = _valMap.qtiImports,
60
+ quizAnalyses = _valMap.quizAnalyses,
61
+ quizEntries = _valMap.quizEntries,
62
+ quizEntry = _valMap.quizEntry,
63
+ quizSessionEvents = _valMap.quizSessionEvents,
64
+ quizSessionResults = _valMap.quizSessionResults,
65
+ quizSessions = _valMap.quizSessions,
66
+ quizzes = _valMap.quizzes,
67
+ resumeData = _valMap.resumeData,
68
+ sharedBanks = _valMap.sharedBanks,
69
+ sessionItemResults = _valMap.sessionItemResults,
70
+ sessionItems = _valMap.sessionItems,
71
+ stimuli = _valMap.stimuli;
72
+
73
+ var baseDataActionPairs = [{
74
+ data: banks,
75
+ actionCreator: _banks.addBanks
76
+ }, {
77
+ data: bankEntries,
78
+ actionCreator: _bankEntries.addBankEntries
79
+ }, {
80
+ data: interactionTypes,
81
+ actionCreator: _addInteractionTypes.addInteractionTypes
82
+ }, {
83
+ data: items,
84
+ actionCreator: _items.addItems
85
+ }, {
86
+ data: quizSessionEvents,
87
+ actionCreator: _quizSessionEvents.addQuizSessionEvents
88
+ }, {
89
+ data: quizSessionResults,
90
+ actionCreator: _quizSessionResults.addQuizSessionResults
91
+ }, {
92
+ data: quizSessions,
93
+ actionCreator: _quizSessions.addQuizSessions
94
+ }, {
95
+ data: quizzes,
96
+ actionCreator: _quizzes.addQuizzes
97
+ }, {
98
+ data: quizEntries,
99
+ actionCreator: _quizEntries.addQuizEntries
100
+ }, {
101
+ data: quizEntry,
102
+ actionCreator: _quizEntries.addQuizEntry
103
+ }, {
104
+ data: resumeData,
105
+ actionCreator: _taking.loadResumeData
106
+ }, {
107
+ data: sessionItemResults,
108
+ actionCreator: _sessionItemResults.addSessionItemResults
109
+ }, {
110
+ data: sessionItems,
111
+ actionCreator: _sessionItems.addSessionItems
112
+ }, {
113
+ data: stimuli,
114
+ actionCreator: _stimuli.addStimuli
115
+ }, {
116
+ data: itemAnalyses,
117
+ actionCreator: _reporting.addItemAnalyses
118
+ }, {
119
+ data: quizAnalyses,
120
+ actionCreator: _reporting.addQuizAnalysis
121
+ }, {
122
+ data: sharedBanks,
123
+ actionCreator: _sharedBanks.addSharedBanks
124
+ }]; // parse only if feature is on
125
+
126
+ var qtiImportActionPairs = [{
127
+ data: qtiImports,
128
+ actionCreator: _qtiImports.addQtiImports
129
+ }];
130
+ var dataActionPairs = baseDataActionPairs.concat(qtiImportActionPairs);
131
+ var actionsToDispatch = dataActionPairs.reduce(function (memo, _ref) {
132
+ var data = _ref.data,
133
+ actionCreator = _ref.actionCreator;
134
+ return (0, _isEmpty.default)(data) ? memo : memo.concat([actionCreator(data)]);
135
+ }, []);
136
+ return actionsToDispatch;
137
+ };
138
+
139
+ var _default = getPersistenceActions;
140
+ exports.default = _default;
@@ -0,0 +1,197 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.processApiError = exports.errorsAllFromValidation = exports.getOnErrorWithDelayedValidationMessage = exports.handleError = void 0;
9
+
10
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
+
12
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
+
14
+ var _ui = require("../actions/ui.js");
15
+
16
+ var _alerts = require("../actions/alerts.js");
17
+
18
+ var _quizCommon = require("@instructure/quiz-common");
19
+
20
+ var _flatten = _interopRequireDefault(require("lodash/flatten"));
21
+
22
+ var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
23
+
24
+ var handleError = function handleError(dispatch, errorMessage) {
25
+ return function (error) {
26
+ if (error.response && [404, 401].includes(error.response.status)) {
27
+ // need a timeout so focus is not stolen by
28
+ // other callbacks after the alert opens
29
+ setTimeout(function () {
30
+ dispatch((0, _ui.set)(_quizCommon.TRAY_ALERT_OPEN, true));
31
+ }, 500);
32
+ } else if (errorMessage) {
33
+ dispatch((0, _alerts.addError)(errorMessage));
34
+ } else if (error.response && error.response.status) {
35
+ dispatch((0, _alerts.addError)((0, _formatMessage.default)('Sorry, there was a {status} Error.', {
36
+ status: error.response.status
37
+ })));
38
+ } else {
39
+ dispatch((0, _alerts.addError)((0, _formatMessage.default)('Sorry, there was an error.')));
40
+ }
41
+ };
42
+ }; // The Header for QuizEntryEdit has a 200ms delay in componentDidMount before
43
+ // moving focus to its title.
44
+ // If we try to show the error banner immediately, VoiceOver will begin reading
45
+ // it, but get interupted part way through by the focus moving to the Header.
46
+ // We need a long enough delay here for the modal to close, the QuizEntryEdit
47
+ // header to get mounted, the delay to happen and the focus to move to the title.
48
+ // Please forgive me.
49
+
50
+
51
+ exports.handleError = handleError;
52
+ var UGLY_HARDCODED_TIMEOUT = 800;
53
+
54
+ var getOnErrorWithDelayedValidationMessage = function getOnErrorWithDelayedValidationMessage(dispatch, validationErrorMsg, genericErrorMsg) {
55
+ var timeout = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : UGLY_HARDCODED_TIMEOUT;
56
+ var errMsg = genericErrorMsg;
57
+
58
+ var onError = function onError(_ref) {
59
+ var response = _ref.response;
60
+ return /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
61
+ var _yield$response$json, errors;
62
+
63
+ return _regenerator.default.wrap(function _callee$(_context) {
64
+ while (1) {
65
+ switch (_context.prev = _context.next) {
66
+ case 0:
67
+ if (!(response && response.status === 422)) {
68
+ _context.next = 11;
69
+ break;
70
+ }
71
+
72
+ _context.prev = 1;
73
+ _context.next = 4;
74
+ return response.json();
75
+
76
+ case 4:
77
+ _yield$response$json = _context.sent;
78
+ errors = _yield$response$json.errors;
79
+
80
+ if (errorsAllFromValidation(errors)) {
81
+ errMsg = validationErrorMsg;
82
+ }
83
+
84
+ _context.next = 11;
85
+ break;
86
+
87
+ case 9:
88
+ _context.prev = 9;
89
+ _context.t0 = _context["catch"](1);
90
+
91
+ case 11:
92
+ return _context.abrupt("return", setTimeout(function () {
93
+ return dispatch((0, _alerts.addError)(errMsg));
94
+ }, timeout));
95
+
96
+ case 12:
97
+ case "end":
98
+ return _context.stop();
99
+ }
100
+ }
101
+ }, _callee, null, [[1, 9]]);
102
+ }));
103
+ };
104
+
105
+ return onError;
106
+ }; // ==============================
107
+ // ==============================
108
+ // API INPUT VALIDATION HELPERS
109
+ // ==============================
110
+ // ==============================
111
+
112
+
113
+ exports.getOnErrorWithDelayedValidationMessage = getOnErrorWithDelayedValidationMessage;
114
+
115
+ var validationTextForError = function validationTextForError(errorType) {
116
+ if (errorType === 'regexp') {
117
+ return (0, _formatMessage.default)('Invalid Regular Expression');
118
+ }
119
+
120
+ return (0, _formatMessage.default)('Unknown validation error');
121
+ };
122
+
123
+ var errorsAllFromValidation = function errorsAllFromValidation(errors) {
124
+ var errorArray = (0, _flatten.default)(Object.values(errors)); // All api errors are just part of input validation flow
125
+ // Don't show the error banner, validation feedback should be shown
126
+ // at input level
127
+
128
+ return errorArray.every(function (error) {
129
+ return error.validation_error;
130
+ });
131
+ };
132
+
133
+ exports.errorsAllFromValidation = errorsAllFromValidation;
134
+
135
+ var processApiError = /*#__PURE__*/function () {
136
+ var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(fetcherError) {
137
+ var response, unprocessableEntityCode, _yield$response$json2, errors, validationErrorsArray, validationErrorsObject, validationError;
138
+
139
+ return _regenerator.default.wrap(function _callee2$(_context2) {
140
+ while (1) {
141
+ switch (_context2.prev = _context2.next) {
142
+ case 0:
143
+ response = fetcherError.response;
144
+ unprocessableEntityCode = 422;
145
+
146
+ if (!(response && parseInt(response.status) === unprocessableEntityCode)) {
147
+ _context2.next = 15;
148
+ break;
149
+ }
150
+
151
+ _context2.next = 5;
152
+ return response.json();
153
+
154
+ case 5:
155
+ _yield$response$json2 = _context2.sent;
156
+ errors = _yield$response$json2.errors;
157
+ validationErrorsArray = (0, _flatten.default)(Object.values(errors)).filter(function (error) {
158
+ return error.validation_error;
159
+ });
160
+
161
+ if (validationErrorsArray.length) {
162
+ _context2.next = 10;
163
+ break;
164
+ }
165
+
166
+ throw fetcherError;
167
+
168
+ case 10:
169
+ validationErrorsObject = {};
170
+ validationErrorsArray.forEach(function (error) {
171
+ validationErrorsObject[error.input_id] = validationErrorsObject[error.input_id] || [];
172
+ validationErrorsObject[error.input_id].push({
173
+ type: 'error',
174
+ text: validationTextForError(error.error_type)
175
+ });
176
+ });
177
+ validationError = Object.assign(Object.create(Error.prototype), fetcherError);
178
+ validationError.validationErrorsFromApi = validationErrorsObject;
179
+ throw validationError;
180
+
181
+ case 15:
182
+ throw fetcherError;
183
+
184
+ case 16:
185
+ case "end":
186
+ return _context2.stop();
187
+ }
188
+ }
189
+ }, _callee2);
190
+ }));
191
+
192
+ return function processApiError(_x) {
193
+ return _ref3.apply(this, arguments);
194
+ };
195
+ }();
196
+
197
+ exports.processApiError = processApiError;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.interactionTypeFetch = void 0;
9
+
10
+ var _Fetcher = _interopRequireDefault(require("../util/Fetcher.js"));
11
+
12
+ var _callHandlers = require("./callHandlers.js");
13
+
14
+ var interactionTypeFetch = function interactionTypeFetch() {
15
+ var url = '/api/interaction_types';
16
+ var fetcher = new _Fetcher.default();
17
+ return function (dispatch, getState) {
18
+ return fetcher.get(url).then(function (interactionTypesData) {
19
+ dispatch((0, _callHandlers.handleInteractionTypesResponse)(interactionTypesData));
20
+ });
21
+ };
22
+ };
23
+
24
+ exports.interactionTypeFetch = interactionTypeFetch;
@@ -0,0 +1,236 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.fetchQuizSessionResult = exports.fetchSessionItemResults = exports.submitQuizSession = exports.singleResponseSubmit = exports.recordTime = exports.fetchTime = exports.pinSessionItem = exports.fetchResumeData = exports.takeQuizSession = exports.submitStudentAccessCode = exports.fetchSessionItems = exports.fetchQuizSession = void 0;
9
+
10
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
+
12
+ var _Fetcher = _interopRequireDefault(require("../util/Fetcher.js"));
13
+
14
+ var _withDynamoPagination = _interopRequireDefault(require("../util/withDynamoPagination.js"));
15
+
16
+ var _noop = _interopRequireDefault(require("../util/noop.js"));
17
+
18
+ var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
19
+
20
+ var _callHandlers = require("./callHandlers.js");
21
+
22
+ var _quizCommon = require("@instructure/quiz-common");
23
+
24
+ var _QuizSessionResult = _interopRequireDefault(require("../records/QuizSessionResult.js"));
25
+
26
+ var _alerts = require("../actions/alerts.js");
27
+
28
+ var generateUrl = function generateUrl(pathParts) {
29
+ return ['', 'api', 'quiz_sessions'].concat((0, _toConsumableArray2.default)(pathParts)).join('/');
30
+ };
31
+
32
+ var get = function get(url, responseCb) {
33
+ var fetcherParams = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
34
+ var markCallbacksComplete = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : false;
35
+ var fetcher = new _Fetcher.default(fetcherParams);
36
+ var getCall = fetcher.get(url).then(responseCb);
37
+
38
+ if (markCallbacksComplete) {
39
+ return getCall.then(function () {
40
+ return fetcher.markCallbacksComplete();
41
+ });
42
+ }
43
+
44
+ return getCall;
45
+ };
46
+
47
+ var dynamoGet = function dynamoGet(url, responseCb) {
48
+ var fetcherParams = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
49
+ var markCallbacksComplete = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : false;
50
+ var DynamoFetcher = (0, _withDynamoPagination.default)(_Fetcher.default);
51
+ var DynamoFetcherGet = new DynamoFetcher(fetcherParams);
52
+ var getCall = DynamoFetcherGet.paginatedGet(url).then(responseCb);
53
+
54
+ if (markCallbacksComplete) {
55
+ return getCall.then(function () {
56
+ return DynamoFetcherGet.markCallbacksComplete();
57
+ });
58
+ }
59
+
60
+ return getCall;
61
+ };
62
+
63
+ var post = function post(url, params, responseCb) {
64
+ var fetcherParams = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {};
65
+ var fetcher = new _Fetcher.default(fetcherParams);
66
+ return fetcher.post(url, params).then(responseCb);
67
+ }; // /////////////////////
68
+ // GENERAL
69
+ // /////////////////////
70
+
71
+
72
+ var fetchQuizSession = function fetchQuizSession(quizSessionId) {
73
+ var responseCb = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : _noop.default;
74
+ return get(generateUrl([quizSessionId]), responseCb);
75
+ };
76
+
77
+ exports.fetchQuizSession = fetchQuizSession;
78
+
79
+ var fetchSessionItems = function fetchSessionItems(quizSessionId) {
80
+ var responseCb = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : _noop.default;
81
+ return dynamoGet(generateUrl([quizSessionId, 'session_items']), responseCb, {
82
+ callType: _quizCommon.SESSION_ITEMS_FETCH_CALL
83
+ });
84
+ }; // //////////////////////
85
+ // BEFORE TAKING
86
+ // //////////////////////
87
+
88
+
89
+ exports.fetchSessionItems = fetchSessionItems;
90
+
91
+ var submitStudentAccessCode = function submitStudentAccessCode(quizSessionId, accessCode) {
92
+ var responseCb = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : _noop.default;
93
+ return post(generateUrl([quizSessionId, 'submit_student_access_code']), {
94
+ body: JSON.stringify({
95
+ accessCode: accessCode
96
+ })
97
+ }, responseCb, {});
98
+ }; // //////////////////////
99
+ // TAKING
100
+ // //////////////////////
101
+
102
+
103
+ exports.submitStudentAccessCode = submitStudentAccessCode;
104
+
105
+ var takeQuizSession = function takeQuizSession(quizSessionId) {
106
+ var responseCb = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : _noop.default;
107
+ // Avoid generating the error header; errors handled via catch
108
+ return post(generateUrl([quizSessionId, 'take']), {}, responseCb, {
109
+ onError: function onError() {
110
+ return {
111
+ type: _quizCommon.DO_NOTHING
112
+ };
113
+ }
114
+ });
115
+ };
116
+
117
+ exports.takeQuizSession = takeQuizSession;
118
+
119
+ var fetchResumeData = function fetchResumeData(quizSessionId) {
120
+ var responseCb = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : _noop.default;
121
+ return get(generateUrl([quizSessionId, 'session_item_responses', 'resume_data']), responseCb);
122
+ }; // This is too widely used to be updated to use the common pattern here, fine as is
123
+
124
+
125
+ exports.fetchResumeData = fetchResumeData;
126
+
127
+ var pinSessionItem = function pinSessionItem(quizSessionId, sessionItemPosition) {
128
+ return function (dispatch, getState) {
129
+ var responseCb = function responseCb(quizSessionData) {
130
+ return dispatch((0, _callHandlers.handleQuizSessionResponse)(quizSessionData));
131
+ };
132
+
133
+ var params = {
134
+ body: JSON.stringify({
135
+ position: sessionItemPosition
136
+ })
137
+ };
138
+ return post(generateUrl([quizSessionId, 'toggle_session_item_pin']), params, responseCb);
139
+ };
140
+ };
141
+
142
+ exports.pinSessionItem = pinSessionItem;
143
+
144
+ var fetchTime = function fetchTime(quizSessionId) {
145
+ var responseCb = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : _noop.default;
146
+ return get(generateUrl([quizSessionId, 'time']), responseCb);
147
+ };
148
+
149
+ exports.fetchTime = fetchTime;
150
+
151
+ var recordTime = function recordTime(quizSessionId) {
152
+ var responseCb = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : _noop.default;
153
+ return get(generateUrl([quizSessionId, 'record']), responseCb);
154
+ }; // /////////////////////
155
+ // TAKING SUBMIT
156
+ // /////////////////////
157
+
158
+
159
+ exports.recordTime = recordTime;
160
+
161
+ var onSubmitError = function onSubmitError(responseCb, errorCb) {
162
+ return function (error) {
163
+ if (error.response && error.response.status === 422) {
164
+ responseCb(); // responseCb is the page navigation to Results (comes from quiz_lti)
165
+
166
+ return (0, _alerts.addError)((0, _formatMessage.default)('This attempt was already submitted. Showing results from the prior submission.'));
167
+ }
168
+
169
+ if (errorCb) errorCb(error.response.status);
170
+ return (0, _alerts.addError)((0, _formatMessage.default)('Submission error. Please wait 10 seconds and try again.'));
171
+ };
172
+ };
173
+
174
+ var onSingleResponseSubmitError = function onSingleResponseSubmitError(responseCb, errorCb) {
175
+ return function (error) {
176
+ if (error.response && error.response.status == 400) {
177
+ errorCb(error.response.status);
178
+ return (0, _alerts.addError)((0, _formatMessage.default)('Submission error. If the problem persists try reloading the page.'));
179
+ }
180
+
181
+ return onSubmitError(responseCb)(error);
182
+ };
183
+ };
184
+
185
+ var singleResponseSubmit = function singleResponseSubmit(quizSessionId, userResponse) {
186
+ var responseCb = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : _noop.default;
187
+ var errorCb = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : _noop.default;
188
+
189
+ // if the server returns a 204, don't try to JSON deserialize the
190
+ // empty response (204 = No Content)
191
+ var asyncResponseHandler = function asyncResponseHandler(resp) {
192
+ return resp.status === 204 ? Promise.resolve(null) : resp.json();
193
+ };
194
+
195
+ return post(generateUrl([quizSessionId, 'session_item_responses', 'single_response_submit']), userResponse, responseCb, {
196
+ asyncResponseHandler: asyncResponseHandler,
197
+ callType: _quizCommon.OQAAT_NO_BACKTRACKING_NEXT_ITEM_FETCH_CALL,
198
+ onError: onSingleResponseSubmitError(responseCb, errorCb)
199
+ }).catch(function (e) {// tests don't like uncaught errors
200
+ });
201
+ };
202
+
203
+ exports.singleResponseSubmit = singleResponseSubmit;
204
+
205
+ var submitQuizSession = function submitQuizSession(quizSessionId, userResponses) {
206
+ var responseCb = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : _noop.default;
207
+ var errorCb = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : _noop.default;
208
+ return post(generateUrl([quizSessionId, 'submit']), userResponses, responseCb, {
209
+ onError: onSubmitError(responseCb, errorCb)
210
+ }).catch(function (e) {// tests don't like uncaught errors
211
+ });
212
+ }; // ///////////////////////////////
213
+ // POST TAKING (RESULTS/GRADING)
214
+ // ///////////////////////////////
215
+
216
+
217
+ exports.submitQuizSession = submitQuizSession;
218
+
219
+ var fetchSessionItemResults = function fetchSessionItemResults(quizSessionId, quizSessionResultId) {
220
+ var responseCb = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : _noop.default;
221
+ return dynamoGet(generateUrl([quizSessionId, 'results', quizSessionResultId, 'session_item_results']), responseCb);
222
+ };
223
+
224
+ exports.fetchSessionItemResults = fetchSessionItemResults;
225
+
226
+ var fetchQuizSessionResult = function fetchQuizSessionResult(quizSessionId, quizSessionResultId) {
227
+ var responseCb = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : _noop.default;
228
+
229
+ var fetcherKey = _QuizSessionResult.default.fetcherTag(quizSessionResultId);
230
+
231
+ return get(generateUrl([quizSessionId, 'results', quizSessionResultId]), responseCb, {
232
+ callType: fetcherKey
233
+ }, true);
234
+ };
235
+
236
+ exports.fetchQuizSessionResult = fetchQuizSessionResult;
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.getExistingQuiz = getExistingQuiz;
9
+ exports.getExistingQuizAndItems = getExistingQuizAndItems;
10
+ exports.quizFetchHandler = void 0;
11
+
12
+ var _Fetcher = _interopRequireDefault(require("../util/Fetcher.js"));
13
+
14
+ var _quizzes = require("../actions/quizzes.js");
15
+
16
+ var _callHandlers = require("./callHandlers.js");
17
+
18
+ var _interactionTypes = require("./interactionTypes.js");
19
+
20
+ var _quizEntries = require("../../building/api/quizEntries.js");
21
+
22
+ // ==== CALLBACKS ====
23
+ var quizFetchHandler = function quizFetchHandler(dispatch, quiz) {
24
+ dispatch([(0, _callHandlers.handleQuizResponse)(quiz), (0, _quizzes.newActiveQuiz)("".concat(quiz.id))]);
25
+ }; // ====================================
26
+ // fetch the data for an existing quiz
27
+ // and add it as the active quiz
28
+ // ====================================
29
+
30
+
31
+ exports.quizFetchHandler = quizFetchHandler;
32
+
33
+ function getExistingQuiz(quizId) {
34
+ var quizUrl = "/api/quizzes/".concat(quizId);
35
+ return function (dispatch, getState) {
36
+ var fetcher = new _Fetcher.default();
37
+ return fetcher.get(quizUrl).then(function (quizData) {
38
+ return quizFetchHandler(dispatch, quizData);
39
+ });
40
+ };
41
+ }
42
+
43
+ function getExistingQuizAndItems(quizId) {
44
+ var quizUrl = "/api/quizzes/".concat(quizId);
45
+ return function (dispatch, getState) {
46
+ var fetcher = new _Fetcher.default();
47
+ return fetcher.get(quizUrl).then(function (quizData) {
48
+ return quizFetchHandler(dispatch, quizData);
49
+ }).then(function () {
50
+ return dispatch((0, _quizEntries.getQuizEntries)(quizId));
51
+ }).then(function () {
52
+ return dispatch((0, _interactionTypes.interactionTypeFetch)());
53
+ });
54
+ };
55
+ }