@qti-components/processing 1.3.1 → 1.3.3
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.
- package/dist/components/index.d.ts +18 -0
- package/dist/components/index.js +18 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/qti-and/qti-and.d.ts +8 -0
- package/dist/components/qti-and/qti-and.js +8 -0
- package/dist/components/qti-and/qti-and.js.map +1 -1
- package/dist/components/qti-any-n/qti-any-n.d.ts +15 -0
- package/dist/components/qti-any-n/qti-any-n.js +61 -0
- package/dist/components/qti-any-n/qti-any-n.js.map +1 -0
- package/dist/components/qti-container-size/qti-container-size.d.ts +5 -5
- package/dist/components/qti-container-size/qti-container-size.js +5 -5
- package/dist/components/qti-container-size/qti-container-size.js.map +1 -1
- package/dist/components/qti-correct/qti-correct.d.ts +8 -0
- package/dist/components/qti-correct/qti-correct.js +8 -0
- package/dist/components/qti-correct/qti-correct.js.map +1 -1
- package/dist/components/qti-default/qti-default.d.ts +5 -5
- package/dist/components/qti-default/qti-default.js +5 -5
- package/dist/components/qti-default/qti-default.js.map +1 -1
- package/dist/components/qti-delete/qti-delete.d.ts +8 -0
- package/dist/components/qti-delete/qti-delete.js +8 -0
- package/dist/components/qti-delete/qti-delete.js.map +1 -1
- package/dist/components/qti-divide/qti-divide.d.ts +13 -0
- package/dist/components/qti-divide/qti-divide.js +50 -0
- package/dist/components/qti-divide/qti-divide.js.map +1 -0
- package/dist/components/qti-duration-gte/qti-duration-gte.d.ts +5 -0
- package/dist/components/qti-duration-gte/qti-duration-gte.js +45 -0
- package/dist/components/qti-duration-gte/qti-duration-gte.js.map +1 -0
- package/dist/components/qti-duration-lt/qti-duration-lt.d.ts +13 -0
- package/dist/components/qti-duration-lt/qti-duration-lt.js +53 -0
- package/dist/components/qti-duration-lt/qti-duration-lt.js.map +1 -0
- package/dist/components/qti-equal/qti-equal.d.ts +9 -0
- package/dist/components/qti-equal/qti-equal.js +15 -0
- package/dist/components/qti-equal/qti-equal.js.map +1 -1
- package/dist/components/qti-equal-rounded/qti-equal-rounded.d.ts +9 -0
- package/dist/components/qti-equal-rounded/qti-equal-rounded.js +9 -0
- package/dist/components/qti-equal-rounded/qti-equal-rounded.js.map +1 -1
- package/dist/components/qti-field-value/qti-field-value.d.ts +8 -0
- package/dist/components/qti-field-value/qti-field-value.js +8 -0
- package/dist/components/qti-field-value/qti-field-value.js.map +1 -1
- package/dist/components/qti-index/qti-index.d.ts +8 -0
- package/dist/components/qti-index/qti-index.js +8 -0
- package/dist/components/qti-index/qti-index.js.map +1 -1
- package/dist/components/qti-inside/qti-inside.d.ts +7 -0
- package/dist/components/qti-inside/qti-inside.js +141 -0
- package/dist/components/qti-inside/qti-inside.js.map +1 -0
- package/dist/components/qti-integer-divide/qti-integer-divide.d.ts +13 -0
- package/dist/components/qti-integer-divide/qti-integer-divide.js +48 -0
- package/dist/components/qti-integer-divide/qti-integer-divide.js.map +1 -0
- package/dist/components/qti-integer-modulus/qti-integer-modulus.d.ts +13 -0
- package/dist/components/qti-integer-modulus/qti-integer-modulus.js +48 -0
- package/dist/components/qti-integer-modulus/qti-integer-modulus.js.map +1 -0
- package/dist/components/qti-integer-to-float/qti-integer-to-float.d.ts +12 -0
- package/dist/components/qti-integer-to-float/qti-integer-to-float.js +38 -0
- package/dist/components/qti-integer-to-float/qti-integer-to-float.js.map +1 -0
- package/dist/components/qti-is-null/qti-is-null.d.ts +8 -0
- package/dist/components/qti-is-null/qti-is-null.js +8 -2
- package/dist/components/qti-is-null/qti-is-null.js.map +1 -1
- package/dist/components/qti-lcm/qti-lcm.d.ts +5 -0
- package/dist/components/qti-lcm/qti-lcm.js +71 -0
- package/dist/components/qti-lcm/qti-lcm.js.map +1 -0
- package/dist/components/qti-map-response/qti-map-response.d.ts +8 -0
- package/dist/components/qti-map-response/qti-map-response.js +8 -0
- package/dist/components/qti-map-response/qti-map-response.js.map +1 -1
- package/dist/components/qti-match/qti-match.d.ts +8 -0
- package/dist/components/qti-match/qti-match.js +8 -0
- package/dist/components/qti-match/qti-match.js.map +1 -1
- package/dist/components/qti-max/qti-max.d.ts +13 -0
- package/dist/components/qti-max/qti-max.js +46 -0
- package/dist/components/qti-max/qti-max.js.map +1 -0
- package/dist/components/qti-min/qti-min.d.ts +13 -0
- package/dist/components/qti-min/qti-min.js +46 -0
- package/dist/components/qti-min/qti-min.js.map +1 -0
- package/dist/components/qti-not/qti-not.d.ts +8 -0
- package/dist/components/qti-not/qti-not.js +8 -0
- package/dist/components/qti-not/qti-not.js.map +1 -1
- package/dist/components/qti-or/qti-or.d.ts +8 -0
- package/dist/components/qti-or/qti-or.js +8 -0
- package/dist/components/qti-or/qti-or.js.map +1 -1
- package/dist/components/qti-pattern-match/qti-pattern-match.d.ts +13 -0
- package/dist/components/qti-pattern-match/qti-pattern-match.js +53 -0
- package/dist/components/qti-pattern-match/qti-pattern-match.js.map +1 -0
- package/dist/components/qti-product/qti-product.d.ts +8 -0
- package/dist/components/qti-product/qti-product.js +8 -0
- package/dist/components/qti-product/qti-product.js.map +1 -1
- package/dist/components/qti-repeat/qti-repeat.d.ts +15 -0
- package/dist/components/qti-repeat/qti-repeat.js +113 -0
- package/dist/components/qti-repeat/qti-repeat.js.map +1 -0
- package/dist/components/qti-round/qti-round.d.ts +4 -5
- package/dist/components/qti-round/qti-round.js +4 -5
- package/dist/components/qti-round/qti-round.js.map +1 -1
- package/dist/components/qti-set-correct-response/qti-set-correct-response.d.ts +24 -0
- package/dist/components/qti-set-correct-response/qti-set-correct-response.js +77 -0
- package/dist/components/qti-set-correct-response/qti-set-correct-response.js.map +1 -0
- package/dist/components/qti-set-template-value/qti-set-template-value.d.ts +24 -0
- package/dist/components/qti-set-template-value/qti-set-template-value.js +81 -0
- package/dist/components/qti-set-template-value/qti-set-template-value.js.map +1 -0
- package/dist/components/qti-stats-operator/qti-stats-operator.d.ts +15 -0
- package/dist/components/qti-stats-operator/qti-stats-operator.js +78 -0
- package/dist/components/qti-stats-operator/qti-stats-operator.js.map +1 -0
- package/dist/components/qti-substring/qti-substring.d.ts +13 -0
- package/dist/components/qti-substring/qti-substring.js +51 -0
- package/dist/components/qti-substring/qti-substring.js.map +1 -0
- package/dist/components/qti-subtract/qti-subtract.d.ts +8 -0
- package/dist/components/qti-subtract/qti-subtract.js +8 -0
- package/dist/components/qti-subtract/qti-subtract.js.map +1 -1
- package/dist/components/qti-sum/qti-sum.d.ts +8 -0
- package/dist/components/qti-sum/qti-sum.js +8 -0
- package/dist/components/qti-sum/qti-sum.js.map +1 -1
- package/dist/components/qti-truncate/qti-truncate.d.ts +12 -0
- package/dist/components/qti-truncate/qti-truncate.js +38 -0
- package/dist/components/qti-truncate/qti-truncate.js.map +1 -0
- package/package.json +4 -4
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export * from './qti-and/qti-and';
|
|
2
|
+
export * from './qti-any-n/qti-any-n';
|
|
2
3
|
export * from './qti-basevalue/qti-basevalue';
|
|
3
4
|
export * from './qti-container-size/qti-container-size';
|
|
4
5
|
export * from './qti-contains/qti-contains';
|
|
@@ -8,9 +9,17 @@ export * from './qti-equal-rounded/qti-equal-rounded';
|
|
|
8
9
|
export * from './qti-round/qti-round';
|
|
9
10
|
export * from './qti-round-to/qti-round-to';
|
|
10
11
|
export * from './qti-equal/qti-equal';
|
|
12
|
+
export * from './qti-divide/qti-divide';
|
|
13
|
+
export * from './qti-duration-gte/qti-duration-gte';
|
|
14
|
+
export * from './qti-duration-lt/qti-duration-lt';
|
|
11
15
|
export * from './qti-gcd/qti.gcd';
|
|
12
16
|
export * from './qti-gt/qti-gt';
|
|
13
17
|
export * from './qti-gte/qti-gte';
|
|
18
|
+
export * from './qti-inside/qti-inside';
|
|
19
|
+
export * from './qti-integer-divide/qti-integer-divide';
|
|
20
|
+
export * from './qti-integer-modulus/qti-integer-modulus';
|
|
21
|
+
export * from './qti-integer-to-float/qti-integer-to-float';
|
|
22
|
+
export * from './qti-lcm/qti-lcm';
|
|
14
23
|
export * from './qti-null/qti-null';
|
|
15
24
|
export * from './qti-is-null/qti-is-null';
|
|
16
25
|
export * from './qti-field-value/qti-field-value';
|
|
@@ -20,17 +29,26 @@ export * from './qti-map-response/qti-map-response';
|
|
|
20
29
|
export * from './qti-map-response-point/qti-map-response-point';
|
|
21
30
|
export * from './qti-math-operator/qti-math-operator';
|
|
22
31
|
export * from './qti-match/qti-match';
|
|
32
|
+
export * from './qti-max/qti-max';
|
|
23
33
|
export * from './qti-member/qti-member';
|
|
34
|
+
export * from './qti-min/qti-min';
|
|
24
35
|
export * from './qti-multiple/qti-multiple';
|
|
25
36
|
export * from './qti-not/qti-not';
|
|
26
37
|
export * from './qti-or/qti-or';
|
|
27
38
|
export * from './qti-ordered/qti-ordered';
|
|
28
39
|
export * from './qti-power/qti-power';
|
|
40
|
+
export * from './qti-pattern-match/qti-pattern-match';
|
|
29
41
|
export * from './qti-printed-variable/qti-printed-variable';
|
|
30
42
|
export * from './qti-product/qti-product';
|
|
43
|
+
export * from './qti-repeat/qti-repeat';
|
|
44
|
+
export * from './qti-set-correct-response/qti-set-correct-response';
|
|
45
|
+
export * from './qti-set-template-value/qti-set-template-value';
|
|
46
|
+
export * from './qti-stats-operator/qti-stats-operator';
|
|
31
47
|
export * from './qti-subtract';
|
|
48
|
+
export * from './qti-substring/qti-substring';
|
|
32
49
|
export * from './qti-string-match/qti-string-match';
|
|
33
50
|
export * from './qti-sum/qti-sum';
|
|
51
|
+
export * from './qti-truncate/qti-truncate';
|
|
34
52
|
export * from './qti-variable/qti-variable';
|
|
35
53
|
export * from './qti-random-integer/qti-random-integer';
|
|
36
54
|
export * from './qti-random/qti-random';
|
package/dist/components/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export * from './qti-and/qti-and';
|
|
2
|
+
export * from './qti-any-n/qti-any-n';
|
|
2
3
|
export * from './qti-basevalue/qti-basevalue';
|
|
3
4
|
export * from './qti-container-size/qti-container-size';
|
|
4
5
|
export * from './qti-contains/qti-contains';
|
|
@@ -8,9 +9,17 @@ export * from './qti-equal-rounded/qti-equal-rounded';
|
|
|
8
9
|
export * from './qti-round/qti-round';
|
|
9
10
|
export * from './qti-round-to/qti-round-to';
|
|
10
11
|
export * from './qti-equal/qti-equal';
|
|
12
|
+
export * from './qti-divide/qti-divide';
|
|
13
|
+
export * from './qti-duration-gte/qti-duration-gte';
|
|
14
|
+
export * from './qti-duration-lt/qti-duration-lt';
|
|
11
15
|
export * from './qti-gcd/qti.gcd';
|
|
12
16
|
export * from './qti-gt/qti-gt';
|
|
13
17
|
export * from './qti-gte/qti-gte';
|
|
18
|
+
export * from './qti-inside/qti-inside';
|
|
19
|
+
export * from './qti-integer-divide/qti-integer-divide';
|
|
20
|
+
export * from './qti-integer-modulus/qti-integer-modulus';
|
|
21
|
+
export * from './qti-integer-to-float/qti-integer-to-float';
|
|
22
|
+
export * from './qti-lcm/qti-lcm';
|
|
14
23
|
export * from './qti-null/qti-null';
|
|
15
24
|
export * from './qti-is-null/qti-is-null';
|
|
16
25
|
export * from './qti-field-value/qti-field-value';
|
|
@@ -20,17 +29,26 @@ export * from './qti-map-response/qti-map-response';
|
|
|
20
29
|
export * from './qti-map-response-point/qti-map-response-point';
|
|
21
30
|
export * from './qti-math-operator/qti-math-operator';
|
|
22
31
|
export * from './qti-match/qti-match';
|
|
32
|
+
export * from './qti-max/qti-max';
|
|
23
33
|
export * from './qti-member/qti-member';
|
|
34
|
+
export * from './qti-min/qti-min';
|
|
24
35
|
export * from './qti-multiple/qti-multiple';
|
|
25
36
|
export * from './qti-not/qti-not';
|
|
26
37
|
export * from './qti-or/qti-or';
|
|
27
38
|
export * from './qti-ordered/qti-ordered';
|
|
28
39
|
export * from './qti-power/qti-power';
|
|
40
|
+
export * from './qti-pattern-match/qti-pattern-match';
|
|
29
41
|
export * from './qti-printed-variable/qti-printed-variable';
|
|
30
42
|
export * from './qti-product/qti-product';
|
|
43
|
+
export * from './qti-repeat/qti-repeat';
|
|
44
|
+
export * from './qti-set-correct-response/qti-set-correct-response';
|
|
45
|
+
export * from './qti-set-template-value/qti-set-template-value';
|
|
46
|
+
export * from './qti-stats-operator/qti-stats-operator';
|
|
31
47
|
export * from './qti-subtract';
|
|
48
|
+
export * from './qti-substring/qti-substring';
|
|
32
49
|
export * from './qti-string-match/qti-string-match';
|
|
33
50
|
export * from './qti-sum/qti-sum';
|
|
51
|
+
export * from './qti-truncate/qti-truncate';
|
|
34
52
|
export * from './qti-variable/qti-variable';
|
|
35
53
|
export * from './qti-random-integer/qti-random-integer';
|
|
36
54
|
export * from './qti-random/qti-random';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,+BAA+B,CAAC;AAE9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uCAAuC,CAAC;AACtD,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAE9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uCAAuC,CAAC;AACtD,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qCAAqC,CAAC;AACpD,cAAc,mCAAmC,CAAC;AAElD,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yCAAyC,CAAC;AACxD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qCAAqC,CAAC;AACpD,cAAc,iDAAiD,CAAC;AAEhE,cAAc,uCAAuC,CAAC;AACtD,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,uCAAuC,CAAC;AACtD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,qDAAqD,CAAC;AACpE,cAAc,iDAAiD,CAAC;AAChE,cAAc,yCAAyC,CAAC;AACxD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qCAAqC,CAAC;AACpD,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yCAAyC,CAAC;AACxD,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,kCAAkC;AAElC,6CAA6C;AAC7C,uDAAuD;AAEvD,oCAAoC;AACpC,8CAA8C","sourcesContent":["export * from './qti-and/qti-and';\nexport * from './qti-any-n/qti-any-n';\nexport * from './qti-basevalue/qti-basevalue';\n\nexport * from './qti-container-size/qti-container-size';\nexport * from './qti-contains/qti-contains';\nexport * from './qti-correct/qti-correct';\nexport * from './qti-default/qti-default';\nexport * from './qti-equal-rounded/qti-equal-rounded';\nexport * from './qti-round/qti-round';\nexport * from './qti-round-to/qti-round-to';\nexport * from './qti-equal/qti-equal';\nexport * from './qti-divide/qti-divide';\nexport * from './qti-duration-gte/qti-duration-gte';\nexport * from './qti-duration-lt/qti-duration-lt';\n\nexport * from './qti-gcd/qti.gcd';\nexport * from './qti-gt/qti-gt';\nexport * from './qti-gte/qti-gte';\nexport * from './qti-inside/qti-inside';\nexport * from './qti-integer-divide/qti-integer-divide';\nexport * from './qti-integer-modulus/qti-integer-modulus';\nexport * from './qti-integer-to-float/qti-integer-to-float';\nexport * from './qti-lcm/qti-lcm';\nexport * from './qti-null/qti-null';\nexport * from './qti-is-null/qti-is-null';\nexport * from './qti-field-value/qti-field-value';\nexport * from './qti-lt/qti-lt';\nexport * from './qti-lte/qti-lte';\nexport * from './qti-map-response/qti-map-response';\nexport * from './qti-map-response-point/qti-map-response-point';\n\nexport * from './qti-math-operator/qti-math-operator';\nexport * from './qti-match/qti-match';\nexport * from './qti-max/qti-max';\nexport * from './qti-member/qti-member';\nexport * from './qti-min/qti-min';\nexport * from './qti-multiple/qti-multiple';\nexport * from './qti-not/qti-not';\nexport * from './qti-or/qti-or';\nexport * from './qti-ordered/qti-ordered';\nexport * from './qti-power/qti-power';\nexport * from './qti-pattern-match/qti-pattern-match';\nexport * from './qti-printed-variable/qti-printed-variable';\nexport * from './qti-product/qti-product';\nexport * from './qti-repeat/qti-repeat';\nexport * from './qti-set-correct-response/qti-set-correct-response';\nexport * from './qti-set-template-value/qti-set-template-value';\nexport * from './qti-stats-operator/qti-stats-operator';\nexport * from './qti-subtract';\nexport * from './qti-substring/qti-substring';\nexport * from './qti-string-match/qti-string-match';\nexport * from './qti-sum/qti-sum';\nexport * from './qti-truncate/qti-truncate';\nexport * from './qti-variable/qti-variable';\nexport * from './qti-random-integer/qti-random-integer';\nexport * from './qti-random/qti-random';\nexport * from './qti-delete/qti-delete';\nexport * from './qti-index/qti-index';\n// FIXME are internal and abstract\n\n// export * from './qti-mapping/qti-mapping';\n// export * from './qti-area-mapping/qti-area-mapping';\n\n// export * from './qti-expression';\n// export * from './qti-condition-expression';\n"]}
|
|
@@ -5,6 +5,14 @@ declare const QtiAnd_base: {
|
|
|
5
5
|
calculateChildren(children: Array<MockQtiExpression<any>>): boolean;
|
|
6
6
|
};
|
|
7
7
|
} & Constructor<QtiConditionExpression>;
|
|
8
|
+
/**
|
|
9
|
+
* @summary The qti-and operator evaluates multiple boolean expressions.
|
|
10
|
+
* @documentation https://www.imsglobal.org/spec/qti/v3p0/info/index.html#and
|
|
11
|
+
*
|
|
12
|
+
* Takes 1 or more sub-expressions with base-type boolean and single cardinality.
|
|
13
|
+
* Returns true if all sub-expressions are true, false if any are false.
|
|
14
|
+
* Special cases: Returns NULL if any sub-expression is NULL and all others are true.
|
|
15
|
+
*/
|
|
8
16
|
export declare class QtiAnd extends QtiAnd_base {
|
|
9
17
|
calculate(): boolean;
|
|
10
18
|
}
|
|
@@ -6,6 +6,14 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
6
6
|
};
|
|
7
7
|
import { customElement } from 'lit/decorators.js';
|
|
8
8
|
import { QtiConditionExpression } from '@qti-components/base';
|
|
9
|
+
/**
|
|
10
|
+
* @summary The qti-and operator evaluates multiple boolean expressions.
|
|
11
|
+
* @documentation https://www.imsglobal.org/spec/qti/v3p0/info/index.html#and
|
|
12
|
+
*
|
|
13
|
+
* Takes 1 or more sub-expressions with base-type boolean and single cardinality.
|
|
14
|
+
* Returns true if all sub-expressions are true, false if any are false.
|
|
15
|
+
* Special cases: Returns NULL if any sub-expression is NULL and all others are true.
|
|
16
|
+
*/
|
|
9
17
|
let QtiAnd = class QtiAnd extends qtiAndMixin(QtiConditionExpression) {
|
|
10
18
|
calculate() {
|
|
11
19
|
return this.calculateChildren(Array.from(this.children));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qti-and.js","sourceRoot":"","sources":["../../../src/components/qti-and/qti-and.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"qti-and.js","sourceRoot":"","sources":["../../../src/components/qti-and/qti-and.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAM9D;;;;;;;GAOG;AAEI,IAAM,MAAM,GAAZ,MAAM,MAAO,SAAQ,WAAW,CAAC,sBAAwE,CAAC;IAC/F,SAAS;QACvB,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAA2C,CAAC,CAAC,CAAC;IAC9F,CAAC;CACF,CAAA;AAJY,MAAM;IADlB,aAAa,CAAC,SAAS,CAAC;GACZ,MAAM,CAIlB;;AAID,MAAM,UAAU,WAAW,CAAgC,IAAW;IACpE,OAAO,MAAM,UAAW,SAAQ,IAAI;QAC3B,iBAAiB,CAAC,QAAuC;YAC9D,uEAAuE;YACvE,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gBAC9B,MAAM,SAAS,GAAG,CAA2B,CAAC;gBAC9C,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;oBACzB,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;oBAClE,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC;gBACpC,IAAI,GAAG,GAAG,KAAK,CAAC;gBAChB,kEAAkE;gBAClE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAC9B,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;wBACrB,GAAG,GAAG,IAAI,CAAC;oBACb,CAAC;yBAAM,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;wBAC7B,GAAG,GAAG,KAAK,CAAC;oBACd,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;wBAC5D,OAAO,IAAI,CAAC;oBACd,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;wBAC/B,GAAG,GAAG,KAAK,CAAC;oBACd,CAAC;gBACH,CAAC;gBACD,OAAO,GAAG,CAAC;YACb,CAAC,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;gBACtB,OAAO,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC;YACrC,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["import { customElement } from 'lit/decorators.js';\n\nimport { QtiConditionExpression } from '@qti-components/base';\n\nimport type { QtiExpression } from '@qti-components/base';\n\ntype Constructor<T> = new (...args: any[]) => T;\n\n/**\n * @summary The qti-and operator evaluates multiple boolean expressions.\n * @documentation https://www.imsglobal.org/spec/qti/v3p0/info/index.html#and\n *\n * Takes 1 or more sub-expressions with base-type boolean and single cardinality.\n * Returns true if all sub-expressions are true, false if any are false.\n * Special cases: Returns NULL if any sub-expression is NULL and all others are true.\n */\n@customElement('qti-and')\nexport class QtiAnd extends qtiAndMixin(QtiConditionExpression as unknown as Constructor<QtiConditionExpression>) {\n public override calculate() {\n return this.calculateChildren(Array.from(this.children as unknown as QtiExpression<any>[]));\n }\n}\n\ntype MockQtiExpression<T> = { calculate: () => T };\ntype MockConstructor = new (...args: any[]) => {};\nexport function qtiAndMixin<TBase extends MockConstructor>(Base: TBase) {\n return class MockQtiAnd extends Base {\n public calculateChildren(children: Array<MockQtiExpression<any>>) {\n // children can be a mix of qti-expression and qti-condition-expression\n const values = children.map(c => {\n const condition = c as MockQtiExpression<any>;\n if (!condition.calculate) {\n console.error(\"Element doesn't implement QtiConditionExpression\");\n return null;\n }\n const value = condition.calculate();\n let val = false;\n // convert string value to boolean and return null if not possible\n if (typeof value === 'string') {\n if (value === 'true') {\n val = true;\n } else if (value === 'false') {\n val = false;\n } else {\n console.error('unexpected val in qti-or, expected boolean');\n return null;\n }\n } else {\n if (typeof value === 'boolean') {\n val = value;\n }\n }\n return val;\n });\n return values.every(e => {\n return typeof e === 'boolean' && e;\n });\n }\n };\n}\n"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { QtiExpression } from '@qti-components/base';
|
|
2
|
+
/**
|
|
3
|
+
* @summary The qti-any-N operator checks if a specific range of expressions are true.
|
|
4
|
+
* @documentation https://www.imsglobal.org/spec/qti/v3p0/info/index.html#anyN
|
|
5
|
+
*
|
|
6
|
+
* Takes 1 or more sub-expressions with base-type boolean and single cardinality.
|
|
7
|
+
* Attributes 'min' and 'max' define the required range of true values.
|
|
8
|
+
* Returns true if true count is within [min, max], false if outside this range.
|
|
9
|
+
* Special cases: Returns NULL if validity cannot be determined due to NULL arguments.
|
|
10
|
+
*/
|
|
11
|
+
export declare class QtiAnyN extends QtiExpression<boolean | null> {
|
|
12
|
+
min: number;
|
|
13
|
+
max: number;
|
|
14
|
+
getResult(): boolean | null;
|
|
15
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { property } from 'lit/decorators.js';
|
|
8
|
+
import { QtiExpression } from '@qti-components/base';
|
|
9
|
+
/**
|
|
10
|
+
* @summary The qti-any-N operator checks if a specific range of expressions are true.
|
|
11
|
+
* @documentation https://www.imsglobal.org/spec/qti/v3p0/info/index.html#anyN
|
|
12
|
+
*
|
|
13
|
+
* Takes 1 or more sub-expressions with base-type boolean and single cardinality.
|
|
14
|
+
* Attributes 'min' and 'max' define the required range of true values.
|
|
15
|
+
* Returns true if true count is within [min, max], false if outside this range.
|
|
16
|
+
* Special cases: Returns NULL if validity cannot be determined due to NULL arguments.
|
|
17
|
+
*/
|
|
18
|
+
export class QtiAnyN extends QtiExpression {
|
|
19
|
+
constructor() {
|
|
20
|
+
super(...arguments);
|
|
21
|
+
this.min = 0;
|
|
22
|
+
this.max = Infinity;
|
|
23
|
+
}
|
|
24
|
+
getResult() {
|
|
25
|
+
const variables = this.getVariables();
|
|
26
|
+
if (!variables || variables.length === 0) {
|
|
27
|
+
console.error('qti-any-n requires at least one child expression');
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
if (this.min < 0 || this.max < this.min) {
|
|
31
|
+
console.error('qti-any-n requires 0 <= min <= max');
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
let trueCount = 0;
|
|
35
|
+
for (const variable of variables) {
|
|
36
|
+
if (variable.cardinality !== 'single' || Array.isArray(variable.value)) {
|
|
37
|
+
console.error('qti-any-n requires single cardinality boolean expressions');
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
if (variable.baseType !== 'boolean') {
|
|
41
|
+
console.error('qti-any-n requires boolean base-type');
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
if (variable.value === null || variable.value === undefined) {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
if (variable.value === 'true') {
|
|
48
|
+
trueCount++;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return trueCount >= this.min && trueCount <= this.max;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
__decorate([
|
|
55
|
+
property({ type: Number })
|
|
56
|
+
], QtiAnyN.prototype, "min", void 0);
|
|
57
|
+
__decorate([
|
|
58
|
+
property({ type: Number })
|
|
59
|
+
], QtiAnyN.prototype, "max", void 0);
|
|
60
|
+
customElements.define('qti-any-n', QtiAnyN);
|
|
61
|
+
//# sourceMappingURL=qti-any-n.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qti-any-n.js","sourceRoot":"","sources":["../../../src/components/qti-any-n/qti-any-n.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAIrD;;;;;;;;GAQG;AACH,MAAM,OAAO,OAAQ,SAAQ,aAA6B;IAA1D;;QAC8B,QAAG,GAAG,CAAC,CAAC;QAER,QAAG,GAAG,QAAQ,CAAC;IAoC7C,CAAC;IAlCiB,SAAS;QACvB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAwB,CAAC;QAE5D,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzC,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;YAClE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACxC,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACpD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,IAAI,QAAQ,CAAC,WAAW,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvE,OAAO,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;gBAC3E,OAAO,IAAI,CAAC;YACd,CAAC;YACD,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACpC,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;gBACtD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,IAAI,QAAQ,CAAC,KAAK,KAAK,IAAI,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC5D,OAAO,IAAI,CAAC;YACd,CAAC;YAED,IAAI,QAAQ,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;gBAC9B,SAAS,EAAE,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO,SAAS,IAAI,IAAI,CAAC,GAAG,IAAI,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC;IACxD,CAAC;CACF;AAtC6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;oCAAS;AAER;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;oCAAgB;AAsC7C,cAAc,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC","sourcesContent":["import { property } from 'lit/decorators.js';\n\nimport { QtiExpression } from '@qti-components/base';\n\nimport type { ResponseVariable } from '@qti-components/base';\n\n/**\n * @summary The qti-any-N operator checks if a specific range of expressions are true.\n * @documentation https://www.imsglobal.org/spec/qti/v3p0/info/index.html#anyN\n *\n * Takes 1 or more sub-expressions with base-type boolean and single cardinality.\n * Attributes 'min' and 'max' define the required range of true values.\n * Returns true if true count is within [min, max], false if outside this range.\n * Special cases: Returns NULL if validity cannot be determined due to NULL arguments.\n */\nexport class QtiAnyN extends QtiExpression<boolean | null> {\n @property({ type: Number }) min = 0;\n\n @property({ type: Number }) max = Infinity;\n\n public override getResult(): boolean | null {\n const variables = this.getVariables() as ResponseVariable[];\n\n if (!variables || variables.length === 0) {\n console.error('qti-any-n requires at least one child expression');\n return null;\n }\n\n if (this.min < 0 || this.max < this.min) {\n console.error('qti-any-n requires 0 <= min <= max');\n return null;\n }\n\n let trueCount = 0;\n for (const variable of variables) {\n if (variable.cardinality !== 'single' || Array.isArray(variable.value)) {\n console.error('qti-any-n requires single cardinality boolean expressions');\n return null;\n }\n if (variable.baseType !== 'boolean') {\n console.error('qti-any-n requires boolean base-type');\n return null;\n }\n if (variable.value === null || variable.value === undefined) {\n return null;\n }\n\n if (variable.value === 'true') {\n trueCount++;\n }\n }\n\n return trueCount >= this.min && trueCount <= this.max;\n }\n}\n\ncustomElements.define('qti-any-n', QtiAnyN);\n"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { QtiExpression } from '@qti-components/base';
|
|
2
2
|
/**
|
|
3
|
-
* @summary The qti-container-size operator returns the
|
|
4
|
-
* @documentation https://www.imsglobal.org/spec/qti/v3p0/
|
|
3
|
+
* @summary The qti-container-size operator returns the count of items in a container.
|
|
4
|
+
* @documentation https://www.imsglobal.org/spec/qti/v3p0/info/index.html#containerSize
|
|
5
5
|
*
|
|
6
|
-
* Takes
|
|
7
|
-
* Returns
|
|
8
|
-
* Returns 0 if the sub-expression is NULL.
|
|
6
|
+
* Takes 1 sub-expression with multiple or ordered cardinality.
|
|
7
|
+
* Returns a single integer representing the number of items.
|
|
8
|
+
* Special cases: Returns 0 if the sub-expression is NULL.
|
|
9
9
|
*/
|
|
10
10
|
export declare class QtiContainerSize extends QtiExpression<number> {
|
|
11
11
|
getResult(): number;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { QtiExpression } from '@qti-components/base';
|
|
2
2
|
/**
|
|
3
|
-
* @summary The qti-container-size operator returns the
|
|
4
|
-
* @documentation https://www.imsglobal.org/spec/qti/v3p0/
|
|
3
|
+
* @summary The qti-container-size operator returns the count of items in a container.
|
|
4
|
+
* @documentation https://www.imsglobal.org/spec/qti/v3p0/info/index.html#containerSize
|
|
5
5
|
*
|
|
6
|
-
* Takes
|
|
7
|
-
* Returns
|
|
8
|
-
* Returns 0 if the sub-expression is NULL.
|
|
6
|
+
* Takes 1 sub-expression with multiple or ordered cardinality.
|
|
7
|
+
* Returns a single integer representing the number of items.
|
|
8
|
+
* Special cases: Returns 0 if the sub-expression is NULL.
|
|
9
9
|
*/
|
|
10
10
|
export class QtiContainerSize extends QtiExpression {
|
|
11
11
|
getResult() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qti-container-size.js","sourceRoot":"","sources":["../../../src/components/qti-container-size/qti-container-size.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAIrD;;;;;;;GAOG;AACH,MAAM,OAAO,gBAAiB,SAAQ,aAAqB;IACzC,SAAS;QACvB,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;YAC3E,OAAO,CAAC,CAAC;QACX,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAwB,CAAC;QAE5D,IAAI,CAAC,SAAS,IAAI,SAAS,EAAE,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1C,OAAO,CAAC,CAAC;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAE9B,4CAA4C;QAC5C,IAAI,QAAQ,CAAC,KAAK,KAAK,IAAI,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC5D,OAAO,CAAC,CAAC;QACX,CAAC;QAED,kDAAkD;QAClD,IAAI,QAAQ,CAAC,WAAW,KAAK,UAAU,IAAI,QAAQ,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9E,OAAO,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;YAC7E,OAAO,CAAC,CAAC;QACX,CAAC;QAED,gEAAgE;QAChE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,KAAK,CAAC,2EAA2E,CAAC,CAAC;YAC3F,OAAO,CAAC,CAAC;QACX,CAAC;QAED,mCAAmC;QACnC,OAAO,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;IAC/B,CAAC;CACF;AAED,cAAc,CAAC,MAAM,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAAC","sourcesContent":["import { QtiExpression } from '@qti-components/base';\n\nimport type { ResponseVariable } from '@qti-components/base';\n\n/**\n * @summary The qti-container-size operator returns the
|
|
1
|
+
{"version":3,"file":"qti-container-size.js","sourceRoot":"","sources":["../../../src/components/qti-container-size/qti-container-size.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAIrD;;;;;;;GAOG;AACH,MAAM,OAAO,gBAAiB,SAAQ,aAAqB;IACzC,SAAS;QACvB,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;YAC3E,OAAO,CAAC,CAAC;QACX,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAwB,CAAC;QAE5D,IAAI,CAAC,SAAS,IAAI,SAAS,EAAE,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1C,OAAO,CAAC,CAAC;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAE9B,4CAA4C;QAC5C,IAAI,QAAQ,CAAC,KAAK,KAAK,IAAI,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC5D,OAAO,CAAC,CAAC;QACX,CAAC;QAED,kDAAkD;QAClD,IAAI,QAAQ,CAAC,WAAW,KAAK,UAAU,IAAI,QAAQ,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9E,OAAO,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;YAC7E,OAAO,CAAC,CAAC;QACX,CAAC;QAED,gEAAgE;QAChE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,KAAK,CAAC,2EAA2E,CAAC,CAAC;YAC3F,OAAO,CAAC,CAAC;QACX,CAAC;QAED,mCAAmC;QACnC,OAAO,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;IAC/B,CAAC;CACF;AAED,cAAc,CAAC,MAAM,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAAC","sourcesContent":["import { QtiExpression } from '@qti-components/base';\n\nimport type { ResponseVariable } from '@qti-components/base';\n\n/**\n * @summary The qti-container-size operator returns the count of items in a container.\n * @documentation https://www.imsglobal.org/spec/qti/v3p0/info/index.html#containerSize\n *\n * Takes 1 sub-expression with multiple or ordered cardinality.\n * Returns a single integer representing the number of items.\n * Special cases: Returns 0 if the sub-expression is NULL.\n */\nexport class QtiContainerSize extends QtiExpression<number> {\n public override getResult(): number {\n if (this.children?.length !== 1) {\n console.error('qti-container-size must have exactly one child expression');\n return 0;\n }\n\n const variables = this.getVariables() as ResponseVariable[];\n\n if (!variables || variables?.length === 0) {\n return 0;\n }\n\n const variable = variables[0];\n\n // Handle null values - return 0 as per spec\n if (variable.value === null || variable.value === undefined) {\n return 0;\n }\n\n // Check cardinality - must be multiple or ordered\n if (variable.cardinality !== 'multiple' && variable.cardinality !== 'ordered') {\n console.error('qti-container-size requires multiple or ordered cardinality');\n return 0;\n }\n\n // The value should be an array for multiple/ordered cardinality\n if (!Array.isArray(variable.value)) {\n console.error('qti-container-size: expected array value for multiple/ordered cardinality');\n return 0;\n }\n\n // Return the size of the container\n return variable.value.length;\n }\n}\n\ncustomElements.define('qti-container-size', QtiContainerSize);\n"]}
|
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
import { QtiExpression } from '@qti-components/base';
|
|
2
|
+
/**
|
|
3
|
+
* @summary The qti-correct operator retrieves the defined correct response for a variable.
|
|
4
|
+
* @documentation https://www.imsglobal.org/spec/qti/v3p0/info/index.html#correct
|
|
5
|
+
*
|
|
6
|
+
* Looks up the declaration for the identified response variable.
|
|
7
|
+
* Returns the associated correctResponse value(s).
|
|
8
|
+
* Special cases: Returns NULL if no correct response was declared.
|
|
9
|
+
*/
|
|
2
10
|
export declare class QtiCorrect extends QtiExpression<string | string[]> {
|
|
3
11
|
get interpretation(): string;
|
|
4
12
|
getResult(): string | string[];
|
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
import { QtiExpression } from '@qti-components/base';
|
|
2
|
+
/**
|
|
3
|
+
* @summary The qti-correct operator retrieves the defined correct response for a variable.
|
|
4
|
+
* @documentation https://www.imsglobal.org/spec/qti/v3p0/info/index.html#correct
|
|
5
|
+
*
|
|
6
|
+
* Looks up the declaration for the identified response variable.
|
|
7
|
+
* Returns the associated correctResponse value(s).
|
|
8
|
+
* Special cases: Returns NULL if no correct response was declared.
|
|
9
|
+
*/
|
|
2
10
|
export class QtiCorrect extends QtiExpression {
|
|
3
11
|
get interpretation() {
|
|
4
12
|
return this.getAttribute('interpretation') || '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qti-correct.js","sourceRoot":"","sources":["../../../src/components/qti-correct/qti-correct.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAIrD,MAAM,OAAO,UAAW,SAAQ,aAAgC;IAC9D,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;IACnD,CAAC;IAEQ,SAAS;QAChB,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QACzD,MAAM,gBAAgB,GAAqB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,IAAI,IAAI,CAAC;QACjH,IAAI,gBAAgB,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;YAC9C,OAAO,gBAAgB,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChG,CAAC;aAAM,CAAC;YACN,OAAO,gBAAgB,CAAC,eAAe,CAAC;QAC1C,CAAC;IACH,CAAC;CACF;AAED,cAAc,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC","sourcesContent":["import { QtiExpression } from '@qti-components/base';\n\nimport type { ResponseVariable } from '@qti-components/base';\n\nexport class QtiCorrect extends QtiExpression<string | string[]> {\n get interpretation() {\n return this.getAttribute('interpretation') || '';\n }\n\n override getResult() {\n const identifier = this.getAttribute('identifier') || '';\n const responseVariable: ResponseVariable = this.context.variables.find(v => v.identifier === identifier) || null;\n if (responseVariable.cardinality !== 'single') {\n return responseVariable.correctResponse.length > 0 ? responseVariable.correctResponse[0] : '';\n } else {\n return responseVariable.correctResponse;\n }\n }\n}\n\ncustomElements.define('qti-correct', QtiCorrect);\n"]}
|
|
1
|
+
{"version":3,"file":"qti-correct.js","sourceRoot":"","sources":["../../../src/components/qti-correct/qti-correct.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAIrD;;;;;;;GAOG;AACH,MAAM,OAAO,UAAW,SAAQ,aAAgC;IAC9D,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;IACnD,CAAC;IAEQ,SAAS;QAChB,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QACzD,MAAM,gBAAgB,GAAqB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,IAAI,IAAI,CAAC;QACjH,IAAI,gBAAgB,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;YAC9C,OAAO,gBAAgB,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChG,CAAC;aAAM,CAAC;YACN,OAAO,gBAAgB,CAAC,eAAe,CAAC;QAC1C,CAAC;IACH,CAAC;CACF;AAED,cAAc,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC","sourcesContent":["import { QtiExpression } from '@qti-components/base';\n\nimport type { ResponseVariable } from '@qti-components/base';\n\n/**\n * @summary The qti-correct operator retrieves the defined correct response for a variable.\n * @documentation https://www.imsglobal.org/spec/qti/v3p0/info/index.html#correct\n *\n * Looks up the declaration for the identified response variable.\n * Returns the associated correctResponse value(s).\n * Special cases: Returns NULL if no correct response was declared.\n */\nexport class QtiCorrect extends QtiExpression<string | string[]> {\n get interpretation() {\n return this.getAttribute('interpretation') || '';\n }\n\n override getResult() {\n const identifier = this.getAttribute('identifier') || '';\n const responseVariable: ResponseVariable = this.context.variables.find(v => v.identifier === identifier) || null;\n if (responseVariable.cardinality !== 'single') {\n return responseVariable.correctResponse.length > 0 ? responseVariable.correctResponse[0] : '';\n } else {\n return responseVariable.correctResponse;\n }\n }\n}\n\ncustomElements.define('qti-correct', QtiCorrect);\n"]}
|
|
@@ -2,12 +2,12 @@ import { QtiExpression } from '@qti-components/base';
|
|
|
2
2
|
import type { ItemContext } from '@qti-components/base';
|
|
3
3
|
import type { TestContext } from '@qti-components/base';
|
|
4
4
|
/**
|
|
5
|
-
* @summary The qti-default
|
|
6
|
-
* @documentation https://www.imsglobal.org/spec/qti/v3p0/
|
|
5
|
+
* @summary The qti-default operator retrieves the defined default value for a variable.
|
|
6
|
+
* @documentation https://www.imsglobal.org/spec/qti/v3p0/info/index.html#default
|
|
7
7
|
*
|
|
8
|
-
* Looks up the declaration
|
|
9
|
-
*
|
|
10
|
-
*
|
|
8
|
+
* Looks up the declaration for the identified item variable.
|
|
9
|
+
* Returns the associated defaultValue.
|
|
10
|
+
* Special cases: Returns NULL if no default value was declared.
|
|
11
11
|
*/
|
|
12
12
|
export declare class QtiDefault extends QtiExpression<any> {
|
|
13
13
|
identifier: string;
|
|
@@ -10,12 +10,12 @@ import { QtiExpression } from '@qti-components/base';
|
|
|
10
10
|
import { itemContext } from '@qti-components/base';
|
|
11
11
|
import { testContext } from '@qti-components/base';
|
|
12
12
|
/**
|
|
13
|
-
* @summary The qti-default
|
|
14
|
-
* @documentation https://www.imsglobal.org/spec/qti/v3p0/
|
|
13
|
+
* @summary The qti-default operator retrieves the defined default value for a variable.
|
|
14
|
+
* @documentation https://www.imsglobal.org/spec/qti/v3p0/info/index.html#default
|
|
15
15
|
*
|
|
16
|
-
* Looks up the declaration
|
|
17
|
-
*
|
|
18
|
-
*
|
|
16
|
+
* Looks up the declaration for the identified item variable.
|
|
17
|
+
* Returns the associated defaultValue.
|
|
18
|
+
* Special cases: Returns NULL if no default value was declared.
|
|
19
19
|
*/
|
|
20
20
|
export class QtiDefault extends QtiExpression {
|
|
21
21
|
constructor() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qti-default.js","sourceRoot":"","sources":["../../../src/components/qti-default/qti-default.ts"],"names":[],"mappings":"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","sourcesContent":["import { property, state } from 'lit/decorators.js';\nimport { consume } from '@lit/context';\n\nimport { QtiExpression } from '@qti-components/base';\nimport { itemContext } from '@qti-components/base';\nimport { testContext } from '@qti-components/base';\n\nimport type { ItemContext } from '@qti-components/base';\nimport type { TestContext } from '@qti-components/base';\n\n/**\n * @summary The qti-default
|
|
1
|
+
{"version":3,"file":"qti-default.js","sourceRoot":"","sources":["../../../src/components/qti-default/qti-default.ts"],"names":[],"mappings":"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","sourcesContent":["import { property, state } from 'lit/decorators.js';\nimport { consume } from '@lit/context';\n\nimport { QtiExpression } from '@qti-components/base';\nimport { itemContext } from '@qti-components/base';\nimport { testContext } from '@qti-components/base';\n\nimport type { ItemContext } from '@qti-components/base';\nimport type { TestContext } from '@qti-components/base';\n\n/**\n * @summary The qti-default operator retrieves the defined default value for a variable.\n * @documentation https://www.imsglobal.org/spec/qti/v3p0/info/index.html#default\n *\n * Looks up the declaration for the identified item variable.\n * Returns the associated defaultValue.\n * Special cases: Returns NULL if no default value was declared.\n */\nexport class QtiDefault extends QtiExpression<any> {\n @property({ type: String }) identifier: string = '';\n\n @consume({ context: itemContext, subscribe: true })\n @state()\n protected override context?: ItemContext;\n\n @state()\n @consume({ context: testContext, subscribe: true })\n protected _testContext?: TestContext;\n\n public override getResult(): any {\n if (!this.identifier) {\n console.error('qti-default requires an identifier attribute');\n return null;\n }\n\n // Check for item identifier prefixing (format: \"itemId.variableId\")\n const parts = this.identifier.split('.');\n\n let itemId: string | null = null;\n let variableId: string;\n\n if (parts.length === 2) {\n itemId = parts[0];\n variableId = parts[1];\n } else if (parts.length === 1) {\n variableId = parts[0];\n } else {\n console.error('qti-default: invalid identifier format');\n return null;\n }\n\n // If item identifier is specified, look in that specific item\n if (itemId) {\n const itemContext = this._testContext.items.find(item => item.identifier === itemId);\n console.debug(`itemContext: ${JSON.stringify(itemContext)}`);\n if (!this._testContext || !itemContext) {\n console.warn(`qti-default: item \"${itemId}\" not found in test context`);\n return null;\n }\n const variable = this._testContext.items\n .find(item => item.identifier === itemId)\n ?.variables.find(v => v.identifier === variableId);\n if (!variable) {\n console.warn(`qti-default: variable \"${variableId}\" not found in item \"${itemId}\"`);\n return null;\n }\n return variable.defaultValue || null;\n }\n\n // Otherwise, look in the current item context\n if (!this.context?.variables) {\n console.warn('qti-default: no variables found in item context');\n return null;\n }\n const variable = this.context.variables.find(v => v.identifier === variableId);\n if (!variable) {\n console.warn(`qti-default: variable \"${variableId}\" not found in item context`);\n return null;\n }\n return variable.defaultValue || null;\n }\n}\n\ncustomElements.define('qti-default', QtiDefault);\n"]}
|
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
import { QtiExpression } from '@qti-components/base';
|
|
2
|
+
/**
|
|
3
|
+
* @summary The qti-delete operator removes all instances of a value from a container.
|
|
4
|
+
* @documentation https://www.imsglobal.org/spec/qti/v3p0/info/index.html#delete
|
|
5
|
+
*
|
|
6
|
+
* Takes a single value (1st) and a container (2nd) of the same base-type.
|
|
7
|
+
* Returns a new container derived from the 2nd with all instances of 1st removed.
|
|
8
|
+
* Special cases: Returns NULL if either argument is NULL.
|
|
9
|
+
*/
|
|
2
10
|
export declare class QtiDelete extends QtiExpression<string[] | null> {
|
|
3
11
|
getResult(): string[] | null;
|
|
4
12
|
}
|
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
import { QtiExpression } from '@qti-components/base';
|
|
2
|
+
/**
|
|
3
|
+
* @summary The qti-delete operator removes all instances of a value from a container.
|
|
4
|
+
* @documentation https://www.imsglobal.org/spec/qti/v3p0/info/index.html#delete
|
|
5
|
+
*
|
|
6
|
+
* Takes a single value (1st) and a container (2nd) of the same base-type.
|
|
7
|
+
* Returns a new container derived from the 2nd with all instances of 1st removed.
|
|
8
|
+
* Special cases: Returns NULL if either argument is NULL.
|
|
9
|
+
*/
|
|
2
10
|
export class QtiDelete extends QtiExpression {
|
|
3
11
|
getResult() {
|
|
4
12
|
if (this.children.length === 2) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qti-delete.js","sourceRoot":"","sources":["../../../src/components/qti-delete/qti-delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAIrD,MAAM,OAAO,SAAU,SAAQ,aAA8B;IAClD,SAAS;QAChB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAwB,CAAC;YACzD,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAEzB,IAAI,MAAM,CAAC,WAAW,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpE,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;gBACrD,OAAO,IAAI,CAAC;YACd,CAAC;YAED,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC9C,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;gBAChE,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAErE,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,cAAc,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC","sourcesContent":["import { QtiExpression } from '@qti-components/base';\n\nimport type { ResponseVariable } from '@qti-components/base';\n\nexport class QtiDelete extends QtiExpression<string[] | null> {\n override getResult(): string[] | null {\n if (this.children.length === 2) {\n const values = this.getVariables() as ResponseVariable[];\n const value1 = values[0];\n const value2 = values[1];\n\n if (value1.cardinality !== 'single' || !Array.isArray(value2.value)) {\n console.error('unexpected cardinality in qti equal');\n return null;\n }\n\n if (values[0].baseType !== values[1].baseType) {\n console.error('The baseType of the two variables is different');\n return null;\n }\n\n const filtered = value2.value.filter(v => !value1.value.includes(v));\n\n return filtered;\n }\n\n return null;\n }\n}\n\ncustomElements.define('qti-delete', QtiDelete);\n"]}
|
|
1
|
+
{"version":3,"file":"qti-delete.js","sourceRoot":"","sources":["../../../src/components/qti-delete/qti-delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAIrD;;;;;;;GAOG;AACH,MAAM,OAAO,SAAU,SAAQ,aAA8B;IAClD,SAAS;QAChB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAwB,CAAC;YACzD,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAEzB,IAAI,MAAM,CAAC,WAAW,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpE,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;gBACrD,OAAO,IAAI,CAAC;YACd,CAAC;YAED,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC9C,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;gBAChE,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAErE,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,cAAc,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC","sourcesContent":["import { QtiExpression } from '@qti-components/base';\n\nimport type { ResponseVariable } from '@qti-components/base';\n\n/**\n * @summary The qti-delete operator removes all instances of a value from a container.\n * @documentation https://www.imsglobal.org/spec/qti/v3p0/info/index.html#delete\n *\n * Takes a single value (1st) and a container (2nd) of the same base-type.\n * Returns a new container derived from the 2nd with all instances of 1st removed.\n * Special cases: Returns NULL if either argument is NULL.\n */\nexport class QtiDelete extends QtiExpression<string[] | null> {\n override getResult(): string[] | null {\n if (this.children.length === 2) {\n const values = this.getVariables() as ResponseVariable[];\n const value1 = values[0];\n const value2 = values[1];\n\n if (value1.cardinality !== 'single' || !Array.isArray(value2.value)) {\n console.error('unexpected cardinality in qti equal');\n return null;\n }\n\n if (values[0].baseType !== values[1].baseType) {\n console.error('The baseType of the two variables is different');\n return null;\n }\n\n const filtered = value2.value.filter(v => !value1.value.includes(v));\n\n return filtered;\n }\n\n return null;\n }\n}\n\ncustomElements.define('qti-delete', QtiDelete);\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { QtiExpression } from '@qti-components/base';
|
|
2
|
+
/**
|
|
3
|
+
* @summary The qti-divide operator performs numerical division.
|
|
4
|
+
* @documentation https://www.imsglobal.org/spec/qti/v3p0/info/index.html#divide
|
|
5
|
+
*
|
|
6
|
+
* Takes exactly 2 sub-expressions with numerical base-types and single cardinality.
|
|
7
|
+
* Returns a single float representing (first / second).
|
|
8
|
+
* Special cases: Returns NULL if either sub-expression is NULL or if divisor is 0.
|
|
9
|
+
*/
|
|
10
|
+
export declare class QtiDivide extends QtiExpression<number | null> {
|
|
11
|
+
#private;
|
|
12
|
+
getResult(): number | null;
|
|
13
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { QtiExpression } from '@qti-components/base';
|
|
2
|
+
/**
|
|
3
|
+
* @summary The qti-divide operator performs numerical division.
|
|
4
|
+
* @documentation https://www.imsglobal.org/spec/qti/v3p0/info/index.html#divide
|
|
5
|
+
*
|
|
6
|
+
* Takes exactly 2 sub-expressions with numerical base-types and single cardinality.
|
|
7
|
+
* Returns a single float representing (first / second).
|
|
8
|
+
* Special cases: Returns NULL if either sub-expression is NULL or if divisor is 0.
|
|
9
|
+
*/
|
|
10
|
+
export class QtiDivide extends QtiExpression {
|
|
11
|
+
getResult() {
|
|
12
|
+
const values = this.#collectNumericValues(this.getVariables());
|
|
13
|
+
if (values.length !== 2) {
|
|
14
|
+
console.warn('qti-divide: expected exactly 2 numeric values');
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
if (values[1] === 0) {
|
|
18
|
+
console.warn('qti-divide: division by zero');
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
return values[0] / values[1];
|
|
22
|
+
}
|
|
23
|
+
#collectNumericValues(variables) {
|
|
24
|
+
const values = [];
|
|
25
|
+
for (const variable of variables) {
|
|
26
|
+
if (!variable) {
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
const pushValue = (raw) => {
|
|
30
|
+
if (raw === null || raw === undefined) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
const numValue = parseFloat(raw.toString());
|
|
34
|
+
if (Number.isNaN(numValue)) {
|
|
35
|
+
console.warn('qti-divide: non-numeric value encountered');
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
values.push(numValue);
|
|
39
|
+
};
|
|
40
|
+
if (Array.isArray(variable.value)) {
|
|
41
|
+
variable.value.forEach(item => pushValue(item));
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
pushValue(variable.value);
|
|
45
|
+
}
|
|
46
|
+
return values;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
customElements.define('qti-divide', QtiDivide);
|
|
50
|
+
//# sourceMappingURL=qti-divide.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qti-divide.js","sourceRoot":"","sources":["../../../src/components/qti-divide/qti-divide.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAIrD;;;;;;;GAOG;AACH,MAAM,OAAO,SAAU,SAAQ,aAA4B;IACzC,SAAS;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,EAAwB,CAAC,CAAC;QACrF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;YAC7C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,qBAAqB,CAAC,SAA6B;QACjD,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,SAAS;YACX,CAAC;YAED,MAAM,SAAS,GAAG,CAAC,GAAY,EAAE,EAAE;gBACjC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;oBACtC,OAAO;gBACT,CAAC;gBACD,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC5C,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC3B,OAAO,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;oBAC1D,OAAO;gBACT,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACxB,CAAC,CAAC;YAEF,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBAChD,SAAS;YACX,CAAC;YAED,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED,cAAc,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC","sourcesContent":["import { QtiExpression } from '@qti-components/base';\n\nimport type { ResponseVariable } from '@qti-components/base';\n\n/**\n * @summary The qti-divide operator performs numerical division.\n * @documentation https://www.imsglobal.org/spec/qti/v3p0/info/index.html#divide\n *\n * Takes exactly 2 sub-expressions with numerical base-types and single cardinality.\n * Returns a single float representing (first / second).\n * Special cases: Returns NULL if either sub-expression is NULL or if divisor is 0.\n */\nexport class QtiDivide extends QtiExpression<number | null> {\n public override getResult(): number | null {\n const values = this.#collectNumericValues(this.getVariables() as ResponseVariable[]);\n if (values.length !== 2) {\n console.warn('qti-divide: expected exactly 2 numeric values');\n return null;\n }\n\n if (values[1] === 0) {\n console.warn('qti-divide: division by zero');\n return null;\n }\n\n return values[0] / values[1];\n }\n\n #collectNumericValues(variables: ResponseVariable[]): number[] {\n const values: number[] = [];\n\n for (const variable of variables) {\n if (!variable) {\n continue;\n }\n\n const pushValue = (raw: unknown) => {\n if (raw === null || raw === undefined) {\n return;\n }\n const numValue = parseFloat(raw.toString());\n if (Number.isNaN(numValue)) {\n console.warn('qti-divide: non-numeric value encountered');\n return;\n }\n values.push(numValue);\n };\n\n if (Array.isArray(variable.value)) {\n variable.value.forEach(item => pushValue(item));\n continue;\n }\n\n pushValue(variable.value);\n }\n\n return values;\n }\n}\n\ncustomElements.define('qti-divide', QtiDivide);\n"]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { QtiExpression } from '@qti-components/base';
|
|
2
|
+
export class QtiDurationGte extends QtiExpression {
|
|
3
|
+
getResult() {
|
|
4
|
+
const values = this.#getDurationValues();
|
|
5
|
+
if (!values) {
|
|
6
|
+
return null;
|
|
7
|
+
}
|
|
8
|
+
return values[0] >= values[1];
|
|
9
|
+
}
|
|
10
|
+
#getDurationValues() {
|
|
11
|
+
const variables = this.getVariables();
|
|
12
|
+
if (variables.length !== 2) {
|
|
13
|
+
console.error('qti-duration-gte requires exactly 2 duration expressions');
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
// TODO: Register the built-in duration variables (`duration` and `sectionId.duration`)
|
|
17
|
+
// from tracked candidate/session time-spent so these operators can resolve them implicitly.
|
|
18
|
+
const values = variables.map(variable => this.#parseDuration(variable));
|
|
19
|
+
if (values.some(value => value === null)) {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
return values;
|
|
23
|
+
}
|
|
24
|
+
#parseDuration(variable) {
|
|
25
|
+
if (variable.cardinality !== 'single' || Array.isArray(variable.value)) {
|
|
26
|
+
console.error('qti-duration-gte requires single cardinality');
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
if (variable.baseType !== 'duration') {
|
|
30
|
+
console.error('qti-duration-gte requires duration base-type');
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
if (variable.value === null || variable.value === undefined) {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
const value = Number.parseFloat(variable.value.toString());
|
|
37
|
+
if (Number.isNaN(value)) {
|
|
38
|
+
console.error(`qti-duration-gte requires duration values expressed in seconds, got "${variable.value.toString()}"`);
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
return value;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
customElements.define('qti-duration-gte', QtiDurationGte);
|
|
45
|
+
//# sourceMappingURL=qti-duration-gte.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qti-duration-gte.js","sourceRoot":"","sources":["../../../src/components/qti-duration-gte/qti-duration-gte.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAIrD,MAAM,OAAO,cAAe,SAAQ,aAA6B;IAC/C,SAAS;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACzC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC;IAED,kBAAkB;QAChB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAwB,CAAC;QAE5D,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;YAC1E,OAAO,IAAI,CAAC;QACd,CAAC;QAED,uFAAuF;QACvF,4FAA4F;QAC5F,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;QACxE,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC;YACzC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,MAA0B,CAAC;IACpC,CAAC;IAED,cAAc,CAAC,QAA0B;QACvC,IAAI,QAAQ,CAAC,WAAW,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACvE,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,QAAQ,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;YACrC,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,QAAQ,CAAC,KAAK,KAAK,IAAI,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC5D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3D,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK,CACX,wEAAwE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CACrG,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED,cAAc,CAAC,MAAM,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC","sourcesContent":["import { QtiExpression } from '@qti-components/base';\n\nimport type { ResponseVariable } from '@qti-components/base';\n\nexport class QtiDurationGte extends QtiExpression<boolean | null> {\n public override getResult(): boolean | null {\n const values = this.#getDurationValues();\n if (!values) {\n return null;\n }\n\n return values[0] >= values[1];\n }\n\n #getDurationValues(): [number, number] | null {\n const variables = this.getVariables() as ResponseVariable[];\n\n if (variables.length !== 2) {\n console.error('qti-duration-gte requires exactly 2 duration expressions');\n return null;\n }\n\n // TODO: Register the built-in duration variables (`duration` and `sectionId.duration`)\n // from tracked candidate/session time-spent so these operators can resolve them implicitly.\n const values = variables.map(variable => this.#parseDuration(variable));\n if (values.some(value => value === null)) {\n return null;\n }\n\n return values as [number, number];\n }\n\n #parseDuration(variable: ResponseVariable): number | null {\n if (variable.cardinality !== 'single' || Array.isArray(variable.value)) {\n console.error('qti-duration-gte requires single cardinality');\n return null;\n }\n if (variable.baseType !== 'duration') {\n console.error('qti-duration-gte requires duration base-type');\n return null;\n }\n if (variable.value === null || variable.value === undefined) {\n return null;\n }\n\n const value = Number.parseFloat(variable.value.toString());\n if (Number.isNaN(value)) {\n console.error(\n `qti-duration-gte requires duration values expressed in seconds, got \"${variable.value.toString()}\"`\n );\n return null;\n }\n\n return value;\n }\n}\n\ncustomElements.define('qti-duration-gte', QtiDurationGte);\n"]}
|