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,134 +0,0 @@
1
- /**
2
- * jspsych-reconstruction
3
- * a jspsych plugin for a reconstruction task where the subject recreates
4
- * a stimulus from memory
5
- *
6
- * Josh de Leeuw
7
- *
8
- * documentation: docs.jspsych.org
9
- *
10
- */
11
-
12
-
13
- jsPsych.plugins['reconstruction'] = (function() {
14
-
15
- var plugin = {};
16
-
17
- plugin.info = {
18
- name: 'reconstruction',
19
- description: '',
20
- parameters: {
21
- stim_function: {
22
- type: jsPsych.plugins.parameterType.FUNCTION,
23
- pretty_name: 'Stimulus function',
24
- default: undefined,
25
- description: 'A function with a single parameter that returns an HTML-formatted string representing the stimulus.'
26
- },
27
- starting_value: {
28
- type: jsPsych.plugins.parameterType.FLOAT,
29
- pretty_name: 'Starting value',
30
- default: 0.5,
31
- description: 'The starting value of the stimulus parameter.'
32
- },
33
- step_size: {
34
- type: jsPsych.plugins.parameterType.FLOAT,
35
- pretty_name: 'Step size',
36
- default: 0.05,
37
- description: 'The change in the stimulus parameter caused by pressing one of the modification keys.'
38
- },
39
- key_increase: {
40
- type: jsPsych.plugins.parameterType.KEY,
41
- pretty_name: 'Key increase',
42
- default: 'h',
43
- description: 'The key to press for increasing the parameter value.'
44
- },
45
- key_decrease: {
46
- type: jsPsych.plugins.parameterType.KEY,
47
- pretty_name: 'Key decrease',
48
- default: 'g',
49
- description: 'The key to press for decreasing the parameter value.'
50
- },
51
- button_label: {
52
- type: jsPsych.plugins.parameterType.STRING,
53
- pretty_name: 'Button label',
54
- default: 'Continue',
55
- description: 'The text that appears on the button to finish the trial.'
56
- }
57
- }
58
- }
59
-
60
- plugin.trial = function(display_element, trial) {
61
-
62
- // current param level
63
- var param = trial.starting_value;
64
-
65
- // set-up key listeners
66
- var after_response = function(info) {
67
-
68
- //console.log('fire');
69
-
70
- var key_i = trial.key_increase;
71
- var key_d = trial.key_decrease;
72
-
73
- // get new param value
74
- if (jsPsych.pluginAPI.compareKeys(info.key, key_i)) {
75
- param = param + trial.step_size;
76
- } else if (jsPsych.pluginAPI.compareKeys(info.key, key_d)) {
77
- param = param - trial.step_size;
78
- }
79
- param = Math.max(Math.min(1, param), 0);
80
-
81
- // refresh the display
82
- draw(param);
83
- }
84
-
85
- // listen for responses
86
- var key_listener = jsPsych.pluginAPI.getKeyboardResponse({
87
- callback_function: after_response,
88
- valid_responses: [trial.key_increase, trial.key_decrease],
89
- rt_method: 'performance',
90
- persist: true,
91
- allow_held_key: true
92
- });
93
- // draw first iteration
94
- draw(param);
95
-
96
- function draw(param) {
97
-
98
- //console.log(param);
99
-
100
- display_element.innerHTML = '<div id="jspsych-reconstruction-stim-container">'+trial.stim_function(param)+'</div>';
101
-
102
- // add submit button
103
- display_element.innerHTML += '<button id="jspsych-reconstruction-next" class="jspsych-btn jspsych-reconstruction">'+trial.button_label+'</button>';
104
-
105
- display_element.querySelector('#jspsych-reconstruction-next').addEventListener('click', endTrial);
106
- }
107
-
108
- function endTrial() {
109
- // measure response time
110
- var endTime =performance.now();
111
- var response_time = endTime - startTime;
112
-
113
- // clear keyboard response
114
- jsPsych.pluginAPI.cancelKeyboardResponse(key_listener);
115
-
116
- // save data
117
- var trial_data = {
118
- rt: response_time,
119
- final_value: param,
120
- start_value: trial.starting_value
121
- };
122
-
123
- display_element.innerHTML = '';
124
-
125
- // next trial
126
- jsPsych.finishTrial(trial_data);
127
- }
128
-
129
- var startTime = performance.now();
130
-
131
- };
132
-
133
- return plugin;
134
- })();
@@ -1,166 +0,0 @@
1
- /**
2
- * jspsych-resize
3
- * Steve Chao
4
- *
5
- * plugin for controlling the real world size of the display
6
- *
7
- * documentation: docs.jspsych.org
8
- *
9
- **/
10
-
11
- jsPsych.plugins["resize"] = (function() {
12
-
13
- var plugin = {};
14
-
15
- plugin.info = {
16
- name: 'resize',
17
- description: '',
18
- parameters: {
19
- item_height: {
20
- type: jsPsych.plugins.parameterType.INT,
21
- pretty_name: 'Item height',
22
- default: 1,
23
- description: 'The height of the item to be measured.'
24
- },
25
- item_width: {
26
- type: jsPsych.plugins.parameterType.INT,
27
- pretty_name: 'Item width',
28
- default: 1,
29
- description: 'The width of the item to be measured.'
30
- },
31
- prompt: {
32
- type: jsPsych.plugins.parameterType.STRING,
33
- pretty_name: 'Prompt',
34
- default: null,
35
- description: 'The content displayed below the resizable box and above the button.'
36
- },
37
- pixels_per_unit: {
38
- type: jsPsych.plugins.parameterType.INT,
39
- pretty_name: 'Pixels per unit',
40
- default: 100,
41
- description: 'After the scaling factor is applied, this many pixels will equal one unit of measurement.'
42
- },
43
- starting_size: {
44
- type: jsPsych.plugins.parameterType.INT,
45
- pretty_name: 'Starting size',
46
- default: 100,
47
- description: 'The initial size of the box, in pixels, along the larget dimension.'
48
- },
49
- button_label: {
50
- type: jsPsych.plugins.parameterType.STRING,
51
- pretty_name: 'Button label',
52
- default: 'Continue',
53
- description: 'Label to display on the button to complete calibration.'
54
- },
55
- }
56
- }
57
-
58
- plugin.trial = function(display_element, trial) {
59
-
60
- var aspect_ratio = trial.item_width / trial.item_height;
61
-
62
- // variables to determine div size
63
- if(trial.item_width >= trial.item_height){
64
- var start_div_width = trial.starting_size;
65
- var start_div_height = Math.round(trial.starting_size / aspect_ratio);
66
- } else {
67
- var start_div_height = trial.starting_size;
68
- var start_div_width = Math.round(trial.starting_size * aspect_ratio);
69
- }
70
-
71
- // create html for display
72
- var html ='<div id="jspsych-resize-div" style="border: 2px solid steelblue; height: '+start_div_height+'px; width:'+start_div_width+'px; margin: 7px auto; background-color: lightsteelblue; position: relative;">';
73
- html += '<div id="jspsych-resize-handle" style="cursor: nwse-resize; background-color: steelblue; width: 10px; height: 10px; border: 2px solid lightsteelblue; position: absolute; bottom: 0; right: 0;"></div>';
74
- html += '</div>';
75
- if (trial.prompt !== null){
76
- html += trial.prompt;
77
- }
78
- html += '<a class="jspsych-btn" id="jspsych-resize-btn">'+trial.button_label+'</a>';
79
-
80
- // render
81
- display_element.innerHTML = html;
82
-
83
- // listens for the click
84
- document.getElementById("jspsych-resize-btn").addEventListener('click', function() {
85
- scale();
86
- end_trial();
87
- });
88
-
89
- var dragging = false;
90
- var origin_x, origin_y;
91
- var cx, cy;
92
-
93
- var mousedownevent = function(e){
94
- e.preventDefault();
95
- dragging = true;
96
- origin_x = e.pageX;
97
- origin_y = e.pageY;
98
- cx = parseInt(scale_div.style.width);
99
- cy = parseInt(scale_div.style.height);
100
- }
101
-
102
- display_element.querySelector('#jspsych-resize-handle').addEventListener('mousedown', mousedownevent);
103
-
104
- var mouseupevent = function(e){
105
- dragging = false;
106
- }
107
-
108
- document.addEventListener('mouseup', mouseupevent);
109
-
110
- var scale_div = display_element.querySelector('#jspsych-resize-div');
111
-
112
- var resizeevent = function(e){
113
- if(dragging){
114
- var dx = (e.pageX - origin_x);
115
- var dy = (e.pageY - origin_y);
116
-
117
- if(Math.abs(dx) >= Math.abs(dy)){
118
- scale_div.style.width = Math.round(Math.max(20, cx+dx*2)) + "px";
119
- scale_div.style.height = Math.round(Math.max(20, cx+dx*2) / aspect_ratio ) + "px";
120
- } else {
121
- scale_div.style.height = Math.round(Math.max(20, cy+dy*2)) + "px";
122
- scale_div.style.width = Math.round(aspect_ratio * Math.max(20, cy+dy*2)) + "px";
123
- }
124
- }
125
- }
126
-
127
- document.addEventListener('mousemove', resizeevent);
128
-
129
- // scales the stimulus
130
- var scale_factor;
131
- var final_height_px, final_width_px;
132
- function scale() {
133
- final_width_px = scale_div.offsetWidth;
134
- //final_height_px = scale_div.offsetHeight;
135
-
136
- var pixels_unit_screen = final_width_px / trial.item_width;
137
-
138
- scale_factor = pixels_unit_screen / trial.pixels_per_unit;
139
- document.getElementById("jspsych-content").style.transform = "scale(" + scale_factor + ")";
140
- };
141
-
142
-
143
- // function to end trial
144
- function end_trial() {
145
-
146
- // clear document event listeners
147
- document.removeEventListener('mousemove', resizeevent);
148
- document.removeEventListener('mouseup', mouseupevent);
149
-
150
- // clear the screen
151
- display_element.innerHTML = '';
152
-
153
- // finishes trial
154
-
155
- var trial_data = {
156
- final_height_px: final_height_px,
157
- final_width_px: final_width_px,
158
- scale_factor: scale_factor
159
- }
160
-
161
- jsPsych.finishTrial(trial_data);
162
- }
163
- };
164
-
165
- return plugin;
166
- })();
@@ -1,168 +0,0 @@
1
- /**
2
- * jspsych-same-different
3
- * Josh de Leeuw
4
- *
5
- * plugin for showing two stimuli sequentially and getting a same / different judgment
6
- *
7
- * documentation: docs.jspsych.org
8
- *
9
- */
10
-
11
- jsPsych.plugins['same-different-html'] = (function() {
12
-
13
- var plugin = {};
14
-
15
- plugin.info = {
16
- name: 'same-different-html',
17
- description: '',
18
- parameters: {
19
- stimuli: {
20
- type: jsPsych.plugins.parameterType.HTML_STRING,
21
- pretty_name: 'Stimuli',
22
- default: undefined,
23
- array: true,
24
- description: 'The HTML content to be displayed.'
25
- },
26
- answer: {
27
- type: jsPsych.plugins.parameterType.SELECT,
28
- pretty_name: 'Answer',
29
- options: ['same', 'different'],
30
- default: undefined,
31
- description: 'Either "same" or "different".'
32
- },
33
- same_key: {
34
- type: jsPsych.plugins.parameterType.KEY,
35
- pretty_name: 'Same key',
36
- default: 'q',
37
- description: ''
38
- },
39
- different_key: {
40
- type: jsPsych.plugins.parameterType.KEY,
41
- pretty_name: 'Different key',
42
- default: 'p',
43
- description: 'The key that subjects should press to indicate that the two stimuli are the same.'
44
- },
45
- first_stim_duration: {
46
- type: jsPsych.plugins.parameterType.INT,
47
- pretty_name: 'First stimulus duration',
48
- default: null,
49
- description: 'How long to show the first stimulus for in milliseconds. If null, then the stimulus will remain on the screen until any keypress is made.'
50
- },
51
- gap_duration: {
52
- type: jsPsych.plugins.parameterType.INT,
53
- pretty_name: 'Gap duration',
54
- default: 500,
55
- description: 'How long to show a blank screen in between the two stimuli.'
56
- },
57
- second_stim_duration: {
58
- type: jsPsych.plugins.parameterType.INT,
59
- pretty_name: 'Second stimulus duration',
60
- default: null,
61
- description: 'How long to show the second stimulus for in milliseconds. If null, then the stimulus will remain on the screen until a valid response is made.'
62
- },
63
- prompt: {
64
- type: jsPsych.plugins.parameterType.STRING,
65
- pretty_name: 'Prompt',
66
- default: null,
67
- description: 'Any content here will be displayed below the stimulus.'
68
- }
69
- }
70
- }
71
-
72
- plugin.trial = function(display_element, trial) {
73
-
74
- display_element.innerHTML = '<div class="jspsych-same-different-stimulus">'+trial.stimuli[0]+'</div>';
75
-
76
- var first_stim_info;
77
- if (trial.first_stim_duration > 0) {
78
- jsPsych.pluginAPI.setTimeout(function() {
79
- showBlankScreen();
80
- }, trial.first_stim_duration);
81
- } else {
82
- function afterKeyboardResponse(info) {
83
- first_stim_info = info;
84
- showBlankScreen();
85
- }
86
- jsPsych.pluginAPI.getKeyboardResponse({
87
- callback_function: afterKeyboardResponse,
88
- valid_responses: trial.advance_key,
89
- rt_method: 'performance',
90
- persist: false,
91
- allow_held_key: false
92
- });
93
- }
94
-
95
- function showBlankScreen() {
96
- display_element.innerHTML = '';
97
-
98
- jsPsych.pluginAPI.setTimeout(function() {
99
- showSecondStim();
100
- }, trial.gap_duration);
101
- }
102
-
103
- function showSecondStim() {
104
-
105
- var html = '<div class="jspsych-same-different-stimulus">'+trial.stimuli[1]+'</div>';
106
- //show prompt here
107
- if (trial.prompt !== null) {
108
- html += trial.prompt;
109
- }
110
- display_element.innerHTML = html;
111
-
112
- if (trial.second_stim_duration > 0) {
113
- jsPsych.pluginAPI.setTimeout(function() {
114
- display_element.querySelector('.jspsych-same-different-stimulus').style.visibility = 'hidden';
115
- }, trial.second_stim_duration);
116
- }
117
-
118
-
119
-
120
- var after_response = function(info) {
121
-
122
- // kill any remaining setTimeout handlers
123
- jsPsych.pluginAPI.clearAllTimeouts();
124
-
125
- var correct = false;
126
-
127
- var skey = trial.same_key;
128
- var dkey = trial.different_key;
129
-
130
- if (jsPsych.pluginAPI.compareKeys(info.key, skey) && trial.answer == 'same') {
131
- correct = true;
132
- }
133
-
134
- if (jsPsych.pluginAPI.compareKeys(info.key, dkey) && trial.answer == 'different') {
135
- correct = true;
136
- }
137
-
138
- var trial_data = {
139
- rt: info.rt,
140
- answer: trial.answer,
141
- correct: correct,
142
- stimulus: [trial.stimuli[0], trial.stimuli[1]],
143
- response: info.key
144
- };
145
- if (first_stim_info) {
146
- trial_data["rt_stim1"] = first_stim_info.rt;
147
- trial_data["response_stim1"] = first_stim_info.key;
148
- }
149
-
150
- display_element.innerHTML = '';
151
-
152
- jsPsych.finishTrial(trial_data);
153
- }
154
-
155
- jsPsych.pluginAPI.getKeyboardResponse({
156
- callback_function: after_response,
157
- valid_responses: [trial.same_key, trial.different_key],
158
- rt_method: 'performance',
159
- persist: false,
160
- allow_held_key: false
161
- });
162
-
163
- }
164
-
165
- };
166
-
167
- return plugin;
168
- })();
@@ -1,169 +0,0 @@
1
- /**
2
- * jspsych-same-different
3
- * Josh de Leeuw
4
- *
5
- * plugin for showing two stimuli sequentially and getting a same / different judgment
6
- *
7
- * documentation: docs.jspsych.org
8
- *
9
- */
10
-
11
- jsPsych.plugins['same-different-image'] = (function() {
12
-
13
- var plugin = {};
14
-
15
- jsPsych.pluginAPI.registerPreload('same-different-image', 'stimuli', 'image')
16
-
17
- plugin.info = {
18
- name: 'same-different-image',
19
- description: '',
20
- parameters: {
21
- stimuli: {
22
- type: jsPsych.plugins.parameterType.IMAGE,
23
- pretty_name: 'Stimuli',
24
- default: undefined,
25
- array: true,
26
- description: 'The images to be displayed.'
27
- },
28
- answer: {
29
- type: jsPsych.plugins.parameterType.SELECT,
30
- pretty_name: 'Answer',
31
- options: ['same', 'different'],
32
- default: undefined,
33
- description: 'Either "same" or "different".'
34
- },
35
- same_key: {
36
- type: jsPsych.plugins.parameterType.KEY,
37
- pretty_name: 'Same key',
38
- default: 'q',
39
- description: ''
40
- },
41
- different_key: {
42
- type: jsPsych.plugins.parameterType.KEY,
43
- pretty_name: 'Different key',
44
- default: 'p',
45
- description: 'The key that subjects should press to indicate that the two stimuli are the same.'
46
- },
47
- first_stim_duration: {
48
- type: jsPsych.plugins.parameterType.INT,
49
- pretty_name: 'First stimulus duration',
50
- default: null,
51
- description: 'How long to show the first stimulus for in milliseconds. If null, then the stimulus will remain on the screen until any keypress is made.'
52
- },
53
- gap_duration: {
54
- type: jsPsych.plugins.parameterType.INT,
55
- pretty_name: 'Gap duration',
56
- default: 500,
57
- description: 'How long to show a blank screen in between the two stimuli.'
58
- },
59
- second_stim_duration: {
60
- type: jsPsych.plugins.parameterType.INT,
61
- pretty_name: 'Second stimulus duration',
62
- default: null,
63
- description: 'How long to show the second stimulus for in milliseconds. If null, then the stimulus will remain on the screen until a valid response is made.'
64
- },
65
- prompt: {
66
- type: jsPsych.plugins.parameterType.STRING,
67
- pretty_name: 'Prompt',
68
- default: null,
69
- description: 'Any content here will be displayed below the stimulus.'
70
- }
71
- }
72
- }
73
-
74
- plugin.trial = function(display_element, trial) {
75
-
76
- display_element.innerHTML = '<img class="jspsych-same-different-stimulus" src="'+trial.stimuli[0]+'"></img>';
77
-
78
- var first_stim_info;
79
- if (trial.first_stim_duration > 0) {
80
- jsPsych.pluginAPI.setTimeout(function() {
81
- showBlankScreen();
82
- }, trial.first_stim_duration);
83
- } else {
84
- function afterKeyboardResponse(info) {
85
- first_stim_info = info;
86
- showBlankScreen();
87
- }
88
- jsPsych.pluginAPI.getKeyboardResponse({
89
- callback_function: afterKeyboardResponse,
90
- valid_responses: trial.advance_key,
91
- rt_method: 'performance',
92
- persist: false,
93
- allow_held_key: false
94
- });
95
- }
96
-
97
- function showBlankScreen() {
98
- display_element.innerHTML = '';
99
-
100
- jsPsych.pluginAPI.setTimeout(function() {
101
- showSecondStim();
102
- }, trial.gap_duration);
103
- }
104
-
105
- function showSecondStim() {
106
-
107
- var html = '<img class="jspsych-same-different-stimulus" src="'+trial.stimuli[1]+'"></img>';
108
- //show prompt
109
- if (trial.prompt !== null) {
110
- html += trial.prompt;
111
- }
112
-
113
- display_element.innerHTML = html;
114
-
115
- if (trial.second_stim_duration > 0) {
116
- jsPsych.pluginAPI.setTimeout(function() {
117
- display_element.querySelector('.jspsych-same-different-stimulus').style.visibility = 'hidden';
118
- }, trial.second_stim_duration);
119
- }
120
-
121
- var after_response = function(info) {
122
-
123
- // kill any remaining setTimeout handlers
124
- jsPsych.pluginAPI.clearAllTimeouts();
125
-
126
- var correct = false;
127
-
128
- var skey = trial.same_key;
129
- var dkey = trial.different_key;
130
-
131
- if (jsPsych.pluginAPI.compareKeys(info.key,skey) && trial.answer == 'same') {
132
- correct = true;
133
- }
134
-
135
- if (jsPsych.pluginAPI.compareKeys(info.key, dkey) && trial.answer == 'different') {
136
- correct = true;
137
- }
138
-
139
- var trial_data = {
140
- rt: info.rt,
141
- answer: trial.answer,
142
- correct: correct,
143
- stimulus: [trial.stimuli[0], trial.stimuli[1]],
144
- response: info.key
145
- };
146
- if (first_stim_info) {
147
- trial_data["rt_stim1"] = first_stim_info.rt;
148
- trial_data["response_stim1"] = first_stim_info.key;
149
- }
150
-
151
- display_element.innerHTML = '';
152
-
153
- jsPsych.finishTrial(trial_data);
154
- }
155
-
156
- jsPsych.pluginAPI.getKeyboardResponse({
157
- callback_function: after_response,
158
- valid_responses: [trial.same_key, trial.different_key],
159
- rt_method: 'performance',
160
- persist: false,
161
- allow_held_key: false
162
- });
163
-
164
- }
165
-
166
- };
167
-
168
- return plugin;
169
- })();