@longsightgroup/qti3-player 0.4.0 → 0.5.4

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 (291) hide show
  1. package/README.md +146 -13
  2. package/dist/content/content-dom.d.ts +11 -0
  3. package/dist/content/content-dom.d.ts.map +1 -0
  4. package/dist/content/content-dom.js +262 -0
  5. package/dist/content/content-dom.js.map +1 -0
  6. package/dist/content/content-renderer.d.ts +17 -0
  7. package/dist/content/content-renderer.d.ts.map +1 -0
  8. package/dist/content/content-renderer.js +82 -0
  9. package/dist/content/content-renderer.js.map +1 -0
  10. package/dist/controls/remove-button.d.ts +3 -0
  11. package/dist/controls/remove-button.d.ts.map +1 -0
  12. package/dist/controls/remove-button.js +12 -0
  13. package/dist/controls/remove-button.js.map +1 -0
  14. package/dist/index.d.ts +13 -2
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +6 -0
  17. package/dist/index.js.map +1 -1
  18. package/dist/interactions/choice-interaction.d.ts +4 -0
  19. package/dist/interactions/choice-interaction.d.ts.map +1 -0
  20. package/dist/interactions/choice-interaction.js +81 -0
  21. package/dist/interactions/choice-interaction.js.map +1 -0
  22. package/dist/interactions/drawing-interaction.d.ts +6 -0
  23. package/dist/interactions/drawing-interaction.d.ts.map +1 -0
  24. package/dist/interactions/drawing-interaction.js +401 -0
  25. package/dist/interactions/drawing-interaction.js.map +1 -0
  26. package/dist/interactions/end-attempt-interaction.d.ts +4 -0
  27. package/dist/interactions/end-attempt-interaction.d.ts.map +1 -0
  28. package/dist/interactions/end-attempt-interaction.js +13 -0
  29. package/dist/interactions/end-attempt-interaction.js.map +1 -0
  30. package/dist/interactions/gap-match-interaction.d.ts +4 -0
  31. package/dist/interactions/gap-match-interaction.d.ts.map +1 -0
  32. package/dist/interactions/gap-match-interaction.js +277 -0
  33. package/dist/interactions/gap-match-interaction.js.map +1 -0
  34. package/dist/interactions/graphic-associate-interaction.d.ts +4 -0
  35. package/dist/interactions/graphic-associate-interaction.d.ts.map +1 -0
  36. package/dist/interactions/graphic-associate-interaction.js +297 -0
  37. package/dist/interactions/graphic-associate-interaction.js.map +1 -0
  38. package/dist/interactions/graphic-context.d.ts +3 -0
  39. package/dist/interactions/graphic-context.d.ts.map +1 -0
  40. package/dist/interactions/graphic-context.js +35 -0
  41. package/dist/interactions/graphic-context.js.map +1 -0
  42. package/dist/interactions/hotspot-interaction.d.ts +4 -0
  43. package/dist/interactions/hotspot-interaction.d.ts.map +1 -0
  44. package/dist/interactions/hotspot-interaction.js +68 -0
  45. package/dist/interactions/hotspot-interaction.js.map +1 -0
  46. package/dist/interactions/hottext-interaction.d.ts +3 -0
  47. package/dist/interactions/hottext-interaction.d.ts.map +1 -0
  48. package/dist/interactions/hottext-interaction.js +66 -0
  49. package/dist/interactions/hottext-interaction.js.map +1 -0
  50. package/dist/interactions/inline-choice-interaction.d.ts +4 -0
  51. package/dist/interactions/inline-choice-interaction.d.ts.map +1 -0
  52. package/dist/interactions/inline-choice-interaction.js +31 -0
  53. package/dist/interactions/inline-choice-interaction.js.map +1 -0
  54. package/dist/interactions/inline-controls.d.ts +6 -0
  55. package/dist/interactions/inline-controls.d.ts.map +1 -0
  56. package/dist/interactions/inline-controls.js +15 -0
  57. package/dist/interactions/inline-controls.js.map +1 -0
  58. package/dist/interactions/interaction-diagnostics.d.ts +7 -0
  59. package/dist/interactions/interaction-diagnostics.d.ts.map +1 -0
  60. package/dist/interactions/interaction-diagnostics.js +137 -0
  61. package/dist/interactions/interaction-diagnostics.js.map +1 -0
  62. package/dist/interactions/interaction-dispatch.d.ts +2 -0
  63. package/dist/interactions/interaction-dispatch.d.ts.map +1 -0
  64. package/dist/interactions/interaction-dispatch.js +2 -0
  65. package/dist/interactions/interaction-dispatch.js.map +1 -0
  66. package/dist/interactions/interaction-label.d.ts +4 -0
  67. package/dist/interactions/interaction-label.d.ts.map +1 -0
  68. package/dist/interactions/interaction-label.js +8 -0
  69. package/dist/interactions/interaction-label.js.map +1 -0
  70. package/dist/interactions/interaction-registry.d.ts +24 -0
  71. package/dist/interactions/interaction-registry.d.ts.map +1 -0
  72. package/dist/interactions/interaction-registry.js +138 -0
  73. package/dist/interactions/interaction-registry.js.map +1 -0
  74. package/dist/interactions/match-interaction.d.ts +4 -0
  75. package/dist/interactions/match-interaction.d.ts.map +1 -0
  76. package/dist/interactions/match-interaction.js +188 -0
  77. package/dist/interactions/match-interaction.js.map +1 -0
  78. package/dist/interactions/object-asset.d.ts +8 -0
  79. package/dist/interactions/object-asset.d.ts.map +1 -0
  80. package/dist/interactions/object-asset.js +182 -0
  81. package/dist/interactions/object-asset.js.map +1 -0
  82. package/dist/interactions/pair-interaction.d.ts +4 -0
  83. package/dist/interactions/pair-interaction.d.ts.map +1 -0
  84. package/dist/interactions/pair-interaction.js +125 -0
  85. package/dist/interactions/pair-interaction.js.map +1 -0
  86. package/dist/interactions/point-value.d.ts +16 -0
  87. package/dist/interactions/point-value.d.ts.map +1 -0
  88. package/dist/interactions/point-value.js +37 -0
  89. package/dist/interactions/point-value.js.map +1 -0
  90. package/dist/interactions/portable-custom-interaction.d.ts +16 -0
  91. package/dist/interactions/portable-custom-interaction.d.ts.map +1 -0
  92. package/dist/interactions/portable-custom-interaction.js +97 -0
  93. package/dist/interactions/portable-custom-interaction.js.map +1 -0
  94. package/dist/interactions/position-object-interaction.d.ts +4 -0
  95. package/dist/interactions/position-object-interaction.d.ts.map +1 -0
  96. package/dist/interactions/position-object-interaction.js +177 -0
  97. package/dist/interactions/position-object-interaction.js.map +1 -0
  98. package/dist/interactions/routing.d.ts +5 -0
  99. package/dist/interactions/routing.d.ts.map +1 -0
  100. package/dist/interactions/routing.js +24 -0
  101. package/dist/interactions/routing.js.map +1 -0
  102. package/dist/interactions/select-point-interaction.d.ts +4 -0
  103. package/dist/interactions/select-point-interaction.d.ts.map +1 -0
  104. package/dist/interactions/select-point-interaction.js +166 -0
  105. package/dist/interactions/select-point-interaction.js.map +1 -0
  106. package/dist/interactions/shared.d.ts +12 -0
  107. package/dist/interactions/shared.d.ts.map +1 -0
  108. package/dist/interactions/shared.js +65 -0
  109. package/dist/interactions/shared.js.map +1 -0
  110. package/dist/interactions/text-interaction.d.ts +6 -0
  111. package/dist/interactions/text-interaction.d.ts.map +1 -0
  112. package/dist/interactions/text-interaction.js +110 -0
  113. package/dist/interactions/text-interaction.js.map +1 -0
  114. package/dist/interactions/unsupported-interaction.d.ts +4 -0
  115. package/dist/interactions/unsupported-interaction.d.ts.map +1 -0
  116. package/dist/interactions/unsupported-interaction.js +23 -0
  117. package/dist/interactions/unsupported-interaction.js.map +1 -0
  118. package/dist/interactions/upload-interaction.d.ts +4 -0
  119. package/dist/interactions/upload-interaction.d.ts.map +1 -0
  120. package/dist/interactions/upload-interaction.js +10 -0
  121. package/dist/interactions/upload-interaction.js.map +1 -0
  122. package/dist/player/attempt-availability.d.ts +6 -0
  123. package/dist/player/attempt-availability.d.ts.map +1 -0
  124. package/dist/player/attempt-availability.js +27 -0
  125. package/dist/player/attempt-availability.js.map +1 -0
  126. package/dist/player/content-state.d.ts +19 -0
  127. package/dist/player/content-state.d.ts.map +1 -0
  128. package/dist/player/content-state.js +39 -0
  129. package/dist/player/content-state.js.map +1 -0
  130. package/dist/player/dynamic-body.d.ts +7 -0
  131. package/dist/player/dynamic-body.d.ts.map +1 -0
  132. package/dist/player/dynamic-body.js +28 -0
  133. package/dist/player/dynamic-body.js.map +1 -0
  134. package/dist/player/feedback-panel.d.ts +3 -0
  135. package/dist/player/feedback-panel.d.ts.map +1 -0
  136. package/dist/player/feedback-panel.js +14 -0
  137. package/dist/player/feedback-panel.js.map +1 -0
  138. package/dist/player/fetch-xml.d.ts +2 -0
  139. package/dist/player/fetch-xml.d.ts.map +1 -0
  140. package/dist/player/fetch-xml.js +10 -0
  141. package/dist/player/fetch-xml.js.map +1 -0
  142. package/dist/player/interaction-render.d.ts +14 -0
  143. package/dist/player/interaction-render.d.ts.map +1 -0
  144. package/dist/player/interaction-render.js +51 -0
  145. package/dist/player/interaction-render.js.map +1 -0
  146. package/dist/player/render-shell.d.ts +8 -0
  147. package/dist/player/render-shell.d.ts.map +1 -0
  148. package/dist/player/render-shell.js +37 -0
  149. package/dist/player/render-shell.js.map +1 -0
  150. package/dist/player/resolve-assets.d.ts +3 -0
  151. package/dist/player/resolve-assets.d.ts.map +1 -0
  152. package/dist/player/resolve-assets.js +12 -0
  153. package/dist/player/resolve-assets.js.map +1 -0
  154. package/dist/player/validation-messages.d.ts +17 -0
  155. package/dist/player/validation-messages.d.ts.map +1 -0
  156. package/dist/player/validation-messages.js +33 -0
  157. package/dist/player/validation-messages.js.map +1 -0
  158. package/dist/player-adapter.d.ts +62 -0
  159. package/dist/player-adapter.d.ts.map +1 -0
  160. package/dist/player-adapter.js +119 -0
  161. package/dist/player-adapter.js.map +1 -0
  162. package/dist/player-dev.d.ts +4 -0
  163. package/dist/player-dev.d.ts.map +1 -0
  164. package/dist/player-dev.js +14 -0
  165. package/dist/player-dev.js.map +1 -0
  166. package/dist/player-element.d.ts +14 -1
  167. package/dist/player-element.d.ts.map +1 -1
  168. package/dist/player-element.js +57 -5
  169. package/dist/player-element.js.map +1 -1
  170. package/dist/player-locale.d.ts +8 -3
  171. package/dist/player-locale.d.ts.map +1 -1
  172. package/dist/player-locale.js +16 -175
  173. package/dist/player-locale.js.map +1 -1
  174. package/dist/player-message-catalog-default.d.ts +4 -0
  175. package/dist/player-message-catalog-default.d.ts.map +1 -0
  176. package/dist/player-message-catalog-default.js +118 -0
  177. package/dist/player-message-catalog-default.js.map +1 -0
  178. package/dist/player-message-catalog-validate.d.ts +31 -0
  179. package/dist/player-message-catalog-validate.d.ts.map +1 -0
  180. package/dist/player-message-catalog-validate.js +327 -0
  181. package/dist/player-message-catalog-validate.js.map +1 -0
  182. package/dist/player-message-catalog.d.ts +18 -0
  183. package/dist/player-message-catalog.d.ts.map +1 -0
  184. package/dist/player-message-catalog.js +40 -0
  185. package/dist/player-message-catalog.js.map +1 -0
  186. package/dist/player-message-keys.d.ts +6 -0
  187. package/dist/player-message-keys.d.ts.map +1 -0
  188. package/dist/player-message-keys.js +7 -0
  189. package/dist/player-message-keys.js.map +1 -0
  190. package/dist/player-message-manifest.d.ts +272 -0
  191. package/dist/player-message-manifest.d.ts.map +1 -0
  192. package/dist/player-message-manifest.js +83 -0
  193. package/dist/player-message-manifest.js.map +1 -0
  194. package/dist/player-message-overrides.d.ts +3 -0
  195. package/dist/player-message-overrides.d.ts.map +1 -0
  196. package/dist/player-message-overrides.js +28 -0
  197. package/dist/player-message-overrides.js.map +1 -0
  198. package/dist/player-message-resolver.d.ts +31 -0
  199. package/dist/player-message-resolver.d.ts.map +1 -0
  200. package/dist/player-message-resolver.js +110 -0
  201. package/dist/player-message-resolver.js.map +1 -0
  202. package/dist/player-messages.d.ts +0 -38
  203. package/dist/player-messages.d.ts.map +1 -1
  204. package/dist/player-types.d.ts +12 -2
  205. package/dist/player-types.d.ts.map +1 -1
  206. package/dist/reorder/a11y.d.ts +7 -0
  207. package/dist/reorder/a11y.d.ts.map +1 -0
  208. package/dist/reorder/a11y.js +34 -0
  209. package/dist/reorder/a11y.js.map +1 -0
  210. package/dist/reorder/graphic-order-interaction.d.ts +4 -0
  211. package/dist/reorder/graphic-order-interaction.d.ts.map +1 -0
  212. package/dist/reorder/graphic-order-interaction.js +205 -0
  213. package/dist/reorder/graphic-order-interaction.js.map +1 -0
  214. package/dist/reorder/list-controls.d.ts +22 -0
  215. package/dist/reorder/list-controls.d.ts.map +1 -0
  216. package/dist/reorder/list-controls.js +75 -0
  217. package/dist/reorder/list-controls.js.map +1 -0
  218. package/dist/reorder/order-interaction.d.ts +4 -0
  219. package/dist/reorder/order-interaction.d.ts.map +1 -0
  220. package/dist/reorder/order-interaction.js +54 -0
  221. package/dist/reorder/order-interaction.js.map +1 -0
  222. package/dist/styles/base-styles.d.ts +2 -0
  223. package/dist/styles/base-styles.d.ts.map +1 -0
  224. package/dist/styles/base-styles.js +133 -0
  225. package/dist/styles/base-styles.js.map +1 -0
  226. package/dist/styles/choice-hottext-styles.d.ts +2 -0
  227. package/dist/styles/choice-hottext-styles.d.ts.map +1 -0
  228. package/dist/styles/choice-hottext-styles.js +76 -0
  229. package/dist/styles/choice-hottext-styles.js.map +1 -0
  230. package/dist/styles/control-styles.d.ts +2 -0
  231. package/dist/styles/control-styles.d.ts.map +1 -0
  232. package/dist/styles/control-styles.js +114 -0
  233. package/dist/styles/control-styles.js.map +1 -0
  234. package/dist/styles/drawing-styles.d.ts +2 -0
  235. package/dist/styles/drawing-styles.d.ts.map +1 -0
  236. package/dist/styles/drawing-styles.js +30 -0
  237. package/dist/styles/drawing-styles.js.map +1 -0
  238. package/dist/styles/gap-match-styles.d.ts +2 -0
  239. package/dist/styles/gap-match-styles.d.ts.map +1 -0
  240. package/dist/styles/gap-match-styles.js +33 -0
  241. package/dist/styles/gap-match-styles.js.map +1 -0
  242. package/dist/styles/graphic-styles.d.ts +2 -0
  243. package/dist/styles/graphic-styles.d.ts.map +1 -0
  244. package/dist/styles/graphic-styles.js +289 -0
  245. package/dist/styles/graphic-styles.js.map +1 -0
  246. package/dist/styles/match-pair-styles.d.ts +2 -0
  247. package/dist/styles/match-pair-styles.d.ts.map +1 -0
  248. package/dist/styles/match-pair-styles.js +62 -0
  249. package/dist/styles/match-pair-styles.js.map +1 -0
  250. package/dist/styles/text-slider-styles.d.ts +2 -0
  251. package/dist/styles/text-slider-styles.d.ts.map +1 -0
  252. package/dist/styles/text-slider-styles.js +35 -0
  253. package/dist/styles/text-slider-styles.js.map +1 -0
  254. package/package.json +8 -8
  255. package/src/controls/remove-button.ts +8 -5
  256. package/src/index.ts +61 -5
  257. package/src/interactions/choice-interaction.ts +6 -2
  258. package/src/interactions/drawing-interaction.ts +14 -9
  259. package/src/interactions/end-attempt-interaction.ts +3 -3
  260. package/src/interactions/gap-match-interaction.ts +32 -13
  261. package/src/interactions/graphic-associate-interaction.ts +15 -10
  262. package/src/interactions/hotspot-interaction.ts +10 -6
  263. package/src/interactions/inline-choice-interaction.ts +4 -4
  264. package/src/interactions/interaction-registry.ts +12 -12
  265. package/src/interactions/match-interaction.ts +9 -6
  266. package/src/interactions/pair-interaction.ts +22 -14
  267. package/src/interactions/position-object-interaction.ts +22 -13
  268. package/src/interactions/select-point-interaction.ts +25 -13
  269. package/src/interactions/shared.ts +21 -4
  270. package/src/interactions/text-interaction.ts +14 -4
  271. package/src/interactions/upload-interaction.ts +6 -3
  272. package/src/player/interaction-render.ts +4 -4
  273. package/src/player-adapter.ts +253 -0
  274. package/src/player-dev.ts +14 -0
  275. package/src/player-element.ts +78 -8
  276. package/src/player-locale.ts +28 -199
  277. package/src/player-message-catalog-default.ts +119 -0
  278. package/src/player-message-catalog-validate.ts +425 -0
  279. package/src/player-message-catalog.ts +72 -0
  280. package/src/player-message-keys.ts +12 -0
  281. package/src/player-message-manifest.ts +103 -0
  282. package/src/player-message-overrides.ts +38 -0
  283. package/src/player-message-resolver.ts +205 -0
  284. package/src/player-messages.ts +0 -30
  285. package/src/player-types.ts +15 -4
  286. package/src/reorder/a11y.ts +22 -7
  287. package/src/reorder/graphic-order-interaction.ts +23 -16
  288. package/src/reorder/list-controls.ts +8 -6
  289. package/src/reorder/order-interaction.ts +7 -5
  290. package/src/styles/base-styles.ts +20 -5
  291. package/src/styles/graphic-styles.ts +0 -6
