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,624 +0,0 @@
1
- # jsPsych.pluginAPI
2
-
3
- The pluginAPI module contains functions that are useful when developing new plugins.
4
-
5
- ---
6
-
7
- ## jsPsych.pluginAPI.cancelAllKeyboardResponses
8
-
9
- ```javascript
10
- jsPsych.pluginAPI.cancelAllKeyboardResponses()
11
- ```
12
-
13
- ### Parameters
14
-
15
- None.
16
-
17
- ### Return value
18
-
19
- Returns nothing.
20
-
21
- ### Description
22
-
23
- Cancels all currently active keyboard listeners created by `jsPsych.pluginAPI.getKeyboardResponse`.
24
-
25
- ### Example
26
-
27
- ```javascript
28
- jsPsych.pluginAPI.cancelAllKeyboardResponses();
29
- ```
30
-
31
- ---
32
-
33
- ## jsPsych.pluginAPI.cancelKeyboardResponse
34
-
35
- ```javascript
36
- jsPsych.pluginAPI.cancelKeyboardResponse(listener_id)
37
- ```
38
-
39
- ### Parameters
40
-
41
- Parameter | Type | Description
42
- ----------|------|------------
43
- listener_id | object | The listener_id object generated by the call to `jsPsych.pluginAPI.getKeyboardResponse`.
44
-
45
- ### Return value
46
-
47
- Returns nothing.
48
-
49
- ### Description
50
-
51
- Cancels a specific keyboard listener created by `jsPsych.pluginAPI.getKeyboardResponse`.
52
-
53
- ### Example
54
-
55
- ```javascript
56
- // create a persistent keyboard listener
57
- var listener_id = jsPsych.pluginAPI.getKeyboardResponse({
58
- callback_function: after_response,
59
- valid_responses: ['p','q'],
60
- rt_method: 'performance',
61
- persist: true,
62
- allow_held_key: false
63
- });
64
-
65
- // cancel keyboard listener
66
- jsPsych.pluginAPI.cancelKeyboardResponse(listener_id);
67
- ```
68
-
69
- ---
70
-
71
- ## jsPsych.pluginAPI.clearAllTimeouts
72
-
73
- ```javascript
74
- jsPsych.pluginAPI.clearAllTimeouts()
75
- ```
76
-
77
- ### Parameters
78
-
79
- None.
80
-
81
- ### Return value
82
-
83
- Returns nothing.
84
-
85
- ### Description
86
-
87
- Clears any pending timeouts that were set using jsPsych.pluginAPI.setTimeout().
88
-
89
- ---
90
-
91
- ## jsPsych.pluginAPI.compareKeys
92
-
93
- ```javascript
94
- jsPsych.pluginAPI.compareKeys(key1, key2)
95
- ```
96
-
97
- ### Parameters
98
-
99
- Parameter | Type | Description
100
- ----------|------|------------
101
- key1 | string or numeric | The representation of a key, either string or keycode
102
- key2 | string or numeric | The representation of a key, either string or keycode
103
-
104
- ### Return value
105
-
106
- Returns true if keycodes or strings refer to the same key, regardless of type. Returns false if the keycodes or strings do not match.
107
-
108
- ### Description
109
-
110
- Compares two keys to see if they are the same, ignoring differences in representational type, and using the appropriate case sensitivity based on the experiment's settings.
111
-
112
- If `case_sensitive_responses` is set to `false` in `jsPsych.init` (the default), then the string key comparison will not be case-sensitive, e.g., "a" and "A" will match, and this function will return `true`. If `case_sensitive_responses` is set to `true` in `jsPsych.init`, then the string key comparison will not be case-sensitive, e.g., "a" and "A" will not match, and this function will return `false`.
113
-
114
- We recommend using this function to compare keys in all plugin and experiment code, rather than using something like `if (response == 'j')...`. This is because the response key returned by the `jsPsych.pluginAPI.getKeyboardResponse` function will be converted to lowercase when `case_sensitive_responses` is `false`, and it will match the exact key press representation when `case_sensitive_responses` is `true`. Using this `compareKeys` function will ensure that your key comparisons work appropriately based on the experiment's `case_sensitive_responses` setting, and that you do not need to remember to check key responses against different case versions of the comparison key (e.g. `if (response == 'ArrowLeft' || response == 'arrowleft')...`).
115
-
116
- ### Examples
117
-
118
- #### Basic examples
119
-
120
- ```javascript
121
- jsPsych.pluginAPI.compareKeys('a', 'A');
122
- // returns true when case_sensitive_responses is false in jsPsych.init
123
-
124
- jsPsych.pluginAPI.compareKeys('a', 'A');
125
- // returns false when case_sensitive_responses is true in jsPsych.init
126
-
127
- // also works with numeric key codes (but note that numeric keyCode values are now deprecated)
128
- jsPsych.pluginAPI.compareKeys('a', 65);
129
- // returns true
130
-
131
- jsPsych.pluginAPI.compareKeys('space', 31);
132
- // returns false
133
- ```
134
-
135
- #### Comparing a key response and key parameter value in plugins
136
-
137
- ```javascript
138
- // this is the callback_function passed to jsPsych.pluginAPI.getKeyboardResponse
139
- var after_response = function(info) {
140
- // score the response by comparing the key that was pressed against the trial's key_answer parameter
141
- var correct = jsPsych.pluginAPI.compareKeys(trial.key_answer, info.key);
142
- //...
143
- }
144
- ```
145
-
146
- #### Scoring a key response in experiment code
147
-
148
- ```javascript
149
- var trial = {
150
- type: 'html-keyboard-response',
151
- stimulus: '<<<<<',
152
- choices: ['f','j'],
153
- prompt: 'Press f for left. Press j for right.',
154
- on_finish: function(data){
155
- // score the response by comparing the key that was pressed (data.response) against the
156
- // correct response for this trial ('f'), and store reponse accuracy in the trial data
157
- if(jsPsych.pluginAPI.compareKeys(data.response, 'f')){
158
- data.correct = true;
159
- } else {
160
- data.correct = false;
161
- }
162
- }
163
- }
164
- ```
165
-
166
- ---
167
-
168
- ## jsPsych.pluginAPI.getAudioBuffer
169
-
170
- ```javascript
171
- jsPsych.pluginAPI.getAudioBuffer(filepath)
172
- ```
173
-
174
- ### Parameters
175
-
176
- Parameter | Type | Description
177
- ----------|------|------------
178
- filepath | string | The path to the audio file that was preloaded.
179
-
180
- ### Return value
181
-
182
- Returns a Promise that resolves when the audio file loads. Success handler's parameter will be the audio buffer. If the experiment is running using the WebAudio API it will be an AudioBuffer object. Otherwise, it will be an HTML5 Audio object. The failure handler's parameter is the error generated by `preloadAudio`.
183
-
184
- ### Description
185
-
186
- Gets an AudioBuffer that can be played with the WebAudio API or an Audio object that can be played with HTML5 Audio.
187
-
188
- It is strongly recommended that you preload audio files before calling this method. This method will load the files if they are not preloaded, but this may result in delays during the experiment as audio is downloaded.
189
-
190
- ### Examples
191
-
192
- #### HTML 5 Audio
193
-
194
- ```javascript
195
- jsPsych.pluginAPI.getAudioBuffer('my-sound.mp3')
196
- .then(function(audio){
197
- audio.play();
198
- })
199
- .catch(function(err){
200
- console.error('Audio file failed to load')
201
- })
202
- ```
203
-
204
- #### WebAudio API
205
-
206
- ```javascript
207
- var context = jsPsych.pluginAPI.audioContext();
208
-
209
- jsPsych.pluginAPI.getAudioBuffer('my-sound.mp3')
210
- .then(function(buffer){
211
- audio = context.createBufferSource();
212
- audio.buffer = buffer;
213
- audio.connect(context.destination);
214
- audio.start(context.currentTime);
215
- })
216
- .catch(function(err){
217
- console.error('Audio file failed to load')
218
- })
219
- ```
220
-
221
- See the `audio-keyboard-response` plugin for an example in a fuller context.
222
-
223
- ---
224
-
225
- ## jsPsych.pluginAPI.getAutoPreloadList
226
-
227
- ```javascript
228
- jsPsych.pluginAPI.getAutoPreloadList(timeline)
229
- ```
230
-
231
- ### Parameters
232
-
233
- Parameter | Type | Description
234
- ----------|------|------------
235
- timeline | array | An array containing the trial object(s) from which a list of media files should be automatically generated. This array can contain the entire experiment timeline, or any individual parts of a larger timeline, such as specific timeline nodes and trial objects.
236
-
237
- ### Return value
238
-
239
- An object with properties for each media type: `images`, `audio`, and `video`. Each property contains an array of the unique files of that media type that were automatically extracted from the timeline. If no files are found in the timeline for a particular media type, then the array will be empty for that type.
240
-
241
- ### Description
242
-
243
- This method is used to automatically generate lists of unique image, audio, and video files from a timeline. It is used by the `preload` plugin to generate a list of to-be-preloaded files based on the trials passed to the `trials` parameter and/or the experiment timeline passed to `jsPsych.init` (when `auto_preload` is true). It can be used in custom plugins and experiment code to generate a list of audio/image/video files, based on a timeline.
244
-
245
- This function will only return files from plugins that have used the `registerPreload` method to define the media types of their parameters, and only when the trial's parameter value is not a function. When a file path is returned to the trial parameter from a function (including by `jsPsych.timelineVariable` function), or when the file path is embedded in an HTML string, that file will not be detected by the `getAutoPreloadList` method. In these cases, the file should be preloaded manually. See [Media Preloading](../overview/media-preloading.md) for more information.
246
-
247
- ### Example
248
-
249
- ```javascript
250
- var audio_trial = {
251
- type: 'audio-keyboard-response'
252
- stimulus: 'file.mp3'
253
- }
254
-
255
- var image_trial = {
256
- type: 'image-keyboard-response'
257
- stimulus: 'file.png'
258
- }
259
-
260
- var video_trial = {
261
- type: 'video-keyboard-response'
262
- stimulus: 'file.mp4'
263
- }
264
-
265
- var timeline = [audio_trial, image_trial, video_trial];
266
-
267
- jsPsych.pluginAPI.getAutoPreloadList(timeline);
268
- ```
269
-
270
- ---
271
-
272
- ## jsPsych.pluginAPI.getKeyboardResponse
273
-
274
- ```javascript
275
- jsPsych.pluginAPI.getKeyboardResponse(parameters)
276
- ```
277
-
278
- ### Parameters
279
-
280
- The method accepts an object of parameter values (see example below). The valid keys for this object are listed in the table below.
281
-
282
- Parameter | Type | Description
283
- ----------|------|------------
284
- callback_function | function | The function to execute whenever a valid keyboard response is generated.
285
- 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.
286
- 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.
287
- audio_context | AudioContext object | The AudioContext of the audio file that is being played.
288
- audio_context_start_time | numeric | The scheduled time of the sound file in the AudioContext. This will be used as the start time.
289
- 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.
290
- 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`.
291
-
292
- ### Return value
293
-
294
- Return an object that uniquely identifies the keyboard listener. This object can be passed to `jsPsych.pluginAPI.cancelKeyboardResponse` to cancel the keyboard listener.
295
-
296
- ### Description
297
-
298
- Gets a keyboard response from the subject, recording the response time from when the function is first called until a valid response is generated.
299
-
300
- 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.
301
-
302
- 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 string representation of the response key, and `rt` contains the response time.
303
-
304
- This function uses the `.key` value of the keyboard event, which is _case sensitive_. When `case_sensitive_responses` is `false` in `jsPsych.init` (the default), this function will convert both the `valid_responses` strings and the response key to lowercase before comparing them, and it will pass the lowercase version of the response key to the `callback_function`. For example, if `valid_responses` is `['a']`, then both 'A' and 'a' will be considered valid key presses, and 'a' will be returned as the response key. When `case_sensitive_responses` is `true` in `jsPsych.init`, this function will not convert the case when comparing the `valid_responses` and response key, and it will not convert the case of the response key that is passed to the `callback_function`. For example, if `valid_responses` is `['a']`, then 'a' will be the only valid key press, and 'A' (i.e. 'a' with CapsLock on or Shift held down) will not be accepted. Also, if `valid_responses` includes multiple letter case options (e.g. `jsPsych.ALL_KEYS`), then you may need to check the response key against both letter cases when scoring etc., e.g. `if (response == 'ArrowLeft' || response =='arrowleft') ...`.
305
-
306
- ### Examples
307
-
308
- #### Get a single response from any key
309
-
310
- ```javascript
311
-
312
- var after_response = function(info){
313
- alert('You pressed key '+info.key+' after '+info.rt+'ms');
314
- }
315
-
316
- jsPsych.pluginAPI.getKeyboardResponse({
317
- callback_function:after_response,
318
- valid_responses: jsPsych.ALL_KEYS,
319
- rt_method: 'performance',
320
- persist: false
321
- });
322
- ```
323
-
324
- #### Get a responses from a key until the letter q is pressed
325
-
326
- ```javascript
327
-
328
- var after_response = function(info){
329
- alert('You pressed key '+info.key+' after '+info.rt+'ms');
330
-
331
- if(jsPsych.pluginAPI.compareKeys(info.key,'q')){ /
332
- jsPsych.pluginAPI.cancelKeyboardResponse(listener);
333
- }
334
- }
335
-
336
- var listener = jsPsych.pluginAPI.getKeyboardResponse({
337
- callback_function:after_response,
338
- valid_responses: jsPsych.ALL_KEYS,
339
- rt_method: 'performance',
340
- persist: true
341
- });
342
- ```
343
-
344
- ---
345
-
346
- ## jsPsych.pluginAPI.preloadAudio
347
-
348
- ```javascript
349
- jsPsych.pluginAPI.preloadAudio(files, callback_complete, callback_load, callback_error)
350
- ```
351
-
352
- ### Parameters
353
-
354
- Parameter | Type | Description
355
- ----------|------|------------
356
- 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).
357
- callback_complete | function | A function to execute when all the files have been loaded.
358
- callback_load | function | A function to execute after a single file has been loaded. A single parameter is passed to this function which is the file source (string) that has loaded.
359
- callback_error | function | A function to execute after a single file has produced an error. A single parameter is passed to this function which is the file source (string) that produced the error.
360
-
361
- ### Return value
362
-
363
- Returns nothing.
364
-
365
- ### Description
366
-
367
- This function is used to preload audio files. It is used by the `preload` plugin, and could be called directly to preload audio files in custom plugins or experiment. See [Media Preloading](../overview/media-preloading.md) for more information.
368
-
369
- 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).
370
-
371
- The `callback_load` and `callback_error` functions are called after each file has either loaded or produced an error, so these functions can also be used to monitor loading progress. See example below.
372
-
373
- ### Examples
374
-
375
- #### Basic use
376
-
377
- ```javascript
378
- var sounds = ['file1.mp3', 'file2.mp3', 'file3.mp3'];
379
-
380
- jsPsych.pluginAPI.preloadAudio(sounds,
381
- function(){ startExperiment(); },
382
- function(file){ console.log('file loaded: ', file); }
383
- function(file){ console.log('error loading file: ', file); }
384
- );
385
-
386
- function startExperiment(){
387
- jsPsych.init({
388
- timeline: exp
389
- });
390
- }
391
- ```
392
-
393
- #### Show progress of loading
394
-
395
- ```javascript
396
- var sounds = ['file1.mp3', 'file2.mp3', 'file3.mp3'];
397
- var n_loaded = 0;
398
-
399
- jsPsych.pluginAPI.preloadAudio(sounds, function(){ startExperiment(); }, function(file) { updateLoadedCount(file); });
400
-
401
- function updateLoadedCount(file){
402
- n_loaded++;
403
- var percentcomplete = n_loaded / sounds.length * 100;
404
-
405
- // could put something fancier here, like a progress bar
406
- // or updating text in the DOM.
407
- console.log('Loaded '+percentcomplete+'% of audio files');
408
- }
409
-
410
- function startExperiment(){
411
- jsPsych.init({
412
- timeline: exp
413
- });
414
- }
415
- ```
416
-
417
- ---
418
-
419
- ## jsPsych.pluginAPI.preloadImages
420
-
421
- ```javascript
422
- jsPsych.pluginAPI.preloadImages(images, callback_complete, callback_load, callback_error)
423
- ```
424
-
425
- ### Parameters
426
-
427
- Parameter | Type | Description
428
- ----------|------|------------
429
- 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).
430
- callback_complete | function | A function to execute when all the images have been loaded.
431
- callback_load | function | A function to execute after a single file has been loaded. A single parameter is passed to this function which is the file source (string) that has loaded.
432
- callback_error | function | A function to execute after a single file has produced an error. A single parameter is passed to this function which is the file source (string) that produced the error.
433
-
434
- ### Return value
435
-
436
- Returns nothing.
437
-
438
- ### Description
439
-
440
- This function is used to preload image files. It is used by the `preload` plugin, and could be called directly to preload image files in custom plugins or experiment code. See [Media Preloading](../overview/media-preloading.md) for more information.
441
-
442
- 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).
443
-
444
- The `callback_load` and `callback_error` functions are called after each file has either loaded or produced an error, so these functions can also be used to monitor loading progress. See example below.
445
-
446
- ### Examples
447
-
448
- #### Basic use
449
-
450
- ```javascript
451
- var images = ['img/file1.png', 'img/file2.png', 'img/file3.png'];
452
-
453
- jsPsych.pluginAPI.preloadImages(images,
454
- function(){ startExperiment(); },
455
- function(file){ console.log('file loaded: ', file); }
456
- function(file){ console.log('error loading file: ', file); }
457
- );
458
-
459
- function startExperiment(){
460
- jsPsych.init({
461
- timeline: exp
462
- });
463
- }
464
- ```
465
-
466
- #### Show progress of loading
467
-
468
- ```javascript
469
- var images = ['img/file1.png', 'img/file2.png', 'img/file3.png'];
470
- var n_loaded = 0;
471
-
472
- jsPsych.pluginAPI.preloadImages(images, function(){ startExperiment(); }, function(file) { updateLoadedCount(file); });
473
-
474
- function updateLoadedCount(file){
475
- n_loaded++;
476
- var percentcomplete = n_loaded / images.length * 100;
477
-
478
- // could put something fancier here, like a progress bar
479
- // or updating text in the DOM.
480
- console.log('Loaded '+percentcomplete+'% of images');
481
- }
482
-
483
- function startExperiment(){
484
- jsPsych.init({
485
- timeline: exp
486
- });
487
- }
488
- ```
489
-
490
- ---
491
-
492
- ## jsPsych.pluginAPI.preloadVideo
493
-
494
- ```javascript
495
- jsPsych.pluginAPI.preloadVideo(video, callback_complete, callback_load, callback_error)
496
- ```
497
-
498
- ### Parameters
499
-
500
- Parameter | Type | Description
501
- ----------|------|------------
502
- video | array | An array of video paths to load. The array can be nested (e.g., if videos are in multiple arrays to help sort by condition or task).
503
- callback_complete | function | A function to execute when all the videos have been loaded.
504
- callback_load | function | A function to execute after a single file has been loaded. A single parameter is passed to this function which is the file source (string) that has loaded.
505
- callback_error | function | A function to execute after a single file has produced an error. A single parameter is passed to this function which is the file source (string) that produced the error.
506
-
507
- ### Return value
508
-
509
- Returns nothing.
510
-
511
- ### Description
512
-
513
- This function is used to preload video files. It is used by the `preload` plugin, and could be called directly to preload video files in custom plugins or experiment code. See [Media Preloading](../overview/media-preloading.md) for more information.
514
-
515
- It is possible to run this function without specifying a callback function. However, in this case the code will continue executing while the videos are loaded. Thus, it is possible that a video would be requested before it is done preloading. The `callback_complete` function will only execute after all the videos are loaded, and can be used to control the flow of the experiment (e.g., by starting the experiment in the `callback_complete` function).
516
-
517
- The `callback_load` and `callback_error` functions are called after each file has either loaded or produced an error, so these functions can also be used to monitor loading progress. See example below.
518
-
519
- ### Examples
520
-
521
- #### Basic use
522
-
523
- ```javascript
524
- var videos = ['vid/file1.mp4', 'vid/file2.mp4', 'vid/file3.mp4'];
525
-
526
- jsPsych.pluginAPI.preloadVideo(videos,
527
- function(){ startExperiment(); },
528
- function(file){ console.log('file loaded: ', file); }
529
- function(file){ console.log('error loading file: ', file); }
530
- );
531
-
532
- function startExperiment(){
533
- jsPsych.init({
534
- timeline: exp
535
- });
536
- }
537
- ```
538
-
539
- #### Show progress of loading
540
-
541
- ```javascript
542
- var videos = ['vid/file1.mp4', 'vid/file2.mp4', 'vid/file3.mp4'];
543
- var n_loaded = 0;
544
-
545
- jsPsych.pluginAPI.preloadVideo(videos, function(){ startExperiment(); }, function(file) { updateLoadedCount(file); });
546
-
547
- function updateLoadedCount(file){
548
- n_loaded++;
549
- var percentcomplete = n_loaded / videos.length * 100;
550
-
551
- // could put something fancier here, like a progress bar
552
- // or updating text in the DOM.
553
- console.log('Loaded '+percentcomplete+'% of videos');
554
- }
555
-
556
- function startExperiment(){
557
- jsPsych.init({
558
- timeline: exp
559
- });
560
- }
561
- ```
562
-
563
- ---
564
-
565
- ## jsPsych.pluginAPI.registerPreload
566
-
567
- ```javascript
568
- jsPsych.pluginAPI.registerPreload(plugin_name, parameter, media_type)
569
- ```
570
-
571
- ### Parameters
572
-
573
- Parameter | Type | Description
574
- ----------|------|------------
575
- plugin_name | string | The name of the plugin. e.g., 'image-keyboard-response'.
576
- parameter | string | The name of the parameter that is a media file. e.g., 'stimulus'
577
- media_type | string | The type of media, either 'image', 'audio' or 'video'.
578
-
579
- ### Return value
580
-
581
- Nothing.
582
-
583
- ### Description
584
-
585
- 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.
586
-
587
- ### Example
588
-
589
- For an example, see the [image-keyboard-response](https://github.com/jspsych/jsPsych/blob/master/plugins/jspsych-image-keyboard-response.js) and [audio-keyboard-response](https://github.com/jspsych/jsPsych/blob/master/plugins/jspsych-audio-keyboard-response.js) plugins.
590
-
591
- ---
592
-
593
- ## jsPsych.pluginAPI.setTimeout
594
-
595
- ```javascript
596
- jsPsych.pluginAPI.setTimeout(callback, delay)
597
- ```
598
-
599
- ### Parameters
600
-
601
- Parameter | Type | Description
602
- ----------|------|------------
603
- callback | function | A function to execute after waiting for delay.
604
- delay | integer | Time to wait in milliseconds.
605
-
606
- ### Return value
607
-
608
- Returns the ID of the setTimeout handle.
609
-
610
- ### Description
611
-
612
- 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.
613
-
614
- ### Example
615
-
616
- ```javascript
617
- // print the time
618
- console.log(Date.now())
619
-
620
- // print the time 1s later
621
- jsPsych.pluginAPI.setTimeout(function(){
622
- console.log(Date.now())
623
- }, 1000);
624
- ```