@citolab/qti-components 7.0.6-beta.0 → 7.0.6-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (201) hide show
  1. package/cdn/{chunk-QGKK4T2J.js → chunks/chunk-3V6LA7B3.js} +1 -1
  2. package/cdn/chunks/chunk-4UJBK6JO.js +1 -0
  3. package/cdn/chunks/chunk-4WXQYE2P.js +8 -0
  4. package/cdn/{chunk-L4TDHAKL.js → chunks/chunk-5BR5CJFH.js} +5 -5
  5. package/cdn/chunks/chunk-5GCSZ3CH.js +73 -0
  6. package/cdn/{chunk-BLKKKK6C.js → chunks/chunk-5P7CTN7Q.js} +1 -1
  7. package/cdn/{chunk-A536ZOJJ.js → chunks/chunk-6S4CDN3T.js} +1 -1
  8. package/cdn/chunks/chunk-DZCKF45D.js +5 -0
  9. package/cdn/chunks/chunk-EHK76KRT.js +1 -0
  10. package/cdn/chunks/chunk-FTKONGII.js +934 -0
  11. package/cdn/chunks/chunk-IAP2CEE7.js +1 -0
  12. package/cdn/chunks/chunk-IMJOPCFR.js +1 -0
  13. package/cdn/chunks/chunk-KWPDTFYH.js +1 -0
  14. package/cdn/{chunk-MFWSHIPH.js → chunks/chunk-L4CUWIE6.js} +1 -1
  15. package/cdn/{chunk-4DFVJE2A.js → chunks/chunk-LZZB4VGC.js} +1 -1
  16. package/cdn/{chunk-SQDSHH6N.js → chunks/chunk-MJMONWKB.js} +1 -1
  17. package/cdn/{chunk-ROXN2HIJ.js → chunks/chunk-PKT2SJQD.js} +1 -1
  18. package/cdn/chunks/chunk-QQCGUVEV.js +1 -0
  19. package/cdn/chunks/chunk-R33OODNX.js +1 -0
  20. package/cdn/chunks/chunk-RXKI3AO4.js +1 -0
  21. package/cdn/chunks/chunk-TQBDBMWL.js +5 -0
  22. package/cdn/chunks/chunk-X2KBNXRO.js +6 -0
  23. package/cdn/chunks/chunk-XUJ7TXHW.js +1 -0
  24. package/cdn/exports/expression-result.js +0 -0
  25. package/cdn/exports/interaction.interface.js +0 -0
  26. package/cdn/exports/interaction.js +1 -0
  27. package/cdn/exports/item.context.js +1 -0
  28. package/cdn/exports/qti-assessment-item.context.js +1 -0
  29. package/cdn/exports/qti-condition-expression.js +1 -0
  30. package/cdn/exports/qti-expression.js +1 -0
  31. package/cdn/exports/variables.js +0 -0
  32. package/cdn/index.global.js +7 -58
  33. package/cdn/index.js +1 -1
  34. package/cdn/qti-components/index.js +1 -1
  35. package/cdn/qti-item/core/index.js +1 -1
  36. package/cdn/qti-loader/index.js +1 -1
  37. package/cdn/qti-test/components/index.js +1 -1
  38. package/cdn/qti-test/components/styles.js +1 -1
  39. package/cdn/qti-test/components/test-component.abstract.js +1 -1
  40. package/cdn/qti-test/components/test-item-link.js +1 -1
  41. package/cdn/qti-test/components/test-next.js +1 -1
  42. package/cdn/qti-test/components/test-paging-buttons-stamp.js +1 -1
  43. package/cdn/qti-test/components/test-prev.js +1 -1
  44. package/cdn/qti-test/components/test-view.js +1 -1
  45. package/cdn/qti-test/core/index.js +1 -1
  46. package/cdn/qti-transformers/index.js +1 -1
  47. package/dist/{chunk-OO6JSYLP.js → chunks/chunk-2V6LQV2K.js} +6 -6
  48. package/dist/chunks/chunk-2V6LQV2K.js.map +1 -0
  49. package/dist/{chunk-ANLIJZBL.js → chunks/chunk-3EU75IUF.js} +4 -4
  50. package/dist/chunks/chunk-3EU75IUF.js.map +1 -0
  51. package/dist/{chunk-CNQYM52B.js → chunks/chunk-4GNVYCBN.js} +65 -7
  52. package/dist/chunks/chunk-4GNVYCBN.js.map +1 -0
  53. package/dist/{chunk-UB5K44DB.js → chunks/chunk-4O5F7WV7.js} +1 -1
  54. package/dist/chunks/chunk-4O5F7WV7.js.map +1 -0
  55. package/dist/{chunk-6SG3NMKU.js → chunks/chunk-4WVLWWYJ.js} +6 -6
  56. package/dist/chunks/chunk-4WVLWWYJ.js.map +1 -0
  57. package/dist/chunks/chunk-6JXR63MH.js +50 -0
  58. package/dist/chunks/chunk-6JXR63MH.js.map +1 -0
  59. package/dist/{chunk-4FH7P7YI.js → chunks/chunk-7QMCKYDR.js} +4 -4
  60. package/dist/chunks/chunk-7QMCKYDR.js.map +1 -0
  61. package/dist/{chunk-3TFUBCJW.js → chunks/chunk-A24F75DB.js} +4 -4
  62. package/dist/chunks/chunk-A24F75DB.js.map +1 -0
  63. package/dist/chunks/chunk-BPHQLJWE.js +102 -0
  64. package/dist/chunks/chunk-BPHQLJWE.js.map +1 -0
  65. package/dist/chunks/chunk-D3RGDWKP.js +37 -0
  66. package/dist/chunks/chunk-D3RGDWKP.js.map +1 -0
  67. package/dist/chunks/chunk-DLUJN2FW.js +22 -0
  68. package/dist/chunks/chunk-DLUJN2FW.js.map +1 -0
  69. package/dist/{chunk-UBZPSVSE.js → chunks/chunk-DU37U6PW.js} +5125 -5329
  70. package/dist/chunks/chunk-DU37U6PW.js.map +1 -0
  71. package/dist/{chunk-4YG2FPKK.js → chunks/chunk-ELDMXTUQ.js} +1 -1
  72. package/dist/chunks/chunk-ELDMXTUQ.js.map +1 -0
  73. package/dist/chunks/chunk-FV7HWK54.js +29 -0
  74. package/dist/chunks/chunk-FV7HWK54.js.map +1 -0
  75. package/dist/chunks/chunk-GSWZT6N2.js +50 -0
  76. package/dist/chunks/chunk-GSWZT6N2.js.map +1 -0
  77. package/dist/chunks/chunk-H2JE6IVU.js +15 -0
  78. package/dist/{chunk-QYN5S4EM.js → chunks/chunk-HHVRU3AJ.js} +5 -5
  79. package/dist/chunks/chunk-HHVRU3AJ.js.map +1 -0
  80. package/dist/{chunk-2CHF3TMY.js → chunks/chunk-J2SHENRN.js} +1 -1
  81. package/dist/chunks/chunk-KOEILLVS.js +8 -0
  82. package/dist/chunks/chunk-KOEILLVS.js.map +1 -0
  83. package/dist/{chunk-F7HTXGGH.js → chunks/chunk-KYAIMBP5.js} +3 -3
  84. package/dist/chunks/chunk-KYAIMBP5.js.map +1 -0
  85. package/dist/chunks/chunk-O6WEZVEM.js +43 -0
  86. package/dist/chunks/chunk-O6WEZVEM.js.map +1 -0
  87. package/dist/{chunk-F3NTI6TX.js → chunks/chunk-UFYWCLXF.js} +1 -1
  88. package/dist/chunks/chunk-UFYWCLXF.js.map +1 -0
  89. package/dist/chunks/chunk-UN2IFSGC.js +1 -0
  90. package/dist/{chunk-2OA7E3E7.js → chunks/chunk-XDMSEAYC.js} +1 -1
  91. package/dist/chunks/chunk-XDMSEAYC.js.map +1 -0
  92. package/dist/chunks/chunk-XSI6FXGD.js +19 -0
  93. package/dist/chunks/chunk-XSI6FXGD.js.map +1 -0
  94. package/dist/chunks/chunk-ZPNJ2HP5.js +71 -0
  95. package/dist/chunks/chunk-ZPNJ2HP5.js.map +1 -0
  96. package/dist/exports/expression-result.d.ts +19 -0
  97. package/dist/exports/expression-result.js +1 -0
  98. package/dist/exports/expression-result.js.map +1 -0
  99. package/dist/exports/interaction.d.ts +23 -0
  100. package/dist/exports/interaction.interface.d.ts +13 -0
  101. package/dist/exports/interaction.interface.js +1 -0
  102. package/dist/exports/interaction.interface.js.map +1 -0
  103. package/dist/exports/interaction.js +8 -0
  104. package/dist/exports/interaction.js.map +1 -0
  105. package/dist/exports/item.context.d.ts +12 -0
  106. package/dist/exports/item.context.js +8 -0
  107. package/dist/exports/item.context.js.map +1 -0
  108. package/dist/exports/qti-assessment-item.context.d.ts +10 -0
  109. package/dist/exports/qti-assessment-item.context.js +8 -0
  110. package/dist/exports/qti-assessment-item.context.js.map +1 -0
  111. package/dist/exports/qti-condition-expression.d.ts +13 -0
  112. package/dist/exports/qti-condition-expression.js +10 -0
  113. package/dist/exports/qti-condition-expression.js.map +1 -0
  114. package/dist/exports/qti-expression.d.ts +21 -0
  115. package/dist/exports/qti-expression.js +9 -0
  116. package/dist/exports/qti-expression.js.map +1 -0
  117. package/dist/exports/variables.d.ts +3 -0
  118. package/dist/exports/variables.js +1 -0
  119. package/dist/exports/variables.js.map +1 -0
  120. package/dist/index.d.ts +12 -3
  121. package/dist/index.js +35 -28
  122. package/dist/qti-components/index.d.ts +36 -9
  123. package/dist/qti-components/index.js +10 -16
  124. package/dist/qti-components-jsx.d.ts +328 -623
  125. package/dist/qti-item/core/index.js +5 -5
  126. package/dist/qti-loader/index.d.ts +7 -1
  127. package/dist/qti-loader/index.js +5 -23
  128. package/dist/qti-loader/index.js.map +1 -1
  129. package/dist/{qti-simple-choice-DxWcdKHi.d.ts → qti-response-declaration-DAeBp8HH.d.ts} +463 -613
  130. package/dist/qti-test/components/index.d.ts +8 -2
  131. package/dist/qti-test/components/index.js +12 -11
  132. package/dist/qti-test/components/styles.js +2 -2
  133. package/dist/qti-test/components/test-component.abstract.d.ts +8 -2
  134. package/dist/qti-test/components/test-component.abstract.js +5 -4
  135. package/dist/qti-test/components/test-item-link.d.ts +8 -2
  136. package/dist/qti-test/components/test-item-link.js +7 -6
  137. package/dist/qti-test/components/test-next.d.ts +8 -2
  138. package/dist/qti-test/components/test-next.js +7 -6
  139. package/dist/qti-test/components/test-paging-buttons-stamp.d.ts +8 -2
  140. package/dist/qti-test/components/test-paging-buttons-stamp.js +6 -5
  141. package/dist/qti-test/components/test-prev.d.ts +8 -2
  142. package/dist/qti-test/components/test-prev.js +7 -6
  143. package/dist/qti-test/components/test-view.d.ts +8 -2
  144. package/dist/qti-test/components/test-view.js +6 -5
  145. package/dist/qti-test/core/index.d.ts +15 -4
  146. package/dist/qti-test/core/index.js +6 -6
  147. package/dist/qti-transformers/index.js +2 -2
  148. package/dist/{test.context-DbSTxKk_.d.ts → test.context-CaENAJNk.d.ts} +4 -2
  149. package/dist/variables-cO3DzqJy.d.ts +33 -0
  150. package/dist/vscode.html-custom-data.json +208 -275
  151. package/package.json +14 -20
  152. package/cdn/chunk-4I75QSIL.js +0 -8
  153. package/cdn/chunk-5WCOPF7O.js +0 -73
  154. package/cdn/chunk-DC2R556M.js +0 -5
  155. package/cdn/chunk-GALSGMIP.js +0 -5
  156. package/cdn/chunk-KYOTSBCX.js +0 -1
  157. package/cdn/chunk-T4A5AZCI.js +0 -939
  158. package/cdn/chunk-VI2WKTN4.js +0 -1
  159. package/cdn/qti-components/index.global.js +0 -226
  160. package/cdn/qti-item/core/index.global.js +0 -149
  161. package/cdn/qti-loader/index.global.js +0 -1
  162. package/cdn/qti-test/components/index.global.js +0 -207
  163. package/cdn/qti-test/components/styles.global.js +0 -44
  164. package/cdn/qti-test/components/test-component.abstract.global.js +0 -170
  165. package/cdn/qti-test/components/test-item-link.global.js +0 -170
  166. package/cdn/qti-test/components/test-next.global.js +0 -170
  167. package/cdn/qti-test/components/test-next.spec.css +0 -1
  168. package/cdn/qti-test/components/test-next.spec.global.js +0 -64
  169. package/cdn/qti-test/components/test-next.spec.js +0 -713
  170. package/cdn/qti-test/components/test-paging-buttons-stamp.global.js +0 -207
  171. package/cdn/qti-test/components/test-prev.global.js +0 -170
  172. package/cdn/qti-test/components/test-view.global.js +0 -170
  173. package/cdn/qti-test/core/index.global.js +0 -205
  174. package/cdn/qti-transformers/index.global.js +0 -1
  175. package/dist/chunk-2OA7E3E7.js.map +0 -1
  176. package/dist/chunk-3TFUBCJW.js.map +0 -1
  177. package/dist/chunk-44VE5POH.js +0 -55
  178. package/dist/chunk-4FH7P7YI.js.map +0 -1
  179. package/dist/chunk-4YG2FPKK.js.map +0 -1
  180. package/dist/chunk-6SG3NMKU.js.map +0 -1
  181. package/dist/chunk-ANLIJZBL.js.map +0 -1
  182. package/dist/chunk-CNQYM52B.js.map +0 -1
  183. package/dist/chunk-F3NTI6TX.js.map +0 -1
  184. package/dist/chunk-F7HTXGGH.js.map +0 -1
  185. package/dist/chunk-MAC76UNI.js +0 -1
  186. package/dist/chunk-OO6JSYLP.js.map +0 -1
  187. package/dist/chunk-QYN5S4EM.js.map +0 -1
  188. package/dist/chunk-UB5K44DB.js.map +0 -1
  189. package/dist/chunk-UBZPSVSE.js.map +0 -1
  190. package/dist/qti-test/components/test-next.spec.css +0 -2481
  191. package/dist/qti-test/components/test-next.spec.css.map +0 -1
  192. package/dist/qti-test/components/test-next.spec.d.ts +0 -13
  193. package/dist/qti-test/components/test-next.spec.js +0 -45904
  194. package/dist/qti-test/components/test-next.spec.js.map +0 -1
  195. /package/cdn/{chunk-22HAPLRD.js → chunks/chunk-3GO57DNP.js} +0 -0
  196. /package/cdn/{chunk-LVW3MHTI.js → chunks/chunk-5FCXUJAG.js} +0 -0
  197. /package/cdn/{chunk-IXSX4SJX.js → chunks/chunk-6MCYE7P5.js} +0 -0
  198. /package/cdn/{chunk-M6AATWPS.js → chunks/chunk-FRS2J3OS.js} +0 -0
  199. /package/dist/{chunk-44VE5POH.js.map → chunks/chunk-H2JE6IVU.js.map} +0 -0
  200. /package/dist/{chunk-2CHF3TMY.js.map → chunks/chunk-J2SHENRN.js.map} +0 -0
  201. /package/dist/{chunk-MAC76UNI.js.map → chunks/chunk-UN2IFSGC.js.map} +0 -0
