jspsych 6.3.1 → 7.1.2

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 (401) hide show
  1. package/README.md +36 -37
  2. package/css/jspsych.css +39 -39
  3. package/dist/JsPsych.d.ts +112 -0
  4. package/dist/TimelineNode.d.ts +34 -0
  5. package/dist/index.browser.js +3171 -0
  6. package/dist/index.browser.js.map +1 -0
  7. package/dist/index.browser.min.js +2 -0
  8. package/dist/index.browser.min.js.map +1 -0
  9. package/dist/index.cjs +3165 -0
  10. package/dist/index.cjs.map +1 -0
  11. package/dist/index.d.ts +11 -0
  12. package/dist/index.js +3159 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/migration.d.ts +3 -0
  15. package/dist/modules/data/DataCollection.d.ts +45 -0
  16. package/dist/modules/data/DataColumn.d.ts +15 -0
  17. package/dist/modules/data/index.d.ts +25 -0
  18. package/dist/modules/data/utils.d.ts +3 -0
  19. package/dist/modules/extensions.d.ts +22 -0
  20. package/dist/modules/plugin-api/HardwareAPI.d.ts +15 -0
  21. package/dist/modules/plugin-api/KeyboardListenerAPI.d.ts +34 -0
  22. package/dist/modules/plugin-api/MediaAPI.d.ts +27 -0
  23. package/dist/modules/plugin-api/SimulationAPI.d.ts +41 -0
  24. package/dist/modules/plugin-api/TimeoutAPI.d.ts +5 -0
  25. package/dist/modules/plugin-api/index.d.ts +8 -0
  26. package/dist/modules/plugins.d.ts +136 -0
  27. package/dist/modules/randomization.d.ts +35 -0
  28. package/dist/modules/turk.d.ts +40 -0
  29. package/dist/modules/utils.d.ts +7 -0
  30. package/package.json +32 -15
  31. package/src/JsPsych.ts +884 -0
  32. package/src/TimelineNode.ts +536 -0
  33. package/src/index.ts +71 -0
  34. package/src/migration.ts +37 -0
  35. package/src/modules/data/DataCollection.ts +198 -0
  36. package/src/modules/data/DataColumn.ts +86 -0
  37. package/src/modules/data/index.ts +174 -0
  38. package/src/modules/data/utils.ts +75 -0
  39. package/src/modules/extensions.ts +23 -0
  40. package/src/modules/plugin-api/HardwareAPI.ts +32 -0
  41. package/src/modules/plugin-api/KeyboardListenerAPI.ts +165 -0
  42. package/src/modules/plugin-api/MediaAPI.ts +337 -0
  43. package/src/modules/plugin-api/SimulationAPI.ts +181 -0
  44. package/src/modules/plugin-api/TimeoutAPI.ts +16 -0
  45. package/src/modules/plugin-api/index.ts +28 -0
  46. package/src/modules/plugins.ts +165 -0
  47. package/src/modules/randomization.ts +327 -0
  48. package/src/modules/turk.ts +99 -0
  49. package/src/modules/utils.ts +30 -0
  50. package/.github/workflows/jest.yml +0 -20
  51. package/code-of-conduct.md +0 -56
  52. package/contributors.md +0 -61
  53. package/docs/CNAME +0 -1
  54. package/docs/about/about.md +0 -18
  55. package/docs/about/contributing.md +0 -43
  56. package/docs/about/license.md +0 -25
  57. package/docs/about/support.md +0 -7
  58. package/docs/core_library/jspsych-core.md +0 -719
  59. package/docs/core_library/jspsych-data.md +0 -587
  60. package/docs/core_library/jspsych-pluginAPI.md +0 -624
  61. package/docs/core_library/jspsych-randomization.md +0 -389
  62. package/docs/core_library/jspsych-turk.md +0 -98
  63. package/docs/extensions/extensions.md +0 -83
  64. package/docs/extensions/jspsych-ext-webgazer.md +0 -137
  65. package/docs/img/blue.png +0 -0
  66. package/docs/img/devtools-change-css.png +0 -0
  67. package/docs/img/devtools-css-errors.png +0 -0
  68. package/docs/img/devtools-inspect-element.png +0 -0
  69. package/docs/img/folder-setup.png +0 -0
  70. package/docs/img/folder-with-html.png +0 -0
  71. package/docs/img/githubreleases.jpg +0 -0
  72. package/docs/img/jspsych-favicon.png +0 -0
  73. package/docs/img/jspsych-logo-no-text-mono.svg +0 -493
  74. package/docs/img/jspsych-logo.jpg +0 -0
  75. package/docs/img/orange.png +0 -0
  76. package/docs/img/palmer_stim.png +0 -0
  77. package/docs/img/progress_bar.png +0 -0
  78. package/docs/img/prolific-study-completion.png +0 -0
  79. package/docs/img/prolific-study-link.png +0 -0
  80. package/docs/img/visual_search_example.jpg +0 -0
  81. package/docs/index.md +0 -9
  82. package/docs/overview/browser-device-support.md +0 -35
  83. package/docs/overview/callbacks.md +0 -180
  84. package/docs/overview/data.md +0 -281
  85. package/docs/overview/dynamic-parameters.md +0 -147
  86. package/docs/overview/exclude-browser.md +0 -32
  87. package/docs/overview/experiment-options.md +0 -149
  88. package/docs/overview/eye-tracking.md +0 -271
  89. package/docs/overview/fullscreen.md +0 -36
  90. package/docs/overview/media-preloading.md +0 -369
  91. package/docs/overview/mturk.md +0 -77
  92. package/docs/overview/plugins.md +0 -320
  93. package/docs/overview/progress-bar.md +0 -110
  94. package/docs/overview/prolific.md +0 -78
  95. package/docs/overview/record-browser-interactions.md +0 -23
  96. package/docs/overview/running-experiments.md +0 -95
  97. package/docs/overview/style.md +0 -293
  98. package/docs/overview/timeline.md +0 -457
  99. package/docs/plugins/jspsych-animation.md +0 -40
  100. package/docs/plugins/jspsych-audio-button-response.md +0 -60
  101. package/docs/plugins/jspsych-audio-keyboard-response.md +0 -58
  102. package/docs/plugins/jspsych-audio-slider-response.md +0 -53
  103. package/docs/plugins/jspsych-call-function.md +0 -81
  104. package/docs/plugins/jspsych-canvas-button-response.md +0 -66
  105. package/docs/plugins/jspsych-canvas-keyboard-response.md +0 -68
  106. package/docs/plugins/jspsych-canvas-slider-response.md +0 -89
  107. package/docs/plugins/jspsych-categorize-animation.md +0 -60
  108. package/docs/plugins/jspsych-categorize-html.md +0 -53
  109. package/docs/plugins/jspsych-categorize-image.md +0 -53
  110. package/docs/plugins/jspsych-cloze.md +0 -45
  111. package/docs/plugins/jspsych-external-html.md +0 -70
  112. package/docs/plugins/jspsych-free-sort.md +0 -56
  113. package/docs/plugins/jspsych-fullscreen.md +0 -57
  114. package/docs/plugins/jspsych-html-button-response.md +0 -42
  115. package/docs/plugins/jspsych-html-keyboard-response.md +0 -51
  116. package/docs/plugins/jspsych-html-slider-response.md +0 -45
  117. package/docs/plugins/jspsych-iat-html.md +0 -64
  118. package/docs/plugins/jspsych-iat-image.md +0 -64
  119. package/docs/plugins/jspsych-image-button-response.md +0 -48
  120. package/docs/plugins/jspsych-image-keyboard-response.md +0 -58
  121. package/docs/plugins/jspsych-image-slider-response.md +0 -54
  122. package/docs/plugins/jspsych-instructions.md +0 -58
  123. package/docs/plugins/jspsych-maxdiff.md +0 -41
  124. package/docs/plugins/jspsych-preload.md +0 -128
  125. package/docs/plugins/jspsych-rdk.md +0 -119
  126. package/docs/plugins/jspsych-reconstruction.md +0 -48
  127. package/docs/plugins/jspsych-resize.md +0 -39
  128. package/docs/plugins/jspsych-same-different-html.md +0 -53
  129. package/docs/plugins/jspsych-same-different-image.md +0 -66
  130. package/docs/plugins/jspsych-serial-reaction-time-mouse.md +0 -52
  131. package/docs/plugins/jspsych-serial-reaction-time.md +0 -57
  132. package/docs/plugins/jspsych-survey-html-form.md +0 -50
  133. package/docs/plugins/jspsych-survey-likert.md +0 -70
  134. package/docs/plugins/jspsych-survey-multi-choice.md +0 -48
  135. package/docs/plugins/jspsych-survey-multi-select.md +0 -53
  136. package/docs/plugins/jspsych-survey-text.md +0 -63
  137. package/docs/plugins/jspsych-video-button-response.md +0 -54
  138. package/docs/plugins/jspsych-video-keyboard-response.md +0 -50
  139. package/docs/plugins/jspsych-video-slider-response.md +0 -60
  140. package/docs/plugins/jspsych-virtual-chinrest.md +0 -105
  141. package/docs/plugins/jspsych-visual-search-circle.md +0 -52
  142. package/docs/plugins/jspsych-vsl-animate-occlusion.md +0 -55
  143. package/docs/plugins/jspsych-vsl-grid-scene.md +0 -62
  144. package/docs/plugins/jspsych-webgazer-calibrate.md +0 -61
  145. package/docs/plugins/jspsych-webgazer-init-camera.md +0 -30
  146. package/docs/plugins/jspsych-webgazer-validate.md +0 -44
  147. package/docs/plugins/list-of-plugins.md +0 -54
  148. package/docs/tutorials/hello-world.md +0 -162
  149. package/docs/tutorials/rt-task.md +0 -1334
  150. package/docs/tutorials/video-tutorials.md +0 -11
  151. package/examples/add-to-end-of-timeline.html +0 -38
  152. package/examples/case-sensitive-responses.html +0 -45
  153. package/examples/conditional-and-loop-functions.html +0 -64
  154. package/examples/css/jquery-ui.css +0 -1225
  155. package/examples/css-classes-parameter.html +0 -145
  156. package/examples/data-add-properties.html +0 -44
  157. package/examples/data-as-function.html +0 -39
  158. package/examples/data-from-timeline.html +0 -52
  159. package/examples/data-from-url.html +0 -21
  160. package/examples/demo-flanker.html +0 -117
  161. package/examples/demo-simple-rt-task.html +0 -120
  162. package/examples/demos/demo_1.html +0 -35
  163. package/examples/demos/demo_2.html +0 -50
  164. package/examples/demos/demo_3.html +0 -63
  165. package/examples/display-element-to-embed-experiment.html +0 -79
  166. package/examples/end-active-node.html +0 -52
  167. package/examples/end-experiment.html +0 -45
  168. package/examples/exclusions.html +0 -32
  169. package/examples/external_html/simple_consent.html +0 -4
  170. package/examples/img/1.gif +0 -0
  171. package/examples/img/10.gif +0 -0
  172. package/examples/img/11.gif +0 -0
  173. package/examples/img/12.gif +0 -0
  174. package/examples/img/2.gif +0 -0
  175. package/examples/img/3.gif +0 -0
  176. package/examples/img/4.gif +0 -0
  177. package/examples/img/5.gif +0 -0
  178. package/examples/img/6.gif +0 -0
  179. package/examples/img/7.gif +0 -0
  180. package/examples/img/8.gif +0 -0
  181. package/examples/img/9.gif +0 -0
  182. package/examples/img/age/of1.jpg +0 -0
  183. package/examples/img/age/of2.jpg +0 -0
  184. package/examples/img/age/of3.jpg +0 -0
  185. package/examples/img/age/om1.jpg +0 -0
  186. package/examples/img/age/om2.jpg +0 -0
  187. package/examples/img/age/om3.jpg +0 -0
  188. package/examples/img/age/yf1.jpg +0 -0
  189. package/examples/img/age/yf4.jpg +0 -0
  190. package/examples/img/age/yf5.jpg +0 -0
  191. package/examples/img/age/ym2.jpg +0 -0
  192. package/examples/img/age/ym3.jpg +0 -0
  193. package/examples/img/age/ym5.jpg +0 -0
  194. package/examples/img/backwardN.gif +0 -0
  195. package/examples/img/blue.png +0 -0
  196. package/examples/img/card.png +0 -0
  197. package/examples/img/con1.png +0 -0
  198. package/examples/img/con2.png +0 -0
  199. package/examples/img/fixation.gif +0 -0
  200. package/examples/img/happy_face_1.jpg +0 -0
  201. package/examples/img/happy_face_2.jpg +0 -0
  202. package/examples/img/happy_face_3.jpg +0 -0
  203. package/examples/img/happy_face_4.jpg +0 -0
  204. package/examples/img/inc1.png +0 -0
  205. package/examples/img/inc2.png +0 -0
  206. package/examples/img/normalN.gif +0 -0
  207. package/examples/img/orange.png +0 -0
  208. package/examples/img/redX.png +0 -0
  209. package/examples/img/ribbon.jpg +0 -0
  210. package/examples/img/sad_face_1.jpg +0 -0
  211. package/examples/img/sad_face_2.jpg +0 -0
  212. package/examples/img/sad_face_3.jpg +0 -0
  213. package/examples/img/sad_face_4.jpg +0 -0
  214. package/examples/js/snap.svg-min.js +0 -21
  215. package/examples/js/webgazer/ridgeWorker.mjs +0 -135
  216. package/examples/js/webgazer/webgazer.js +0 -88909
  217. package/examples/js/webgazer/worker_scripts/mat.js +0 -306
  218. package/examples/js/webgazer/worker_scripts/util.js +0 -398
  219. package/examples/jspsych-RDK.html +0 -58
  220. package/examples/jspsych-animation.html +0 -39
  221. package/examples/jspsych-audio-button-response.html +0 -58
  222. package/examples/jspsych-audio-keyboard-response.html +0 -68
  223. package/examples/jspsych-audio-slider-response.html +0 -61
  224. package/examples/jspsych-call-function.html +0 -32
  225. package/examples/jspsych-canvas-button-response.html +0 -95
  226. package/examples/jspsych-canvas-keyboard-response.html +0 -78
  227. package/examples/jspsych-canvas-slider-response.html +0 -67
  228. package/examples/jspsych-categorize-animation.html +0 -49
  229. package/examples/jspsych-categorize-html.html +0 -33
  230. package/examples/jspsych-categorize-image.html +0 -44
  231. package/examples/jspsych-cloze.html +0 -37
  232. package/examples/jspsych-free-sort.html +0 -109
  233. package/examples/jspsych-fullscreen.html +0 -45
  234. package/examples/jspsych-html-button-response.html +0 -43
  235. package/examples/jspsych-html-keyboard-response.html +0 -42
  236. package/examples/jspsych-html-slider-response.html +0 -53
  237. package/examples/jspsych-iat.html +0 -520
  238. package/examples/jspsych-image-button-response.html +0 -91
  239. package/examples/jspsych-image-keyboard-response.html +0 -85
  240. package/examples/jspsych-image-slider-response.html +0 -85
  241. package/examples/jspsych-instructions.html +0 -37
  242. package/examples/jspsych-maxdiff.html +0 -33
  243. package/examples/jspsych-preload.html +0 -140
  244. package/examples/jspsych-reconstruction.html +0 -43
  245. package/examples/jspsych-resize.html +0 -34
  246. package/examples/jspsych-same-different-html.html +0 -28
  247. package/examples/jspsych-same-different-image.html +0 -39
  248. package/examples/jspsych-serial-reaction-time-mouse.html +0 -98
  249. package/examples/jspsych-serial-reaction-time.html +0 -54
  250. package/examples/jspsych-survey-html-form.html +0 -33
  251. package/examples/jspsych-survey-likert.html +0 -42
  252. package/examples/jspsych-survey-multi-choice.html +0 -40
  253. package/examples/jspsych-survey-multi-select.html +0 -42
  254. package/examples/jspsych-survey-text.html +0 -34
  255. package/examples/jspsych-video-button-response.html +0 -65
  256. package/examples/jspsych-video-keyboard-response.html +0 -61
  257. package/examples/jspsych-video-slider-response.html +0 -63
  258. package/examples/jspsych-virtual-chinrest.html +0 -69
  259. package/examples/jspsych-visual-search-circle.html +0 -64
  260. package/examples/jspsych-vsl-animate-occlusion.html +0 -35
  261. package/examples/jspsych-vsl-grid-scene.html +0 -47
  262. package/examples/lexical-decision.html +0 -134
  263. package/examples/manual-preloading.html +0 -59
  264. package/examples/pause-unpause.html +0 -33
  265. package/examples/progress-bar.html +0 -68
  266. package/examples/save-trial-parameters.html +0 -98
  267. package/examples/sound/hammer.mp3 +0 -0
  268. package/examples/sound/sound.mp3 +0 -0
  269. package/examples/sound/speech_blue.mp3 +0 -0
  270. package/examples/sound/speech_green.mp3 +0 -0
  271. package/examples/sound/speech_joke.mp3 +0 -0
  272. package/examples/sound/speech_red.mp3 +0 -0
  273. package/examples/sound/tone.mp3 +0 -0
  274. package/examples/timeline-variables-sampling.html +0 -50
  275. package/examples/timeline-variables.html +0 -64
  276. package/examples/video/sample_video.mp4 +0 -0
  277. package/examples/webgazer.html +0 -174
  278. package/examples/webgazer_audio.html +0 -90
  279. package/examples/webgazer_image.html +0 -60
  280. package/extensions/jspsych-ext-webgazer.js +0 -265
  281. package/jspsych.js +0 -3023
  282. package/license.txt +0 -21
  283. package/mkdocs.yml +0 -118
  284. package/plugins/jspsych-animation.js +0 -189
  285. package/plugins/jspsych-audio-button-response.js +0 -269
  286. package/plugins/jspsych-audio-keyboard-response.js +0 -209
  287. package/plugins/jspsych-audio-slider-response.js +0 -278
  288. package/plugins/jspsych-call-function.js +0 -58
  289. package/plugins/jspsych-canvas-button-response.js +0 -199
  290. package/plugins/jspsych-canvas-keyboard-response.js +0 -155
  291. package/plugins/jspsych-canvas-slider-response.js +0 -207
  292. package/plugins/jspsych-categorize-animation.js +0 -266
  293. package/plugins/jspsych-categorize-html.js +0 -220
  294. package/plugins/jspsych-categorize-image.js +0 -222
  295. package/plugins/jspsych-cloze.js +0 -112
  296. package/plugins/jspsych-external-html.js +0 -112
  297. package/plugins/jspsych-free-sort.js +0 -478
  298. package/plugins/jspsych-fullscreen.js +0 -106
  299. package/plugins/jspsych-html-button-response.js +0 -188
  300. package/plugins/jspsych-html-keyboard-response.js +0 -149
  301. package/plugins/jspsych-html-slider-response.js +0 -202
  302. package/plugins/jspsych-iat-html.js +0 -284
  303. package/plugins/jspsych-iat-image.js +0 -286
  304. package/plugins/jspsych-image-button-response.js +0 -327
  305. package/plugins/jspsych-image-keyboard-response.js +0 -263
  306. package/plugins/jspsych-image-slider-response.js +0 -369
  307. package/plugins/jspsych-instructions.js +0 -237
  308. package/plugins/jspsych-maxdiff.js +0 -173
  309. package/plugins/jspsych-preload.js +0 -345
  310. package/plugins/jspsych-rdk.js +0 -1373
  311. package/plugins/jspsych-reconstruction.js +0 -134
  312. package/plugins/jspsych-resize.js +0 -166
  313. package/plugins/jspsych-same-different-html.js +0 -168
  314. package/plugins/jspsych-same-different-image.js +0 -169
  315. package/plugins/jspsych-serial-reaction-time-mouse.js +0 -212
  316. package/plugins/jspsych-serial-reaction-time.js +0 -247
  317. package/plugins/jspsych-survey-html-form.js +0 -171
  318. package/plugins/jspsych-survey-likert.js +0 -195
  319. package/plugins/jspsych-survey-multi-choice.js +0 -208
  320. package/plugins/jspsych-survey-multi-select.js +0 -232
  321. package/plugins/jspsych-survey-text.js +0 -185
  322. package/plugins/jspsych-video-button-response.js +0 -335
  323. package/plugins/jspsych-video-keyboard-response.js +0 -279
  324. package/plugins/jspsych-video-slider-response.js +0 -351
  325. package/plugins/jspsych-virtual-chinrest.js +0 -471
  326. package/plugins/jspsych-visual-search-circle.js +0 -259
  327. package/plugins/jspsych-vsl-animate-occlusion.js +0 -196
  328. package/plugins/jspsych-vsl-grid-scene.js +0 -103
  329. package/plugins/jspsych-webgazer-calibrate.js +0 -161
  330. package/plugins/jspsych-webgazer-init-camera.js +0 -139
  331. package/plugins/jspsych-webgazer-validate.js +0 -314
  332. package/plugins/template/jspsych-plugin-template.js +0 -35
  333. package/tests/README.md +0 -7
  334. package/tests/jsPsych/case-sensitive-responses.test.js +0 -53
  335. package/tests/jsPsych/css-classes-parameter.test.js +0 -107
  336. package/tests/jsPsych/default-iti.test.js +0 -51
  337. package/tests/jsPsych/default-parameters.test.js +0 -58
  338. package/tests/jsPsych/endexperiment.test.js +0 -49
  339. package/tests/jsPsych/events.test.js +0 -606
  340. package/tests/jsPsych/functions-as-parameters.test.js +0 -210
  341. package/tests/jsPsych/init.test.js +0 -48
  342. package/tests/jsPsych/loads.test.js +0 -7
  343. package/tests/jsPsych/min-rt.test.js +0 -58
  344. package/tests/jsPsych/progressbar.test.js +0 -202
  345. package/tests/jsPsych/timeline-variables.test.js +0 -531
  346. package/tests/jsPsych/timelines.test.js +0 -569
  347. package/tests/jsPsych.data/data-csv-conversion.test.js +0 -85
  348. package/tests/jsPsych.data/data-json-conversion.test.js +0 -120
  349. package/tests/jsPsych.data/datacollection.test.js +0 -117
  350. package/tests/jsPsych.data/datacolumn.test.js +0 -50
  351. package/tests/jsPsych.data/datamodule.test.js +0 -152
  352. package/tests/jsPsych.data/dataparameter.test.js +0 -251
  353. package/tests/jsPsych.data/interactions.test.js +0 -109
  354. package/tests/jsPsych.data/trialparameters.test.js +0 -175
  355. package/tests/jsPsych.extensions/extensions.test.js +0 -207
  356. package/tests/jsPsych.extensions/test-extension.js +0 -42
  357. package/tests/jsPsych.pluginAPI/pluginapi.test.js +0 -365
  358. package/tests/jsPsych.pluginAPI/preloads.test.js +0 -43
  359. package/tests/jsPsych.randomization/randomziation.test.js +0 -27
  360. package/tests/jsPsych.utils/utils.test.js +0 -58
  361. package/tests/plugins/plugin-animation.test.js +0 -34
  362. package/tests/plugins/plugin-audio-button-response.test.js +0 -15
  363. package/tests/plugins/plugin-audio-keyboard-response.test.js +0 -15
  364. package/tests/plugins/plugin-audio-slider-response.test.js +0 -15
  365. package/tests/plugins/plugin-call-function.test.js +0 -49
  366. package/tests/plugins/plugin-categorize-animation.test.js +0 -263
  367. package/tests/plugins/plugin-categorize-html.test.js +0 -17
  368. package/tests/plugins/plugin-categorize-image.test.js +0 -17
  369. package/tests/plugins/plugin-cloze.test.js +0 -157
  370. package/tests/plugins/plugin-free-sort.test.js +0 -106
  371. package/tests/plugins/plugin-fullscreen.test.js +0 -41
  372. package/tests/plugins/plugin-html-button-response.test.js +0 -161
  373. package/tests/plugins/plugin-html-keyboard-response.test.js +0 -139
  374. package/tests/plugins/plugin-html-slider-response.test.js +0 -155
  375. package/tests/plugins/plugin-iat-html.test.js +0 -299
  376. package/tests/plugins/plugin-iat-image.test.js +0 -298
  377. package/tests/plugins/plugin-image-button-response.test.js +0 -174
  378. package/tests/plugins/plugin-image-keyboard-response.test.js +0 -147
  379. package/tests/plugins/plugin-image-slider-response.test.js +0 -174
  380. package/tests/plugins/plugin-instructions.test.js +0 -85
  381. package/tests/plugins/plugin-maxdiff.test.js +0 -39
  382. package/tests/plugins/plugin-preload.test.js +0 -916
  383. package/tests/plugins/plugin-rdk.test.js +0 -61
  384. package/tests/plugins/plugin-reconstruction.test.js +0 -16
  385. package/tests/plugins/plugin-resize.test.js +0 -16
  386. package/tests/plugins/plugin-same-different-html.test.js +0 -17
  387. package/tests/plugins/plugin-same-different-image.test.js +0 -17
  388. package/tests/plugins/plugin-serial-reaction-time-mouse.test.js +0 -42
  389. package/tests/plugins/plugin-serial-reaction-time.test.js +0 -109
  390. package/tests/plugins/plugin-survey-html-form.test.js +0 -44
  391. package/tests/plugins/plugin-survey-likert.test.js +0 -48
  392. package/tests/plugins/plugin-survey-multi-choice.test.js +0 -47
  393. package/tests/plugins/plugin-survey-multi-select.test.js +0 -71
  394. package/tests/plugins/plugin-survey-text.test.js +0 -115
  395. package/tests/plugins/plugin-video-button-response.test.js +0 -32
  396. package/tests/plugins/plugin-video-keyboard-response.test.js +0 -32
  397. package/tests/plugins/plugin-video-slider-response.test.js +0 -31
  398. package/tests/plugins/plugin-visual-search-circle.test.js +0 -16
  399. package/tests/plugins/plugin-vsl-animate-occlusion.test.js +0 -16
  400. package/tests/plugins/plugin-vsl-grid-scene.test.js +0 -16
  401. package/tests/testing-utils.js +0 -13
