jspsych 6.3.0 → 7.1.1

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 (397) 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 +3164 -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 +3158 -0
  10. package/dist/index.cjs.map +1 -0
  11. package/dist/index.d.ts +11 -0
  12. package/dist/index.js +3152 -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 +129 -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 +158 -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 -734
  59. package/docs/core_library/jspsych-data.md +0 -589
  60. package/docs/core_library/jspsych-pluginAPI.md +0 -610
  61. package/docs/core_library/jspsych-randomization.md +0 -397
  62. package/docs/core_library/jspsych-turk.md +0 -102
  63. package/docs/extensions/extensions.md +0 -83
  64. package/docs/extensions/jspsych-ext-webgazer.md +0 -106
  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 -184
  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 -237
  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 -60
  145. package/docs/plugins/jspsych-webgazer-init-camera.md +0 -31
  146. package/docs/plugins/jspsych-webgazer-validate.md +0 -43
  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.js +0 -88886
  216. package/examples/jspsych-RDK.html +0 -58
  217. package/examples/jspsych-animation.html +0 -39
  218. package/examples/jspsych-audio-button-response.html +0 -58
  219. package/examples/jspsych-audio-keyboard-response.html +0 -68
  220. package/examples/jspsych-audio-slider-response.html +0 -61
  221. package/examples/jspsych-call-function.html +0 -32
  222. package/examples/jspsych-canvas-button-response.html +0 -95
  223. package/examples/jspsych-canvas-keyboard-response.html +0 -78
  224. package/examples/jspsych-canvas-slider-response.html +0 -67
  225. package/examples/jspsych-categorize-animation.html +0 -49
  226. package/examples/jspsych-categorize-html.html +0 -33
  227. package/examples/jspsych-categorize-image.html +0 -44
  228. package/examples/jspsych-cloze.html +0 -37
  229. package/examples/jspsych-free-sort.html +0 -109
  230. package/examples/jspsych-fullscreen.html +0 -45
  231. package/examples/jspsych-html-button-response.html +0 -43
  232. package/examples/jspsych-html-keyboard-response.html +0 -42
  233. package/examples/jspsych-html-slider-response.html +0 -53
  234. package/examples/jspsych-iat.html +0 -520
  235. package/examples/jspsych-image-button-response.html +0 -91
  236. package/examples/jspsych-image-keyboard-response.html +0 -85
  237. package/examples/jspsych-image-slider-response.html +0 -85
  238. package/examples/jspsych-instructions.html +0 -37
  239. package/examples/jspsych-maxdiff.html +0 -33
  240. package/examples/jspsych-preload.html +0 -140
  241. package/examples/jspsych-reconstruction.html +0 -43
  242. package/examples/jspsych-resize.html +0 -34
  243. package/examples/jspsych-same-different-html.html +0 -28
  244. package/examples/jspsych-same-different-image.html +0 -39
  245. package/examples/jspsych-serial-reaction-time-mouse.html +0 -98
  246. package/examples/jspsych-serial-reaction-time.html +0 -54
  247. package/examples/jspsych-survey-html-form.html +0 -33
  248. package/examples/jspsych-survey-likert.html +0 -42
  249. package/examples/jspsych-survey-multi-choice.html +0 -40
  250. package/examples/jspsych-survey-multi-select.html +0 -42
  251. package/examples/jspsych-survey-text.html +0 -34
  252. package/examples/jspsych-video-button-response.html +0 -65
  253. package/examples/jspsych-video-keyboard-response.html +0 -61
  254. package/examples/jspsych-video-slider-response.html +0 -63
  255. package/examples/jspsych-virtual-chinrest.html +0 -69
  256. package/examples/jspsych-visual-search-circle.html +0 -64
  257. package/examples/jspsych-vsl-animate-occlusion.html +0 -35
  258. package/examples/jspsych-vsl-grid-scene.html +0 -47
  259. package/examples/lexical-decision.html +0 -134
  260. package/examples/manual-preloading.html +0 -59
  261. package/examples/pause-unpause.html +0 -33
  262. package/examples/progress-bar.html +0 -68
  263. package/examples/save-trial-parameters.html +0 -98
  264. package/examples/sound/hammer.mp3 +0 -0
  265. package/examples/sound/sound.mp3 +0 -0
  266. package/examples/sound/speech_blue.mp3 +0 -0
  267. package/examples/sound/speech_green.mp3 +0 -0
  268. package/examples/sound/speech_joke.mp3 +0 -0
  269. package/examples/sound/speech_red.mp3 +0 -0
  270. package/examples/sound/tone.mp3 +0 -0
  271. package/examples/timeline-variables-sampling.html +0 -50
  272. package/examples/timeline-variables.html +0 -64
  273. package/examples/video/sample_video.mp4 +0 -0
  274. package/examples/webgazer.html +0 -162
  275. package/examples/webgazer_image.html +0 -60
  276. package/extensions/jspsych-ext-webgazer.js +0 -185
  277. package/jspsych.js +0 -3015
  278. package/license.txt +0 -21
  279. package/mkdocs.yml +0 -118
  280. package/plugins/jspsych-animation.js +0 -189
  281. package/plugins/jspsych-audio-button-response.js +0 -269
  282. package/plugins/jspsych-audio-keyboard-response.js +0 -212
  283. package/plugins/jspsych-audio-slider-response.js +0 -278
  284. package/plugins/jspsych-call-function.js +0 -58
  285. package/plugins/jspsych-canvas-button-response.js +0 -199
  286. package/plugins/jspsych-canvas-keyboard-response.js +0 -155
  287. package/plugins/jspsych-canvas-slider-response.js +0 -207
  288. package/plugins/jspsych-categorize-animation.js +0 -266
  289. package/plugins/jspsych-categorize-html.js +0 -220
  290. package/plugins/jspsych-categorize-image.js +0 -222
  291. package/plugins/jspsych-cloze.js +0 -112
  292. package/plugins/jspsych-external-html.js +0 -112
  293. package/plugins/jspsych-free-sort.js +0 -478
  294. package/plugins/jspsych-fullscreen.js +0 -106
  295. package/plugins/jspsych-html-button-response.js +0 -188
  296. package/plugins/jspsych-html-keyboard-response.js +0 -149
  297. package/plugins/jspsych-html-slider-response.js +0 -202
  298. package/plugins/jspsych-iat-html.js +0 -284
  299. package/plugins/jspsych-iat-image.js +0 -286
  300. package/plugins/jspsych-image-button-response.js +0 -327
  301. package/plugins/jspsych-image-keyboard-response.js +0 -263
  302. package/plugins/jspsych-image-slider-response.js +0 -369
  303. package/plugins/jspsych-instructions.js +0 -237
  304. package/plugins/jspsych-maxdiff.js +0 -173
  305. package/plugins/jspsych-preload.js +0 -345
  306. package/plugins/jspsych-rdk.js +0 -1373
  307. package/plugins/jspsych-reconstruction.js +0 -134
  308. package/plugins/jspsych-resize.js +0 -166
  309. package/plugins/jspsych-same-different-html.js +0 -168
  310. package/plugins/jspsych-same-different-image.js +0 -169
  311. package/plugins/jspsych-serial-reaction-time-mouse.js +0 -212
  312. package/plugins/jspsych-serial-reaction-time.js +0 -247
  313. package/plugins/jspsych-survey-html-form.js +0 -171
  314. package/plugins/jspsych-survey-likert.js +0 -195
  315. package/plugins/jspsych-survey-multi-choice.js +0 -208
  316. package/plugins/jspsych-survey-multi-select.js +0 -232
  317. package/plugins/jspsych-survey-text.js +0 -185
  318. package/plugins/jspsych-video-button-response.js +0 -335
  319. package/plugins/jspsych-video-keyboard-response.js +0 -279
  320. package/plugins/jspsych-video-slider-response.js +0 -351
  321. package/plugins/jspsych-virtual-chinrest.js +0 -471
  322. package/plugins/jspsych-visual-search-circle.js +0 -259
  323. package/plugins/jspsych-vsl-animate-occlusion.js +0 -196
  324. package/plugins/jspsych-vsl-grid-scene.js +0 -103
  325. package/plugins/jspsych-webgazer-calibrate.js +0 -166
  326. package/plugins/jspsych-webgazer-init-camera.js +0 -95
  327. package/plugins/jspsych-webgazer-validate.js +0 -304
  328. package/plugins/template/jspsych-plugin-template.js +0 -35
  329. package/tests/README.md +0 -7
  330. package/tests/jsPsych/case-sensitive-responses.test.js +0 -53
  331. package/tests/jsPsych/css-classes-parameter.test.js +0 -107
  332. package/tests/jsPsych/default-iti.test.js +0 -51
  333. package/tests/jsPsych/default-parameters.test.js +0 -58
  334. package/tests/jsPsych/endexperiment.test.js +0 -49
  335. package/tests/jsPsych/events.test.js +0 -606
  336. package/tests/jsPsych/functions-as-parameters.test.js +0 -210
  337. package/tests/jsPsych/init.test.js +0 -48
  338. package/tests/jsPsych/loads.test.js +0 -7
  339. package/tests/jsPsych/min-rt.test.js +0 -58
  340. package/tests/jsPsych/progressbar.test.js +0 -202
  341. package/tests/jsPsych/timeline-variables.test.js +0 -531
  342. package/tests/jsPsych/timelines.test.js +0 -569
  343. package/tests/jsPsych.data/data-csv-conversion.test.js +0 -85
  344. package/tests/jsPsych.data/data-json-conversion.test.js +0 -120
  345. package/tests/jsPsych.data/datacollection.test.js +0 -117
  346. package/tests/jsPsych.data/datacolumn.test.js +0 -50
  347. package/tests/jsPsych.data/datamodule.test.js +0 -152
  348. package/tests/jsPsych.data/dataparameter.test.js +0 -251
  349. package/tests/jsPsych.data/interactions.test.js +0 -109
  350. package/tests/jsPsych.data/trialparameters.test.js +0 -175
  351. package/tests/jsPsych.extensions/extensions.test.js +0 -207
  352. package/tests/jsPsych.extensions/test-extension.js +0 -42
  353. package/tests/jsPsych.pluginAPI/pluginapi.test.js +0 -341
  354. package/tests/jsPsych.pluginAPI/preloads.test.js +0 -43
  355. package/tests/jsPsych.randomization/randomziation.test.js +0 -27
  356. package/tests/jsPsych.utils/utils.test.js +0 -58
  357. package/tests/plugins/plugin-animation.test.js +0 -34
  358. package/tests/plugins/plugin-audio-button-response.test.js +0 -15
  359. package/tests/plugins/plugin-audio-keyboard-response.test.js +0 -15
  360. package/tests/plugins/plugin-audio-slider-response.test.js +0 -15
  361. package/tests/plugins/plugin-call-function.test.js +0 -49
  362. package/tests/plugins/plugin-categorize-animation.test.js +0 -263
  363. package/tests/plugins/plugin-categorize-html.test.js +0 -17
  364. package/tests/plugins/plugin-categorize-image.test.js +0 -17
  365. package/tests/plugins/plugin-cloze.test.js +0 -157
  366. package/tests/plugins/plugin-free-sort.test.js +0 -106
  367. package/tests/plugins/plugin-fullscreen.test.js +0 -41
  368. package/tests/plugins/plugin-html-button-response.test.js +0 -161
  369. package/tests/plugins/plugin-html-keyboard-response.test.js +0 -139
  370. package/tests/plugins/plugin-html-slider-response.test.js +0 -155
  371. package/tests/plugins/plugin-iat-html.test.js +0 -299
  372. package/tests/plugins/plugin-iat-image.test.js +0 -298
  373. package/tests/plugins/plugin-image-button-response.test.js +0 -174
  374. package/tests/plugins/plugin-image-keyboard-response.test.js +0 -147
  375. package/tests/plugins/plugin-image-slider-response.test.js +0 -174
  376. package/tests/plugins/plugin-instructions.test.js +0 -85
  377. package/tests/plugins/plugin-maxdiff.test.js +0 -39
  378. package/tests/plugins/plugin-preload.test.js +0 -916
  379. package/tests/plugins/plugin-rdk.test.js +0 -61
  380. package/tests/plugins/plugin-reconstruction.test.js +0 -16
  381. package/tests/plugins/plugin-resize.test.js +0 -16
  382. package/tests/plugins/plugin-same-different-html.test.js +0 -17
  383. package/tests/plugins/plugin-same-different-image.test.js +0 -17
  384. package/tests/plugins/plugin-serial-reaction-time-mouse.test.js +0 -42
  385. package/tests/plugins/plugin-serial-reaction-time.test.js +0 -109
  386. package/tests/plugins/plugin-survey-html-form.test.js +0 -44
  387. package/tests/plugins/plugin-survey-likert.test.js +0 -48
  388. package/tests/plugins/plugin-survey-multi-choice.test.js +0 -47
  389. package/tests/plugins/plugin-survey-multi-select.test.js +0 -71
  390. package/tests/plugins/plugin-survey-text.test.js +0 -115
  391. package/tests/plugins/plugin-video-button-response.test.js +0 -32
  392. package/tests/plugins/plugin-video-keyboard-response.test.js +0 -32
  393. package/tests/plugins/plugin-video-slider-response.test.js +0 -31
  394. package/tests/plugins/plugin-visual-search-circle.test.js +0 -16
  395. package/tests/plugins/plugin-vsl-animate-occlusion.test.js +0 -16
  396. package/tests/plugins/plugin-vsl-grid-scene.test.js +0 -16
  397. package/tests/testing-utils.js +0 -13