@@ -0,0 +1,102 @@
1
+ import {
2
+ itemContext
3
+ } from "./chunk-KOEILLVS.js";
4
+ import {
5
+ __decorateClass
6
+ } from "./chunk-H2JE6IVU.js";
7
+
8
+ // src/lib/exports/qti-expression.ts
9
+ import { consume } from "@lit/context";
10
+ import { css, html, LitElement } from "lit";
11
+ import { state } from "lit/decorators.js";
12
+ var QtiExpression = class extends LitElement {
13
+ constructor() {
14
+ super(...arguments);
15
+ this.getVariables = () => (
16
+ // FIXME: if this itself is multiple, this will never enter the qti-multiple switch
17
+ // See this example here: https://github.com/1EdTech/qti-examples/blob/master/qtiv3-examples/packaging/items/Example05-feedbackBlock-adaptive.xml
18
+ Array.from(this.children).map((e) => {
19
+ switch (e.tagName.toLowerCase()) {
20
+ case "qti-base-value": {
21
+ return {
22
+ baseType: e.getAttribute("base-type"),
23
+ value: e.textContent.trim(),
24
+ cardinality: "single"
25
+ };
26
+ }
27
+ case "qti-variable": {
28
+ const identifier = e.getAttribute("identifier") || "";
29
+ const variable = this.context.variables.find((v) => v.identifier === identifier) || null;
30
+ return variable;
31
+ }
32
+ case "qti-multiple": {
33
+ const multiple = e;
34
+ const values = multiple.getResult();
35
+ if (values.length > 0) {
36
+ return {
37
+ identifier: "",
38
+ baseType: values[0].baseType,
39
+ value: values.map((v) => v.value),
40
+ cardinality: "multiple",
41
+ type: "response"
42
+ };
43
+ }
44
+ return null;
45
+ }
46
+ case "qti-correct": {
47
+ const identifier = e.getAttribute("identifier") || "";
48
+ const responseVariable = this.context.variables.find((v) => v.identifier === identifier) || null;
49
+ return {
50
+ baseType: responseVariable.baseType,
51
+ value: responseVariable.correctResponse,
52
+ cardinality: responseVariable.cardinality
53
+ };
54
+ }
55
+ default: {
56
+ try {
57
+ const expression = e;
58
+ const value = expression.getResult();
59
+ return {
60
+ baseType: "integer",
61
+ value: value.toString(),
62
+ cardinality: "single"
63
+ };
64
+ } catch (error) {
65
+ console.warn("default not sufficient");
66
+ }
67
+ return null;
68
+ }
69
+ }
70
+ }).filter((v) => v !== null)
71
+ );
72
+ }
73
+ render() {
74
+ return html`<pre>${JSON.stringify(this.result, null, 2)}</pre>
75
+ <slot></slot>`;
76
+ }
77
+ calculate() {
78
+ this.result = this.getResult();
79
+ return this.result;
80
+ }
81
+ getResult() {
82
+ throw new Error("Not implemented");
83
+ }
84
+ };
85
+ // hide the slot with css
86
+ QtiExpression.styles = css`
87
+ slot {
88
+ display: none;
89
+ }
90
+ `;
91
+ __decorateClass([
92
+ state()
93
+ ], QtiExpression.prototype, "result", 2);
94
+ __decorateClass([
95
+ consume({ context: itemContext, subscribe: true }),
96
+ state()
97
+ ], QtiExpression.prototype, "context", 2);
98
+
99
+ export {
100
+ QtiExpression
101
+ };
102
+ //# sourceMappingURL=chunk-BPHQLJWE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/exports/qti-expression.ts"],"sourcesContent":["import { consume } from '@lit/context';\nimport { css, html, LitElement } from 'lit';\nimport { state } from 'lit/decorators.js';\nimport type { ResponseVariable, VariableDeclaration } from './variables';\nimport { itemContext } from './qti-assessment-item.context';\nimport type { QtiMultiple } from '../qti-components/qti-response-processing/qti-expression/qti-multiple/qti-multiple';\nimport type { ItemContext } from './item.context';\n\nexport interface QtiExpressionBase<T> {\n // get assessmentItem(): QtiAssessmentItem;\n\n // getVariables(): VariableDeclaration<number | string | (number | string)[] | null>[];\n calculate(): Readonly<T>;\n}\n\nexport abstract class QtiExpression<T> extends LitElement implements QtiExpressionBase<T> {\n @state()\n protected result: any;\n\n // hide the slot with css\n static styles = css`\n slot {\n display: none;\n }\n `;\n\n override render() {\n return html`<pre>${JSON.stringify(this.result, null, 2)}</pre>\n <slot></slot>`;\n }\n\n public calculate(): Readonly<T> {\n this.result = this.getResult();\n return this.result;\n }\n\n protected getResult(): Readonly<T> {\n throw new Error('Not implemented');\n }\n\n @consume({ context: itemContext, subscribe: true })\n @state()\n protected context?: ItemContext;\n\n getVariables = (): VariableDeclaration<number | string | (number | string)[] | null>[] =>\n // FIXME: if this itself is multiple, this will never enter the qti-multiple switch\n // See this example here: https://github.com/1EdTech/qti-examples/blob/master/qtiv3-examples/packaging/items/Example05-feedbackBlock-adaptive.xml\n\n Array.from(this.children)\n .map((e: Element) => {\n switch (e.tagName.toLowerCase()) {\n case 'qti-base-value': {\n return {\n baseType: e.getAttribute('base-type'),\n value: e.textContent.trim(),\n cardinality: 'single'\n } as ResponseVariable;\n }\n case 'qti-variable': {\n const identifier = e.getAttribute('identifier') || '';\n const variable = this.context.variables.find(v => v.identifier === identifier) || null;\n return variable;\n }\n case 'qti-multiple': {\n const multiple = e as QtiMultiple;\n const values = multiple.getResult();\n if (values.length > 0) {\n return {\n identifier: '',\n baseType: values[0].baseType,\n value: values.map(v => v.value),\n cardinality: 'multiple',\n type: 'response'\n } as ResponseVariable;\n }\n return null;\n }\n case 'qti-correct': {\n const identifier = e.getAttribute('identifier') || '';\n const responseVariable: ResponseVariable =\n this.context.variables.find(v => v.identifier === identifier) || null;\n return {\n baseType: responseVariable.baseType,\n value: responseVariable.correctResponse,\n cardinality: responseVariable.cardinality\n } as ResponseVariable;\n }\n default: {\n // added for use of qti-equal-rounded\n try {\n const expression = e as QtiExpression<number>;\n const value = expression.getResult();\n return {\n baseType: 'integer',\n value: value.toString(),\n cardinality: 'single'\n } as ResponseVariable;\n } catch (error) {\n console.warn('default not sufficient');\n }\n return null;\n }\n }\n })\n .filter(v => v !== null);\n}\n"],"mappings":";;;;;;;;AAAA,SAAS,eAAe;AACxB,SAAS,KAAK,MAAM,kBAAkB;AACtC,SAAS,aAAa;AAaf,IAAe,gBAAf,cAAwC,WAA2C;AAAA,EAAnF;AAAA;AA6BL,wBAAe;AAAA;AAAA;AAAA,MAIb,MAAM,KAAK,KAAK,QAAQ,EACrB,IAAI,CAAC,MAAe;AACnB,gBAAQ,EAAE,QAAQ,YAAY,GAAG;AAAA,UAC/B,KAAK,kBAAkB;AACrB,mBAAO;AAAA,cACL,UAAU,EAAE,aAAa,WAAW;AAAA,cACpC,OAAO,EAAE,YAAY,KAAK;AAAA,cAC1B,aAAa;AAAA,YACf;AAAA,UACF;AAAA,UACA,KAAK,gBAAgB;AACnB,kBAAM,aAAa,EAAE,aAAa,YAAY,KAAK;AACnD,kBAAM,WAAW,KAAK,QAAQ,UAAU,KAAK,OAAK,EAAE,eAAe,UAAU,KAAK;AAClF,mBAAO;AAAA,UACT;AAAA,UACA,KAAK,gBAAgB;AACnB,kBAAM,WAAW;AACjB,kBAAM,SAAS,SAAS,UAAU;AAClC,gBAAI,OAAO,SAAS,GAAG;AACrB,qBAAO;AAAA,gBACL,YAAY;AAAA,gBACZ,UAAU,OAAO,CAAC,EAAE;AAAA,gBACpB,OAAO,OAAO,IAAI,OAAK,EAAE,KAAK;AAAA,gBAC9B,aAAa;AAAA,gBACb,MAAM;AAAA,cACR;AAAA,YACF;AACA,mBAAO;AAAA,UACT;AAAA,UACA,KAAK,eAAe;AAClB,kBAAM,aAAa,EAAE,aAAa,YAAY,KAAK;AACnD,kBAAM,mBACJ,KAAK,QAAQ,UAAU,KAAK,OAAK,EAAE,eAAe,UAAU,KAAK;AACnE,mBAAO;AAAA,cACL,UAAU,iBAAiB;AAAA,cAC3B,OAAO,iBAAiB;AAAA,cACxB,aAAa,iBAAiB;AAAA,YAChC;AAAA,UACF;AAAA,UACA,SAAS;AAEP,gBAAI;AACF,oBAAM,aAAa;AACnB,oBAAM,QAAQ,WAAW,UAAU;AACnC,qBAAO;AAAA,gBACL,UAAU;AAAA,gBACV,OAAO,MAAM,SAAS;AAAA,gBACtB,aAAa;AAAA,cACf;AAAA,YACF,SAAS,OAAO;AACd,sBAAQ,KAAK,wBAAwB;AAAA,YACvC;AACA,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF,CAAC,EACA,OAAO,OAAK,MAAM,IAAI;AAAA;AAAA;AAAA,EA9ElB,SAAS;AAChB,WAAO,YAAY,KAAK,UAAU,KAAK,QAAQ,MAAM,CAAC,CAAC;AAAA;AAAA,EAEzD;AAAA,EAEO,YAAyB;AAC9B,SAAK,SAAS,KAAK,UAAU;AAC7B,WAAO,KAAK;AAAA,EACd;AAAA,EAEU,YAAyB;AACjC,UAAM,IAAI,MAAM,iBAAiB;AAAA,EACnC;AAmEF;AAAA;AA1FsB,cAKb,SAAS;AAAA;AAAA;AAAA;AAAA;AAHN;AAAA,EADT,MAAM;AAAA,GADa,cAEV;AAyBA;AAAA,EAFT,QAAQ,EAAE,SAAS,aAAa,WAAW,KAAK,CAAC;AAAA,EACjD,MAAM;AAAA,GA1Ba,cA2BV;","names":[]}
@@ -0,0 +1,37 @@
1
+ // src/lib/decorators/live-query.ts
2
+ function liveQuery(querySelector, _options) {
3
+ let observer;
4
+ return (proto, decoratedFnName) => {
5
+ const { connectedCallback, disconnectedCallback } = proto;
6
+ proto.connectedCallback = function() {
7
+ connectedCallback.call(this);
8
+ const callback = (mutationList) => {
9
+ const elementsToWatch = Array.from(this.querySelectorAll(querySelector)).concat(
10
+ Array.from(this.shadowRoot?.querySelectorAll(querySelector) || [])
11
+ );
12
+ for (const mutation of mutationList) {
13
+ const addedNodes = Array.from(mutation.addedNodes).map((e) => e);
14
+ const removedNodes = Array.from(mutation.addedNodes).map((e) => e);
15
+ if (mutation.type === "childList" && addedNodes.find((n) => elementsToWatch.includes(n))) {
16
+ this[decoratedFnName](addedNodes, removedNodes);
17
+ }
18
+ }
19
+ };
20
+ observer = new MutationObserver(callback);
21
+ observer.observe(this, { childList: true, subtree: true });
22
+ const elementsAdded = Array.from(this.querySelectorAll(querySelector)).concat(
23
+ Array.from(this.shadowRoot?.querySelectorAll(querySelector) || [])
24
+ );
25
+ this[decoratedFnName](Array.from(elementsAdded), []);
26
+ };
27
+ proto.disconnectedCallback = function() {
28
+ disconnectedCallback.call(this);
29
+ observer.disconnect();
30
+ };
31
+ };
32
+ }
33
+
34
+ export {
35
+ liveQuery
36
+ };
37
+ //# sourceMappingURL=chunk-D3RGDWKP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/decorators/live-query.ts"],"sourcesContent":["// @watch decorator\n//\n// Runs when an observed property changes, e.g. @property or @state, but before the component updates.\n//\n// To wait for an update to complete after a change occurs, use `await this.updateComplete` in the handler. To start\n// watching after the initial update/render, use `{ waitUntilFirstUpdate: true }` or `this.hasUpdated` in the handler.\n//\n// Usage:\n//\n// @watch('propName')\n// handlePropChange(oldValue, newValue) {\n// ...\n// }\n\nimport type { LitElement } from 'lit';\n\ntype UpdateHandler = (prev?: unknown, next?: unknown) => void;\n\ntype NonUndefined<A> = A extends undefined ? never : A;\n\ntype UpdateHandlerFunctionKeys<T extends object> = {\n [K in keyof T]-?: NonUndefined<T[K]> extends UpdateHandler ? K : never;\n}[keyof T];\n\ninterface LiveQueryOptions {\n /**\n * If true, will only start watching after the initial update/render\n */\n}\n\nexport function liveQuery(querySelector: string, _options?: LiveQueryOptions) {\n let observer: MutationObserver;\n // const resolvedOptions: Required<LiveQueryOptions> = {\n // ...options\n // };\n return <ElemClass extends LitElement>(\n proto: ElemClass,\n decoratedFnName: UpdateHandlerFunctionKeys<ElemClass>\n ): void => {\n const { connectedCallback, disconnectedCallback } = proto;\n\n proto.connectedCallback = function (this: ElemClass) {\n connectedCallback.call(this);\n const callback = (mutationList: MutationRecord[]) => {\n const elementsToWatch = Array.from(this.querySelectorAll(querySelector)).concat(\n Array.from(this.shadowRoot?.querySelectorAll(querySelector) || [])\n );\n for (const mutation of mutationList) {\n const addedNodes = Array.from(mutation.addedNodes).map(e => e as Element);\n const removedNodes = Array.from(mutation.addedNodes).map(e => e as Element);\n if (mutation.type === 'childList' && addedNodes.find(n => elementsToWatch.includes(n))) {\n (this[decoratedFnName] as unknown as UpdateHandler)(addedNodes, removedNodes);\n }\n }\n };\n observer = new MutationObserver(callback);\n observer.observe(this, { childList: true, subtree: true });\n\n const elementsAdded = Array.from(this.querySelectorAll(querySelector)).concat(\n Array.from(this.shadowRoot?.querySelectorAll(querySelector) || [])\n );\n (this[decoratedFnName] as unknown as UpdateHandler)(Array.from(elementsAdded), []);\n };\n\n proto.disconnectedCallback = function (this: ElemClass) {\n disconnectedCallback.call(this);\n observer.disconnect();\n };\n };\n}\n"],"mappings":";AA8BO,SAAS,UAAU,eAAuB,UAA6B;AAC5E,MAAI;AAIJ,SAAO,CACL,OACA,oBACS;AACT,UAAM,EAAE,mBAAmB,qBAAqB,IAAI;AAEpD,UAAM,oBAAoB,WAA2B;AACnD,wBAAkB,KAAK,IAAI;AAC3B,YAAM,WAAW,CAAC,iBAAmC;AACnD,cAAM,kBAAkB,MAAM,KAAK,KAAK,iBAAiB,aAAa,CAAC,EAAE;AAAA,UACvE,MAAM,KAAK,KAAK,YAAY,iBAAiB,aAAa,KAAK,CAAC,CAAC;AAAA,QACnE;AACA,mBAAW,YAAY,cAAc;AACnC,gBAAM,aAAa,MAAM,KAAK,SAAS,UAAU,EAAE,IAAI,OAAK,CAAY;AACxE,gBAAM,eAAe,MAAM,KAAK,SAAS,UAAU,EAAE,IAAI,OAAK,CAAY;AAC1E,cAAI,SAAS,SAAS,eAAe,WAAW,KAAK,OAAK,gBAAgB,SAAS,CAAC,CAAC,GAAG;AACtF,YAAC,KAAK,eAAe,EAA+B,YAAY,YAAY;AAAA,UAC9E;AAAA,QACF;AAAA,MACF;AACA,iBAAW,IAAI,iBAAiB,QAAQ;AACxC,eAAS,QAAQ,MAAM,EAAE,WAAW,MAAM,SAAS,KAAK,CAAC;AAEzD,YAAM,gBAAgB,MAAM,KAAK,KAAK,iBAAiB,aAAa,CAAC,EAAE;AAAA,QACrE,MAAM,KAAK,KAAK,YAAY,iBAAiB,aAAa,KAAK,CAAC,CAAC;AAAA,MACnE;AACA,MAAC,KAAK,eAAe,EAA+B,MAAM,KAAK,aAAa,GAAG,CAAC,CAAC;AAAA,IACnF;AAEA,UAAM,uBAAuB,WAA2B;AACtD,2BAAqB,KAAK,IAAI;AAC9B,eAAS,WAAW;AAAA,IACtB;AAAA,EACF;AACF;","names":[]}
@@ -0,0 +1,22 @@
1
+ // src/lib/exports/item.context.ts
2
+ var itemContextVariables = [
3
+ {
4
+ identifier: "completionStatus",
5
+ cardinality: "single",
6
+ baseType: "string",
7
+ value: "unknown",
8
+ type: "outcome"
9
+ },
10
+ {
11
+ identifier: "numAttempts",
12
+ cardinality: "single",
13
+ baseType: "integer",
14
+ value: "0",
15
+ type: "response"
16
+ }
17
+ ];
18
+
19
+ export {
20
+ itemContextVariables
21
+ };
22
+ //# sourceMappingURL=chunk-DLUJN2FW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/exports/item.context.ts"],"sourcesContent":["import type { VariableDeclaration } from './variables';\n\nexport interface ItemContext {\n href?: string;\n identifier: string;\n variables: ReadonlyArray<VariableDeclaration<string | string[] | null>>;\n}\n\nexport const itemContextVariables = [\n {\n identifier: 'completionStatus',\n cardinality: 'single',\n baseType: 'string',\n value: 'unknown',\n type: 'outcome'\n },\n {\n identifier: 'numAttempts',\n cardinality: 'single',\n baseType: 'integer',\n value: '0',\n type: 'response'\n }\n] as VariableDeclaration<string | string[]>[];\n"],"mappings":";AAQO,IAAM,uBAAuB;AAAA,EAClC;AAAA,IACE,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,UAAU;AAAA,IACV,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,UAAU;AAAA,IACV,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AACF;","names":[]}