@citolab/qti-components 7.0.6-beta.3 → 7.0.6-beta.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 (113) hide show
  1. package/cdn/chunks/{chunk-MJMONWKB.js → chunk-4ILXLVT5.js} +8 -2
  2. package/cdn/chunks/chunk-4PEUIMDK.js +8 -0
  3. package/cdn/chunks/chunk-H2V2RXUW.js +11 -0
  4. package/cdn/chunks/chunk-IQZ7AOCQ.js +8 -0
  5. package/cdn/chunks/chunk-J3JSSCM6.js +5 -0
  6. package/cdn/chunks/chunk-LARBLB7K.js +8 -0
  7. package/cdn/chunks/chunk-PPWEIKLT.js +1 -0
  8. package/cdn/chunks/{chunk-N5OHGRGG.js → chunk-PT523RSK.js} +2 -2
  9. package/cdn/chunks/chunk-QTK4CPHP.js +8 -0
  10. package/cdn/chunks/{chunk-TVDTF6P6.js → chunk-SXM25YH3.js} +89 -89
  11. package/cdn/chunks/{chunk-6S4CDN3T.js → chunk-YHWMZAZD.js} +2 -2
  12. package/cdn/chunks/{chunk-TQBDBMWL.js → chunk-YWH4TGMA.js} +1 -1
  13. package/cdn/index.global.js +1 -1
  14. package/cdn/index.js +1 -1
  15. package/cdn/qti-components/index.js +1 -1
  16. package/cdn/qti-item/core/index.js +1 -1
  17. package/cdn/qti-test/components/index.js +1 -1
  18. package/cdn/qti-test/components/test-component.abstract.js +1 -1
  19. package/cdn/qti-test/components/test-end-attempt.js +1 -0
  20. package/cdn/qti-test/components/test-item-link.js +1 -1
  21. package/cdn/qti-test/components/test-next.js +1 -1
  22. package/cdn/qti-test/components/test-paging-buttons-stamp.js +1 -1
  23. package/cdn/qti-test/components/test-prev.js +1 -1
  24. package/cdn/qti-test/components/test-show-correct-response.js +1 -0
  25. package/cdn/qti-test/components/test-view.js +1 -1
  26. package/cdn/qti-test/core/index.js +1 -1
  27. package/dist/chunks/{chunk-GSWZT6N2.js → chunk-4MQV5IRV.js} +12 -3
  28. package/dist/chunks/chunk-4MQV5IRV.js.map +1 -0
  29. package/dist/chunks/{chunk-6JXR63MH.js → chunk-5RTLOB3Q.js} +12 -3
  30. package/dist/chunks/chunk-5RTLOB3Q.js.map +1 -0
  31. package/dist/chunks/{chunk-UFYWCLXF.js → chunk-AUWATZ65.js} +1 -1
  32. package/dist/chunks/{chunk-UFYWCLXF.js.map → chunk-AUWATZ65.js.map} +1 -1
  33. package/dist/chunks/{chunk-7QMCKYDR.js → chunk-CEXAR7BF.js} +13 -4
  34. package/dist/chunks/chunk-CEXAR7BF.js.map +1 -0
  35. package/dist/chunks/chunk-DNHDFXTV.js +59 -0
  36. package/dist/chunks/chunk-DNHDFXTV.js.map +1 -0
  37. package/dist/chunks/chunk-GQ5P3NWC.js +46 -0
  38. package/dist/chunks/chunk-GQ5P3NWC.js.map +1 -0
  39. package/dist/chunks/chunk-HOTNM5DT.js +1 -0
  40. package/dist/chunks/{chunk-ZHAJ3CMP.js → chunk-MEQM6M67.js} +89 -117
  41. package/dist/chunks/chunk-MEQM6M67.js.map +1 -0
  42. package/dist/chunks/{chunk-3EU75IUF.js → chunk-MLT7V47R.js} +3 -21
  43. package/dist/chunks/chunk-MLT7V47R.js.map +1 -0
  44. package/dist/chunks/chunk-NHA53UTY.js +52 -0
  45. package/dist/chunks/chunk-NHA53UTY.js.map +1 -0
  46. package/dist/chunks/{chunk-J2SHENRN.js → chunk-NZQKGIJP.js} +9 -3
  47. package/dist/chunks/{chunk-J2SHENRN.js.map → chunk-NZQKGIJP.js.map} +1 -1
  48. package/dist/chunks/chunk-RX3BRYYI.js +59 -0
  49. package/dist/chunks/chunk-RX3BRYYI.js.map +1 -0
  50. package/dist/chunks/chunk-VAPB5TN4.js +46 -0
  51. package/dist/chunks/chunk-VAPB5TN4.js.map +1 -0
  52. package/dist/chunks/chunk-W4272Q5U.js +46 -0
  53. package/dist/chunks/chunk-W4272Q5U.js.map +1 -0
  54. package/dist/chunks/{chunk-A24F75DB.js → chunk-WWN5AD6V.js} +11 -2
  55. package/dist/chunks/chunk-WWN5AD6V.js.map +1 -0
  56. package/dist/chunks/{chunk-HHVRU3AJ.js → chunk-XCHS3RTZ.js} +2 -2
  57. package/dist/chunks/{chunk-KYAIMBP5.js → chunk-YQB6YLNW.js} +3 -3
  58. package/dist/chunks/chunk-YQB6YLNW.js.map +1 -0
  59. package/dist/chunks/chunk-Z5THRO6Z.js +46 -0
  60. package/dist/chunks/chunk-Z5THRO6Z.js.map +1 -0
  61. package/dist/chunks/{chunk-4GNVYCBN.js → chunk-ZQXZ6PK7.js} +92 -70
  62. package/dist/chunks/chunk-ZQXZ6PK7.js.map +1 -0
  63. package/dist/index.d.ts +4 -2
  64. package/dist/index.js +20 -12
  65. package/dist/item.css +8 -2
  66. package/dist/qti-components/index.d.ts +2 -2
  67. package/dist/qti-components/index.js +1 -1
  68. package/dist/qti-components-jsx.d.ts +62 -46
  69. package/dist/qti-item/core/index.js +2 -2
  70. package/dist/qti-loader/index.d.ts +1 -1
  71. package/dist/{qti-response-declaration-DAeBp8HH.d.ts → qti-response-declaration-Di9CsqiJ.d.ts} +4 -0
  72. package/dist/qti-test/components/index.d.ts +4 -2
  73. package/dist/qti-test/components/index.js +16 -8
  74. package/dist/qti-test/components/test-component.abstract.d.ts +2 -4
  75. package/dist/qti-test/components/test-component.abstract.js +2 -2
  76. package/dist/qti-test/components/test-end-attempt.d.ts +26 -0
  77. package/dist/qti-test/components/test-end-attempt.js +13 -0
  78. package/dist/qti-test/components/test-end-attempt.js.map +1 -0
  79. package/dist/qti-test/components/test-item-link.d.ts +3 -2
  80. package/dist/qti-test/components/test-item-link.js +3 -3
  81. package/dist/qti-test/components/test-next.d.ts +3 -2
  82. package/dist/qti-test/components/test-next.js +3 -3
  83. package/dist/qti-test/components/test-paging-buttons-stamp.d.ts +2 -2
  84. package/dist/qti-test/components/test-paging-buttons-stamp.js +3 -3
  85. package/dist/qti-test/components/test-prev.d.ts +3 -2
  86. package/dist/qti-test/components/test-prev.js +3 -3
  87. package/dist/qti-test/components/test-show-correct-response.d.ts +26 -0
  88. package/dist/qti-test/components/test-show-correct-response.js +13 -0
  89. package/dist/qti-test/components/test-show-correct-response.js.map +1 -0
  90. package/dist/qti-test/components/test-view.d.ts +3 -2
  91. package/dist/qti-test/components/test-view.js +3 -3
  92. package/dist/qti-test/core/index.d.ts +6 -6
  93. package/dist/qti-test/core/index.js +3 -3
  94. package/dist/{test.context-CaENAJNk.d.ts → test.context-CmsDQ8k2.d.ts} +3 -5
  95. package/dist/vscode.html-custom-data.json +36 -17
  96. package/package.json +1 -1
  97. package/cdn/chunks/chunk-5P7CTN7Q.js +0 -11
  98. package/cdn/chunks/chunk-DZCKF45D.js +0 -5
  99. package/cdn/chunks/chunk-IMJOPCFR.js +0 -1
  100. package/cdn/chunks/chunk-NDHSIO2G.js +0 -8
  101. package/cdn/chunks/chunk-QV6I5NVQ.js +0 -8
  102. package/dist/chunks/chunk-3EU75IUF.js.map +0 -1
  103. package/dist/chunks/chunk-4GNVYCBN.js.map +0 -1
  104. package/dist/chunks/chunk-6JXR63MH.js.map +0 -1
  105. package/dist/chunks/chunk-7QMCKYDR.js.map +0 -1
  106. package/dist/chunks/chunk-A24F75DB.js.map +0 -1
  107. package/dist/chunks/chunk-GSWZT6N2.js.map +0 -1
  108. package/dist/chunks/chunk-KYAIMBP5.js.map +0 -1
  109. package/dist/chunks/chunk-UN2IFSGC.js +0 -1
  110. package/dist/chunks/chunk-ZHAJ3CMP.js.map +0 -1
  111. /package/cdn/chunks/{chunk-3GO57DNP.js → chunk-6PW2L463.js} +0 -0
  112. /package/dist/chunks/{chunk-UN2IFSGC.js.map → chunk-HOTNM5DT.js.map} +0 -0
  113. /package/dist/chunks/{chunk-HHVRU3AJ.js.map → chunk-XCHS3RTZ.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,11 +1,11 @@
1
1
  import * as lit_html from 'lit-html';
2
2
  import * as lit from 'lit';
3
3
  import { TestComponent } from './test-component.abstract.js';
4
- import '../../test.context-CaENAJNk.js';
4
+ import '../../test.context-CmsDQ8k2.js';
5
5
  import '../../variables-cO3DzqJy.js';
6
6
  import '../../exports/expression-result.js';
7
7
  import '../../exports/item.context.js';
8
- import '../../qti-response-declaration-DAeBp8HH.js';
8
+ import '../../qti-response-declaration-Di9CsqiJ.js';
9
9
  import '../../exports/interaction.interface.js';
10
10
  import '../../exports/interaction.js';
11
11
  import 'lit-html/directives/ref.js';
@@ -15,6 +15,7 @@ declare class TestItemLink extends TestComponent {
15
15
  static styles: lit.CSSResult;
16
16
  private itemId;
17
17
  constructor();
18
+ protected _requestItem(identifier: string): void;
18
19
  render(): lit_html.TemplateResult<1>;
19
20
  }
20
21
  declare global {
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  TestItemLink
3
- } from "../../chunks/chunk-7QMCKYDR.js";
3
+ } from "../../chunks/chunk-NHA53UTY.js";
4
4
  import "../../chunks/chunk-4O5F7WV7.js";
