jspsych 6.2.0 → 7.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (360) hide show
  1. package/README.md +43 -29
  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 -661
  59. package/docs/core_library/jspsych-data.md +0 -589
  60. package/docs/core_library/jspsych-pluginAPI.md +0 -510
  61. package/docs/core_library/jspsych-randomization.md +0 -397
  62. package/docs/core_library/jspsych-turk.md +0 -102
  63. package/docs/img/blue.png +0 -0
  64. package/docs/img/folder-setup.png +0 -0
  65. package/docs/img/folder-with-html.png +0 -0
  66. package/docs/img/githubreleases.jpg +0 -0
  67. package/docs/img/jspsych-favicon.png +0 -0
  68. package/docs/img/jspsych-logo-no-text-mono.svg +0 -493
  69. package/docs/img/jspsych-logo.jpg +0 -0
  70. package/docs/img/orange.png +0 -0
  71. package/docs/img/palmer_stim.png +0 -0
  72. package/docs/img/progress_bar.png +0 -0
  73. package/docs/img/visual_search_example.jpg +0 -0
  74. package/docs/index.md +0 -9
  75. package/docs/overview/browser-device-support.md +0 -35
  76. package/docs/overview/callbacks.md +0 -140
  77. package/docs/overview/data.md +0 -281
  78. package/docs/overview/exclude-browser.md +0 -32
  79. package/docs/overview/experiment-options.md +0 -121
  80. package/docs/overview/fullscreen.md +0 -36
  81. package/docs/overview/media-preloading.md +0 -91
  82. package/docs/overview/mturk.md +0 -77
  83. package/docs/overview/progress-bar.md +0 -110
  84. package/docs/overview/record-browser-interactions.md +0 -23
  85. package/docs/overview/running-experiments.md +0 -95
  86. package/docs/overview/timeline.md +0 -387
  87. package/docs/overview/trial.md +0 -142
  88. package/docs/plugins/creating-a-plugin.md +0 -79
  89. package/docs/plugins/jspsych-animation.md +0 -40
  90. package/docs/plugins/jspsych-audio-button-response.md +0 -60
  91. package/docs/plugins/jspsych-audio-keyboard-response.md +0 -58
  92. package/docs/plugins/jspsych-audio-slider-response.md +0 -53
  93. package/docs/plugins/jspsych-call-function.md +0 -81
  94. package/docs/plugins/jspsych-canvas-button-response.md +0 -66
  95. package/docs/plugins/jspsych-canvas-keyboard-response.md +0 -68
  96. package/docs/plugins/jspsych-canvas-slider-response.md +0 -89
  97. package/docs/plugins/jspsych-categorize-animation.md +0 -60
  98. package/docs/plugins/jspsych-categorize-html.md +0 -52
  99. package/docs/plugins/jspsych-categorize-image.md +0 -53
  100. package/docs/plugins/jspsych-cloze.md +0 -45
  101. package/docs/plugins/jspsych-external-html.md +0 -70
  102. package/docs/plugins/jspsych-free-sort.md +0 -55
  103. package/docs/plugins/jspsych-fullscreen.md +0 -57
  104. package/docs/plugins/jspsych-html-button-response.md +0 -42
  105. package/docs/plugins/jspsych-html-keyboard-response.md +0 -51
  106. package/docs/plugins/jspsych-html-slider-response.md +0 -45
  107. package/docs/plugins/jspsych-iat-html.md +0 -64
  108. package/docs/plugins/jspsych-iat-image.md +0 -64
  109. package/docs/plugins/jspsych-image-button-response.md +0 -46
  110. package/docs/plugins/jspsych-image-keyboard-response.md +0 -57
  111. package/docs/plugins/jspsych-image-slider-response.md +0 -52
  112. package/docs/plugins/jspsych-instructions.md +0 -58
  113. package/docs/plugins/jspsych-maxdiff.md +0 -42
  114. package/docs/plugins/jspsych-rdk.md +0 -119
  115. package/docs/plugins/jspsych-reconstruction.md +0 -48
  116. package/docs/plugins/jspsych-resize.md +0 -39
  117. package/docs/plugins/jspsych-same-different-html.md +0 -53
  118. package/docs/plugins/jspsych-same-different-image.md +0 -66
  119. package/docs/plugins/jspsych-serial-reaction-time-mouse.md +0 -50
  120. package/docs/plugins/jspsych-serial-reaction-time.md +0 -57
  121. package/docs/plugins/jspsych-survey-html-form.md +0 -50
  122. package/docs/plugins/jspsych-survey-likert.md +0 -70
  123. package/docs/plugins/jspsych-survey-multi-choice.md +0 -48
  124. package/docs/plugins/jspsych-survey-multi-select.md +0 -53
  125. package/docs/plugins/jspsych-survey-text.md +0 -63
  126. package/docs/plugins/jspsych-video-button-response.md +0 -52
  127. package/docs/plugins/jspsych-video-keyboard-response.md +0 -48
  128. package/docs/plugins/jspsych-video-slider-response.md +0 -58
  129. package/docs/plugins/jspsych-visual-search-circle.md +0 -52
  130. package/docs/plugins/jspsych-vsl-animate-occlusion.md +0 -55
  131. package/docs/plugins/jspsych-vsl-grid-scene.md +0 -62
  132. package/docs/plugins/overview.md +0 -111
  133. package/docs/tutorials/hello-world.md +0 -144
  134. package/docs/tutorials/rt-task.md +0 -1107
  135. package/examples/add-to-end-of-timeline.html +0 -32
  136. package/examples/conditional-and-loop-functions.html +0 -63
  137. package/examples/css/jquery-ui.css +0 -1225
  138. package/examples/data-add-properties.html +0 -40
  139. package/examples/data-as-function.html +0 -36
  140. package/examples/data-from-timeline.html +0 -45
  141. package/examples/data-from-url.html +0 -21
  142. package/examples/demo-flanker.html +0 -108
  143. package/examples/demo-simple-rt-task.html +0 -104
  144. package/examples/demos/demo_1.html +0 -29
  145. package/examples/demos/demo_2.html +0 -43
  146. package/examples/demos/demo_3.html +0 -58
  147. package/examples/display-element-to-embed-experiment.html +0 -73
  148. package/examples/end-active-node.html +0 -52
  149. package/examples/end-experiment.html +0 -43
  150. package/examples/exclusions.html +0 -32
  151. package/examples/external_html/simple_consent.html +0 -4
  152. package/examples/img/1.gif +0 -0
  153. package/examples/img/10.gif +0 -0
  154. package/examples/img/11.gif +0 -0
  155. package/examples/img/12.gif +0 -0
  156. package/examples/img/2.gif +0 -0
  157. package/examples/img/3.gif +0 -0
  158. package/examples/img/4.gif +0 -0
  159. package/examples/img/5.gif +0 -0
  160. package/examples/img/6.gif +0 -0
  161. package/examples/img/7.gif +0 -0
  162. package/examples/img/8.gif +0 -0
  163. package/examples/img/9.gif +0 -0
  164. package/examples/img/age/of1.jpg +0 -0
  165. package/examples/img/age/of2.jpg +0 -0
  166. package/examples/img/age/of3.jpg +0 -0
  167. package/examples/img/age/om1.jpg +0 -0
  168. package/examples/img/age/om2.jpg +0 -0
  169. package/examples/img/age/om3.jpg +0 -0
  170. package/examples/img/age/yf1.jpg +0 -0
  171. package/examples/img/age/yf4.jpg +0 -0
  172. package/examples/img/age/yf5.jpg +0 -0
  173. package/examples/img/age/ym2.jpg +0 -0
  174. package/examples/img/age/ym3.jpg +0 -0
  175. package/examples/img/age/ym5.jpg +0 -0
  176. package/examples/img/backwardN.gif +0 -0
  177. package/examples/img/blue.png +0 -0
  178. package/examples/img/con1.png +0 -0
  179. package/examples/img/con2.png +0 -0
  180. package/examples/img/fixation.gif +0 -0
  181. package/examples/img/happy_face_1.jpg +0 -0
  182. package/examples/img/happy_face_2.jpg +0 -0
  183. package/examples/img/happy_face_3.jpg +0 -0
  184. package/examples/img/happy_face_4.jpg +0 -0
  185. package/examples/img/inc1.png +0 -0
  186. package/examples/img/inc2.png +0 -0
  187. package/examples/img/normalN.gif +0 -0
  188. package/examples/img/orange.png +0 -0
  189. package/examples/img/redX.png +0 -0
  190. package/examples/img/ribbon.jpg +0 -0
  191. package/examples/img/sad_face_1.jpg +0 -0
  192. package/examples/img/sad_face_2.jpg +0 -0
  193. package/examples/img/sad_face_3.jpg +0 -0
  194. package/examples/img/sad_face_4.jpg +0 -0
  195. package/examples/js/snap.svg-min.js +0 -21
  196. package/examples/jspsych-RDK.html +0 -58
  197. package/examples/jspsych-animation.html +0 -33
  198. package/examples/jspsych-audio-button-response.html +0 -52
  199. package/examples/jspsych-audio-keyboard-response.html +0 -62
  200. package/examples/jspsych-audio-slider-response.html +0 -55
  201. package/examples/jspsych-call-function.html +0 -32
  202. package/examples/jspsych-canvas-button-response.html +0 -95
  203. package/examples/jspsych-canvas-keyboard-response.html +0 -78
  204. package/examples/jspsych-canvas-slider-response.html +0 -67
  205. package/examples/jspsych-categorize-animation.html +0 -46
  206. package/examples/jspsych-categorize-html.html +0 -38
  207. package/examples/jspsych-categorize-image.html +0 -38
  208. package/examples/jspsych-cloze.html +0 -42
  209. package/examples/jspsych-free-sort.html +0 -97
  210. package/examples/jspsych-fullscreen.html +0 -44
  211. package/examples/jspsych-html-button-response.html +0 -46
  212. package/examples/jspsych-html-keyboard-response.html +0 -42
  213. package/examples/jspsych-html-slider-response.html +0 -53
  214. package/examples/jspsych-iat.html +0 -510
  215. package/examples/jspsych-image-button-response.html +0 -84
  216. package/examples/jspsych-image-keyboard-response.html +0 -78
  217. package/examples/jspsych-image-slider-response.html +0 -76
  218. package/examples/jspsych-instructions.html +0 -37
  219. package/examples/jspsych-maxdiff.html +0 -33
  220. package/examples/jspsych-reconstruction.html +0 -43
  221. package/examples/jspsych-resize.html +0 -34
  222. package/examples/jspsych-same-different-html.html +0 -28
  223. package/examples/jspsych-same-different-image.html +0 -33
  224. package/examples/jspsych-serial-reaction-time-mouse.html +0 -98
  225. package/examples/jspsych-serial-reaction-time.html +0 -54
  226. package/examples/jspsych-survey-html-form.html +0 -33
  227. package/examples/jspsych-survey-likert.html +0 -42
  228. package/examples/jspsych-survey-multi-choice.html +0 -40
  229. package/examples/jspsych-survey-multi-select.html +0 -42
  230. package/examples/jspsych-survey-text.html +0 -34
  231. package/examples/jspsych-video-button-response.html +0 -57
  232. package/examples/jspsych-video-keyboard-response.html +0 -53
  233. package/examples/jspsych-video-slider-response.html +0 -55
  234. package/examples/jspsych-visual-search-circle.html +0 -58
  235. package/examples/jspsych-vsl-animate-occlusion.html +0 -29
  236. package/examples/jspsych-vsl-grid-scene.html +0 -41
  237. package/examples/lexical-decision.html +0 -132
  238. package/examples/manual-preloading.html +0 -53
  239. package/examples/pause-unpause.html +0 -33
  240. package/examples/progress-bar.html +0 -62
  241. package/examples/sound/hammer.mp3 +0 -0
  242. package/examples/sound/sound.mp3 +0 -0
  243. package/examples/sound/speech_blue.mp3 +0 -0
  244. package/examples/sound/speech_green.mp3 +0 -0
  245. package/examples/sound/speech_joke.mp3 +0 -0
  246. package/examples/sound/speech_red.mp3 +0 -0
  247. package/examples/sound/tone.mp3 +0 -0
  248. package/examples/timeline-variables-sampling.html +0 -50
  249. package/examples/timeline-variables.html +0 -55
  250. package/examples/video/sample_video.mp4 +0 -0
  251. package/jspsych.js +0 -2796
  252. package/license.txt +0 -21
  253. package/mkdocs.yml +0 -104
  254. package/plugins/jspsych-animation.js +0 -189
  255. package/plugins/jspsych-audio-button-response.js +0 -247
  256. package/plugins/jspsych-audio-keyboard-response.js +0 -204
  257. package/plugins/jspsych-audio-slider-response.js +0 -262
  258. package/plugins/jspsych-call-function.js +0 -58
  259. package/plugins/jspsych-canvas-button-response.js +0 -199
  260. package/plugins/jspsych-canvas-keyboard-response.js +0 -155
  261. package/plugins/jspsych-canvas-slider-response.js +0 -207
  262. package/plugins/jspsych-categorize-animation.js +0 -266
  263. package/plugins/jspsych-categorize-html.js +0 -220
  264. package/plugins/jspsych-categorize-image.js +0 -222
  265. package/plugins/jspsych-cloze.js +0 -112
  266. package/plugins/jspsych-external-html.js +0 -112
  267. package/plugins/jspsych-free-sort.js +0 -444
  268. package/plugins/jspsych-fullscreen.js +0 -104
  269. package/plugins/jspsych-html-button-response.js +0 -188
  270. package/plugins/jspsych-html-keyboard-response.js +0 -149
  271. package/plugins/jspsych-html-slider-response.js +0 -202
  272. package/plugins/jspsych-iat-html.js +0 -284
  273. package/plugins/jspsych-iat-image.js +0 -286
  274. package/plugins/jspsych-image-button-response.js +0 -311
  275. package/plugins/jspsych-image-keyboard-response.js +0 -247
  276. package/plugins/jspsych-image-slider-response.js +0 -353
  277. package/plugins/jspsych-instructions.js +0 -237
  278. package/plugins/jspsych-maxdiff.js +0 -174
  279. package/plugins/jspsych-rdk.js +0 -1373
  280. package/plugins/jspsych-reconstruction.js +0 -134
  281. package/plugins/jspsych-resize.js +0 -166
  282. package/plugins/jspsych-same-different-html.js +0 -168
  283. package/plugins/jspsych-same-different-image.js +0 -169
  284. package/plugins/jspsych-serial-reaction-time-mouse.js +0 -213
  285. package/plugins/jspsych-serial-reaction-time.js +0 -247
  286. package/plugins/jspsych-survey-html-form.js +0 -171
  287. package/plugins/jspsych-survey-likert.js +0 -195
  288. package/plugins/jspsych-survey-multi-choice.js +0 -208
  289. package/plugins/jspsych-survey-multi-select.js +0 -232
  290. package/plugins/jspsych-survey-text.js +0 -185
  291. package/plugins/jspsych-video-button-response.js +0 -320
  292. package/plugins/jspsych-video-keyboard-response.js +0 -279
  293. package/plugins/jspsych-video-slider-response.js +0 -351
  294. package/plugins/jspsych-visual-search-circle.js +0 -259
  295. package/plugins/jspsych-vsl-animate-occlusion.js +0 -196
  296. package/plugins/jspsych-vsl-grid-scene.js +0 -103
  297. package/plugins/template/jspsych-plugin-template.js +0 -35
  298. package/tests/README.md +0 -7
  299. package/tests/jsPsych/default-iti.test.js +0 -51
  300. package/tests/jsPsych/default-parameters.test.js +0 -58
  301. package/tests/jsPsych/endexperiment.test.js +0 -49
  302. package/tests/jsPsych/events.test.js +0 -369
  303. package/tests/jsPsych/init.test.js +0 -48
  304. package/tests/jsPsych/loads.test.js +0 -7
  305. package/tests/jsPsych/min-rt.test.js +0 -58
  306. package/tests/jsPsych/progressbar.test.js +0 -202
  307. package/tests/jsPsych/timeline-variables.test.js +0 -254
  308. package/tests/jsPsych/timelines.test.js +0 -498
  309. package/tests/jsPsych.data/datacollection.test.js +0 -116
  310. package/tests/jsPsych.data/datacolumn.test.js +0 -50
  311. package/tests/jsPsych.data/datamodule.test.js +0 -152
  312. package/tests/jsPsych.data/dataparameter.test.js +0 -251
  313. package/tests/jsPsych.data/interactions.test.js +0 -109
  314. package/tests/jsPsych.pluginAPI/pluginapi.test.js +0 -144
  315. package/tests/jsPsych.randomization/randomziation.test.js +0 -27
  316. package/tests/jsPsych.utils/utils.test.js +0 -58
  317. package/tests/media/blue.png +0 -0
  318. package/tests/media/orange.png +0 -0
  319. package/tests/media/sample_video.mp4 +0 -0
  320. package/tests/media/sound.mp3 +0 -0
  321. package/tests/plugins/plugin-animation.test.js +0 -35
  322. package/tests/plugins/plugin-audio-button-response.test.js +0 -15
  323. package/tests/plugins/plugin-audio-keyboard-response.test.js +0 -15
  324. package/tests/plugins/plugin-audio-slider-response.test.js +0 -15
  325. package/tests/plugins/plugin-call-function.test.js +0 -49
  326. package/tests/plugins/plugin-categorize-animation.test.js +0 -274
  327. package/tests/plugins/plugin-categorize-html.test.js +0 -17
  328. package/tests/plugins/plugin-categorize-image.test.js +0 -17
  329. package/tests/plugins/plugin-cloze.test.js +0 -140
  330. package/tests/plugins/plugin-free-sort.test.js +0 -112
  331. package/tests/plugins/plugin-fullscreen.test.js +0 -41
  332. package/tests/plugins/plugin-html-button-response.test.js +0 -161
  333. package/tests/plugins/plugin-html-keyboard-response.test.js +0 -139
  334. package/tests/plugins/plugin-html-slider-response.test.js +0 -155
  335. package/tests/plugins/plugin-iat-html.test.js +0 -328
  336. package/tests/plugins/plugin-iat-image.test.js +0 -308
  337. package/tests/plugins/plugin-image-button-response.test.js +0 -183
  338. package/tests/plugins/plugin-image-keyboard-response.test.js +0 -154
  339. package/tests/plugins/plugin-image-slider-response.test.js +0 -183
  340. package/tests/plugins/plugin-instructions.test.js +0 -66
  341. package/tests/plugins/plugin-maxdiff.test.js +0 -39
  342. package/tests/plugins/plugin-rdk.test.js +0 -17
  343. package/tests/plugins/plugin-reconstruction.test.js +0 -16
  344. package/tests/plugins/plugin-resize.test.js +0 -16
  345. package/tests/plugins/plugin-same-different-html.test.js +0 -17
  346. package/tests/plugins/plugin-same-different-image.test.js +0 -17
  347. package/tests/plugins/plugin-serial-reaction-time-mouse.test.js +0 -42
  348. package/tests/plugins/plugin-serial-reaction-time.test.js +0 -69
  349. package/tests/plugins/plugin-survey-html-form.test.js +0 -44
  350. package/tests/plugins/plugin-survey-likert.test.js +0 -48
  351. package/tests/plugins/plugin-survey-multi-choice.test.js +0 -48
  352. package/tests/plugins/plugin-survey-multi-select.test.js +0 -72
  353. package/tests/plugins/plugin-survey-text.test.js +0 -115
  354. package/tests/plugins/plugin-video-button-response.test.js +0 -35
  355. package/tests/plugins/plugin-video-keyboard-response.test.js +0 -35
  356. package/tests/plugins/plugin-video-slider-response.test.js +0 -34
  357. package/tests/plugins/plugin-visual-search-circle.test.js +0 -16
  358. package/tests/plugins/plugin-vsl-animate-occlusion.test.js +0 -16
  359. package/tests/plugins/plugin-vsl-grid-scene.test.js +0 -16
  360. package/tests/testing-utils.js +0 -13