@@ -1,5 +1,4 @@
1
1
  import type { QtiAssessmentItem, QtiAttemptStateV1, QtiAttemptStatus, QtiDiagnostic, QtiInteraction, QtiPortableCustomDefinition, QtiPortableCustomStateValue, QtiScoreResult, QtiValue } from "@longsightgroup/qti3-core";
2
- import type { QtiPlayerMessages } from "./player-messages.js";
3
2
  export interface QtiPlayerSessionControl {
4
3
  validateResponses?: boolean | undefined;
5
4
  showFeedback?: boolean | undefined;
@@ -16,7 +15,6 @@ export interface QtiPlayerLoadOptions {
16
15
  fetchXml?: QtiPlayerFetchXml | undefined;
17
16
  resolveAsset?: QtiPlayerResolveAsset | undefined;
18
17
  }
19
- export type QtiPlayerMessageOverrides = Partial<QtiPlayerMessages>;
20
18
  export interface QtiReadyEventDetail {
21
19
  item: QtiAssessmentItem;
22
20
  }
@@ -53,6 +51,15 @@ export interface QtiSuspendEventDetail {
53
51
  export interface QtiEndAttemptEventDetail {
54
52
  state: QtiAttemptStateV1;
55
53
  }
54
+ export interface QtiDiagnosticsEventDetail {
55
+ diagnostics: QtiDiagnostic[];
56
+ }
57
+ export interface QtiResetEventDetail {
58
+ state?: QtiAttemptStateV1 | undefined;
59
+ }
60
+ export interface QtiRestoreEventDetail {
61
+ state?: QtiAttemptStateV1 | undefined;
62
+ }
56
63
  export interface QtiAssessmentItemPlayerEventDetailMap {
57
64
  "qti-ready": QtiReadyEventDetail;
58
65
  "qti-statechange": QtiStateChangeEventDetail;
@@ -62,6 +69,9 @@ export interface QtiAssessmentItemPlayerEventDetailMap {
62
69
  "qti-validation": QtiValidationEventDetail;
63
70
  "qti-suspend": QtiSuspendEventDetail;
64
71
  "qti-endattempt": QtiEndAttemptEventDetail;
72
+ "qti-diagnostics": QtiDiagnosticsEventDetail;
73
+ "qti-reset": QtiResetEventDetail;
74
+ "qti-restore": QtiRestoreEventDetail;
65
75
  }
66
76
  export type QtiAssessmentItemPlayerEventName = keyof QtiAssessmentItemPlayerEventDetailMap;
67
77
  export type QtiAssessmentItemPlayerEvent<T extends QtiAssessmentItemPlayerEventName = QtiAssessmentItemPlayerEventName> = CustomEvent<QtiAssessmentItemPlayerEventDetailMap[T]>;
@@ -1 +1 @@
1
- {"version":3,"file":"player-types.d.ts","sourceRoot":"","sources":["../src/player-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,2BAA2B,EAC3B,2BAA2B,EAC3B,cAAc,EACd,QAAQ,EACT,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,MAAM,WAAW,uBAAuB;IACtC,iBAAiB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACxC,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACpC;AAED,MAAM,WAAW,sBAAsB;IACrC,iBAAiB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACzC;AAED,MAAM,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AACjE,MAAM,MAAM,qBAAqB,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;AAE5D,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACtC,MAAM,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IACtC,cAAc,CAAC,EAAE,uBAAuB,GAAG,SAAS,CAAC;IACrD,QAAQ,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACzC,YAAY,CAAC,EAAE,qBAAqB,GAAG,SAAS,CAAC;CAClD;AAED,MAAM,MAAM,yBAAyB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAEnE,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,iBAAiB,CAAC;CACzB;AAED,MAAM,WAAW,yBAAyB;IACxC;;;;;OAKG;IACH,KAAK,EAAE,iBAAiB,CAAC;CAC1B;AAED,MAAM,WAAW,4BAA4B;IAC3C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,QAAQ,CAAC;CACjB;AAED,MAAM,WAAW,iCAAiC;IAChD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,cAAc,CAAC;IAC5B,UAAU,EAAE,2BAA2B,CAAC;IACxC,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,QAAQ,CAAC;IAChB,KAAK,CAAC,EAAE,2BAA2B,GAAG,SAAS,CAAC;CACjD;AAED,MAAM,MAAM,mBAAmB,GAAG,cAAc,CAAC;AAEjD,MAAM,WAAW,wBAAwB;IACvC,qFAAqF;IACrF,kBAAkB,EAAE,aAAa,EAAE,CAAC;IACpC,KAAK,EAAE,iBAAiB,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,iBAAiB,CAAC;CAC1B;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,iBAAiB,CAAC;CAC1B;AAED,MAAM,WAAW,qCAAqC;IACpD,WAAW,EAAE,mBAAmB,CAAC;IACjC,iBAAiB,EAAE,yBAAyB,CAAC;IAC7C,oBAAoB,EAAE,4BAA4B,CAAC;IACnD,2BAA2B,EAAE,iCAAiC,CAAC;IAC/D,WAAW,EAAE,mBAAmB,CAAC;IACjC,gBAAgB,EAAE,wBAAwB,CAAC;IAC3C,aAAa,EAAE,qBAAqB,CAAC;IACrC,gBAAgB,EAAE,wBAAwB,CAAC;CAC5C;AAED,MAAM,MAAM,gCAAgC,GAAG,MAAM,qCAAqC,CAAC;AAE3F,MAAM,MAAM,4BAA4B,CACtC,CAAC,SAAS,gCAAgC,GAAG,gCAAgC,IAC3E,WAAW,CAAC,qCAAqC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE1D,MAAM,MAAM,qCAAqC,GAAG;KACjD,CAAC,IAAI,gCAAgC,GAAG,WAAW,CAAC,qCAAqC,CAAC,CAAC,CAAC,CAAC;CAC/F,CAAC"}
1
+ {"version":3,"file":"player-types.d.ts","sourceRoot":"","sources":["../src/player-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { PlayerMessageResolver } from "../player-message-resolver.js";
2
+ export declare function createSelectionSummary(): HTMLParagraphElement;
3
+ export declare function orderedItemAccessibleName(messages: PlayerMessageResolver, label: string, index: number, total: number): string;
4
+ export declare function announceOrderedItemMove(summary: HTMLElement, messages: PlayerMessageResolver, label: string, to: number, total: number, from?: number): void;
5
+ export declare function announceOrderedSelectionCount(summary: HTMLElement, messages: PlayerMessageResolver, count: number): void;
6
+ export declare function focusReorderControl(container: ParentNode, identifier: string): void;
7
+ //# sourceMappingURL=a11y.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"a11y.d.ts","sourceRoot":"","sources":["../../src/reorder/a11y.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAE3E,wBAAgB,sBAAsB,IAAI,oBAAoB,CAK7D;AAED,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,qBAAqB,EAC/B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ,MAAM,CAER;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,qBAAqB,EAC/B,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,MAAM,GACZ,IAAI,CAaN;AAED,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,qBAAqB,EAC/B,KAAK,EAAE,MAAM,GACZ,IAAI,CAKN;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAEnF"}
@@ -0,0 +1,34 @@
1
+ import { choiceSelector } from "../interaction-support.js";
2
+ export function createSelectionSummary() {
3
+ const summary = document.createElement("p");
4
+ summary.className = "qti3-selection-summary";
5
+ summary.setAttribute("aria-live", "polite");
6
+ return summary;
7
+ }
8
+ export function orderedItemAccessibleName(messages, label, index, total) {
9
+ return messages.message("orderedItemAtPosition", { label, position: index + 1, total });
10
+ }
11
+ export function announceOrderedItemMove(summary, messages, label, to, total, from) {
12
+ if (from !== undefined && Math.abs(to - from) === 1) {
13
+ summary.textContent = messages.message("orderedItemMovedOneStep", {
14
+ label,
15
+ direction: to < from ? "up" : "down",
16
+ });
17
+ return;
18
+ }
19
+ summary.textContent = messages.message("orderedItemMovedToPosition", {
20
+ label,
21
+ position: to + 1,
22
+ total,
23
+ });
24
+ }
25
+ export function announceOrderedSelectionCount(summary, messages, count) {
26
+ summary.textContent =
27
+ count > 0
28
+ ? messages.message("graphicOrderRegionsSelected", { count })
29
+ : messages.message("graphicOrderNoRegionsSelected");
30
+ }
31
+ export function focusReorderControl(container, identifier) {
32
+ container.querySelector(`button${choiceSelector(identifier)}`)?.focus();
33
+ }
34
+ //# sourceMappingURL=a11y.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"a11y.js","sourceRoot":"","sources":["../../src/reorder/a11y.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAG3D,MAAM,UAAU,sBAAsB;IACpC,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAC5C,OAAO,CAAC,SAAS,GAAG,wBAAwB,CAAC;IAC7C,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC5C,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,QAA+B,EAC/B,KAAa,EACb,KAAa,EACb,KAAa;IAEb,OAAO,QAAQ,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAC1F,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,OAAoB,EACpB,QAA+B,EAC/B,KAAa,EACb,EAAU,EACV,KAAa,EACb,IAAa;IAEb,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACpD,OAAO,CAAC,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,yBAAyB,EAAE;YAChE,KAAK;YACL,SAAS,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM;SACrC,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IACD,OAAO,CAAC,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,4BAA4B,EAAE;QACnE,KAAK;QACL,QAAQ,EAAE,EAAE,GAAG,CAAC;QAChB,KAAK;KACN,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,OAAoB,EACpB,QAA+B,EAC/B,KAAa;IAEb,OAAO,CAAC,WAAW;QACjB,KAAK,GAAG,CAAC;YACP,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,6BAA6B,EAAE,EAAE,KAAK,EAAE,CAAC;YAC5D,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,SAAqB,EAAE,UAAkB;IAC3E,SAAS,CAAC,aAAa,CAAoB,SAAS,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;AAC7F,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { QtiInteraction, QtiValue } from "@longsightgroup/qti3-core";
2
+ import type { PlayerMessageResolver } from "../player-message-resolver.js";
3
+ export declare function renderGraphicOrderResponse(interaction: QtiInteraction, update: (value: QtiValue) => void, currentValue: QtiValue, messages: PlayerMessageResolver): HTMLElement;
4
+ //# sourceMappingURL=graphic-order-interaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphic-order-interaction.d.ts","sourceRoot":"","sources":["../../src/reorder/graphic-order-interaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,cAAc,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAkBrF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAS3E,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,cAAc,EAC3B,MAAM,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,EACjC,YAAY,EAAE,QAAQ,EACtB,QAAQ,EAAE,qBAAqB,GAC9B,WAAW,CA0Ob"}
@@ -0,0 +1,205 @@
1
+ import { removeButton } from "../controls/remove-button.js";
2
+ import { applyGraphicSurfaceLayout, appendGraphicObjectImage, choiceSelector, hotspotAccessibleLabel, hotspotCenter, hotspotDisplayLabel, interactionChoices, missingChoicesMessage, objectHeight, objectWidth, placeHotspotButton, responseGroup, valueToStrings, } from "../interaction-support.js";
3
+ import { movementButton } from "../movement.js";
4
+ import { announceOrderedItemMove, announceOrderedSelectionCount, createSelectionSummary, focusReorderControl, orderedItemAccessibleName, } from "./a11y.js";
5
+ export function renderGraphicOrderResponse(interaction, update, currentValue, messages) {
6
+ const group = responseGroup();
7
+ const width = objectWidth(interaction);
8
+ const height = objectHeight(interaction);
9
+ const choices = interactionChoices(interaction).filter((choice) => choice.role === "hotspot");
10
+ if (choices.length === 0) {
11
+ group.append(missingChoicesMessage(interaction));
12
+ return group;
13
+ }
14
+ const orderedIdentifiers = valueToStrings(currentValue).filter((identifier) => choices.some((choice) => choice.identifier === identifier));
15
+ const surface = document.createElement("div");
16
+ applyGraphicSurfaceLayout(surface, width, height, "qti3-graphic-order-surface");
17
+ surface.role = "group";
18
+ surface.setAttribute("aria-label", messages.message("interactionHotspots", { type: interaction.type }));
19
+ const object = interaction.object;
20
+ if (object) {
21
+ appendGraphicObjectImage(surface, object, object.text || messages.message("interactionImageAlt", { type: interaction.type }));
22
+ }
23
+ const sequenceLines = document.createElementNS("http://www.w3.org/2000/svg", "svg");
24
+ sequenceLines.classList.add("qti3-graphic-sequence-lines");
25
+ sequenceLines.setAttribute("viewBox", `0 0 ${width} ${height}`);
26
+ sequenceLines.setAttribute("aria-hidden", "true");
27
+ const markerId = `qti3-graphic-order-marker-${(interaction.responseIdentifier ?? interaction.type).replace(/[^a-zA-Z0-9_-]/g, "-")}`;
28
+ const defs = document.createElementNS("http://www.w3.org/2000/svg", "defs");
29
+ const marker = document.createElementNS("http://www.w3.org/2000/svg", "marker");
30
+ marker.setAttribute("id", markerId);
31
+ marker.setAttribute("viewBox", "0 0 10 10");
32
+ marker.setAttribute("refX", "8");
33
+ marker.setAttribute("refY", "5");
34
+ marker.setAttribute("markerWidth", "5");
35
+ marker.setAttribute("markerHeight", "5");
36
+ marker.setAttribute("orient", "auto-start-reverse");
37
+ const arrow = document.createElementNS("http://www.w3.org/2000/svg", "path");
38
+ arrow.setAttribute("d", "M 0 0 L 10 5 L 0 10 z");
39
+ marker.append(arrow);
40
+ defs.append(marker);
41
+ sequenceLines.append(defs);
42
+ surface.append(sequenceLines);
43
+ const summary = createSelectionSummary();
44
+ const list = document.createElement("ol");
45
+ list.className = "qti3-graphic-order-list";
46
+ list.setAttribute("aria-label", messages.message("interactionSelectedOrderList", { type: interaction.type }));
47
+ const orderedChoices = () => orderedIdentifiers
48
+ .map((identifier) => choices.find((choice) => choice.identifier === identifier))
49
+ .filter((choice) => Boolean(choice));
50
+ const commit = () => update([...orderedIdentifiers]);
51
+ const updateSelectionCountSummary = () => {
52
+ announceOrderedSelectionCount(summary, messages, orderedIdentifiers.length);
53
+ };
54
+ const focusHotspot = (identifier) => {
55
+ surface
56
+ .querySelector(`.qti3-hotspot-button${choiceSelector(identifier)}`)
57
+ ?.focus();
58
+ };
59
+ const focusRelativeHotspot = (choice, delta) => {
60
+ const index = choices.findIndex((entry) => entry.identifier === choice.identifier);
61
+ const next = choices[(index + delta + choices.length) % choices.length];
62
+ if (next)
63
+ focusHotspot(next.identifier);
64
+ };
65
+ const chooseHotspot = (choice) => {
66
+ const existingIndex = orderedIdentifiers.indexOf(choice.identifier);
67
+ if (existingIndex >= 0)
68
+ orderedIdentifiers.splice(existingIndex, 1);
69
+ orderedIdentifiers.push(choice.identifier);
70
+ renderState();
71
+ updateSelectionCountSummary();
72
+ commit();
73
+ focusHotspot(choice.identifier);
74
+ };
75
+ const removeHotspot = (identifier) => {
76
+ const index = orderedIdentifiers.indexOf(identifier);
77
+ if (index < 0)
78
+ return;
79
+ orderedIdentifiers.splice(index, 1);
80
+ renderState();
81
+ updateSelectionCountSummary();
82
+ commit();
83
+ focusHotspot(identifier);
84
+ };
85
+ const moveHotspot = (identifier, delta) => {
86
+ const index = orderedIdentifiers.indexOf(identifier);
87
+ const targetIndex = index + delta;
88
+ if (index < 0 || targetIndex < 0 || targetIndex >= orderedIdentifiers.length)
89
+ return;
90
+ const choice = choices.find((entry) => entry.identifier === identifier);
91
+ const choiceLabel = choice ? hotspotDisplayLabel(choice, choices) : identifier;
92
+ const [entry] = orderedIdentifiers.splice(index, 1);
93
+ if (!entry)
94
+ return;
95
+ orderedIdentifiers.splice(targetIndex, 0, entry);
96
+ renderState();
97
+ announceOrderedItemMove(summary, messages, choiceLabel, targetIndex, orderedIdentifiers.length, index);
98
+ commit();
99
+ focusReorderControl(list, identifier);
100
+ };
101
+ const renderState = () => {
102
+ for (const line of sequenceLines.querySelectorAll("line"))
103
+ line.remove();
104
+ const currentChoices = orderedChoices();
105
+ for (let index = 0; index < currentChoices.length - 1; index += 1) {
106
+ const current = currentChoices[index];
107
+ const next = currentChoices[index + 1];
108
+ if (!current || !next)
109
+ continue;
110
+ const start = hotspotCenter(current, width, height);
111
+ const end = hotspotCenter(next, width, height);
112
+ const line = document.createElementNS("http://www.w3.org/2000/svg", "line");
113
+ line.setAttribute("x1", String(start.x));
114
+ line.setAttribute("y1", String(start.y));
115
+ line.setAttribute("x2", String(end.x));
116
+ line.setAttribute("y2", String(end.y));
117
+ line.setAttribute("marker-end", `url(#${markerId})`);
118
+ sequenceLines.append(line);
119
+ }
120
+ for (const button of surface.querySelectorAll(".qti3-hotspot-button")) {
121
+ const identifier = button.dataset.choiceIdentifier ?? "";
122
+ const index = orderedIdentifiers.indexOf(identifier);
123
+ const isSelected = index >= 0;
124
+ button.dataset.selected = isSelected ? "true" : "false";
125
+ button.setAttribute("aria-pressed", isSelected ? "true" : "false");
126
+ button.dataset.order = isSelected ? String(index + 1) : "";
127
+ const badge = button.querySelector(".qti3-graphic-order-number");
128
+ if (badge)
129
+ badge.textContent = isSelected ? String(index + 1) : "";
130
+ }
131
+ list.replaceChildren(...currentChoices.map((choice, index) => {
132
+ const item = document.createElement("li");
133
+ item.className = "qti3-graphic-order-item";
134
+ item.dataset.choiceIdentifier = choice.identifier;
135
+ const choiceLabel = hotspotDisplayLabel(choice, choices);
136
+ const label = document.createElement("button");
137
+ label.type = "button";
138
+ label.className = "qti3-token";
139
+ label.dataset.choiceIdentifier = choice.identifier;
140
+ label.textContent = `${index + 1}. ${choiceLabel}`;
141
+ label.setAttribute("aria-label", orderedItemAccessibleName(messages, choiceLabel, index, currentChoices.length));
142
+ label.addEventListener("click", () => focusHotspot(choice.identifier));
143
+ label.addEventListener("keydown", (event) => {
144
+ if (event.key === "ArrowUp" || event.key === "ArrowLeft") {
145
+ event.preventDefault();
146
+ moveHotspot(choice.identifier, -1);
147
+ }
148
+ else if (event.key === "ArrowDown" || event.key === "ArrowRight") {
149
+ event.preventDefault();
150
+ moveHotspot(choice.identifier, 1);
151
+ }
152
+ else if (event.key === "Delete" || event.key === "Backspace") {
153
+ event.preventDefault();
154
+ removeHotspot(choice.identifier);
155
+ }
156
+ });
157
+ const up = movementButton("up", messages.message("moveChoice", { label: choiceLabel, direction: "up" }), () => moveHotspot(choice.identifier, -1));
158
+ up.disabled = index === 0;
159
+ const down = movementButton("down", messages.message("moveChoice", { label: choiceLabel, direction: "down" }), () => moveHotspot(choice.identifier, 1));
160
+ down.disabled = index === currentChoices.length - 1;
161
+ const remove = removeButton(choiceLabel, messages);
162
+ remove.addEventListener("click", () => removeHotspot(choice.identifier));
163
+ item.append(label, up, down, remove);
164
+ return item;
165
+ }));
166
+ };
167
+ for (const [index, choice] of choices.entries()) {
168
+ const button = document.createElement("button");
169
+ button.type = "button";
170
+ button.className = "qti3-hotspot-button qti3-graphic-order-hotspot";
171
+ button.dataset.choiceIdentifier = choice.identifier;
172
+ button.title = hotspotAccessibleLabel(choice, index);
173
+ button.setAttribute("aria-label", hotspotAccessibleLabel(choice, index));
174
+ button.setAttribute("aria-pressed", "false");
175
+ placeHotspotButton(button, choice, width, height);
176
+ const text = document.createElement("span");
177
+ text.className = "qti3-hotspot-label";
178
+ text.textContent = hotspotDisplayLabel(choice, choices);
179
+ const order = document.createElement("span");
180
+ order.className = "qti3-graphic-order-number";
181
+ order.setAttribute("aria-hidden", "true");
182
+ button.append(text, order);
183
+ button.addEventListener("click", () => chooseHotspot(choice));
184
+ button.addEventListener("keydown", (event) => {
185
+ if (event.key === "ArrowRight" || event.key === "ArrowDown") {
186
+ event.preventDefault();
187
+ focusRelativeHotspot(choice, 1);
188
+ }
189
+ else if (event.key === "ArrowLeft" || event.key === "ArrowUp") {
190
+ event.preventDefault();
191
+ focusRelativeHotspot(choice, -1);
192
+ }
193
+ else if (event.key === "Delete" || event.key === "Backspace") {
194
+ event.preventDefault();
195
+ removeHotspot(choice.identifier);
196
+ }
197
+ });
198
+ surface.append(button);
199
+ }
200
+ renderState();
201
+ updateSelectionCountSummary();
202
+ group.append(surface, list, summary);
203
+ return group;
204
+ }
205
+ //# sourceMappingURL=graphic-order-interaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphic-order-interaction.js","sourceRoot":"","sources":["../../src/reorder/graphic-order-interaction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { PlayerMessageResolver } from "../player-message-resolver.js";
2
+ export interface ReorderHandleOptions {
3
+ identifier: string;
4
+ label: string;
5
+ index: number;
6
+ total: number;
7
+ handleClassName: string;
8
+ visibleText: string;
9
+ messages: PlayerMessageResolver;
10
+ onMoveBy: (delta: number) => void;
11
+ }
12
+ export declare function createReorderHandleControls(options: ReorderHandleOptions): {
13
+ handle: HTMLButtonElement;
14
+ up: HTMLButtonElement;
15
+ down: HTMLButtonElement;
16
+ };
17
+ export interface OrderDragState {
18
+ draggedIdentifier?: string;
19
+ pointerDraggedIdentifier?: string;
20
+ }
21
+ export declare function bindOrderListItemDrag(item: HTMLLIElement, choiceIdentifier: string, index: number, dragState: OrderDragState, moveChoice: (from: number, to: number) => void, findIndex: (identifier: string) => number): void;
22
+ //# sourceMappingURL=list-controls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-controls.d.ts","sourceRoot":"","sources":["../../src/reorder/list-controls.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAG3E,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,qBAAqB,CAAC;IAChC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,oBAAoB,GAAG;IAC1E,MAAM,EAAE,iBAAiB,CAAC;IAC1B,EAAE,EAAE,iBAAiB,CAAC;IACtB,IAAI,EAAE,iBAAiB,CAAC;CACzB,CAiCA;AAED,MAAM,WAAW,cAAc;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,aAAa,EACnB,gBAAgB,EAAE,MAAM,EACxB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,cAAc,EACzB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,IAAI,EAC9C,SAAS,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,GACxC,IAAI,CAiDN"}
@@ -0,0 +1,75 @@
1
+ import { movementButton } from "../movement.js";
2
+ import { orderedItemAccessibleName } from "./a11y.js";
3
+ export function createReorderHandleControls(options) {
4
+ const { identifier, label, index, total, handleClassName, visibleText, messages, onMoveBy } = options;
5
+ const handle = document.createElement("button");
6
+ handle.type = "button";
7
+ handle.className = handleClassName;
8
+ handle.dataset.choiceIdentifier = identifier;
9
+ handle.setAttribute("aria-label", orderedItemAccessibleName(messages, label, index, total));
10
+ handle.textContent = visibleText;
11
+ handle.addEventListener("keydown", (event) => {
12
+ if (event.key === "ArrowUp" || event.key === "ArrowLeft") {
13
+ event.preventDefault();
14
+ onMoveBy(-1);
15
+ }
16
+ else if (event.key === "ArrowDown" || event.key === "ArrowRight") {
17
+ event.preventDefault();
18
+ onMoveBy(1);
19
+ }
20
+ });
21
+ const up = movementButton("up", messages.message("moveChoice", { label, direction: "up" }), () => onMoveBy(-1));
22
+ up.disabled = index === 0;
23
+ const down = movementButton("down", messages.message("moveChoice", { label, direction: "down" }), () => onMoveBy(1));
24
+ down.disabled = index === total - 1;
25
+ return { handle, up, down };
26
+ }
27
+ export function bindOrderListItemDrag(item, choiceIdentifier, index, dragState, moveChoice, findIndex) {
28
+ item.draggable = true;
29
+ item.dataset.choiceIdentifier = choiceIdentifier;
30
+ item.addEventListener("pointerdown", (event) => {
31
+ if (event.button !== 0 || event.target.closest("button"))
32
+ return;
33
+ dragState.pointerDraggedIdentifier = choiceIdentifier;
34
+ try {
35
+ item.setPointerCapture(event.pointerId);
36
+ }
37
+ catch {
38
+ // Synthetic pointer events and some browser drag paths do not create a capturable pointer.
39
+ }
40
+ });
41
+ item.addEventListener("pointerup", (event) => {
42
+ if (!dragState.pointerDraggedIdentifier)
43
+ return;
44
+ const target = document
45
+ .elementFromPoint(event.clientX, event.clientY)
46
+ ?.closest(".qti3-reorder-item");
47
+ const targetIdentifier = target?.dataset.choiceIdentifier;
48
+ delete dragState.pointerDraggedIdentifier;
49
+ if (!targetIdentifier)
50
+ return;
51
+ moveChoice(findIndex(choiceIdentifier), findIndex(targetIdentifier));
52
+ });
53
+ item.addEventListener("pointercancel", () => {
54
+ delete dragState.pointerDraggedIdentifier;
55
+ });
56
+ item.addEventListener("dragstart", (event) => {
57
+ dragState.draggedIdentifier = choiceIdentifier;
58
+ event.dataTransfer?.setData("text/plain", choiceIdentifier);
59
+ event.dataTransfer?.setDragImage(item, 12, 12);
60
+ });
61
+ item.addEventListener("dragover", (event) => {
62
+ event.preventDefault();
63
+ item.classList.add("qti3-drop-target");
64
+ });
65
+ item.addEventListener("dragleave", () => item.classList.remove("qti3-drop-target"));
66
+ item.addEventListener("drop", (event) => {
67
+ event.preventDefault();
68
+ item.classList.remove("qti3-drop-target");
69
+ const dragged = event.dataTransfer?.getData("text/plain") || dragState.draggedIdentifier;
70
+ if (!dragged)
71
+ return;
72
+ moveChoice(findIndex(dragged), index);
73
+ });
74
+ }
75
+ //# sourceMappingURL=list-controls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-controls.js","sourceRoot":"","sources":["../../src/reorder/list-controls.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { QtiInteraction, QtiValue } from "@longsightgroup/qti3-core";
2
+ import type { PlayerMessageResolver } from "../player-message-resolver.js";
3
+ export declare function renderOrderedResponse(interaction: QtiInteraction, update: (value: QtiValue) => void, currentValue: QtiValue, messages: PlayerMessageResolver): HTMLElement;
4
+ //# sourceMappingURL=order-interaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"order-interaction.d.ts","sourceRoot":"","sources":["../../src/reorder/order-interaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAc3E,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,cAAc,EAC3B,MAAM,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,EACjC,YAAY,EAAE,QAAQ,EACtB,QAAQ,EAAE,qBAAqB,GAC9B,WAAW,CAwDb"}
@@ -0,0 +1,54 @@
1
+ import { interactionChoices, missingChoicesMessage, orderChoicesFromValue, responseGroup, } from "../interaction-support.js";
2
+ import { announceOrderedItemMove, createSelectionSummary, focusReorderControl } from "./a11y.js";
3
+ import { bindOrderListItemDrag, createReorderHandleControls, } from "./list-controls.js";
4
+ export function renderOrderedResponse(interaction, update, currentValue, messages) {
5
+ const group = responseGroup();
6
+ const choices = interactionChoices(interaction).filter((choice) => choice.role !== "gap");
7
+ if (choices.length === 0) {
8
+ group.append(missingChoicesMessage(interaction));
9
+ return group;
10
+ }
11
+ const ordered = orderChoicesFromValue(choices, currentValue);
12
+ const list = document.createElement("ol");
13
+ list.className = "qti3-reorder-list";
14
+ list.setAttribute("aria-label", messages.message("interactionCurrentOrderList", { type: interaction.type }));
15
+ const summary = createSelectionSummary();
16
+ const dragState = {};
17
+ const commit = () => update(ordered.map((choice) => choice.identifier));
18
+ const findIndex = (identifier) => ordered.findIndex((entry) => entry.identifier === identifier);
19
+ const moveChoice = (from, to) => {
20
+ if (from === to || from < 0 || from >= ordered.length || to < 0 || to >= ordered.length)
21
+ return;
22
+ const [choice] = ordered.splice(from, 1);
23
+ if (!choice)
24
+ return;
25
+ ordered.splice(to, 0, choice);
26
+ renderList();
27
+ announceOrderedItemMove(summary, messages, choice.text, to, ordered.length, from);
28
+ commit();
29
+ focusReorderControl(list, choice.identifier);
30
+ };
31
+ const renderList = () => {
32
+ list.replaceChildren(...ordered.map((choice, index) => {
33
+ const item = document.createElement("li");
34
+ item.className = "qti3-reorder-item";
35
+ bindOrderListItemDrag(item, choice.identifier, index, dragState, moveChoice, findIndex);
36
+ const { handle, up, down } = createReorderHandleControls({
37
+ identifier: choice.identifier,
38
+ label: choice.text,
39
+ index,
40
+ total: ordered.length,
41
+ handleClassName: "qti3-token qti3-reorder-handle",
42
+ visibleText: choice.text,
43
+ messages,
44
+ onMoveBy: (delta) => moveChoice(index, index + delta),
45
+ });
46
+ item.append(handle, up, down);
47
+ return item;
48
+ }));
49
+ };
50
+ renderList();
51
+ group.append(list, summary);
52
+ return group;
53
+ }
54
+ //# sourceMappingURL=order-interaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"order-interaction.js","sourceRoot":"","sources":["../../src/reorder/order-interaction.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,aAAa,GACd,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACjG,OAAO,EACL,qBAAqB,EACrB,2BAA2B,GAE5B,MAAM,oBAAoB,CAAC;AAE5B,MAAM,UAAU,qBAAqB,CACnC,WAA2B,EAC3B,MAAiC,EACjC,YAAsB,EACtB,QAA+B;IAE/B,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;IAC1F,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC,CAAC;QACjD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,OAAO,GAAG,qBAAqB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,CAAC,SAAS,GAAG,mBAAmB,CAAC;IACrC,IAAI,CAAC,YAAY,CACf,YAAY,EACZ,QAAQ,CAAC,OAAO,CAAC,6BAA6B,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC,CAC5E,CAAC;IACF,MAAM,OAAO,GAAG,sBAAsB,EAAE,CAAC;IACzC,MAAM,SAAS,GAAmB,EAAE,CAAC;IAErC,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IACxE,MAAM,SAAS,GAAG,CAAC,UAAkB,EAAE,EAAE,CACvC,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,KAAK,UAAU,CAAC,CAAC;IAChE,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,EAAU,EAAE,EAAE;QAC9C,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,OAAO,CAAC,MAAM,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,OAAO,CAAC,MAAM;YAAE,OAAO;QAChG,MAAM,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QAC9B,UAAU,EAAE,CAAC;QACb,uBAAuB,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAClF,MAAM,EAAE,CAAC;QACT,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAC/C,CAAC,CAAC;IACF,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,IAAI,CAAC,eAAe,CAClB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YAC/B,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,SAAS,GAAG,mBAAmB,CAAC;YACrC,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;YAExF,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,2BAA2B,CAAC;gBACvD,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,KAAK,EAAE,MAAM,CAAC,IAAI;gBAClB,KAAK;gBACL,KAAK,EAAE,OAAO,CAAC,MAAM;gBACrB,eAAe,EAAE,gCAAgC;gBACjD,WAAW,EAAE,MAAM,CAAC,IAAI;gBACxB,QAAQ;gBACR,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC;aACtD,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;YAC9B,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CACH,CAAC;IACJ,CAAC,CAAC;IACF,UAAU,EAAE,CAAC;IACb,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5B,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const BASE_PLAYER_STYLES: string;
2
+ //# sourceMappingURL=base-styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-styles.d.ts","sourceRoot":"","sources":["../../src/styles/base-styles.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,QAmIvB,CAAC"}