5
- import "../../chunks/chunk-3EU75IUF.js";
6
- import "../../chunks/chunk-UFYWCLXF.js";
5
+ import "../../chunks/chunk-MLT7V47R.js";
6
+ import "../../chunks/chunk-AUWATZ65.js";
7
7
  import "../../chunks/chunk-D3RGDWKP.js";
8
8
  import "../../chunks/chunk-ELDMXTUQ.js";
9
9
  import "../../chunks/chunk-H2JE6IVU.js";
@@ -1,11 +1,11 @@
1
1
  import * as lit_html from 'lit-html';
2
2
  import * as lit from 'lit';
3
3
  import { TestComponent } from './test-component.abstract.js';
4
- import '../../test.context-CaENAJNk.js';
4
+ import '../../test.context-CmsDQ8k2.js';
5
5
  import '../../variables-cO3DzqJy.js';
6
6
  import '../../exports/expression-result.js';
7
7
  import '../../exports/item.context.js';
8
- import '../../qti-response-declaration-DAeBp8HH.js';
8
+ import '../../qti-response-declaration-Di9CsqiJ.js';
9
9
  import '../../exports/interaction.interface.js';
10
10
  import '../../exports/interaction.js';
11
11
  import 'lit-html/directives/ref.js';
@@ -26,6 +26,7 @@ declare class TestNext extends TestComponent {
26
26
  static styles: lit.CSSResult;
27
27
  constructor();
28
28
  willUpdate(changedProperties: Map<string | number | symbol, unknown>): void;
29
+ protected _requestItem(identifier: string): void;
29
30
  render(): lit_html.TemplateResult<1>;
30
31
  }
31
32
  declare global {
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  TestNext
3
- } from "../../chunks/chunk-6JXR63MH.js";
3
+ } from "../../chunks/chunk-5RTLOB3Q.js";
4
4
  import "../../chunks/chunk-4O5F7WV7.js";
5
- import "../../chunks/chunk-3EU75IUF.js";
6
- import "../../chunks/chunk-UFYWCLXF.js";
5
+ import "../../chunks/chunk-MLT7V47R.js";
6
+ import "../../chunks/chunk-AUWATZ65.js";
7
7
  import "../../chunks/chunk-D3RGDWKP.js";
8
8
  import "../../chunks/chunk-ELDMXTUQ.js";
9
9
  import "../../chunks/chunk-H2JE6IVU.js";
@@ -1,11 +1,11 @@
1
1
  import * as lit_html from 'lit-html';
2
2
  import { TestComponent } from './test-component.abstract.js';
3
3
  import 'lit';
4
- import '../../test.context-CaENAJNk.js';
4
+ import '../../test.context-CmsDQ8k2.js';
5
5
  import '../../variables-cO3DzqJy.js';
6
6
  import '../../exports/expression-result.js';
7
7
  import '../../exports/item.context.js';
8
- import '../../qti-response-declaration-DAeBp8HH.js';
8
+ import '../../qti-response-declaration-Di9CsqiJ.js';
9
9
  import '../../exports/interaction.interface.js';
10
10
  import '../../exports/interaction.js';
11
11
  import 'lit-html/directives/ref.js';
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  TestPagingButtonsStamp
3
- } from "../../chunks/chunk-KYAIMBP5.js";
4
- import "../../chunks/chunk-3EU75IUF.js";
5
- import "../../chunks/chunk-UFYWCLXF.js";
3
+ } from "../../chunks/chunk-YQB6YLNW.js";
4
+ import "../../chunks/chunk-MLT7V47R.js";
5
+ import "../../chunks/chunk-AUWATZ65.js";
6
6
  import "../../chunks/chunk-D3RGDWKP.js";