@@ -1,259 +0,0 @@
1
- /**
2
- *
3
- * jspsych-visual-search-circle
4
- * Josh de Leeuw
5
- *
6
- * display a set of objects, with or without a target, equidistant from fixation
7
- * subject responds to whether or not the target is present
8
- *
9
- * based on code written for psychtoolbox by Ben Motz
10
- *
11
- * documentation: docs.jspsych.org
12
- *
13
- **/
14
-
15
- jsPsych.plugins["visual-search-circle"] = (function() {
16
-
17
- var plugin = {};
18
-
19
- jsPsych.pluginAPI.registerPreload('visual-search-circle', 'target', 'image');
20
- jsPsych.pluginAPI.registerPreload('visual-search-circle', 'foil', 'image');
21
- jsPsych.pluginAPI.registerPreload('visual-search-circle', 'fixation_image', 'image');
22
-
23
- plugin.info = {
24
- name: 'visual-search-circle',
25
- description: '',
26
- parameters: {
27
- target: {
28
- type: jsPsych.plugins.parameterType.IMAGE,
29
- pretty_name: 'Target',
30
- default: undefined,
31
- description: 'The image to be displayed.'
32
- },
33
- foil: {
34
- type: jsPsych.plugins.parameterType.IMAGE,
35
- pretty_name: 'Foil',
36
- default: undefined,
37
- description: 'Path to image file that is the foil/distractor.'
38
- },
39
- fixation_image: {
40
- type: jsPsych.plugins.parameterType.IMAGE,
41
- pretty_name: 'Fixation image',
42
- default: undefined,
43
- description: 'Path to image file that is a fixation target.'
44
- },
45
- set_size: {
46
- type: jsPsych.plugins.parameterType.INT,
47
- pretty_name: 'Set size',
48
- default: undefined,
49
- description: 'How many items should be displayed?'
50
- },
51
- target_present: {
52
- type: jsPsych.plugins.parameterType.BOOL,
53
- pretty_name: 'Target present',
54
- default: true,
55
- description: 'Is the target present?'
56
- },
57
- target_size: {
58
- type: jsPsych.plugins.parameterType.INT,
59
- pretty_name: 'Target size',
60
- array: true,
61
- default: [50, 50],
62
- description: 'Two element array indicating the height and width of the search array element images.'
63
- },
64
- fixation_size: {
65
- type: jsPsych.plugins.parameterType.INT,
66
- pretty_name: 'Fixation size',
67
- array: true,
68
- default: [16, 16],
69
- description: 'Two element array indicating the height and width of the fixation image.'
70
- },
71
- circle_diameter: {
72
- type: jsPsych.plugins.parameterType.INT,
73
- pretty_name: 'Circle diameter',
74
- default: 250,
75
- description: 'The diameter of the search array circle in pixels.'
76
- },
77
- target_present_key: {
78
- type: jsPsych.plugins.parameterType.KEY,
79
- pretty_name: 'Target present key',
80
- default: 'j',
81
- description: 'The key to press if the target is present in the search array.'
82
- },
83
- target_absent_key: {
84
- type: jsPsych.plugins.parameterType.KEY,
85
- pretty_name: 'Target absent key',
86
- default: 'f',
87
- description: 'The key to press if the target is not present in the search array.'
88
- },
89
- trial_duration: {
90
- type: jsPsych.plugins.parameterType.INT,
91
- pretty_name: 'Trial duration',
92
- default: null,
93
- description: 'The maximum duration to wait for a response.'
94
- },
95
- fixation_duration: {
96
- type: jsPsych.plugins.parameterType.INT,
97
- pretty_name: 'Fixation duration',
98
- default: 1000,
99
- description: 'How long to show the fixation image for before the search array (in milliseconds).'
100
- }
101
- }
102
- }
103
-
104
- plugin.trial = function(display_element, trial) {
105
-
106
- // circle params
107
- var diam = trial.circle_diameter; // pixels
108
- var radi = diam / 2;
109
- var paper_size = diam + trial.target_size[0];
110
-
111
- // stimuli width, height
112
- var stimh = trial.target_size[0];
113
- var stimw = trial.target_size[1];
114
- var hstimh = stimh / 2;
115
- var hstimw = stimw / 2;
116
-
117
- // fixation location
118
- var fix_loc = [Math.floor(paper_size / 2 - trial.fixation_size[0] / 2), Math.floor(paper_size / 2 - trial.fixation_size[1] / 2)];
119
-
120
- // possible stimulus locations on the circle
121
- var display_locs = [];
122
- var possible_display_locs = trial.set_size;
123
- var random_offset = Math.floor(Math.random() * 360);
124
- for (var i = 0; i < possible_display_locs; i++) {
125
- display_locs.push([
126
- Math.floor(paper_size / 2 + (cosd(random_offset + (i * (360 / possible_display_locs))) * radi) - hstimw),
127
- Math.floor(paper_size / 2 - (sind(random_offset + (i * (360 / possible_display_locs))) * radi) - hstimh)
128
- ]);
129
- }
130
-
131
- // get target to draw on
132
- display_element.innerHTML += '<div id="jspsych-visual-search-circle-container" style="position: relative; width:' + paper_size + 'px; height:' + paper_size + 'px"></div>';
133
- var paper = display_element.querySelector("#jspsych-visual-search-circle-container");
134
-
135
- // check distractors - array?
136
- if(!Array.isArray(trial.foil)){
137
- fa = [];
138
- for(var i=0; i<trial.set_size; i++){
139
- fa.push(trial.foil);
140
- }
141
- trial.foil = fa;
142
- }
143
-
144
- show_fixation();
145
-
146
- function show_fixation() {
147
- // show fixation
148
- //var fixation = paper.image(trial.fixation_image, fix_loc[0], fix_loc[1], trial.fixation_size[0], trial.fixation_size[1]);
149
- paper.innerHTML += "<img src='"+trial.fixation_image+"' style='position: absolute; top:"+fix_loc[0]+"px; left:"+fix_loc[1]+"px; width:"+trial.fixation_size[0]+"px; height:"+trial.fixation_size[1]+"px;'></img>";
150
-
151
- // wait
152
- jsPsych.pluginAPI.setTimeout(function() {
153
- // after wait is over
154
- show_search_array();
155
- }, trial.fixation_duration);
156
- }
157
-
158
- function show_search_array() {
159
-
160
- var search_array_images = [];
161
-
162
- var to_present = [];
163
- if(trial.target_present){
164
- to_present.push(trial.target);
165
- }
166
- to_present = to_present.concat(trial.foil);
167
-
168
- for (var i = 0; i < display_locs.length; i++) {
169
-
170
- paper.innerHTML += "<img src='"+to_present[i]+"' style='position: absolute; top:"+display_locs[i][0]+"px; left:"+display_locs[i][1]+"px; width:"+trial.target_size[0]+"px; height:"+trial.target_size[1]+"px;'></img>";
171
-
172
- }
173
-
174
- var trial_over = false;
175
-
176
- var after_response = function(info) {
177
-
178
- trial_over = true;
179
-
180
- var correct = false;
181
-
182
- if ((jsPsych.pluginAPI.compareKeys(info.key, trial.target_present_key)) && trial.target_present ||
183
- (jsPsych.pluginAPI.compareKeys(info.key, trial.target_absent_key)) && !trial.target_present) {
184
- correct = true;
185
- }
186
-
187
- clear_display();
188
-
189
- end_trial(info.rt, correct, info.key);
190
-
191
- }
192
-
193
- var valid_keys = [trial.target_present_key, trial.target_absent_key];
194
-
195
- key_listener = jsPsych.pluginAPI.getKeyboardResponse({
196
- callback_function: after_response,
197
- valid_responses: valid_keys,
198
- rt_method: 'performance',
199
- persist: false,
200
- allow_held_key: false
201
- });
202
-
203
- if (trial.trial_duration !== null) {
204
-
205
- jsPsych.pluginAPI.setTimeout(function() {
206
-
207
- if (!trial_over) {
208
-
209
- jsPsych.pluginAPI.cancelKeyboardResponse(key_listener);
210
-
211
- trial_over = true;
212
-
213
- var rt = null;
214
- var correct = 0;
215
- var key_press = null;
216
-
217
- clear_display();
218
-
219
- end_trial(rt, correct, key_press);
220
- }
221
- }, trial.trial_duration);
222
-
223
- }
224
-
225
- function clear_display() {
226
- display_element.innerHTML = '';
227
- }
228
- }
229
-
230
-
231
- function end_trial(rt, correct, key_press) {
232
-
233
- // data saving
234
- var trial_data = {
235
- correct: correct,
236
- rt: rt,
237
- response: key_press,
238
- locations: display_locs,
239
- target_present: trial.target_present,
240
- set_size: trial.set_size
241
- };
242
-
243
- // go to next trial
244
- jsPsych.finishTrial(trial_data);
245
- }
246
- };
247
-
248
- // helper function for determining stimulus locations
249
-
250
- function cosd(num) {
251
- return Math.cos(num / 180 * Math.PI);
252
- }
253
-
254
- function sind(num) {
255
- return Math.sin(num / 180 * Math.PI);
256
- }
257
-
258
- return plugin;
259
- })();
@@ -1,196 +0,0 @@
1
- /**
2
- * jsPsych plugin for showing animations that mimic the experiment described in
3
- *
4
- * Fiser, J., & Aslin, R. N. (2002). Statistical learning of higher-order
5
- * temporal structure from visual shape sequences. Journal of Experimental
6
- * Psychology: Learning, Memory, and Cognition, 28(3), 458.
7
- *
8
- * Josh de Leeuw
9
- *
10
- * documentation: docs.jspsych.org
11
- *
12
- */
13
-
14
- jsPsych.plugins['vsl-animate-occlusion'] = (function() {
15
-
16
- var plugin = {};
17
-
18
- jsPsych.pluginAPI.registerPreload('vsl-animate-occlusion', 'stimuli', 'image');
19
-
20
- plugin.info = {
21
- name: 'vsl-animate-occlusion',
22
- description: '',
23
- parameters: {
24
- stimuli: {
25
- type: jsPsych.plugins.parameterType.IMAGE,
26
- pretty_name: 'Stimuli',
27
- default: undefined,
28
- array: true,
29
- description: 'A stimulus is a path to an image file.'
30
- },
31
- choices: {
32
- type: jsPsych.plugins.parameterType.KEY,
33
- pretty_name: 'Choices',
34
- array: true,
35
- default: jsPsych.ALL_KEYS,
36
- description: 'This array contains the keys that the subject is allowed to press in order to respond to the stimulus. '
37
- },
38
- canvas_size: {
39
- type: jsPsych.plugins.parameterType.INT,
40
- pretty_name: 'Canvas size',
41
- array: true,
42
- default: [400,400],
43
- description: 'Array specifying the width and height of the area that the animation will display in.'
44
- },
45
- image_size: {
46
- type: jsPsych.plugins.parameterType.INT,
47
- pretty_name: 'Image size',
48
- array: true,
49
- default: [100,100],
50
- description: 'Array specifying the width and height of the images to show.'
51
- },
52
- initial_direction: {
53
- type: jsPsych.plugins.parameterType.SELECT,
54
- pretty_name: 'Initial direction',
55
- choices: ['left','right'],
56
- default: 'left',
57
- description: 'Which direction the stimulus should move first.'
58
- },
59
- occlude_center: {
60
- type: jsPsych.plugins.parameterType.BOOL,
61
- pretty_name: 'Occlude center',
62
- default: true,
63
- description: 'If true, display a rectangle in the center of the screen that is just wide enough to occlude the image completely as it passes behind.'
64
- },
65
- cycle_duration: {
66
- type: jsPsych.plugins.parameterType.INT,
67
- pretty_name: 'Cycle duration',
68
- default: 1000,
69
- description: 'How long it takes for a stimulus in the sequence to make a complete cycle.'
70
- },
71
- pre_movement_duration: {
72
- type: jsPsych.plugins.parameterType.INT,
73
- pretty_name: 'Pre movement duration',
74
- default: 500,
75
- description: 'How long to wait before the stimuli starts moving from behind the center rectangle.'
76
- }
77
- }
78
- }
79
-
80
- plugin.trial = function(display_element, trial) {
81
-
82
- // variable to keep track of timing info and responses
83
- var start_time = 0;
84
- var responses = [];
85
-
86
- var directions = [
87
- [{
88
- params: {
89
- x: trial.canvas_size[0] - trial.image_size[0]
90
- },
91
- ms: trial.cycle_duration / 2
92
- }, {
93
- params: {
94
- x: trial.canvas_size[0] / 2 - trial.image_size[0] / 2
95
- },
96
- ms: trial.cycle_duration / 2
97
- }],
98
- [{
99
- params: {
100
- x: 0
101
- },
102
- ms: trial.cycle_duration / 2
103
- }, {
104
- params: {
105
- x: trial.canvas_size[0] / 2 - trial.image_size[0] / 2
106
- },
107
- ms: trial.cycle_duration / 2
108
- }]
109
- ];
110
-
111
- var which_image = 0;
112
- var next_direction = (trial.initial_direction == "right") ? 0 : 1;
113
-
114
- function next_step() {
115
- if (trial.stimuli.length == which_image) {
116
- endTrial();
117
- } else {
118
-
119
- var d = directions[next_direction];
120
- next_direction === 0 ? next_direction = 1 : next_direction = 0;
121
- var i = trial.stimuli[which_image];
122
- which_image++;
123
-
124
- c.animate(d[0].params, d[0].ms, mina.linear, function() {
125
- c.animate(d[1].params, d[1].ms, mina.linear, function() {
126
- next_step();
127
- });
128
- });
129
-
130
- c.attr({
131
- href: i
132
- });
133
-
134
- // start timer for this trial
135
- start_time = performance.now();
136
- }
137
- }
138
-
139
- display_element.innerHTML = "<svg id='jspsych-vsl-animate-occlusion-canvas' width=" + trial.canvas_size[0] + " height=" + trial.canvas_size[1] + "></svg>";
140
-
141
- var paper = Snap("#jspsych-vsl-animate-occlusion-canvas");
142
-
143
- var c = paper.image(trial.stimuli[which_image], trial.canvas_size[0] / 2 - trial.image_size[0] / 2, trial.canvas_size[1] / 2 - trial.image_size[1] / 2, trial.image_size[0], trial.image_size[1]).attr({
144
- "id": 'jspsych-vsl-animate-occlusion-moving-image'
145
- });
146
-
147
- display_element.querySelector('#jspsych-vsl-animate-occlusion-moving-image').removeAttribute('preserveAspectRatio');
148
-
149
- if (trial.occlude_center) {
150
- paper.rect((trial.canvas_size[0] / 2) - (trial.image_size[0] / 2), 0, trial.image_size[0], trial.canvas_size[1]).attr({
151
- fill: "#000"
152
- });
153
- }
154
-
155
- // add key listener
156
- var after_response = function(info) {
157
- responses.push({
158
- key: info.key,
159
- stimulus: which_image - 1,
160
- rt: info.rt
161
- });
162
- }
163
-
164
- key_listener = jsPsych.pluginAPI.getKeyboardResponse({
165
- callback_function: after_response,
166
- valid_responses: trial.choices,
167
- rt_method: 'performance',
168
- persist: true,
169
- allow_held_key: false
170
- });
171
-
172
- if (trial.pre_movement_duration > 0) {
173
- jsPsych.pluginAPI.setTimeout(function() {
174
- next_step();
175
- }, trial.pre_movement_duration);
176
- } else {
177
- next_step();
178
- }
179
-
180
- function endTrial() {
181
-
182
- display_element.innerHTML = '';
183
-
184
- jsPsych.pluginAPI.cancelKeyboardResponse(key_listener);
185
-
186
- var trial_data = {
187
- stimuli: trial.stimuli,
188
- response: responses
189
- };
190
-
191
- jsPsych.finishTrial(trial_data);
192
- }
193
- };
194
-
195
- return plugin;
196
- })();
@@ -1,103 +0,0 @@
1
- /**
2
- * jsPsych plugin for showing scenes that mimic the experiments described in
3
- *
4
- * Fiser, J., & Aslin, R. N. (2001). Unsupervised statistical learning of
5
- * higher-order spatial structures from visual scenes. Psychological science,
6
- * 12(6), 499-504.
7
- *
8
- * Josh de Leeuw
9
- *
10
- * documentation: docs.jspsych.org
11
- *
12
- */
13
-
14
- jsPsych.plugins['vsl-grid-scene'] = (function() {
15
-
16
- var plugin = {};
17
-
18
- jsPsych.pluginAPI.registerPreload('vsl-grid-scene', 'stimuli', 'image');
19
-
20
- plugin.info = {
21
- name: 'vsl-grid-scene',
22
- description: '',
23
- parameters: {
24
- stimuli: {
25
- type: jsPsych.plugins.parameterType.IMAGE,
26
- pretty_name: 'Stimuli',
27
- array: true,
28
- default: undefined,
29
- description: 'An array that defines a grid.'
30
- },
31
- image_size: {
32
- type: jsPsych.plugins.parameterType.INT,
33
- pretty_name: 'Image size',
34
- array: true,
35
- default: [100,100],
36
- description: 'Array specifying the width and height of the images to show.'
37
- },
38
- trial_duration: {
39
- type: jsPsych.plugins.parameterType.INT,
40
- pretty_name: 'Trial duration',
41
- default: 2000,
42
- description: 'How long to show the stimulus for in milliseconds.'
43
- }
44
- }
45
- }
46
-
47
- plugin.trial = function(display_element, trial) {
48
-
49
- display_element.innerHTML = plugin.generate_stimulus(trial.stimuli, trial.image_size);
50
-
51
- jsPsych.pluginAPI.setTimeout(function() {
52
- endTrial();
53
- }, trial.trial_duration);
54
-
55
- function endTrial() {
56
-
57
- display_element.innerHTML = '';
58
-
59
- var trial_data = {
60
- stimulus: trial.stimuli
61
- };
62
-
63
- jsPsych.finishTrial(trial_data);
64
- }
65
- };
66
-
67
- plugin.generate_stimulus = function(pattern, image_size) {
68
- var nrows = pattern.length;
69
- var ncols = pattern[0].length;
70
-
71
- // create blank element to hold code that we generate
72
- var html = '<div id="jspsych-vsl-grid-scene-dummy" css="display: none;">';
73
-
74
- // create table
75
- html += '<table id="jspsych-vsl-grid-scene table" '+
76
- 'style="border-collapse: collapse; margin-left: auto; margin-right: auto;">';
77
-
78
- for (var row = 0; row < nrows; row++) {
79
- html += '<tr id="jspsych-vsl-grid-scene-table-row-'+row+'" css="height: '+image_size[1]+'px;">';
80
-
81
- for (var col = 0; col < ncols; col++) {
82
- html += '<td id="jspsych-vsl-grid-scene-table-' + row + '-' + col +'" '+
83
- 'style="padding: '+ (image_size[1] / 10) + 'px ' + (image_size[0] / 10) + 'px; border: 1px solid #555;">'+
84
- '<div id="jspsych-vsl-grid-scene-table-cell-' + row + '-' + col + '" style="width: '+image_size[0]+'px; height: '+image_size[1]+'px;">';
85
- if (pattern[row][col] !== 0) {
86
- html += '<img '+
87
- 'src="'+pattern[row][col]+'" style="width: '+image_size[0]+'px; height: '+image_size[1]+'"></img>';
88
- }
89
- html += '</div>';
90
- html += '</td>';
91
- }
92
- html += '</tr>';
93
- }
94
-
95
- html += '</table>';
96
- html += '</div>';
97
-
98
- return html;
99
-
100
- };
101
-
102
- return plugin;
103
- })();