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,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
- })();