7
7
  import "../../chunks/chunk-ELDMXTUQ.js";
8
8
  import "../../chunks/chunk-H2JE6IVU.js";
@@ -1,11 +1,11 @@
1
1
  import * as lit_html from 'lit-html';
2
2
  import * as lit from 'lit';
3
3
  import { TestComponent } from './test-component.abstract.js';
4
- import '../../test.context-CaENAJNk.js';
4
+ import '../../test.context-CmsDQ8k2.js';
5
5
  import '../../variables-cO3DzqJy.js';
6
6
  import '../../exports/expression-result.js';
7
7
  import '../../exports/item.context.js';
8
- import '../../qti-response-declaration-DAeBp8HH.js';
8
+ import '../../qti-response-declaration-Di9CsqiJ.js';
9
9
  import '../../exports/interaction.interface.js';
10
10
  import '../../exports/interaction.js';
11
11
  import 'lit-html/directives/ref.js';
@@ -25,6 +25,7 @@ import '../../exports/qti-expression.js';
25
25
  declare class TestPrev extends TestComponent {
26
26
  static styles: lit.CSSResult;
27
27
  constructor();
28
+ protected _requestItem(identifier: string): void;
28
29
  willUpdate(changedProperties: Map<string | number | symbol, unknown>): void;
29
30
  render(): lit_html.TemplateResult<1>;
30
31
  }
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  TestPrev
3
- } from "../../chunks/chunk-GSWZT6N2.js";
3
+ } from "../../chunks/chunk-4MQV5IRV.js";
4
4
  import "../../chunks/chunk-4O5F7WV7.js";
5
- import "../../chunks/chunk-3EU75IUF.js";
6
- import "../../chunks/chunk-UFYWCLXF.js";
5
+ import "../../chunks/chunk-MLT7V47R.js";
6
+ import "../../chunks/chunk-AUWATZ65.js";
7
7
  import "../../chunks/chunk-D3RGDWKP.js";
8
8
  import "../../chunks/chunk-ELDMXTUQ.js";
9
9
  import "../../chunks/chunk-H2JE6IVU.js";
@@ -0,0 +1,26 @@
1
+ import * as lit_html from 'lit-html';
2
+ import * as lit from 'lit';
3
+ import { TestComponent } from './test-component.abstract.js';
4
+ import '../../test.context-CmsDQ8k2.js';
5
+ import '../../variables-cO3DzqJy.js';
6
+ import '../../exports/expression-result.js';
7
+ import '../../exports/item.context.js';
8
+ import '../../qti-response-declaration-Di9CsqiJ.js';
9
+ import '../../exports/interaction.interface.js';
10
+ import '../../exports/interaction.js';
11
+ import 'lit-html/directives/ref.js';
12
+ import '../../exports/qti-expression.js';
13
+
14
+ declare class TestShowCorrectResponse extends TestComponent {
15
+ static styles: lit.CSSResult;
16
+ _processResponse(): void;
17
+ constructor();
18
+ render(): lit_html.TemplateResult<1>;
19
+ }
20
+ declare global {
21
+ interface HTMLElementTagNameMap {
22
+ 'test-show-correct-response': TestShowCorrectResponse;
23
+ }
24
+ }
25
+
26
+ export { TestShowCorrectResponse };
@@ -0,0 +1,13 @@
1
+ import {
2
+ TestShowCorrectResponse
3
+ } from "../../chunks/chunk-Z5THRO6Z.js";
4
+ import "../../chunks/chunk-4O5F7WV7.js";
5
+ import "../../chunks/chunk-MLT7V47R.js";
6
+ import "../../chunks/chunk-AUWATZ65.js";
7
+ import "../../chunks/chunk-D3RGDWKP.js";
8
+ import "../../chunks/chunk-ELDMXTUQ.js";
9
+ import "../../chunks/chunk-H2JE6IVU.js";
10
+ export {
11
+ TestShowCorrectResponse
12
+ };
13
+ //# sourceMappingURL=test-show-correct-response.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,11 +1,11 @@
1
1
  import * as lit_html from 'lit-html';
2
2
  import { TestComponent } from './test-component.abstract.js';
3
3
  import 'lit';
4
- import '../../test.context-CaENAJNk.js';
4
+ import '../../test.context-CmsDQ8k2.js';
5
5
  import '../../variables-cO3DzqJy.js';
6
6
  import '../../exports/expression-result.js';
7
7
  import '../../exports/item.context.js';
8
- import '../../qti-response-declaration-DAeBp8HH.js';
8
+ import '../../qti-response-declaration-Di9CsqiJ.js';
9
9
  import '../../exports/interaction.interface.js';
10
10
  import '../../exports/interaction.js';
11
11
  import 'lit-html/directives/ref.js';
@@ -21,6 +21,7 @@ declare class TestView extends TestComponent {
21
21
  connectedCallback(): void;
22
22
  private _viewOptions;
23
23
  private updateViewOptions;
24
+ protected _switchView(view: string): void;
24
25
  render(): lit_html.TemplateResult<1>;
25
26
  }
26
27
  declare global {
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  TestView
3
- } from "../../chunks/chunk-A24F75DB.js";
4
- import "../../chunks/chunk-3EU75IUF.js";
5
- import "../../chunks/chunk-UFYWCLXF.js";
3
+ } from "../../chunks/chunk-WWN5AD6V.js";
4
+ import "../../chunks/chunk-MLT7V47R.js";
5
+ import "../../chunks/chunk-AUWATZ65.js";
6
6
  import "../../chunks/chunk-D3RGDWKP.js";
7
7
  import "../../chunks/chunk-ELDMXTUQ.js";
8
8
  import "../../chunks/chunk-H2JE6IVU.js";
@@ -1,11 +1,11 @@
1
1
  import * as lit_html from 'lit-html';
2
2
  import { LitElement } from 'lit';
3
- import { T as TestContext, d as TestElement } from '../../test.context-CaENAJNk.js';
4
- export { Q as QtiAssessmentItemRef, a as QtiAssessmentSection, b as QtiAssessmentTest, c as QtiTestPart, t as testContext, e as testElement } from '../../test.context-CaENAJNk.js';
5
- import '../../variables-cO3DzqJy.js';
3
+ import { O as OutcomeVariable, V as VariableDeclaration } from '../../variables-cO3DzqJy.js';
4
+ import { T as TestContext, d as TestElement } from '../../test.context-CmsDQ8k2.js';
5
+ export { Q as QtiAssessmentItemRef, a as QtiAssessmentSection, b as QtiAssessmentTest, c as QtiTestPart, t as testContext, e as testElement } from '../../test.context-CmsDQ8k2.js';
6
6
  import '../../exports/expression-result.js';
7
7
  import '../../exports/item.context.js';
8
- import '../../qti-response-declaration-DAeBp8HH.js';
8
+ import '../../qti-response-declaration-Di9CsqiJ.js';
9
9
  import '../../exports/interaction.interface.js';
10
10
  import '../../exports/interaction.js';
11
11
  import 'lit-html/directives/ref.js';
@@ -61,13 +61,12 @@ declare abstract class TestBase extends LitElement {
61
61
  * @param assessmentItem - The assessment item to update.
62
62
  */
63
63
  private _updateItemInTestContext;
64
- connectedCallback(): void;
65
64
  }
66
65
 