@@ -1,510 +0,0 @@
1
- # jsPsych.pluginAPI
2
-
3
- The pluginAPI module contains functions that are useful when developing new plugins.
4
-
5
- ---
6
- ## jsPsych.pluginAPI.autoPreload
7
-
8
- ```
9
- jsPsych.pluginAPI.autoPreload(timeline, callback)
10
- ```
11
-
12
- ### Parameters
13
-
14
- Parameter | Type | Description
15
- ----------|------|------------
16
- timeline | TimelineNode object | A TimelineNode object that contains an arbitrary set of trials.
17
- callback | function | A function to execute when loading is complete
18
-
19
- ### Return value
20
-
21
- Returns nothing.
22
-
23
- ### Description
24
-
25
- Attempts to preload all image files and audio files that will be used to run the trials on the timeline. Content will only preload from plugins that have used the `registerPreload` method to define the media types of their parameters.
26
-
27
- The callback function executes once all of the files are preloaded.
28
-
29
- This method is used internally by the core jsPsych code. It is not recommended that you call it manually.
30
-
31
- ### Examples
32
-
33
- ```javascript
34
- // you probably shouldn't use this method
35
- ```
36
-
37
-
38
- ---
39
- ## jsPsych.pluginAPI.cancelAllKeyboardResponses
40
-
41
- ```
42
- jsPsych.pluginAPI.cancelAllKeyboardResponses()
43
- ```
44
-
45
- ### Parameters
46
-
47
- None.
48
-
49
- ### Return value
50
-
51
- Returns nothing.
52
-
53
- ### Description
54
-
55
- Cancels all currently active keyboard listeners created by `jsPsych.pluginAPI.getKeyboardResponse`.
56
-
57
- ### Examples
58
-
59
- ```javascript
60
- jsPsych.pluginAPI.cancelAllKeyboardResponses();
61
- ```
62
-
63
- ---
64
- ## jsPsych.pluginAPI.cancelKeyboardResponse
65
-
66
- ```
67
- jsPsych.pluginAPI.cancelKeyboardResponse(listener_id)
68
- ```
69
-
70
- ### Parameters
71
-
72
- Parameter | Type | Description
73
- ----------|------|------------
74
- listener_id | object | The listener_id object generated by the call to `jsPsych.pluginAPI.getKeyboardResponse`.
75
-
76
- ### Return value
77
-
78
- Returns nothing.
79
-
80
- ### Description
81
-
82
- Cancels a specific keyboard listener created by `jsPsych.pluginAPI.getKeyboardResponse`.
83
-
84
-
85
- ### Examples
86
-
87
- ```javascript
88
- // create a persistent keyboard listener
89
- var listener_id = jsPsych.pluginAPI.getKeyboardResponse({
90
- callback_function: after_response,
91
- valid_responses: ['p','q'],
92
- rt_method: 'performance',
93
- persist: true,
94
- allow_held_key: false
95
- });
96
-
97
- // cancel keyboard listener
98
- jsPsych.pluginAPI.cancelKeyboardResponse(listener_id);
99
- ```
100
-
101
- ---
102
- ## jsPsych.pluginAPI.clearAllTimeouts
103
-
104
- ```
105
- jsPsych.pluginAPI.clearAllTimeouts()
106
- ```
107
-
108
- ### Parameters
109
-
110
- None.
111
-
112
- ### Return value
113
-
114
- Returns nothing.
115
-
116
- ### Description
117
-
118
- Clears any pending timeouts that were set using jsPsych.pluginAPI.setTimeout()
119
-
120
- ---
121
- ## jsPsych.pluginAPI.compareKeys
122
-
123
- ```
124
- jsPsych.pluginAPI.compareKeys(key1, key2)
125
- ```
126
-
127
- ### Parameters
128
-
129
- Parameter | Type | Description
130
- ----------|------|------------
131
- key1 | string or numeric | The representation of a key, either string or keycode
132
- key2 | string or numeric | The representation of a key, either string or keycode
133
-
134
- ### Return value
135
-
136
- Returns true if keycodes or strings refer to the same key, regardless of type.
137
-
138
- ### Description
139
-
140
- Compares two keys to see if they are the same, ignoring differences in representational type.
141
-
142
- ### Examples
143
-
144
- ```javascript
145
- jsPsych.pluginAPI.compareKeys('a', 65);
146
- // returns true
147
-
148
- jsPsych.pluginAPI.convertKeyCharacterToKeyCode('space', 31)
149
- // returns false
150
- ```
151
-
152
- ---
153
- ## jsPsych.pluginAPI.convertKeyCharacterToKeyCode
154
-
155
- ```
156
- jsPsych.pluginAPI.convertKeyCharacterToKeyCode(character)
157
- ```
158
-
159
- ### Parameters
160
-
161
- Parameter | Type | Description
162
- ----------|------|------------
163
- character | string | The string representation of keyboard key.
164
-
165
- ### Return value
166
-
167
- Returns the numeric keycode associated with the `character` parameter.
168
-
169
- ### Description
170
-
171
- Converts between the string representation of a key and the numeric key code associated with that key.
172
-
173
- ### Examples
174
-
175
- ```javascript
176
- var keycode = jsPsych.pluginAPI.convertKeyCharacterToKeyCode('a')
177
- // keycode is 65
178
-
179
- keycode = jsPsych.pluginAPI.convertKeyCharacterToKeyCode('space')
180
- // keycode is 32
181
- ```
182
-
183
- ---
184
- ## jsPsych.pluginAPI.convertKeyCodeToKeyCharacter
185
-
186
- ```
187
- jsPsych.pluginAPI.convertKeyCodeToKeyCharacter(character)
188
- ```
189
-
190
- ### Parameters
191
-
192
- Parameter | Type | Description
193
- ----------|------|------------
194
- code | numeric | The numeric representation of keyboard key.
195
-
196
- ### Return value
197
-
198
- Returns the string representation of the key associated with the `code` parameter.
199
-
200
- ### Description
201
-
202
- Converts between the numeric key code of a key and the string representation associated with that key.
203
-
204
- ### Examples
205
-
206
- ```javascript
207
- var keycode = jsPsych.pluginAPI.convertKeyCharacterToKeyCode(65)
208
- // key is 'a'
209
-
210
- keycode = jsPsych.pluginAPI.convertKeyCharacterToKeyCode(32)
211
- // keycode is 'space'
212
- ```
213
-
214
- ---
215
- ## jsPsych.pluginAPI.getAudioBuffer
216
-
217
- ```
218
- jsPsych.pluginAPI.getAudioBuffer(filepath)
219
- ```
220
-
221
- ### Parameters
222
-
223
- Parameter | Type | Description
224
- ----------|------|------------
225
- filepath | string | The path to the audio file that was preloaded.
226
-
227
- ### Return value
228
-
229
- Returns buffered audio file for playback. If the browser supports it the buffer will be playable with the WebAudio API. Otherwise, the returned buffer will be an HTML5 Audio object.
230
-
231
- ### Description
232
-
233
- Gets an AudioBuffer that can be played with the WebAudio API or an Audio object that can be played with HTML5 Audio. The file must be preloaded with `preloadAudioFiles` or the automatic preload (`autoPreload`).
234
-
235
- ### Examples
236
-
237
- ```javascript
238
- // the code below is used to play audio in the audio-keyboard-response plugin
239
- var source = context.createBufferSource();
240
- source.buffer = jsPsych.pluginAPI.getAudioBuffer(trial.stimulus);
241
- source.connect(context.destination);
242
- startTime = context.currentTime;
243
- source.start(startTime);
244
- ```
245
-
246
- ---
247
- ## jsPsych.pluginAPI.getKeyboardResponse
248
-
249
- ```
250
- jsPsych.pluginAPI.getKeyboardResponse(parameters)
251
- ```
252
-
253
- ### Parameters
254
-
255
- The method accepts an object of parameter values (see example below). The valid keys for this object are listed in the table below.
256
-
257
- Parameter | Type | Description
258
- ----------|------|------------
259
- callback_function | function | The function to execute whenever a valid keyboard response is generated.
260
- valid_responses | array | An array of key codes or character strings representing valid responses. Responses not on the list will be ignored. An empty array indicates that all responses are acceptable.
261
- rt_method | string | Indicates which method of recording time to use. The `'performance'` method uses calls to `performance.now()`, which is the standard way of measuring timing in jsPsych. It is [supported by up-to-date versions of all the major browsers](http://caniuse.com/#search=performance). The `audio` method is used in conjuction with an `audio_context` (set as an additional parameter). This uses the clock time of the `audio_context` when audio stimuli are being played.
262
- audio_context | AudioContext object | The AudioContext of the audio file that is being played.
263
- audio_context_start_time | numeric | The scheduled time of the sound file in the AudioContext. This will be used as the start time.
264
- allow_held_key | boolean | If `true`, then responses will be registered from keys that are being held down. If `false`, then a held key can only register a response the first time that `getKeyboardResponse` is called for that key. For example, if a participant holds down the `A` key before the experiment starts, then the first time `getKeyboardResponse` is called, the `A` will register as a key press. However, any future calls to `getKeyboardResponse` will not register the `A` until the participant releases the key and presses it again.
265
- persist | boolean | If false, then the keyboard listener will only trigger the first time a valid key is pressed. If true, then it will trigger every time a valid key is pressed until it is explicitly cancelled by `jsPsych.pluginAPI.cancelKeyboardResponse` or `jsPsych.pluginAPI.cancelAllKeyboardResponses`.
266
-
267
- ### Return value
268
-
269
- Return an object that uniquely identifies the keyboard listener. This object can be passed to `jsPsych.pluginAPI.cancelKeyboardResponse` to cancel the keyboard listener.
270
-
271
- ### Description
272
-
273
- Gets a keyboard response from the subject, recording the response time from when the function is first called until a valid response is generated.
274
-
275
- The keyboard event listener will be bound to the `display_element` declared in `jsPsych.init()` (or the `<body>` element if no `display_element` is specified). This allows jsPsych experiments to be embedded in websites with other content without disrupting the functionality of other UI elements.
276
-
277
- A valid response triggers the `callback_function` specified in the parameters. A single argument is passed to the callback function. The argument contains an object with the properties `key` and `rt`. `key` contains the numeric key code of the response, and `rt` contains the response time.
278
-
279
- ### Examples
280
-
281
- #### Get a single response from any key
282
- ```javascript
283
-
284
- var after_response = function(info){
285
- alert('You pressed key '+info.key+' after '+info.rt+'ms');
286
- }
287
-
288
- jsPsych.pluginAPI.getKeyboardResponse({
289
- callback_function:after_response,
290
- valid_responses: jsPsych.ALL_KEYS,
291
- rt_method: 'performance',
292
- persist: false
293
- });
294
- ```
295
-
296
- #### Get a responses from a key until the letter Q is pressed
297
- ```javascript
298
-
299
- var after_response = function(info){
300
- alert('You pressed key '+info.key+' after '+info.rt+'ms');
301
-
302
- if(info.key == 81){ // the key code for 'Q' is 81.
303
- jsPsych.pluginAPI.cancelKeyboardResponse(listener);
304
- }
305
- }
306
-
307
- var listener = jsPsych.pluginAPI.getKeyboardResponse({
308
- callback_function:after_response,
309
- valid_responses: jsPsych.ALL_KEYS,
310
- rt_method: 'performance',
311
- persist: true
312
- });
313
- ```
314
-
315
- ---
316
- ## jsPsych.pluginAPI.preloadAudioFiles
317
-
318
- ```
319
- jsPsych.pluginAPI.preloadAudioFiles(files, callback_complete, callback_load)
320
- ```
321
-
322
- ### Parameters
323
-
324
- Parameter | Type | Description
325
- ----------|------|------------
326
- files | array | An array of audio file paths to load. The array can be nested (e.g., if images are in multiple arrays to help sort by condition or task).
327
- callback_complete | function | A function to execute when all the files have been loaded.
328
- callback_load | function | A function to execute after each file has been loaded. A single parameter is passed to this function which contains the number of files that have been loaded so far.
329
-
330
- ### Return value
331
-
332
- Returns nothing.
333
-
334
- ### Description
335
-
336
- Use this function to preload audio files that are not part of a plugin with automatic preloading. Audio files in official plugins will automatically preload. See [Media Preloading](../overview/media-preloading.md) for more information.
337
-
338
- It is possible to run this function without specifying a callback function. However, in this case the code will continue executing while the files are loaded. Thus, it is possible that an audio file would be required for playing before it is done preloading. The `callback_complete` function will only execute after all the audio files are loaded, and can be used to control the flow of the experiment (e.g., by starting the experiment in the `callback_complete` function).
339
-
340
- The `callback_load` function can be used to indicate progress. See example below.
341
-
342
- ### Examples
343
-
344
- #### Basic use
345
- ```javascript
346
-
347
- var sounds = ['file1.mp3', 'file2.mp3', 'file3.mp3'];
348
-
349
- jsPsych.pluginAPI.preloadAudioFiles(sounds, function(){ startExperiment(); });
350
-
351
- function startExperiment(){
352
- jsPsych.init({
353
- timeline: exp
354
- });
355
- }
356
-
357
- ```
358
-
359
- #### Show progress of loading
360
-
361
- ```javascript
362
- var sounds = ['file1.mp3', 'file2.mp3', 'file3.mp3'];
363
-
364
- jsPsych.pluginAPI.preloadAudioFiles(sounds, function(){ startExperiment(); }, function(nLoaded) { updateLoadedCount(nLoaded); });
365
-
366
- function updateLoadedCount(nLoaded){
367
- var percentcomplete = nLoaded / sounds.length * 100;
368
-
369
- // could put something fancier here, like a progress bar
370
- // or updating text in the DOM.
371
- console.log('Loaded '+percentcomplete+'% of audio files');
372
- }
373
-
374
- function startExperiment(){
375
- jsPsych.init({
376
- timeline: exp
377
- });
378
- }
379
- ```
380
-
381
-
382
- ---
383
- ## jsPsych.pluginAPI.preloadImages
384
-
385
- ```
386
- jsPsych.pluginAPI.preloadImages(images, callback_complete, callback_load)
387
- ```
388
-
389
- ### Parameters
390
-
391
- Parameter | Type | Description
392
- ----------|------|------------
393
- images | array | An array of image paths to load. The array can be nested (e.g., if images are in multiple arrays to help sort by condition or task).
394
- callback_complete | function | A function to execute when all the images have been loaded.
395
- callback_load | function | A function to execute after each image has been loaded. A single parameter is passed to this function which contains the number of images that have been loaded so far.
396
-
397
- ### Return value
398
-
399
- Returns nothing.
400
-
401
- ### Description
402
-
403
- Use this function to preload image files that are not part of a plugin with automatic preloading. Image files in official plugins will automatically preload. See [Media Preloading](../overview/media-preloading.md) for more information.
404
-
405
- It is possible to run this function without specifying a callback function. However, in this case the code will continue executing while the images are loaded. Thus, it is possible that an image would be required for display before it is done preloading. The `callback_complete` function will only execute after all the images are loaded, and can be used to control the flow of the experiment (e.g., by starting the experiment in the `callback_complete` function).
406
-
407
- The `callback_load` function can be used to indicate progress, if the number of images to be loaded is known ahead of time. See example below.
408
-
409
- ### Examples
410
-
411
- #### Basic use
412
- ```javascript
413
-
414
- var images = ['img/file1.png', 'img/file2.png', 'img/file3.png'];
415
-
416
- jsPsych.pluginAPI.preloadImages(images, function(){ startExperiment(); });
417
-
418
- function startExperiment(){
419
- jsPsych.init({
420
- timeline: exp
421
- });
422
- }
423
-
424
- ```
425
-
426
- #### Show progress of loading
427
-
428
- ```javascript
429
- var images = ['img/file1.png', 'img/file2.png', 'img/file3.png'];
430
-
431
- jsPsych.pluginAPI.preloadImages(images, function(){ startExperiment(); }, function(nLoaded) { updateLoadedCount(nLoaded); });
432
-
433
- function updateLoadedCount(nLoaded){
434
- var percentcomplete = nLoaded / images.length * 100;
435
-
436
- // could put something fancier here, like a progress bar
437
- // or updating text in the DOM.
438
- console.log('Loaded '+percentcomplete+'% of images');
439
- }
440
-
441
- function startExperiment(){
442
- jsPsych.init({
443
- timeline: exp
444
- });
445
- }
446
- ```
447
-
448
- ---
449
- ## jsPsych.pluginAPI.registerPreload
450
-
451
- ```
452
- jsPsych.pluginAPI.registerPreload(plugin_name, parameter, media_type, conditional_function)
453
- ```
454
-
455
- ### Parameters
456
-
457
- Parameter | Type | Description
458
- ----------|------|------------
459
- plugin_name | string | The name of the plugin. e.g., 'image-keyboard-response'.
460
- parameter | string | The name of the parameter that is a media file. e.g., 'stimulus'
461
- media_type | string | The type of media, either 'image', 'audio' or 'video'.
462
- conditional_function | function | Only run the preload for a trial if this function returns true, or if this function does not exist.
463
-
464
- ### Return value
465
-
466
- Nothing.
467
-
468
- ### Description
469
-
470
- Use this method in a plugin file to mark a parameter as containing an element that should be preloaded. The method should be called in the plugin file such that it gets called when the file is loaded.
471
-
472
- The `conditional_function` function is passed a single argument containing the trial object.
473
-
474
- ### Example
475
-
476
- For an example, see the [image-keyboard-response](https://github.com/jodeleeuw/jsPsych/blob/master/plugins/jspsych-image-keyboard-response.js) and [audio-keyboard-response](https://github.com/jodeleeuw/jsPsych/blob/master/plugins/jspsych-audio-keyboard-response.js) plugins.
477
-
478
- ---
479
- ## jsPsych.pluginAPI.setTimeout
480
-
481
- ```
482
- jsPsych.pluginAPI.setTimeout(callback, delay)
483
- ```
484
-
485
- ### Parameters
486
-
487
- Parameter | Type | Description
488
- ----------|------|------------
489
- callback | function | A function to execute after waiting for delay.
490
- delay | integer | Time to wait in milliseconds.
491
-
492
- ### Return value
493
-
494
- Returns the ID of the setTimeout handle.
495
-
496
- ### Description
497
-
498
- This is simply a call to the standard setTimeout function in JavaScript with the added benefit of registering the setTimeout call in a central list. This is useful for scenarios where some other event (the trial ending, aborting the experiment) should stop the execution of queued timeouts.
499
-
500
- ### Examples
501
-
502
- ```javascript
503
- // print the time
504
- console.log(Date.now())
505
-
506
- // print the time 1s later
507
- jsPsych.pluginAPI.setTimeout(function(){
508
- console.log(Date.now())
509
- }, 1000);
510
- ```