@@ -1,199 +0,0 @@
1
- /**
2
- * jspsych-canvas-button-response
3
- * Chris Jungerius (modified from Josh de Leeuw)
4
- *
5
- * a jsPsych plugin for displaying a canvas stimulus and getting a button response
6
- *
7
- * documentation: docs.jspsych.org
8
- *
9
- **/
10
-
11
- jsPsych.plugins["canvas-button-response"] = (function () {
12
-
13
- var plugin = {};
14
-
15
- plugin.info = {
16
- name: 'canvas-button-response',
17
- description: '',
18
- parameters: {
19
- stimulus: {
20
- type: jsPsych.plugins.parameterType.FUNCTION,
21
- pretty_name: 'Stimulus',
22
- default: undefined,
23
- description: 'The drawing function to apply to the canvas. Should take the canvas object as argument.'
24
- },
25
- choices: {
26
- type: jsPsych.plugins.parameterType.STRING,
27
- pretty_name: 'Choices',
28
- default: undefined,
29
- array: true,
30
- description: 'The labels for the buttons.'
31
- },
32
- button_html: {
33
- type: jsPsych.plugins.parameterType.STRING,
34
- pretty_name: 'Button HTML',
35
- default: '<button class="jspsych-btn">%choice%</button>',
36
- array: true,
37
- description: 'The html of the button. Can create own style.'
38
- },
39
- prompt: {
40
- type: jsPsych.plugins.parameterType.STRING,
41
- pretty_name: 'Prompt',
42
- default: null,
43
- description: 'Any content here will be displayed under the button.'
44
- },
45
- stimulus_duration: {
46
- type: jsPsych.plugins.parameterType.INT,
47
- pretty_name: 'Stimulus duration',
48
- default: null,
49
- description: 'How long to hide the stimulus.'
50
- },
51
- trial_duration: {
52
- type: jsPsych.plugins.parameterType.INT,
53
- pretty_name: 'Trial duration',
54
- default: null,
55
- description: 'How long to show the trial.'
56
- },
57
- margin_vertical: {
58
- type: jsPsych.plugins.parameterType.STRING,
59
- pretty_name: 'Margin vertical',
60
- default: '0px',
61
- description: 'The vertical margin of the button.'
62
- },
63
- margin_horizontal: {
64
- type: jsPsych.plugins.parameterType.STRING,
65
- pretty_name: 'Margin horizontal',
66
- default: '8px',
67
- description: 'The horizontal margin of the button.'
68
- },
69
- response_ends_trial: {
70
- type: jsPsych.plugins.parameterType.BOOL,
71
- pretty_name: 'Response ends trial',
72
- default: true,
73
- description: 'If true, then trial will end when user responds.'
74
- },
75
- canvas_size: {
76
- type: jsPsych.plugins.parameterType.INT,
77
- array: true,
78
- pretty_name: 'Canvas size',
79
- default: [500, 500],
80
- description: 'Array containing the height (first value) and width (second value) of the canvas element.'
81
- }
82
-
83
- }
84
- }
85
-
86
- plugin.trial = function (display_element, trial) {
87
-
88
- // create canvas
89
- var html = '<div id="jspsych-canvas-button-response-stimulus">' + '<canvas id="jspsych-canvas-stimulus" height="' + trial.canvas_size[0] + '" width="' + trial.canvas_size[1] + '"></canvas>' + '</div>';
90
-
91
- //display buttons
92
- var buttons = [];
93
- if (Array.isArray(trial.button_html)) {
94
- if (trial.button_html.length == trial.choices.length) {
95
- buttons = trial.button_html;
96
- } else {
97
- console.error('Error in canvas-button-response plugin. The length of the button_html array does not equal the length of the choices array');
98
- }
99
- } else {
100
- for (var i = 0; i < trial.choices.length; i++) {
101
- buttons.push(trial.button_html);
102
- }
103
- }
104
- html += '<div id="jspsych-canvas-button-response-btngroup">';
105
- for (var i = 0; i < trial.choices.length; i++) {
106
- var str = buttons[i].replace(/%choice%/g, trial.choices[i]);
107
- html += '<div class="jspsych-canvas-button-response-button" style="display: inline-block; margin:' + trial.margin_vertical + ' ' + trial.margin_horizontal + '" id="jspsych-canvas-button-response-button-' + i + '" data-choice="' + i + '">' + str + '</div>';
108
- }
109
- html += '</div>';
110
-
111
- //show prompt if there is one
112
- if (trial.prompt !== null) {
113
- html += trial.prompt;
114
- }
115
- display_element.innerHTML = html;
116
-
117
- //draw
118
- let c = document.getElementById("jspsych-canvas-stimulus")
119
- trial.stimulus(c)
120
-
121
- // start time
122
- var start_time = performance.now();
123
-
124
- // add event listeners to buttons
125
- for (var i = 0; i < trial.choices.length; i++) {
126
- display_element.querySelector('#jspsych-canvas-button-response-button-' + i).addEventListener('click', function (e) {
127
- var choice = e.currentTarget.getAttribute('data-choice'); // don't use dataset for jsdom compatibility
128
- after_response(choice);
129
- });
130
- }
131
-
132
- // store response
133
- var response = {
134
- rt: null,
135
- button: null
136
- };
137
-
138
- // function to handle responses by the subject
139
- function after_response(choice) {
140
-
141
- // measure rt
142
- var end_time = performance.now();
143
- var rt = end_time - start_time;
144
- response.button = parseInt(choice);
145
- response.rt = rt;
146
-
147
- // after a valid response, the stimulus will have the CSS class 'responded'
148
- // which can be used to provide visual feedback that a response was recorded
149
- display_element.querySelector('#jspsych-canvas-button-response-stimulus').className += ' responded';
150
-
151
- // disable all the buttons after a response
152
- var btns = document.querySelectorAll('.jspsych-canvas-button-response-button button');
153
- for (var i = 0; i < btns.length; i++) {
154
- //btns[i].removeEventListener('click');
155
- btns[i].setAttribute('disabled', 'disabled');
156
- }
157
-
158
- if (trial.response_ends_trial) {
159
- end_trial();
160
- }
161
- };
162
-
163
- // function to end trial when it is time
164
- function end_trial() {
165
-
166
- // kill any remaining setTimeout handlers
167
- jsPsych.pluginAPI.clearAllTimeouts();
168
-
169
- // gather the data to store for the trial
170
- var trial_data = {
171
- rt: response.rt,
172
- response: response.button
173
- };
174
-
175
- // clear the display
176
- display_element.innerHTML = '';
177
-
178
- // move on to the next trial
179
- jsPsych.finishTrial(trial_data);
180
- };
181
-
182
- // hide image if timing is set
183
- if (trial.stimulus_duration !== null) {
184
- jsPsych.pluginAPI.setTimeout(function () {
185
- display_element.querySelector('#jspsych-canvas-button-response-stimulus').style.visibility = 'hidden';
186
- }, trial.stimulus_duration);
187
- }
188
-
189
- // end trial if time limit is set
190
- if (trial.trial_duration !== null) {
191
- jsPsych.pluginAPI.setTimeout(function () {
192
- end_trial();
193
- }, trial.trial_duration);
194
- }
195
-
196
- };
197
-
198
- return plugin;
199
- })();
@@ -1,155 +0,0 @@
1
- /**
2
- * jspsych-canvas-keyboard-response
3
- * Chris Jungerius (modified from Josh de Leeuw)
4
- *
5
- * a jsPsych plugin for displaying a canvas stimulus and getting a keyboard response
6
- *
7
- * documentation: docs.jspsych.org
8
- *
9
- **/
10
-
11
-
12
- jsPsych.plugins["canvas-keyboard-response"] = (function () {
13
-
14
- var plugin = {};
15
-
16
- plugin.info = {
17
- name: 'canvas-keyboard-response',
18
- description: '',
19
- parameters: {
20
- stimulus: {
21
- type: jsPsych.plugins.parameterType.FUNCTION,
22
- pretty_name: 'Stimulus',
23
- default: undefined,
24
- description: 'The drawing function to apply to the canvas. Should take the canvas object as argument.'
25
- },
26
- choices: {
27
- type: jsPsych.plugins.parameterType.KEY,
28
- array: true,
29
- pretty_name: 'Choices',
30
- default: jsPsych.ALL_KEYS,
31
- description: 'The keys the subject is allowed to press to respond to the stimulus.'
32
- },
33
- prompt: {
34
- type: jsPsych.plugins.parameterType.STRING,
35
- pretty_name: 'Prompt',
36
- default: null,
37
- description: 'Any content here will be displayed below the stimulus.'
38
- },
39
- stimulus_duration: {
40
- type: jsPsych.plugins.parameterType.INT,
41
- pretty_name: 'Stimulus duration',
42
- default: null,
43
- description: 'How long to hide the stimulus.'
44
- },
45
- trial_duration: {
46
- type: jsPsych.plugins.parameterType.INT,
47
- pretty_name: 'Trial duration',
48
- default: null,
49
- description: 'How long to show trial before it ends.'
50
- },
51
- response_ends_trial: {
52
- type: jsPsych.plugins.parameterType.BOOL,
53
- pretty_name: 'Response ends trial',
54
- default: true,
55
- description: 'If true, trial will end when subject makes a response.'
56
- },
57
- canvas_size: {
58
- type: jsPsych.plugins.parameterType.INT,
59
- array: true,
60
- pretty_name: 'Canvas size',
61
- default: [500, 500],
62
- description: 'Array containing the height (first value) and width (second value) of the canvas element.'
63
- }
64
-
65
- }
66
- }
67
-
68
- plugin.trial = function (display_element, trial) {
69
-
70
- var new_html = '<div id="jspsych-canvas-keyboard-response-stimulus">' + '<canvas id="jspsych-canvas-stimulus" height="' + trial.canvas_size[0] + '" width="' + trial.canvas_size[1] + '"></canvas>' + '</div>';
71
- // add prompt
72
- if (trial.prompt !== null) {
73
- new_html += trial.prompt;
74
- }
75
-
76
- // draw
77
- display_element.innerHTML = new_html;
78
- let c = document.getElementById("jspsych-canvas-stimulus")
79
- trial.stimulus(c)
80
- // store response
81
- var response = {
82
- rt: null,
83
- key: null
84
- };
85
-
86
- // function to end trial when it is time
87
- var end_trial = function () {
88
-
89
- // kill any remaining setTimeout handlers
90
- jsPsych.pluginAPI.clearAllTimeouts();
91
-
92
- // kill keyboard listeners
93
- if (typeof keyboardListener !== 'undefined') {
94
- jsPsych.pluginAPI.cancelKeyboardResponse(keyboardListener);
95
- }
96
-
97
- // gather the data to store for the trial
98
- var trial_data = {
99
- rt: response.rt,
100
- response: response.key
101
- };
102
-
103
- // clear the display
104
- display_element.innerHTML = '';
105
-
106
- // move on to the next trial
107
- jsPsych.finishTrial(trial_data);
108
- };
109
-
110
- // function to handle responses by the subject
111
- var after_response = function (info) {
112
-
113
- // after a valid response, the stimulus will have the CSS class 'responded'
114
- // which can be used to provide visual feedback that a response was recorded
115
- display_element.querySelector('#jspsych-canvas-keyboard-response-stimulus').className += ' responded';
116
-
117
- // only record the first response
118
- if (response.key == null) {
119
- response = info;
120
- }
121
-
122
- if (trial.response_ends_trial) {
123
- end_trial();
124
- }
125
- };
126
-
127
- // start the response listener
128
- if (trial.choices != jsPsych.NO_KEYS) {
129
- var keyboardListener = jsPsych.pluginAPI.getKeyboardResponse({
130
- callback_function: after_response,
131
- valid_responses: trial.choices,
132
- rt_method: 'performance',
133
- persist: false,
134
- allow_held_key: false
135
- });
136
- }
137
-
138
- // hide stimulus if stimulus_duration is set
139
- if (trial.stimulus_duration !== null) {
140
- jsPsych.pluginAPI.setTimeout(function () {
141
- display_element.querySelector('#jspsych-canvas-keyboard-response-stimulus').style.visibility = 'hidden';
142
- }, trial.stimulus_duration);
143
- }
144
-
145
- // end trial if trial_duration is set
146
- if (trial.trial_duration !== null) {
147
- jsPsych.pluginAPI.setTimeout(function () {
148
- end_trial();
149
- }, trial.trial_duration);
150
- }
151
-
152
- };
153
-
154
- return plugin;
155
- })();
@@ -1,207 +0,0 @@
1
- /**
2
- * jspsych-canvas-slider-response
3
- * Chris Jungerius (modified from Josh de Leeuw)
4
- *
5
- * a jsPsych plugin for displaying a canvas stimulus and getting a slider response
6
- *
7
- * documentation: docs.jspsych.org
8
- *
9
- */
10
-
11
-
12
- jsPsych.plugins['canvas-slider-response'] = (function () {
13
-
14
- var plugin = {};
15
-
16
- plugin.info = {
17
- name: 'canvas-slider-response',
18
- description: '',
19
- parameters: {
20
- stimulus: {
21
- type: jsPsych.plugins.parameterType.FUNCTION,
22
- pretty_name: 'Stimulus',
23
- default: undefined,
24
- description: 'The drawing function to apply to the canvas. Should take the canvas object as argument.'
25
- },
26
- min: {
27
- type: jsPsych.plugins.parameterType.INT,
28
- pretty_name: 'Min slider',
29
- default: 0,
30
- description: 'Sets the minimum value of the slider.'
31
- },
32
- max: {
33
- type: jsPsych.plugins.parameterType.INT,
34
- pretty_name: 'Max slider',
35
- default: 100,
36
- description: 'Sets the maximum value of the slider',
37
- },
38
- slider_start: {
39
- type: jsPsych.plugins.parameterType.INT,
40
- pretty_name: 'Slider starting value',
41
- default: 50,
42
- description: 'Sets the starting value of the slider',
43
- },
44
- step: {
45
- type: jsPsych.plugins.parameterType.INT,
46
- pretty_name: 'Step',
47
- default: 1,
48
- description: 'Sets the step of the slider'
49
- },
50
- labels: {
51
- type: jsPsych.plugins.parameterType.HTML_STRING,
52
- pretty_name: 'Labels',
53
- default: [],
54
- array: true,
55
- description: 'Labels of the slider.',
56
- },
57
- slider_width: {
58
- type: jsPsych.plugins.parameterType.INT,
59
- pretty_name: 'Slider width',
60
- default: null,
61
- description: 'Width of the slider in pixels.'
62
- },
63
- button_label: {
64
- type: jsPsych.plugins.parameterType.STRING,
65
- pretty_name: 'Button label',
66
- default: 'Continue',
67
- array: false,
68
- description: 'Label of the button to advance.'
69
- },
70
- require_movement: {
71
- type: jsPsych.plugins.parameterType.BOOL,
72
- pretty_name: 'Require movement',
73
- default: false,
74
- description: 'If true, the participant will have to move the slider before continuing.'
75
- },
76
- prompt: {
77
- type: jsPsych.plugins.parameterType.STRING,
78
- pretty_name: 'Prompt',
79
- default: null,
80
- description: 'Any content here will be displayed below the slider.'
81
- },
82
- stimulus_duration: {
83
- type: jsPsych.plugins.parameterType.INT,
84
- pretty_name: 'Stimulus duration',
85
- default: null,
86
- description: 'How long to hide the stimulus.'
87
- },
88
- trial_duration: {
89
- type: jsPsych.plugins.parameterType.INT,
90
- pretty_name: 'Trial duration',
91
- default: null,
92
- description: 'How long to show the trial.'
93
- },
94
- response_ends_trial: {
95
- type: jsPsych.plugins.parameterType.BOOL,
96
- pretty_name: 'Response ends trial',
97
- default: true,
98
- description: 'If true, trial will end when user makes a response.'
99
- },
100
- canvas_size: {
101
- type: jsPsych.plugins.parameterType.INT,
102
- array: true,
103
- pretty_name: 'Canvas size',
104
- default: [500, 500],
105
- description: 'Array containing the height (first value) and width (second value) of the canvas element.'
106
- }
107
-
108
- }
109
- }
110
-
111
- plugin.trial = function (display_element, trial) {
112
-
113
- var html = '<div id="jspsych-canvas-slider-response-wrapper" style="margin: 100px 0px;">';
114
- html += '<div id="jspsych-canvas-slider-response-stimulus">' + '<canvas id="jspsych-canvas-stimulus" height="' + trial.canvas_size[0] + '" width="' + trial.canvas_size[1] + '"></canvas>' + '</div>';
115
- html += '<div class="jspsych-canvas-slider-response-container" style="position:relative; margin: 0 auto 3em auto; width:';
116
- if (trial.slider_width !== null) {
117
- html += trial.slider_width + 'px;';
118
- } else {
119
- html += trial.canvas_size[1] + 'px;';
120
- }
121
- html += '">';
122
- html += '<input type="range" value="' + trial.slider_start + '" min="' + trial.min + '" max="' + trial.max + '" step="' + trial.step + '" style="width: 100%;" id="jspsych-canvas-slider-response-response"></input>';
123
- html += '<div>'
124
- for (var j = 0; j < trial.labels.length; j++) {
125
- var width = 100 / (trial.labels.length - 1);
126
- var left_offset = (j * (100 / (trial.labels.length - 1))) - (width / 2);
127
- html += '<div style="display: inline-block; position: absolute; left:' + left_offset + '%; text-align: center; width: ' + width + '%;">';
128
- html += '<span style="text-align: center; font-size: 80%;">' + trial.labels[j] + '</span>';
129
- html += '</div>'
130
- }
131
- html += '</div>';
132
- html += '</div>';
133
- html += '</div>';
134
-
135
- if (trial.prompt !== null) {
136
- html += trial.prompt;
137
- }
138
-
139
- // add submit button
140
- html += '<button id="jspsych-canvas-slider-response-next" class="jspsych-btn" ' + (trial.require_movement ? "disabled" : "") + '>' + trial.button_label + '</button>';
141
-
142
- display_element.innerHTML = html;
143
-
144
- // draw
145
- let c = document.getElementById("jspsych-canvas-stimulus")
146
- trial.stimulus(c)
147
-
148
- var response = {
149
- rt: null,
150
- response: null
151
- };
152
-
153
- if (trial.require_movement) {
154
- display_element.querySelector('#jspsych-canvas-slider-response-response').addEventListener('click', function () {
155
- display_element.querySelector('#jspsych-canvas-slider-response-next').disabled = false;
156
- })
157
- }
158
-
159
- display_element.querySelector('#jspsych-canvas-slider-response-next').addEventListener('click', function () {
160
- // measure response time
161
- var endTime = performance.now();
162
- response.rt = endTime - startTime;
163
- response.response = display_element.querySelector('#jspsych-canvas-slider-response-response').valueAsNumber;
164
-
165
- if (trial.response_ends_trial) {
166
- end_trial();
167
- } else {
168
- display_element.querySelector('#jspsych-canvas-slider-response-next').disabled = true;
169
- }
170
-
171
- });
172
-
173
- function end_trial() {
174
-
175
- jsPsych.pluginAPI.clearAllTimeouts();
176
-
177
- // save data
178
- var trialdata = {
179
- rt: response.rt,
180
- response: response.response,
181
- slider_start: trial.slider_start
182
- };
183
-
184
- display_element.innerHTML = '';
185
-
186
- // next trial
187
- jsPsych.finishTrial(trialdata);
188
- }
189
-
190
- if (trial.stimulus_duration !== null) {
191
- jsPsych.pluginAPI.setTimeout(function () {
192
- display_element.querySelector('#jspsych-canvas-slider-response-stimulus').style.visibility = 'hidden';
193
- }, trial.stimulus_duration);
194
- }
195
-
196
- // end trial if trial_duration is set
197
- if (trial.trial_duration !== null) {
198
- jsPsych.pluginAPI.setTimeout(function () {
199
- end_trial();
200
- }, trial.trial_duration);
201
- }
202
-
203
- var startTime = performance.now();
204
- };
205
-
206
- return plugin;
207
- })();