67
66
  declare const QtiTest_base: (abstract new (...args: any[]) => {}) & (abstract new (...args: any[]) => {
68
67
  updateOutcomeVariable(identifier: string, value: string | string[] | undefined): void;
69
68
  getOutcome(identifier: string): Readonly<OutcomeVariable>;
70
- getVariable(identifier: string): Readonly<VariableDeclaration<string | string[]>>;
69
+ getVariable(identifier: string): Readonly<VariableDeclaration<string | string[] | null>>;
71
70
  outcomeProcessing(): boolean;
72
71
  }) & (abstract new (...args: any[]) => {}) & (abstract new (...args: any[]) => {}) & typeof TestBase;
73
72
  /**
@@ -121,6 +120,7 @@ declare class QtiTest extends QtiTest_base {
121
120
  * Renders the component's template.
122
121
  * Provides a default `<slot>` for content projection.
123
122
  */
123
+ connectedCallback(): Promise<void>;
124
124
  render(): lit_html.TemplateResult<1>;
125
125
  }
126
126
  declare global {
@@ -5,13 +5,13 @@ import {
5
5
  QtiTest,
6
6
  QtiTestPart,
7
7
  TestContainer
8
- } from "../../chunks/chunk-4GNVYCBN.js";
9
- import "../../chunks/chunk-J2SHENRN.js";
8
+ } from "../../chunks/chunk-ZQXZ6PK7.js";
9
+ import "../../chunks/chunk-NZQKGIJP.js";
10
10
  import "../../chunks/chunk-XDMSEAYC.js";
11
11
  import {
12
12
  testContext,
13
13
  testElement
14
- } from "../../chunks/chunk-UFYWCLXF.js";
14
+ } from "../../chunks/chunk-AUWATZ65.js";
15
15
  import "../../chunks/chunk-ELDMXTUQ.js";
16
16
  import "../../chunks/chunk-H2JE6IVU.js";
17
17
  export {
@@ -2,7 +2,7 @@ import * as lit_html from 'lit-html';
2
2
  import { LitElement } from 'lit';
3
3
  import { V as VariableDeclaration } from './variables-cO3DzqJy.js';
4
4
  import { ItemContext } from './exports/item.context.js';
5
- import { Q as QtiAssessmentItem } from './qti-response-declaration-DAeBp8HH.js';
5
+ import { Q as QtiAssessmentItem } from './qti-response-declaration-Di9CsqiJ.js';
6
6
 
7
7
  declare class QtiAssessmentItemRef extends LitElement {
8
8
  category?: string;
@@ -91,11 +91,9 @@ interface TestContext {
91
91
  declare const testContext: {
92
92
  __context__: Readonly<TestContext>;
93
93
  };
94
- type TestElement = {
95
- el: QtiAssessmentTest;
96
- };
94
+ type TestElement = QtiAssessmentTest | null;
97
95
  declare const testElement: {
98
- __context__: Readonly<TestElement>;
96
+ __context__: Readonly<QtiAssessmentTest>;
99
97
  };
100
98
 
101
99
  export { QtiAssessmentItemRef as Q, type TestContext as T, QtiAssessmentSection as a, QtiAssessmentTest as b, QtiTestPart as c, type TestElement as d, testElement as e, testContext as t };
@@ -219,7 +219,7 @@
219
219
  },
220
220
  {
221
221
  "name": "qti-assessment-item",
222
- "description": "The qti-assessment-item element contains all the other QTI 3 item structures.\n---\n\n\n### **Events:**\n - **name**\n- **qti-interaction-changed** - Emitted when an interaction is changed.\n- **qti-outcome-changed** - Emitted when an outcome has changed.\n- **qti-response-processing** - Emitted when response-processing is called.\n\n### **Slots:**\n - _default_ - The default slot where all the other QTI 3 item structures go.",
222
+ "description": "The qti-assessment-item element contains all the other QTI 3 item structures.\n---\n\n\n### **Events:**\n - **name**\n- **qti-interaction-changed** - Emitted when an interaction is changed.\n- **qti-outcome-changed** - Emitted when an outcome has changed.\n- **qti-response-processing** - Emitted when response-processing is called.\n\n### **Methods:**\n - **showCorrectResponse(show: _boolean_): _void_** - Toggles the display of correct responses for interactions.\n\n### **Slots:**\n - _default_ - The default slot where all the other QTI 3 item structures go.",
223
223
  "attributes": [
224
224
  { "name": "title", "values": [] },
225
225
  { "name": "identifier", "values": [] },
@@ -806,19 +806,19 @@
806
806
  },
807
807
  {
808
808
  "name": "test-next",
809
- "description": "Represents a custom element for navigating to the next test item.\n---\n\n\n### **Events:**\n - **on-test-switch-view**\n- **qti-request-test-item**",
809
+ "description": "Represents a custom element for navigating to the next test item.\n---\n\n\n### **Events:**\n - **qti-request-test-item**",
810
810
  "attributes": [],
811
811
  "references": []
812
812
  },
813
813
  {
814
814
  "name": "test-prev",
815
- "description": "Represents a custom element for navigating to the previous test item.\n---\n\n\n### **Events:**\n - **on-test-switch-view**\n- **qti-request-test-item**",
815
+ "description": "Represents a custom element for navigating to the previous test item.\n---\n\n\n### **Events:**\n - **qti-request-test-item**",
816
816
  "attributes": [],
817
817
  "references": []
818
818
  },
819
819
  {
820
820
  "name": "test-view",
821
- "description": "\n---\n\n\n### **Events:**\n - **on-test-switch-view**\n- **qti-request-test-item**",
821
+ "description": "\n---\n\n\n### **Events:**\n - **on-test-switch-view**",
822
822
  "attributes": [
823
823
  {
824
824
  "name": "label",
@@ -835,34 +835,53 @@
835
835
  },
836
836
  {
837
837
  "name": "test-item-link",
838
- "description": "\n---\n\n\n### **Events:**\n - **on-test-switch-view**\n- **qti-request-test-item**",
838
+ "description": "\n---\n\n\n### **Events:**\n - **qti-request-test-item**",
839
839
  "attributes": [{ "name": "item-id", "values": [] }],
840
840
  "references": []
841
841
  },
842
842
  {
843
- "name": "test-paging-buttons-stamp",
844
- "description": "\n---\n\n\n### **Events:**\n - **on-test-switch-view**\n- **qti-request-test-item**",
843
+ "name": "test-container",
844
+ "description": "`<test-container>` is a custom element designed for hosting the qti-assessment-item.\nThe `qti-assessment-test` will be placed inside the shadow DOM of this element.\nThe element loads the test from the provided URL and renders it inside the shadow DOM.\n\n```html\n<qti-test>\n <test-container class=\"m-4 bg-white\" test-url=\"./path/to/assessmenttest.xml\"></test-container>\n</qti-test>\n```\n---\n",
845
845
  "attributes": [
846
- { "name": "max-displayed-items", "values": [] },
847
- { "name": "skip-on-category", "values": [] }
846
+ {
847
+ "name": "test-url",
848
+ "description": "URL of the item to load",
849
+ "values": []
850
+ }
848
851
  ],
849
852
  "references": []
850
853
  },
851
854
  {
852
855
  "name": "qti-test",
853
- "description": "`<qti-test>` is a custom element designed for rendering and interacting with QTI (Question and Test Interoperability) tests.\n\nThis component leverages several mixins to provide functionality for loading, navigating, processing, and displaying QTI test assessments.\n\n### Example Usage\n\nMinimal example including navigation:\n\n```html\n<qti-test>\n <test-container test-url=\"./path/to/assessment.xml\"></test-container>\n <nav class=\"flex\">\n <test-prev></test-prev>\n <test-next></test-next>\n </nav>\n</qti-test>\n```\n\nUse the following file structure\nA qti-test loads a QTI3.0 assessmenttest.xml file from a package folder.\n\n```plaintext\nRoot/\n├── index.html\n└── /assets/api/examples/\n ├── assessmenttest.xml\n └── imsmanifest.xml\n\n```\n\n### Test components\n\nUse test components inside the qti-test component for added functionality.\n### Test next\n`<test-next> | TestNext`\n\n### Test prev\n\n`<test-prev> | TestPrev`\n### Test components\n\nYou can use normal class names to style the elements.\nAnd you can use the `test-prev` and `test-next` elements to navigate through the test.\n---\n",
856
+ "description": "`<qti-test>` is a custom element designed for rendering and interacting with QTI (Question and Test Interoperability) tests.\n\nThis component leverages several mixins to provide functionality for loading, navigating, processing, and displaying QTI test assessments.\n\n### Example Usage\n\nMinimal example including navigation:\n\n```html\n<qti-test>\n <test-container test-url=\"./path/to/assessment.xml\"></test-container>\n <nav class=\"flex\">\n <test-prev></test-prev>\n <test-next></test-next>\n </nav>\n</qti-test>\n```\n\nUse the following file structure\nA qti-test loads a QTI3.0 assessmenttest.xml file from a package folder.\n\n```plaintext\nRoot/\n├── index.html\n└── /assets/api/examples/\n ├── assessmenttest.xml\n └── imsmanifest.xml\n\n```\n\n### Test components\n\nUse test components inside the qti-test component for added functionality.\n### Test next\n`<test-next> | TestNext`\n\n### Test prev\n\n`<test-prev> | TestPrev`\n### Test components\n\nYou can use normal class names to style the elements.\nAnd you can use the `test-prev` and `test-next` elements to navigate through the test.\n---\n\n\n### **Events:**\n - **qti-test-connected**",
857
+ "attributes": [
858
+ {
859
+ "name": "auto-score-items",
860
+ "description": "Items will be scored on everyinteraction when `qti-assessment-item` is not set to adaptive, and the `SCORE` outcome identifier is not set to be \"human\" | \"externalMachine\"",
861
+ "values": []
862
+ },
863
+ { "name": "auto-store-restore", "values": [] }
864
+ ],
865
+ "references": []
866
+ },
867
+ {
868
+ "name": "test-end-attempt",
869
+ "description": "\n---\n",
854
870
  "attributes": [],
855
871
  "references": []
856
872
  },
857
873
  {
858
- "name": "test-container",
859
- "description": "`<test-container>` is a custom element designed for hosting the qti-assessment-item.\nThe `qti-assessment-test` will be placed inside the shadow DOM of this element.\nThe element loads the test from the provided URL and renders it inside the shadow DOM.\n\n```html\n<qti-test>\n <test-container class=\"m-4 bg-white\" test-url=\"./path/to/assessmenttest.xml\"></test-container>\n</qti-test>\n```\n---\n",
874
+ "name": "test-show-correct-response",
875
+ "description": "\n---\n",
876
+ "attributes": [],
877
+ "references": []
878
+ },
879
+ {
880
+ "name": "test-paging-buttons-stamp",
881
+ "description": "\n---\n",
860
882
  "attributes": [
861
- {
862
- "name": "test-url",
863
- "description": "URL of the item to load",
864
- "values": []
865
- }
883
+ { "name": "max-displayed-items", "values": [] },
884
+ { "name": "skip-on-category", "values": [] }
866
885
  ],
867
886
  "references": []
868
887
  },
package/package.json CHANGED
@@ -21,7 +21,7 @@
21
21
  "engines": {
22
22
  "node": ">=20.0.0"
23
23
  },
24
- "version": "7.0.6-beta.3",
24
+ "version": "7.0.6-beta.4",
25
25
  "type": "module",
26
26
  "main": "dist/index.js",
27
27
  "exports": {
@@ -1,11 +0,0 @@
1
- import{a as s}from"./chunk-IMJOPCFR.js";import{a as l}from"./chunk-XUJ7TXHW.js";import{a as p,b as n,c as r}from"./chunk-5GCSZ3CH.js";import{d as a}from"./chunk-LZZB4VGC.js";import{a as i}from"./chunk-IAP2CEE7.js";var t=class extends s{constructor(){super(...arguments);this.label="view";this._handleViewOptionsChange=()=>{this.updateViewOptions()};this._viewOptions=t.DEFAULT_VIEW_OPTIONS}connectedCallback(){super.connectedCallback(),this.updateViewOptions()}updateViewOptions(){if(this.viewOptions){let e=this.viewOptions.split(",").map(o=>o.trim());this._viewOptions=e.filter(o=>t.DEFAULT_VIEW_OPTIONS.includes(o))}else this._viewOptions=t.DEFAULT_VIEW_OPTIONS}render(){return a`
2
- <label part="label" for="viewSelect">${this.label}</label>
3
- <select
4
- part="select"
5
- id="viewSelect"
6
- .disabled=${this.disabled}
7
- @change=${e=>{let o=e.target;this._switchView(o.value)}}
8
- >
9
- ${this._viewOptions.map(e=>a`<option value="${e}" ?selected=${e===this.view}>${e}</option>`)}
10
- </select>
11
- `}};t.DEFAULT_VIEW_OPTIONS=["author","candidate","proctor","scorer","testConstructor","tutor"],i([n({type:String})],t.prototype,"label",2),i([n({type:String,attribute:"view-options"})],t.prototype,"viewOptions",2),i([l("viewOptions",{waitUntilFirstUpdate:!0})],t.prototype,"_handleViewOptionsChange",2),i([r()],t.prototype,"_viewOptions",2),t=i([p("test-view")],t);export{t as a};
@@ -1,5 +0,0 @@
1
- import{a as V,b as M}from"./chunk-MJMONWKB.js";import{a as I,c as w}from"./chunk-5FCXUJAG.js";import{a as g,b as S}from"./chunk-6MCYE7P5.js";import{a as L}from"./chunk-XUJ7TXHW.js";import{a as h,b as i,c as v}from"./chunk-5GCSZ3CH.js";import{d as l,i as m}from"./chunk-LZZB4VGC.js";import{a as T,b as x}from"./chunk-FRS2J3OS.js";import{a as s}from"./chunk-IAP2CEE7.js";var f=class extends m{constructor(){super(...arguments);this.testURL=null;this.testDoc=null;this.testXML=null;this.templateContent=null}async handleTestURLChange(){if(this.testURL)try{let r=await w().load(this.testURL);this.testDoc=r.htmlDoc()}catch(r){console.error("Error loading or parsing XML:",r)}}handleTestXMLChange(){if(this.testXML)try{this.testDoc=w().parse(this.testXML).htmlDoc()}catch(r){console.error("Error parsing XML:",r)}}async connectedCallback(){super.connectedCallback(),this.initializeTemplateContent(),this.applyStyles(),this.testURL&&this.handleTestURLChange(),this.testXML&&this.handleTestXMLChange()}initializeTemplateContent(){let r=this.querySelector("template");this.templateContent=r?r.content:l``}applyStyles(){let r=new CSSStyleSheet;r.replaceSync(M),this.shadowRoot.adoptedStyleSheets=[r]}render(){return l`
2
- ${this.templateContent}
3
- <slot></slot>
4
- ${V(this.testDoc,l`<span>Loading...</span>`)}
5
- `}};s([i({type:String,attribute:"test-url"})],f.prototype,"testURL",2),s([v()],f.prototype,"testDoc",2),s([v()],f.prototype,"testXML",2),s([L("testURL",{waitUntilFirstUpdate:!0})],f.prototype,"handleTestURLChange",1),s([L("testXML",{waitUntilFirstUpdate:!0})],f.prototype,"handleTestXMLChange",1),f=s([h("test-container")],f);var R=o=>{class c extends o{constructor(...e){super(...e),this.addEventListener("qti-assessment-test-connected",()=>{}),this.addEventListener("qti-load-item-request",({detail:t})=>{t.promise=(async()=>(await I().load(`${t.href}`,t.cancelPreviousRequest)).htmlDoc())()}),this.addEventListener("qti-interaction-changed",t=>{}),this.addEventListener("qti-outcome-changed",()=>{})}}return c};var D=o=>{class c extends o{constructor(...e){super(...e),this.addEventListener("qti-request-test-item",({detail:t})=>{if(!t)return;this._clearLoadedItems();let n=this.testElement.el.querySelector(`qti-assessment-item-ref[identifier="${t}"]`),a=this._loadItemRequest(n.href,!1),E=n.closest("qti-test-part").identifier,U=n.closest("qti-assessment-section").identifier;this._testContext={...this._testContext,navPartId:E,navSectionId:U,navItemId:t,navItemLoading:!0},a?a.then(q=>{n.xmlDoc=q,requestAnimationFrame(()=>this.dispatchEvent(new CustomEvent("qti-item-connected",{bubbles:!0,composed:!0}))),this._testContext={...this._testContext,navItemLoading:!1}}).catch(q=>console.error("Failed to load item:",q)):console.info("Load item request was not handled:",n.href)}),this.addEventListener("qti-assessment-test-connected",()=>{let t=this._testContext.navItemId;t||(t=this.testElement.el.querySelector("qti-assessment-item-ref").identifier),this.dispatchEvent(new CustomEvent("qti-request-test-item",{detail:t,bubbles:!0,composed:!0}))})}_clearLoadedItems(){let e=this.testElement.el.querySelectorAll("qti-assessment-test qti-assessment-item-ref");Array.from(e).forEach(t=>{t.xmlDoc=null})}_loadItemRequest(e,t=!0){let n=new CustomEvent("qti-load-item-request",{bubbles:!0,composed:!0,detail:{href:e,promise:null,cancelPreviousRequest:t}});return this.dispatchEvent(n),n.detail.promise}}return c};var O=o=>{class c extends o{constructor(...e){super(...e),this._testContext={...this._testContext,view:"candidate"},this.addEventListener("on-test-switch-view",t=>{this._testContext={...this._testContext,view:t.detail},this._updateElementView()}),this.addEventListener("qti-assessment-test-connected",()=>{this._updateElementView()}),this.addEventListener("qti-assessment-item-connected",t=>{this._updateElementView(),this._setCorrectResponseVisibility(t.detail)})}willUpdate(e){super.willUpdate(e),e.has("_testContext")&&this._updateElementView()}_updateElementView(){if(this.testElement&&this.testElement.el){Array.from(this.testElement.el.querySelectorAll("[view]")).forEach(n=>{n.classList.toggle("show",n.getAttribute("view")===this._testContext.view)});let t=this.testElement.el.querySelector(`qti-assessment-item[identifier="${this._testContext.navItemId}"]`);t&&t.showCorrectResponse(this._testContext.view==="scorer")}}_setCorrectResponseVisibility(e){e.showCorrectResponse(this._testContext.view==="scorer")}}return c};var C=class extends m{constructor(){super();this._testContext={items:[],testOutcomeVariables:[]};this.testElement={el:null};this._updateItemInTestContext=r=>{let{identifier:e,variables:t}=r,n=this._testContext.items.find(a=>a?.identifier===e);if(!n){console.warn(`Item IDs between assessment.xml and item.xml should match: ${e} is not found!`);return}n.variables?.length===1?this._updateItemVariablesInTestContext(e,t):r.variables=[...n.variables||[]]};this.addEventListener("qti-assessment-test-connected",r=>{let e=r.detail,t=Array.from(e.querySelectorAll("qti-assessment-item-ref")).map(n=>({href:n.href,identifier:n.identifier,category:n.category,variables:[{identifier:"completionStatus",value:"not_attempted",type:"outcome"}]}));this.testElement={el:e},this._testContext={...this._testContext,items:t}}),this.addEventListener("qti-assessment-item-connected",r=>{this._updateItemInTestContext(r.detail)}),this.addEventListener("qti-outcome-changed",r=>{let e=r.composedPath()[0];this._updateItemVariablesInTestContext(e.identifier,e.variables)})}get context(){return this._testContext}set context(r){r!=null&&(this._testContext={...r},r.items?.forEach(e=>{let t=this._testContext.items.find(n=>n.identifier===e.identifier);t?t.variables=e.variables:this._testContext.items.push(e)}))}_updateItemVariablesInTestContext(r,e){this._testContext={...this._testContext,items:this._testContext.items.map(t=>t.identifier!==r?t:{...t,variables:e.map(n=>{let a=t.variables.find(E=>E.identifier===n.identifier);return a?{...a,...n}:n})})}}connectedCallback(){super.connectedCallback(),this.setAttribute("qti-test","")}};s([v(),T({context:g})],C.prototype,"_testContext",2),s([v(),T({context:S})],C.prototype,"testElement",2);var k=o=>{class c extends o{constructor(...e){super(...e),this.addEventListener("qti-register-variable",t=>{this._testContext={...this._testContext,testOutcomeVariables:[...this._testContext.testOutcomeVariables,t.detail.variable]},t.stopPropagation()}),this.addEventListener("qti-set-outcome-value",t=>{let{outcomeIdentifier:n,value:a}=t.detail;this.updateOutcomeVariable(n,a),t.stopPropagation()})}outcomeProcessing(){let e=this.querySelector("qti-outcome-processing");return e?(e?.process(),!0):!1}updateOutcomeVariable(e,t){let n=this.getOutcome(e);if(!n){console.warn(`Can not set qti-outcome-identifier: ${e}, it is not available`);return}this._testContext={...this._testContext,testOutcomeVariables:this._testContext.testOutcomeVariables.map(a=>a.identifier!==e?a:{...a,value:n.cardinality==="single"?t:[...a.value,t]})}}getOutcome(e){return this.getVariable(e)}getVariable(e){return this._testContext.testOutcomeVariables.find(t=>t.identifier===e)||null}}return c};var y=class extends R(k(D(O(C)))){render(){return l`<slot></slot>`}};y=s([h("qti-test")],y);var P={fromAttribute(o){return o==="true"},toAttribute(o){return o?"true":"false"}},u=class extends m{constructor(){super(...arguments);this.weigths=new Map}createRenderRoot(){return this}get assessmentItem(){return this.renderRoot?.querySelector("qti-assessment-item")}async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new CustomEvent("qti-assessment-item-ref-connected",{bubbles:!0,composed:!0,detail:{identifier:this.identifier,href:this.href,category:this.category}}))}render(){return l`${this.xmlDoc}`}};s([i({type:String})],u.prototype,"category",2),s([i({type:String})],u.prototype,"identifier",2),s([i({type:Boolean,converter:P})],u.prototype,"required",2),s([i({type:Boolean,converter:P})],u.prototype,"fixed",2),s([i({type:String})],u.prototype,"href",2),s([x({context:g,subscribe:!0})],u.prototype,"_testContext",2),s([i({type:Object,attribute:!1})],u.prototype,"xmlDoc",2);customElements.get("qti-assessment-item-ref")||customElements.define("qti-assessment-item-ref",u);var _={fromAttribute(o){return o==="true"},toAttribute(o){return o?"true":"false"}},p=class extends m{async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new Event("qti-assessment-section-connected",{bubbles:!0,composed:!0}))}render(){return l`<slot name="qti-rubric-block"></slot><slot></slot>`}};s([i({type:String})],p.prototype,"identifier",2),s([i({type:String})],p.prototype,"required",2),s([i({type:Boolean,converter:_})],p.prototype,"fixed",2),s([i({type:String})],p.prototype,"title",2),s([i({type:Boolean,converter:_})],p.prototype,"visible",2),s([i({type:Boolean,converter:_,attribute:"keep-together"})],p.prototype,"keepTogether",2),s([x({context:g,subscribe:!0})],p.prototype,"_testContext",2);customElements.get("qti-assessment-section")||customElements.define("qti-assessment-section",p);var b=class extends m{async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new CustomEvent("qti-assessment-test-connected",{detail:this,bubbles:!0,composed:!0}))}render(){return l` <slot></slot>`}};s([i({type:String})],b.prototype,"identifier",2),s([i({type:String})],b.prototype,"title",2),s([x({context:g,subscribe:!0})],b.prototype,"_testContext",2),b=s([h("qti-assessment-test")],b);var d=class extends m{constructor(){super(...arguments);this.identifier="";this.title="";this.class="";this.NavigationMode="nonlinear";this.submissionMode="individual"}async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new Event("qti-test-part-connected",{bubbles:!0,composed:!0}))}render(){return l` <slot></slot>`}};s([i({type:String})],d.prototype,"identifier",2),s([i({type:String})],d.prototype,"title",2),s([i({type:String})],d.prototype,"class",2),s([i({type:String,attribute:"navigation-mode"})],d.prototype,"NavigationMode",2),s([i({type:String,attribute:"submission-mode"})],d.prototype,"submissionMode",2),d=s([h("qti-test-part")],d);customElements.get("qti-test-part")||customElements.define("qti-test-part",d);export{f as a,y as b,u as c,p as d,b as e,d as f};
@@ -1 +0,0 @@
1
- import{a as h,b as f}from"./chunk-6MCYE7P5.js";import{a as u}from"./chunk-XUJ7TXHW.js";import{b as d,c}from"./chunk-5GCSZ3CH.js";import{i as p}from"./chunk-LZZB4VGC.js";import{b as m}from"./chunk-FRS2J3OS.js";import{a as n}from"./chunk-IAP2CEE7.js";function b(a){return(l,t)=>{d(a)(l,t);let e=`__${t}`;Object.defineProperty(l,t,{get(){return this[e]},set(r){let o=this[e];if(this[e]=r,o!==r){if(this._internals?.states){let i=t.toLowerCase();r?this._internals.states.add(`--${i}`):this._internals.states.delete(`--${i}`)}if(a.aria&&this._internals){let i=a.aria;r?this._internals[i]="true":this._internals[i]=null}this.requestUpdate(t,o)}},configurable:!0,enumerable:!0})}}var s=class extends p{constructor(){super();this.disabled=!0;this._internals=this.attachInternals()}_handleTestElementChange(t,e){e.el&&(this.disabled=!1)}willUpdate(t){if(t.has("_testContext")){let{items:e=[],navItemId:r}=this._testContext??{};this.itemIndex=e.findIndex(o=>o.identifier===r),this.items=e,this.view=this._testContext?.view}}_switchView(t){this.dispatchEvent(new CustomEvent("on-test-switch-view",{composed:!0,bubbles:!0,detail:t}))}_requestItem(t){this.dispatchEvent(new CustomEvent("qti-request-test-item",{composed:!0,bubbles:!0,detail:t}))}};n([b({type:Boolean,reflect:!0,aria:"ariaDisabled"})],s.prototype,"disabled",2),n([c(),m({context:h,subscribe:!0})],s.prototype,"_testContext",2),n([c(),m({context:f,subscribe:!0})],s.prototype,"_testElement",2),n([u("_testElement")],s.prototype,"_handleTestElementChange",1);export{s as a};
@@ -1,8 +0,0 @@
1
- import{b as m,c as o}from"./chunk-L4CUWIE6.js";import{a as r}from"./chunk-IMJOPCFR.js";import{a as l}from"./chunk-5GCSZ3CH.js";import{a as i,d as n}from"./chunk-LZZB4VGC.js";import{a as s}from"./chunk-IAP2CEE7.js";var t=class extends r{constructor(){super(),this._internals.role="button",this._internals.ariaLabel="Next item",this.addEventListener("click",e=>{e.preventDefault(),this.disabled||this._requestItem(this.items[this.itemIndex+1].identifier)})}willUpdate(e){super.willUpdate(e),e.has("_testContext")&&(this.disabled=!this._testElement?.el||this.itemIndex<0||this.itemIndex>=this.items.length-1)}render(){return n`<slot></slot>`}};t.styles=i`
2
- :host {
3
- ${m};
4
- }
5
- :host([disabled]) {
6
- ${o};
7
- }
8
- `,t=s([l("test-next")],t);export{t as a};
@@ -1,8 +0,0 @@
1
- import{b as o,c as m}from"./chunk-L4CUWIE6.js";import{a as r}from"./chunk-IMJOPCFR.js";import{a as n}from"./chunk-5GCSZ3CH.js";import{a as i,d as l}from"./chunk-LZZB4VGC.js";import{a as s}from"./chunk-IAP2CEE7.js";var t=class extends r{constructor(){super(),this._internals.role="button",this._internals.ariaLabel="Next item",this.addEventListener("click",e=>{e.preventDefault(),this.disabled||this._requestItem(this.items[this.itemIndex-1].identifier)})}willUpdate(e){super.willUpdate(e),e.has("_testContext")&&(this.disabled=!this._testElement?.el||this.itemIndex===0||this.itemIndex===-1)}render(){return l`<slot></slot>`}};t.styles=i`
2
- :host {
3
- ${o};
4
- }
5
- :host([disabled]) {
6
- ${m};
7
- }
8
- `,t=s([n("test-prev")],t);export{t as a};
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/lib/qti-test/components/test-component.abstract.ts","../../src/lib/decorators/prop-internal-state.ts"],"sourcesContent":["import { consume } from '@lit/context';\nimport { LitElement } from 'lit';\nimport { state } from 'lit/decorators.js';\nimport { propInternalState } from '../../decorators';\nimport type { TestElement, TestContext } from '../core/context';\nimport { testContext, testElement } from '../core/context';\nimport { watch } from '../../decorators/watch';\n\nexport abstract class TestComponent extends LitElement {\n @propInternalState({\n type: Boolean,\n reflect: true,\n aria: 'ariaDisabled' // Maps to `aria-disabled` attribute\n })\n public disabled = true;\n\n @state()\n @consume({ context: testContext, subscribe: true })\n protected _testContext?: TestContext;\n\n @state()\n @consume({ context: testElement, subscribe: true })\n protected _testElement?: TestElement;\n @watch('_testElement')\n _handleTestElementChange(_oldValue: TestElement, newValue: TestElement) {\n if (newValue.el) {\n this.disabled = false;\n }\n }\n\n protected _internals: ElementInternals;\n\n protected items;\n protected itemIndex;\n protected view;\n\n constructor() {\n super();\n this._internals = this.attachInternals();\n }\n\n protected willUpdate(changedProperties: Map<string | number | symbol, unknown>) {\n if (changedProperties.has('_testContext')) {\n const { items = [], navItemId } = this._testContext ?? {};\n this.itemIndex = items.findIndex(item => item.identifier === navItemId);\n this.items = items;\n this.view = this._testContext?.view;\n }\n }\n\n protected _switchView(view: string) {\n this.dispatchEvent(\n new CustomEvent('on-test-switch-view', {\n composed: true,\n bubbles: true,\n detail: view\n })\n );\n }\n\n protected _requestItem(identifier: string): void {\n this.dispatchEvent(\n new CustomEvent('qti-request-test-item', {\n composed: true,\n bubbles: true,\n detail: identifier\n })\n );\n }\n}\n","import type { ReactiveElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport type { PropertyDeclaration } from 'lit';\n\n// Extended decorator options\ninterface InternalStateOptions extends PropertyDeclaration {\n aria?: string; // Corresponding ARIA attribute, e.g., 'aria-disabled'\n}\n\nexport function propInternalState(options: InternalStateOptions) {\n return (protoOrDescriptor: any, name: string) => {\n // Apply the default Lit `@property` decorator\n property(options)(protoOrDescriptor, name);\n\n // Intercept the property descriptor to enhance functionality\n const key = `__${name}`; // Internal backing field\n\n Object.defineProperty(protoOrDescriptor, name, {\n get() {\n return this[key];\n },\n set(value: any) {\n const oldValue = this[key];\n this[key] = value;\n\n // Trigger updates if value changes\n if (oldValue !== value) {\n // Update internals state\n if (this._internals?.states) {\n const stateName = name.toLowerCase();\n if (value) {\n this._internals.states.add(`--${stateName}`);\n } else {\n this._internals.states.delete(`--${stateName}`);\n }\n }\n\n // Update ARIA attributes if specified\n if (options.aria && this._internals) {\n const ariaAttribute = options.aria;\n if (value) {\n this._internals[ariaAttribute] = 'true';\n } else {\n this._internals[ariaAttribute] = null;\n }\n }\n\n // Request an update\n (this as ReactiveElement).requestUpdate(name, oldValue);\n }\n },\n configurable: true,\n enumerable: true\n });\n };\n}\n"],"mappings":";;;;;;;;;;;;AAAA,SAAS,eAAe;AACxB,SAAS,kBAAkB;AAC3B,SAAS,aAAa;;;ACDtB,SAAS,gBAAgB;AAQlB,SAAS,kBAAkB,SAA+B;AAC/D,SAAO,CAAC,mBAAwB,SAAiB;AAE/C,aAAS,OAAO,EAAE,mBAAmB,IAAI;AAGzC,UAAM,MAAM,KAAK,IAAI;AAErB,WAAO,eAAe,mBAAmB,MAAM;AAAA,MAC7C,MAAM;AACJ,eAAO,KAAK,GAAG;AAAA,MACjB;AAAA,MACA,IAAI,OAAY;AACd,cAAM,WAAW,KAAK,GAAG;AACzB,aAAK,GAAG,IAAI;AAGZ,YAAI,aAAa,OAAO;AAEtB,cAAI,KAAK,YAAY,QAAQ;AAC3B,kBAAM,YAAY,KAAK,YAAY;AACnC,gBAAI,OAAO;AACT,mBAAK,WAAW,OAAO,IAAI,KAAK,SAAS,EAAE;AAAA,YAC7C,OAAO;AACL,mBAAK,WAAW,OAAO,OAAO,KAAK,SAAS,EAAE;AAAA,YAChD;AAAA,UACF;AAGA,cAAI,QAAQ,QAAQ,KAAK,YAAY;AACnC,kBAAM,gBAAgB,QAAQ;AAC9B,gBAAI,OAAO;AACT,mBAAK,WAAW,aAAa,IAAI;AAAA,YACnC,OAAO;AACL,mBAAK,WAAW,aAAa,IAAI;AAAA,YACnC;AAAA,UACF;AAGA,UAAC,KAAyB,cAAc,MAAM,QAAQ;AAAA,QACxD;AAAA,MACF;AAAA,MACA,cAAc;AAAA,MACd,YAAY;AAAA,IACd,CAAC;AAAA,EACH;AACF;;;AD/CO,IAAe,gBAAf,cAAqC,WAAW;AAAA,EA4BrD,cAAc;AACZ,UAAM;AAvBR,SAAO,WAAW;AAwBhB,SAAK,aAAa,KAAK,gBAAgB;AAAA,EACzC;AAAA,EAfA,yBAAyB,WAAwB,UAAuB;AACtE,QAAI,SAAS,IAAI;AACf,WAAK,WAAW;AAAA,IAClB;AAAA,EACF;AAAA,EAaU,WAAW,mBAA2D;AAC9E,QAAI,kBAAkB,IAAI,cAAc,GAAG;AACzC,YAAM,EAAE,QAAQ,CAAC,GAAG,UAAU,IAAI,KAAK,gBAAgB,CAAC;AACxD,WAAK,YAAY,MAAM,UAAU,UAAQ,KAAK,eAAe,SAAS;AACtE,WAAK,QAAQ;AACb,WAAK,OAAO,KAAK,cAAc;AAAA,IACjC;AAAA,EACF;AAAA,EAEU,YAAY,MAAc;AAClC,SAAK;AAAA,MACH,IAAI,YAAY,uBAAuB;AAAA,QACrC,UAAU;AAAA,QACV,SAAS;AAAA,QACT,QAAQ;AAAA,MACV,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEU,aAAa,YAA0B;AAC/C,SAAK;AAAA,MACH,IAAI,YAAY,yBAAyB;AAAA,QACvC,UAAU;AAAA,QACV,SAAS;AAAA,QACT,QAAQ;AAAA,MACV,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAvDS;AAAA,EALN,kBAAkB;AAAA,IACjB,MAAM;AAAA,IACN,SAAS;AAAA,IACT,MAAM;AAAA;AAAA,EACR,CAAC;AAAA,GALmB,cAMb;AAIG;AAAA,EAFT,MAAM;AAAA,EACN,QAAQ,EAAE,SAAS,aAAa,WAAW,KAAK,CAAC;AAAA,GAT9B,cAUV;AAIA;AAAA,EAFT,MAAM;AAAA,EACN,QAAQ,EAAE,SAAS,aAAa,WAAW,KAAK,CAAC;AAAA,GAb9B,cAcV;AAEV;AAAA,EADC,MAAM,cAAc;AAAA,GAfD,cAgBpB;","names":[]}