@pie-element/categorize 13.2.0-beta.0 → 13.2.0

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 (41) hide show
  1. package/CHANGELOG.md +68 -10
  2. package/configure/CHANGELOG.md +65 -8
  3. package/configure/package.json +5 -5
  4. package/controller/CHANGELOG.md +31 -4
  5. package/controller/package.json +1 -1
  6. package/lib/index.js +2 -2
  7. package/lib/index.js.map +1 -1
  8. package/package.json +6 -6
  9. package/configure/lib/__tests__/main.test.js +0 -100
  10. package/configure/lib/__tests__/utils.js +0 -39
  11. package/configure/lib/design/__tests__/builder.test.js +0 -34
  12. package/configure/lib/design/__tests__/buttons.test.js +0 -36
  13. package/configure/lib/design/__tests__/header.test.js +0 -37
  14. package/configure/lib/design/__tests__/index.test.js +0 -269
  15. package/configure/lib/design/__tests__/input-header.test.js +0 -41
  16. package/configure/lib/design/categories/__tests__/alternateResponses.test.js +0 -93
  17. package/configure/lib/design/categories/__tests__/category.test.js +0 -65
  18. package/configure/lib/design/categories/__tests__/choice-preview.test.js +0 -52
  19. package/configure/lib/design/categories/__tests__/droppable-placeholder.test.js +0 -63
  20. package/configure/lib/design/categories/__tests__/index.test.js +0 -91
  21. package/configure/lib/design/choices/__tests__/choice.test.js +0 -62
  22. package/configure/lib/design/choices/__tests__/config.test.js +0 -66
  23. package/configure/lib/design/choices/__tests__/index.test.js +0 -70
  24. package/controller/lib/__tests__/index.test.js +0 -526
  25. package/docs/demo/.pie/.configure/package.json +0 -10
  26. package/docs/demo/.pie/.configure/yarn.lock +0 -2122
  27. package/docs/demo/.pie/.controllers/package.json +0 -10
  28. package/docs/demo/.pie/.controllers/yarn.lock +0 -110
  29. package/docs/demo/.pie/info.entry.js +0 -89
  30. package/docs/demo/.pie/info.webpack.config.js +0 -119
  31. package/docs/demo/.pie/package.json +0 -10
  32. package/docs/demo/.pie/yarn.lock +0 -2137
  33. package/docs/demo/pie.manifest.json +0 -11
  34. package/lib/__tests__/index.test.js +0 -197
  35. package/lib/categorize/__tests__/categories.test.js +0 -138
  36. package/lib/categorize/__tests__/category.test.js +0 -137
  37. package/lib/categorize/__tests__/choice.test.js +0 -88
  38. package/lib/categorize/__tests__/choices.test.js +0 -118
  39. package/lib/categorize/__tests__/droppable-placeholder.test.js +0 -96
  40. package/lib/categorize/__tests__/grid-content.test.js +0 -48
  41. package/lib/categorize/__tests__/index.test.js +0 -250
package/CHANGELOG.md CHANGED
@@ -3,24 +3,82 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
- # [13.2.0-beta.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize@13.1.0...@pie-element/categorize@13.2.0-beta.0) (2026-08-07)
6
+ # [13.2.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize@13.1.11...@pie-element/categorize@13.2.0) (2026-08-21)
7
+
8
+ ### Bug Fixes
9
+
10
+ - move [@pie-lib](https://github.com/pie-lib) deps back to latest, off next prereleases PIE-927 ([a53e012](https://github.com/pie-framework/pie-elements/commit/a53e0127eb4ac95ece54e1e2bd669ae4974f4251))
11
+ - read the prompt container by class, not by the id pie-lib removed PIE-927 ([aaaf6c2](https://github.com/pie-framework/pie-elements/commit/aaaf6c2f189de3b39f9de85969aeb2e50376c548))
12
+
13
+ ### Features
14
+
15
+ - bump libs PIE-856, PIE-681, PIE-927 ([cb26d7a](https://github.com/pie-framework/pie-elements/commit/cb26d7afa6c99522533c321d5ff8ce3148a66e9e))
16
+
17
+ ## [13.1.11](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize@13.1.10...@pie-element/categorize@13.1.11) (2026-08-19)
18
+
19
+ ### Bug Fixes
20
+
21
+ - bump libs and shared modules PIE-681, PIE-708 ([08af8b5](https://github.com/pie-framework/pie-elements/commit/08af8b5802aecc8ee5454a1b6d60277d7ec94204))
22
+
23
+ ## [13.1.10](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize@13.1.8...@pie-element/categorize@13.1.10) (2026-08-13)
24
+
25
+ **Note:** Version bump only for package @pie-element/categorize
26
+
27
+ ## [13.1.9](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize@13.1.7...@pie-element/categorize@13.1.9) (2026-08-11)
28
+
29
+ **Note:** Version bump only for package @pie-element/categorize
30
+
31
+ ## [13.1.8](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize@13.1.7...@pie-element/categorize@13.1.8) (2026-07-31)
32
+
33
+ **Note:** Version bump only for package @pie-element/categorize
34
+
35
+ ## [13.1.7](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize@13.1.6...@pie-element/categorize@13.1.7) (2026-07-08)
7
36
 
8
37
  ### Bug Fixes
9
38
 
10
39
  - bump libs & shared modules PIE-706, PIE-702, PIE-679, PIE-698 ([5b1a8c4](https://github.com/pie-framework/pie-elements/commit/5b1a8c4c3eba2126fc43d78fd0187e7cd11d5424))
11
- - bump shared modules and libs PIE-600, PIE-602 ([ce99f6a](https://github.com/pie-framework/pie-elements/commit/ce99f6af50cb855b666a6df9340f9f5445fde4c4))
12
- - bump shared modules and libs PIE-661 PIE-664 PIE-683 PIE-666 PIE-656 PIE-657 PIE-658 PIE-659 PIE-670 ([ebd6be4](https://github.com/pie-framework/pie-elements/commit/ebd6be4fd48fca41ad4c4908f606b25334731aed))
13
- - bump shared modules and libs PIE-674, PIE-662, PIE-705, PIE-674, PIE-963 ([78a3f64](https://github.com/pie-framework/pie-elements/commit/78a3f64652c9581c61bd4159f3210fc1e32d8bcf))
14
- - bump shared modules and libs PIE-695, PIE-697, PIE-699, PIE-680, PIE-714, PIE-665, PIE-656 ([4b76ae7](https://github.com/pie-framework/pie-elements/commit/4b76ae75d1c5ea6d55f7c6fb53f299dfcbda2b1f))
15
- - bump shared modules and libsPIE-603, PIE-604, PIE-663, PIE-662, PIE-678 ([e61c7a7](https://github.com/pie-framework/pie-elements/commit/e61c7a7d23744586337dfbb17a18ebfc656c202f))
16
40
  - **categorize:** compute allowmultiple based on response when missing, get rid of defaults value PIE, add tests PIE-723 ([3217ede](https://github.com/pie-framework/pie-elements/commit/3217edebf20e3906a8c46d775dfb2e3ee0095fd6))
17
- - **categorize:** fix lint warnings PIE-433 ([b3a61de](https://github.com/pie-framework/pie-elements/commit/b3a61de893e7aa0b3bfc119ca17a6acc769a042a))
18
- - **categorize:** normalize categoryCount based on allowMultiplePlacements PIE-433 ([60f8473](https://github.com/pie-framework/pie-elements/commit/60f847381b769fa3cc4add100cce821b2aa6338c))
19
41
  - **categorize:** use single quotes lint warning PIE-723 ([4d2162a](https://github.com/pie-framework/pie-elements/commit/4d2162a6a618a7f5104a89e753a02dba75fb8c11))
20
- - clear \_root reference on disconnect PIE-686 ([0a236ce](https://github.com/pie-framework/pie-elements/commit/0a236ce1decbd64b250d97484212179f62adc049))
42
+
43
+ ## [13.1.6](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize@13.1.5...@pie-element/categorize@13.1.6) (2026-07-02)
44
+
45
+ ### Bug Fixes
46
+
47
+ - bump shared modules and libs PIE-695, PIE-697, PIE-699, PIE-680, PIE-714, PIE-665, PIE-656 ([4b76ae7](https://github.com/pie-framework/pie-elements/commit/4b76ae75d1c5ea6d55f7c6fb53f299dfcbda2b1f))
48
+ - sync libs versions ([48b5be9](https://github.com/pie-framework/pie-elements/commit/48b5be9559eb5b5235ca05f51c5f0161032a7041))
49
+
50
+ ## [13.1.5](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize@13.1.4...@pie-element/categorize@13.1.5) (2026-06-22)
51
+
52
+ ### Bug Fixes
53
+
54
+ - bump shared modules and libs PIE-674, PIE-662, PIE-705, PIE-674, PIE-963 ([78a3f64](https://github.com/pie-framework/pie-elements/commit/78a3f64652c9581c61bd4159f3210fc1e32d8bcf))
21
55
  - if allowMultiplePlacements default should be false PIE-682 ([b7447f4](https://github.com/pie-framework/pie-elements/commit/b7447f4d97e9d7cc2415f54a17ffe13ed15d1ebb))
22
56
  - if allowMultiplePlacements is missing default should be false PIE-682 ([3f93d0d](https://github.com/pie-framework/pie-elements/commit/3f93d0de81de3a5cbd2763184d2241f31e9dbae0))
23
- - sync libs versions ([48b5be9](https://github.com/pie-framework/pie-elements/commit/48b5be9559eb5b5235ca05f51c5f0161032a7041))
57
+
58
+ ## [13.1.4](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize@13.1.3...@pie-element/categorize@13.1.4) (2026-06-17)
59
+
60
+ ### Bug Fixes
61
+
62
+ - bump shared modules and libs PIE-661 PIE-664 PIE-683 PIE-666 PIE-656 PIE-657 PIE-658 PIE-659 PIE-670 ([ebd6be4](https://github.com/pie-framework/pie-elements/commit/ebd6be4fd48fca41ad4c4908f606b25334731aed))
63
+ - clear \_root reference on disconnect PIE-686 ([0a236ce](https://github.com/pie-framework/pie-elements/commit/0a236ce1decbd64b250d97484212179f62adc049))
64
+
65
+ ## [13.1.3](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize@13.1.2...@pie-element/categorize@13.1.3) (2026-06-12)
66
+
67
+ ### Bug Fixes
68
+
69
+ - bump shared modules and libsPIE-603, PIE-604, PIE-663, PIE-662, PIE-678 ([e61c7a7](https://github.com/pie-framework/pie-elements/commit/e61c7a7d23744586337dfbb17a18ebfc656c202f))
70
+ - **categorize:** fix lint warnings PIE-433 ([b3a61de](https://github.com/pie-framework/pie-elements/commit/b3a61de893e7aa0b3bfc119ca17a6acc769a042a))
71
+ - **categorize:** normalize categoryCount based on allowMultiplePlacements PIE-433 ([60f8473](https://github.com/pie-framework/pie-elements/commit/60f847381b769fa3cc4add100cce821b2aa6338c))
72
+
73
+ ## [13.1.2](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize@13.1.1...@pie-element/categorize@13.1.2) (2026-06-04)
74
+
75
+ ### Bug Fixes
76
+
77
+ - bump shared modules and libs PIE-600, PIE-602 ([ce99f6a](https://github.com/pie-framework/pie-elements/commit/ce99f6af50cb855b666a6df9340f9f5445fde4c4))
78
+
79
+ ## [13.1.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize@13.1.0...@pie-element/categorize@13.1.1) (2026-05-21)
80
+
81
+ **Note:** Version bump only for package @pie-element/categorize
24
82
 
25
83
  # [13.1.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize@13.1.0-next.1...@pie-element/categorize@13.1.0) (2026-05-21)
26
84
 
@@ -3,21 +3,78 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
- # [11.2.0-beta.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize-configure@11.1.0...@pie-element/categorize-configure@11.2.0-beta.0) (2026-08-07)
6
+ # [11.2.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize-configure@11.1.11...@pie-element/categorize-configure@11.2.0) (2026-08-21)
7
+
8
+ ### Bug Fixes
9
+
10
+ - move [@pie-lib](https://github.com/pie-lib) deps back to latest, off next prereleases PIE-927 ([a53e012](https://github.com/pie-framework/pie-elements/commit/a53e0127eb4ac95ece54e1e2bd669ae4974f4251))
11
+
12
+ ### Features
13
+
14
+ - bump libs PIE-856, PIE-681, PIE-927 ([cb26d7a](https://github.com/pie-framework/pie-elements/commit/cb26d7afa6c99522533c321d5ff8ce3148a66e9e))
15
+
16
+ ## [11.1.11](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize-configure@11.1.10...@pie-element/categorize-configure@11.1.11) (2026-08-19)
17
+
18
+ ### Bug Fixes
19
+
20
+ - bump libs and shared modules PIE-681, PIE-708 ([08af8b5](https://github.com/pie-framework/pie-elements/commit/08af8b5802aecc8ee5454a1b6d60277d7ec94204))
21
+
22
+ ## [11.1.10](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize-configure@11.1.8...@pie-element/categorize-configure@11.1.10) (2026-08-13)
23
+
24
+ **Note:** Version bump only for package @pie-element/categorize-configure
25
+
26
+ ## [11.1.9](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize-configure@11.1.7...@pie-element/categorize-configure@11.1.9) (2026-08-11)
27
+
28
+ **Note:** Version bump only for package @pie-element/categorize-configure
29
+
30
+ ## [11.1.8](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize-configure@11.1.7...@pie-element/categorize-configure@11.1.8) (2026-07-31)
31
+
32
+ **Note:** Version bump only for package @pie-element/categorize-configure
33
+
34
+ ## [11.1.7](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize-configure@11.1.6...@pie-element/categorize-configure@11.1.7) (2026-07-08)
7
35
 
8
36
  ### Bug Fixes
9
37
 
10
38
  - bump libs & shared modules PIE-706, PIE-702, PIE-679, PIE-698 ([5b1a8c4](https://github.com/pie-framework/pie-elements/commit/5b1a8c4c3eba2126fc43d78fd0187e7cd11d5424))
11
- - bump shared modules and libs PIE-600, PIE-602 ([ce99f6a](https://github.com/pie-framework/pie-elements/commit/ce99f6af50cb855b666a6df9340f9f5445fde4c4))
12
- - bump shared modules and libs PIE-661 PIE-664 PIE-683 PIE-666 PIE-656 PIE-657 PIE-658 PIE-659 PIE-670 ([ebd6be4](https://github.com/pie-framework/pie-elements/commit/ebd6be4fd48fca41ad4c4908f606b25334731aed))
13
- - bump shared modules and libs PIE-674, PIE-662, PIE-705, PIE-674, PIE-963 ([78a3f64](https://github.com/pie-framework/pie-elements/commit/78a3f64652c9581c61bd4159f3210fc1e32d8bcf))
14
- - bump shared modules and libs PIE-695, PIE-697, PIE-699, PIE-680, PIE-714, PIE-665, PIE-656 ([4b76ae7](https://github.com/pie-framework/pie-elements/commit/4b76ae75d1c5ea6d55f7c6fb53f299dfcbda2b1f))
15
- - bump shared modules and libsPIE-603, PIE-604, PIE-663, PIE-662, PIE-678 ([e61c7a7](https://github.com/pie-framework/pie-elements/commit/e61c7a7d23744586337dfbb17a18ebfc656c202f))
16
39
  - **categorize:** compute allowmultiple based on response when missing, get rid of defaults value PIE, add tests PIE-723 ([3217ede](https://github.com/pie-framework/pie-elements/commit/3217edebf20e3906a8c46d775dfb2e3ee0095fd6))
17
- - clear \_root reference on disconnect PIE-686 ([0a236ce](https://github.com/pie-framework/pie-elements/commit/0a236ce1decbd64b250d97484212179f62adc049))
18
- - if allowMultiplePlacements default should be false PIE-682 ([b7447f4](https://github.com/pie-framework/pie-elements/commit/b7447f4d97e9d7cc2415f54a17ffe13ed15d1ebb))
40
+
41
+ ## [11.1.6](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize-configure@11.1.5...@pie-element/categorize-configure@11.1.6) (2026-07-02)
42
+
43
+ ### Bug Fixes
44
+
45
+ - bump shared modules and libs PIE-695, PIE-697, PIE-699, PIE-680, PIE-714, PIE-665, PIE-656 ([4b76ae7](https://github.com/pie-framework/pie-elements/commit/4b76ae75d1c5ea6d55f7c6fb53f299dfcbda2b1f))
19
46
  - sync libs versions ([48b5be9](https://github.com/pie-framework/pie-elements/commit/48b5be9559eb5b5235ca05f51c5f0161032a7041))
20
47
 
48
+ ## [11.1.5](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize-configure@11.1.4...@pie-element/categorize-configure@11.1.5) (2026-06-22)
49
+
50
+ ### Bug Fixes
51
+
52
+ - bump shared modules and libs PIE-674, PIE-662, PIE-705, PIE-674, PIE-963 ([78a3f64](https://github.com/pie-framework/pie-elements/commit/78a3f64652c9581c61bd4159f3210fc1e32d8bcf))
53
+ - if allowMultiplePlacements default should be false PIE-682 ([b7447f4](https://github.com/pie-framework/pie-elements/commit/b7447f4d97e9d7cc2415f54a17ffe13ed15d1ebb))
54
+
55
+ ## [11.1.4](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize-configure@11.1.3...@pie-element/categorize-configure@11.1.4) (2026-06-17)
56
+
57
+ ### Bug Fixes
58
+
59
+ - bump shared modules and libs PIE-661 PIE-664 PIE-683 PIE-666 PIE-656 PIE-657 PIE-658 PIE-659 PIE-670 ([ebd6be4](https://github.com/pie-framework/pie-elements/commit/ebd6be4fd48fca41ad4c4908f606b25334731aed))
60
+ - clear \_root reference on disconnect PIE-686 ([0a236ce](https://github.com/pie-framework/pie-elements/commit/0a236ce1decbd64b250d97484212179f62adc049))
61
+
62
+ ## [11.1.3](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize-configure@11.1.2...@pie-element/categorize-configure@11.1.3) (2026-06-12)
63
+
64
+ ### Bug Fixes
65
+
66
+ - bump shared modules and libsPIE-603, PIE-604, PIE-663, PIE-662, PIE-678 ([e61c7a7](https://github.com/pie-framework/pie-elements/commit/e61c7a7d23744586337dfbb17a18ebfc656c202f))
67
+
68
+ ## [11.1.2](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize-configure@11.1.1...@pie-element/categorize-configure@11.1.2) (2026-06-04)
69
+
70
+ ### Bug Fixes
71
+
72
+ - bump shared modules and libs PIE-600, PIE-602 ([ce99f6a](https://github.com/pie-framework/pie-elements/commit/ce99f6af50cb855b666a6df9340f9f5445fde4c4))
73
+
74
+ ## [11.1.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize-configure@11.1.0...@pie-element/categorize-configure@11.1.1) (2026-05-21)
75
+
76
+ **Note:** Version bump only for package @pie-element/categorize-configure
77
+
21
78
  # [11.1.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize-configure@11.1.0-next.1...@pie-element/categorize-configure@11.1.0) (2026-05-21)
22
79
 
23
80
  ### Bug Fixes
@@ -3,7 +3,7 @@
3
3
  "private": true,
4
4
  "main": "lib/index.js",
5
5
  "module": "src/index.js",
6
- "version": "11.2.0-beta.0",
6
+ "version": "11.2.0",
7
7
  "description": "",
8
8
  "scripts": {},
9
9
  "author": "pie framework developers",
@@ -16,11 +16,11 @@
16
16
  "@mui/material": "^7.3.4",
17
17
  "@pie-framework/pie-configure-events": "^1.3.0",
18
18
  "@pie-lib/categorize": "2.0.2",
19
- "@pie-lib/config-ui": "13.1.0-beta",
20
- "@pie-lib/drag": "4.0.6",
21
- "@pie-lib/editable-html-tip-tap": "2.2.0-beta",
19
+ "@pie-lib/config-ui": "13.0.16",
20
+ "@pie-lib/drag": "4.1.1",
21
+ "@pie-lib/editable-html-tip-tap": "2.1.14",
22
22
  "@pie-lib/math-rendering": "5.1.0",
23
- "@pie-lib/render-ui": "6.1.3",
23
+ "@pie-lib/render-ui": "7.0.0",
24
24
  "@pie-lib/translator": "4.0.2",
25
25
  "debug": "^4.1.1",
26
26
  "lodash-es": "^4.17.23",
@@ -3,17 +3,44 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
- # [10.2.0-beta.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize-controller@10.1.0...@pie-element/categorize-controller@10.2.0-beta.0) (2026-08-07)
6
+ ## [10.1.7](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize-controller@10.1.5...@pie-element/categorize-controller@10.1.7) (2026-08-13)
7
+
8
+ **Note:** Version bump only for package @pie-element/categorize-controller
9
+
10
+ ## [10.1.6](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize-controller@10.1.5...@pie-element/categorize-controller@10.1.6) (2026-08-11)
11
+
12
+ **Note:** Version bump only for package @pie-element/categorize-controller
13
+
14
+ ## [10.1.5](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize-controller@10.1.4...@pie-element/categorize-controller@10.1.5) (2026-07-08)
7
15
 
8
16
  ### Bug Fixes
9
17
 
10
- - bump shared modules and libs PIE-695, PIE-697, PIE-699, PIE-680, PIE-714, PIE-665, PIE-656 ([4b76ae7](https://github.com/pie-framework/pie-elements/commit/4b76ae75d1c5ea6d55f7c6fb53f299dfcbda2b1f))
11
18
  - **categorize:** compute allowmultiple based on response when missing, get rid of defaults value PIE, add tests PIE-723 ([3217ede](https://github.com/pie-framework/pie-elements/commit/3217edebf20e3906a8c46d775dfb2e3ee0095fd6))
12
- - **categorize:** fix lint warnings PIE-433 ([b3a61de](https://github.com/pie-framework/pie-elements/commit/b3a61de893e7aa0b3bfc119ca17a6acc769a042a))
13
- - **categorize:** normalize categoryCount based on allowMultiplePlacements PIE-433 ([60f8473](https://github.com/pie-framework/pie-elements/commit/60f847381b769fa3cc4add100cce821b2aa6338c))
14
19
  - **categorize:** use single quotes lint warning PIE-723 ([4d2162a](https://github.com/pie-framework/pie-elements/commit/4d2162a6a618a7f5104a89e753a02dba75fb8c11))
20
+
21
+ ## [10.1.4](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize-controller@10.1.3...@pie-element/categorize-controller@10.1.4) (2026-07-02)
22
+
23
+ ### Bug Fixes
24
+
25
+ - bump shared modules and libs PIE-695, PIE-697, PIE-699, PIE-680, PIE-714, PIE-665, PIE-656 ([4b76ae7](https://github.com/pie-framework/pie-elements/commit/4b76ae75d1c5ea6d55f7c6fb53f299dfcbda2b1f))
26
+
27
+ ## [10.1.3](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize-controller@10.1.2...@pie-element/categorize-controller@10.1.3) (2026-06-22)
28
+
29
+ ### Bug Fixes
30
+
15
31
  - if allowMultiplePlacements is missing default should be false PIE-682 ([3f93d0d](https://github.com/pie-framework/pie-elements/commit/3f93d0de81de3a5cbd2763184d2241f31e9dbae0))
16
32
 
33
+ ## [10.1.2](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize-controller@10.1.1...@pie-element/categorize-controller@10.1.2) (2026-06-12)
34
+
35
+ ### Bug Fixes
36
+
37
+ - **categorize:** fix lint warnings PIE-433 ([b3a61de](https://github.com/pie-framework/pie-elements/commit/b3a61de893e7aa0b3bfc119ca17a6acc769a042a))
38
+ - **categorize:** normalize categoryCount based on allowMultiplePlacements PIE-433 ([60f8473](https://github.com/pie-framework/pie-elements/commit/60f847381b769fa3cc4add100cce821b2aa6338c))
39
+
40
+ ## [10.1.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize-controller@10.1.0...@pie-element/categorize-controller@10.1.1) (2026-05-21)
41
+
42
+ **Note:** Version bump only for package @pie-element/categorize-controller
43
+
17
44
  # [10.1.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize-controller@10.1.0-next.1...@pie-element/categorize-controller@10.1.0) (2026-05-21)
18
45
 
19
46
  ### Bug Fixes
@@ -8,7 +8,7 @@
8
8
  "@pie-lib/translator": "4.0.2",
9
9
  "lodash-es": "^4.17.23"
10
10
  },
11
- "version": "10.2.0-beta.0",
11
+ "version": "10.1.7",
12
12
  "description": "",
13
13
  "scripts": {},
14
14
  "main": "lib/index.js",
package/lib/index.js CHANGED
@@ -97,7 +97,7 @@ class Categorize extends HTMLElement {
97
97
  if (autoplayAudioEnabled && completeAudioEnabled && !this.audioComplete) {
98
98
  if (elementContext) {
99
99
  const audio = elementContext.querySelector('audio');
100
- const isInsidePrompt = audio && audio.closest('#preview-prompt');
100
+ const isInsidePrompt = audio && audio.closest('.preview-prompt');
101
101
 
102
102
  // only require audio completion if audio exists and is inside the prompt
103
103
  if (audio && isInsidePrompt) {
@@ -209,7 +209,7 @@ class Categorize extends HTMLElement {
209
209
  if (mutation.type === 'childList') {
210
210
  if (this._audioInitialized) return;
211
211
  const audio = this.querySelector('audio');
212
- const isInsidePrompt = audio && audio.closest('#preview-prompt');
212
+ const isInsidePrompt = audio && audio.closest('.preview-prompt');
213
213
  if (!this._model) return;
214
214
  if (!this._model.autoplayAudioEnabled) return;
215
215
  if (audio && !isInsidePrompt) return;
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_react","_interopRequireDefault","require","_client","_mathRendering","_renderUi","_piePlayerEvents","_categorize","Categorize","HTMLElement","constructor","_defineProperty2","default","_mathRenderPending","requestAnimationFrame","_mathObserver","_mathObserverPaused","disconnect","renderMath","setTimeout","observe","childList","subtree","characterData","_root","_initMathObserver","MutationObserver","_scheduleMathRender","_disconnectMathObserver","model","m","_model","eliminateBlindAnswersFromSession","dispatchEvent","ModelSetEvent","tagName","toLowerCase","isComplete","_audioInitialized","render","autoplayAudioEnabled","choices","completeAudioEnabled","hasUnplacedChoices","possibleResponses","responseAreasToBeFilled","elementContext","audioComplete","audio","querySelector","isInsidePrompt","closest","_session","answers","Array","isArray","filledResponseAreas","filter","answer","length","areResponseAreasFilled","duplicatesAllowed","some","choice","categoryCount","allAnswersIds","map","flat","requiredAnswersPlaced","response","every","val","includes","session","s","mappedChoices","c","id","filteredAnswers","answerChoices","changeAnswers","selector","SessionChangedEvent","onShowCorrectToggle","_createAudioInfoToast","info","document","createElement","Object","assign","style","position","top","width","height","display","justifyContent","alignItems","background","zIndex","cursor","img","src","EnableAudioAutoplayImage","alt","appendChild","connectedCallback","observer","mutationsList","forEach","mutation","type","container","enableAudio","play","removeChild","removeEventListener","paused","addEventListener","handlePlaying","audioStartTime","Date","getTime","handleEnded","audioEndTime","waitTime","_audio","_handlePlaying","_handleEnded","_enableAudio","disconnectedCallback","unmount","el","React","CategorizeComponent","onAnswersChange","bind","pauseMathObserver","resumeMathObserver","createRoot","exports"],"sources":["../src/index.js"],"sourcesContent":["import React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { EnableAudioAutoplayImage } from '@pie-lib/render-ui';\nimport { SessionChangedEvent, ModelSetEvent } from '@pie-framework/pie-player-events';\nimport CategorizeComponent from './categorize';\n\nexport default class Categorize extends HTMLElement {\n constructor() {\n super();\n this._root = null;\n this._mathObserver = null;\n this._mathRenderPending = false;\n }\n\n _scheduleMathRender = () => {\n if (this._mathRenderPending) return;\n\n this._mathRenderPending = true;\n\n requestAnimationFrame(() => {\n if (this._mathObserver && !this._mathObserverPaused) {\n this._mathObserver.disconnect();\n }\n\n renderMath(this);\n\n this._mathRenderPending = false;\n\n setTimeout(() => {\n if (this._mathObserver && !this._mathObserverPaused) {\n this._mathObserver.observe(this, {\n childList: true,\n subtree: true,\n characterData: false,\n });\n }\n }, 50);\n });\n };\n\n _initMathObserver() {\n if (this._mathObserver) return;\n\n this._mathObserver = new MutationObserver(() => {\n this._scheduleMathRender();\n });\n\n this._mathObserver.observe(this, {\n childList: true,\n subtree: true,\n characterData: false,\n });\n }\n\n _disconnectMathObserver() {\n if (this._mathObserver) {\n this._mathObserver.disconnect();\n this._mathObserver = null;\n }\n }\n\n pauseMathObserver = () => {\n if (this._mathObserver) {\n this._mathObserver.disconnect();\n this._mathObserverPaused = true;\n }\n };\n\n resumeMathObserver = () => {\n if (this._mathObserverPaused) {\n this._mathObserverPaused = false;\n\n if (this._mathObserver) {\n this._mathObserver.observe(this, {\n childList: true,\n subtree: true,\n characterData: false,\n });\n }\n }\n };\n\n set model(m) {\n this._model = m;\n\n this.eliminateBlindAnswersFromSession();\n this.dispatchEvent(new ModelSetEvent(this.tagName.toLowerCase(), this.isComplete(), !!this._model));\n // reset the audioInitialized to false since the model changed, and we might need to reinitialize the audio\n this._audioInitialized = false;\n\n this.render();\n }\n\n isComplete() {\n const {\n autoplayAudioEnabled,\n choices,\n completeAudioEnabled,\n hasUnplacedChoices,\n possibleResponses,\n responseAreasToBeFilled,\n } = this._model || {};\n const elementContext = this;\n\n // check audio completion if audio settings are enabled and audio actually exists\n if (autoplayAudioEnabled && completeAudioEnabled && !this.audioComplete) {\n if (elementContext) {\n const audio = elementContext.querySelector('audio');\n const isInsidePrompt = audio && audio.closest('#preview-prompt');\n\n // only require audio completion if audio exists and is inside the prompt\n if (audio && isInsidePrompt) {\n return false;\n }\n }\n }\n\n if (!this._session || !this._session.answers) {\n return false;\n }\n\n const { answers } = this._session;\n\n if (!Array.isArray(answers)) {\n return false;\n }\n\n // filter answers by category and count the ones with content\n const filledResponseAreas = answers.filter((answer) => answer.choices.length).length;\n // check if an answer choice was added to at least as many response areas\n // as the number of populated response areas in the correct answer\n const areResponseAreasFilled = filledResponseAreas >= responseAreasToBeFilled;\n // check if multiple placements are allowed\n const duplicatesAllowed = (choices || []).some((choice) => choice.categoryCount === 0);\n\n if (duplicatesAllowed) {\n // an answer choice can be used multiple times\n return areResponseAreasFilled;\n }\n\n // any correct answer have any unplaced answer choices (by the author)\n if (hasUnplacedChoices) {\n return areResponseAreasFilled;\n }\n\n const allAnswersIds = answers.map((answer) => answer.choices).flat();\n\n // check if any correct answer have any unplaced answer choices (by the student)\n const requiredAnswersPlaced = (possibleResponses || []).some((response) =>\n response.every((val) => allAnswersIds.includes(val)),\n );\n\n // true - all choices (required for a correct response) were placed into a response area\n return requiredAnswersPlaced;\n }\n\n set session(s) {\n if (s && !s.answers) {\n s.answers = [];\n }\n\n this._session = s;\n this.render();\n }\n\n get session() {\n return this._session;\n }\n\n eliminateBlindAnswersFromSession() {\n const { answers = [] } = this._session || {};\n const { choices = [] } = this._model || {};\n\n const mappedChoices = choices.map((c) => c.id) || [];\n const filteredAnswers = answers.map((answer) => {\n const answerChoices = answer?.choices || [];\n answer.choices = answerChoices.filter((c) => mappedChoices.includes(c));\n\n return answer;\n });\n\n if (filteredAnswers.length > 0) {\n this.changeAnswers(filteredAnswers);\n }\n }\n\n changeAnswers(answers) {\n this._session.answers = answers;\n this._session.selector = 'Mouse';\n\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), this.isComplete()));\n\n this.render();\n }\n\n onShowCorrectToggle() {\n renderMath(this);\n }\n\n _createAudioInfoToast() {\n const info = document.createElement('div');\n info.id = 'play-audio-info';\n\n Object.assign(info.style, {\n position: 'absolute',\n top: 0,\n width: '100%',\n height: '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n background: 'white',\n zIndex: '1000',\n cursor: 'pointer',\n });\n\n const img = document.createElement('img');\n img.src = EnableAudioAutoplayImage;\n img.alt = 'Click anywhere to enable audio autoplay';\n img.width = 500;\n img.height = 300;\n\n info.appendChild(img);\n return info;\n }\n\n connectedCallback() {\n this._initMathObserver();\n \n // Observation: audio in Chrome will have the autoplay attribute,\n // while other browsers will not have the autoplay attribute and will need a user interaction to play the audio\n // This workaround fixes the issue of audio being cached and played on any user interaction in Safari and Firefox\n const observer = new MutationObserver((mutationsList, observer) => {\n mutationsList.forEach((mutation) => {\n if (mutation.type === 'childList') {\n if (this._audioInitialized) return;\n const audio = this.querySelector('audio');\n const isInsidePrompt = audio && audio.closest('#preview-prompt');\n\n if (!this._model) return;\n if (!this._model.autoplayAudioEnabled) return;\n if (audio && !isInsidePrompt) return;\n if (!audio) return;\n\n const info = this._createAudioInfoToast();\n const container = this.querySelector('#main-container');\n const enableAudio = () => {\n if (this.querySelector('#play-audio-info')) {\n audio.play();\n container.removeChild(info);\n }\n\n document.removeEventListener('click', enableAudio);\n };\n\n // if the audio is paused, it means the user has not interacted with the page yet and the audio will not play\n // FIX FOR SAFARI: play with a slight delay to check if autoplay was blocked\n setTimeout(() => {\n if (audio.paused && !this.querySelector('#play-audio-info')) {\n // add info message as a toast to enable audio playback\n container.appendChild(info);\n document.addEventListener('click', enableAudio);\n } else {\n document.removeEventListener('click', enableAudio);\n }\n }, 500);\n\n // we need to listen for the playing event to remove the toast in case the audio plays because of re-rendering\n const handlePlaying = () => {\n //timestamp when auto-played audio started playing\n this._session.audioStartTime = this._session.audioStartTime || new Date().getTime();\n\n const info = this.querySelector('#play-audio-info');\n if (info) {\n container.removeChild(info);\n }\n\n audio.removeEventListener('playing', handlePlaying);\n };\n\n audio.addEventListener('playing', handlePlaying);\n\n // we need to listen for the ended event to update the isComplete state\n const handleEnded = () => {\n //timestamp when auto-played audio completed playing\n this._session.audioEndTime = this._session.audioEndTime || new Date().getTime();\n\n let { audioStartTime, audioEndTime, waitTime } = this._session;\n if (!waitTime && audioStartTime && audioEndTime) {\n // waitTime is elapsed time the user waited for auto-played audio to finish\n this._session.waitTime = audioEndTime - audioStartTime;\n }\n\n this.audioComplete = true;\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), this.isComplete()));\n\n audio.removeEventListener('ended', handleEnded);\n };\n\n audio.addEventListener('ended', handleEnded);\n\n // store references to remove later\n this._audio = audio;\n this._handlePlaying = handlePlaying;\n this._handleEnded = handleEnded;\n this._enableAudio = enableAudio;\n // set to true to prevent multiple initializations\n this._audioInitialized = true;\n\n observer.disconnect();\n }\n });\n });\n\n observer.observe(this, { childList: true, subtree: true });\n }\n\n disconnectedCallback() {\n this._disconnectMathObserver();\n \n document.removeEventListener('click', this._enableAudio);\n\n if (this._audio) {\n this._audio.removeEventListener('playing', this._handlePlaying);\n this._audio.removeEventListener('ended', this._handleEnded);\n this._audio = null;\n }\n\n if (this._root) {\n this._root.unmount();\n }\n }\n\n render() {\n if (this._model && this._session) {\n const el = React.createElement(CategorizeComponent, {\n model: this._model,\n session: this._session,\n onAnswersChange: this.changeAnswers.bind(this),\n onShowCorrectToggle: this.onShowCorrectToggle.bind(this),\n pauseMathObserver: this.pauseMathObserver,\n resumeMathObserver: this.resumeMathObserver,\n });\n\n if (!this._root) {\n this._root = createRoot(this);\n }\n this._root.render(el);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_react","_interopRequireDefault","require","_client","_mathRendering","_renderUi","_piePlayerEvents","_categorize","Categorize","HTMLElement","constructor","_defineProperty2","default","_mathRenderPending","requestAnimationFrame","_mathObserver","_mathObserverPaused","disconnect","renderMath","setTimeout","observe","childList","subtree","characterData","_root","_initMathObserver","MutationObserver","_scheduleMathRender","_disconnectMathObserver","model","m","_model","eliminateBlindAnswersFromSession","dispatchEvent","ModelSetEvent","tagName","toLowerCase","isComplete","_audioInitialized","render","autoplayAudioEnabled","choices","completeAudioEnabled","hasUnplacedChoices","possibleResponses","responseAreasToBeFilled","elementContext","audioComplete","audio","querySelector","isInsidePrompt","closest","_session","answers","Array","isArray","filledResponseAreas","filter","answer","length","areResponseAreasFilled","duplicatesAllowed","some","choice","categoryCount","allAnswersIds","map","flat","requiredAnswersPlaced","response","every","val","includes","session","s","mappedChoices","c","id","filteredAnswers","answerChoices","changeAnswers","selector","SessionChangedEvent","onShowCorrectToggle","_createAudioInfoToast","info","document","createElement","Object","assign","style","position","top","width","height","display","justifyContent","alignItems","background","zIndex","cursor","img","src","EnableAudioAutoplayImage","alt","appendChild","connectedCallback","observer","mutationsList","forEach","mutation","type","container","enableAudio","play","removeChild","removeEventListener","paused","addEventListener","handlePlaying","audioStartTime","Date","getTime","handleEnded","audioEndTime","waitTime","_audio","_handlePlaying","_handleEnded","_enableAudio","disconnectedCallback","unmount","el","React","CategorizeComponent","onAnswersChange","bind","pauseMathObserver","resumeMathObserver","createRoot","exports"],"sources":["../src/index.js"],"sourcesContent":["import React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { EnableAudioAutoplayImage } from '@pie-lib/render-ui';\nimport { SessionChangedEvent, ModelSetEvent } from '@pie-framework/pie-player-events';\nimport CategorizeComponent from './categorize';\n\nexport default class Categorize extends HTMLElement {\n constructor() {\n super();\n this._root = null;\n this._mathObserver = null;\n this._mathRenderPending = false;\n }\n\n _scheduleMathRender = () => {\n if (this._mathRenderPending) return;\n\n this._mathRenderPending = true;\n\n requestAnimationFrame(() => {\n if (this._mathObserver && !this._mathObserverPaused) {\n this._mathObserver.disconnect();\n }\n\n renderMath(this);\n\n this._mathRenderPending = false;\n\n setTimeout(() => {\n if (this._mathObserver && !this._mathObserverPaused) {\n this._mathObserver.observe(this, {\n childList: true,\n subtree: true,\n characterData: false,\n });\n }\n }, 50);\n });\n };\n\n _initMathObserver() {\n if (this._mathObserver) return;\n\n this._mathObserver = new MutationObserver(() => {\n this._scheduleMathRender();\n });\n\n this._mathObserver.observe(this, {\n childList: true,\n subtree: true,\n characterData: false,\n });\n }\n\n _disconnectMathObserver() {\n if (this._mathObserver) {\n this._mathObserver.disconnect();\n this._mathObserver = null;\n }\n }\n\n pauseMathObserver = () => {\n if (this._mathObserver) {\n this._mathObserver.disconnect();\n this._mathObserverPaused = true;\n }\n };\n\n resumeMathObserver = () => {\n if (this._mathObserverPaused) {\n this._mathObserverPaused = false;\n\n if (this._mathObserver) {\n this._mathObserver.observe(this, {\n childList: true,\n subtree: true,\n characterData: false,\n });\n }\n }\n };\n\n set model(m) {\n this._model = m;\n\n this.eliminateBlindAnswersFromSession();\n this.dispatchEvent(new ModelSetEvent(this.tagName.toLowerCase(), this.isComplete(), !!this._model));\n // reset the audioInitialized to false since the model changed, and we might need to reinitialize the audio\n this._audioInitialized = false;\n\n this.render();\n }\n\n isComplete() {\n const {\n autoplayAudioEnabled,\n choices,\n completeAudioEnabled,\n hasUnplacedChoices,\n possibleResponses,\n responseAreasToBeFilled,\n } = this._model || {};\n const elementContext = this;\n\n // check audio completion if audio settings are enabled and audio actually exists\n if (autoplayAudioEnabled && completeAudioEnabled && !this.audioComplete) {\n if (elementContext) {\n const audio = elementContext.querySelector('audio');\n const isInsidePrompt = audio && audio.closest('.preview-prompt');\n\n // only require audio completion if audio exists and is inside the prompt\n if (audio && isInsidePrompt) {\n return false;\n }\n }\n }\n\n if (!this._session || !this._session.answers) {\n return false;\n }\n\n const { answers } = this._session;\n\n if (!Array.isArray(answers)) {\n return false;\n }\n\n // filter answers by category and count the ones with content\n const filledResponseAreas = answers.filter((answer) => answer.choices.length).length;\n // check if an answer choice was added to at least as many response areas\n // as the number of populated response areas in the correct answer\n const areResponseAreasFilled = filledResponseAreas >= responseAreasToBeFilled;\n // check if multiple placements are allowed\n const duplicatesAllowed = (choices || []).some((choice) => choice.categoryCount === 0);\n\n if (duplicatesAllowed) {\n // an answer choice can be used multiple times\n return areResponseAreasFilled;\n }\n\n // any correct answer have any unplaced answer choices (by the author)\n if (hasUnplacedChoices) {\n return areResponseAreasFilled;\n }\n\n const allAnswersIds = answers.map((answer) => answer.choices).flat();\n\n // check if any correct answer have any unplaced answer choices (by the student)\n const requiredAnswersPlaced = (possibleResponses || []).some((response) =>\n response.every((val) => allAnswersIds.includes(val)),\n );\n\n // true - all choices (required for a correct response) were placed into a response area\n return requiredAnswersPlaced;\n }\n\n set session(s) {\n if (s && !s.answers) {\n s.answers = [];\n }\n\n this._session = s;\n this.render();\n }\n\n get session() {\n return this._session;\n }\n\n eliminateBlindAnswersFromSession() {\n const { answers = [] } = this._session || {};\n const { choices = [] } = this._model || {};\n\n const mappedChoices = choices.map((c) => c.id) || [];\n const filteredAnswers = answers.map((answer) => {\n const answerChoices = answer?.choices || [];\n answer.choices = answerChoices.filter((c) => mappedChoices.includes(c));\n\n return answer;\n });\n\n if (filteredAnswers.length > 0) {\n this.changeAnswers(filteredAnswers);\n }\n }\n\n changeAnswers(answers) {\n this._session.answers = answers;\n this._session.selector = 'Mouse';\n\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), this.isComplete()));\n\n this.render();\n }\n\n onShowCorrectToggle() {\n renderMath(this);\n }\n\n _createAudioInfoToast() {\n const info = document.createElement('div');\n info.id = 'play-audio-info';\n\n Object.assign(info.style, {\n position: 'absolute',\n top: 0,\n width: '100%',\n height: '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n background: 'white',\n zIndex: '1000',\n cursor: 'pointer',\n });\n\n const img = document.createElement('img');\n img.src = EnableAudioAutoplayImage;\n img.alt = 'Click anywhere to enable audio autoplay';\n img.width = 500;\n img.height = 300;\n\n info.appendChild(img);\n return info;\n }\n\n connectedCallback() {\n this._initMathObserver();\n \n // Observation: audio in Chrome will have the autoplay attribute,\n // while other browsers will not have the autoplay attribute and will need a user interaction to play the audio\n // This workaround fixes the issue of audio being cached and played on any user interaction in Safari and Firefox\n const observer = new MutationObserver((mutationsList, observer) => {\n mutationsList.forEach((mutation) => {\n if (mutation.type === 'childList') {\n if (this._audioInitialized) return;\n const audio = this.querySelector('audio');\n const isInsidePrompt = audio && audio.closest('.preview-prompt');\n\n if (!this._model) return;\n if (!this._model.autoplayAudioEnabled) return;\n if (audio && !isInsidePrompt) return;\n if (!audio) return;\n\n const info = this._createAudioInfoToast();\n const container = this.querySelector('#main-container');\n const enableAudio = () => {\n if (this.querySelector('#play-audio-info')) {\n audio.play();\n container.removeChild(info);\n }\n\n document.removeEventListener('click', enableAudio);\n };\n\n // if the audio is paused, it means the user has not interacted with the page yet and the audio will not play\n // FIX FOR SAFARI: play with a slight delay to check if autoplay was blocked\n setTimeout(() => {\n if (audio.paused && !this.querySelector('#play-audio-info')) {\n // add info message as a toast to enable audio playback\n container.appendChild(info);\n document.addEventListener('click', enableAudio);\n } else {\n document.removeEventListener('click', enableAudio);\n }\n }, 500);\n\n // we need to listen for the playing event to remove the toast in case the audio plays because of re-rendering\n const handlePlaying = () => {\n //timestamp when auto-played audio started playing\n this._session.audioStartTime = this._session.audioStartTime || new Date().getTime();\n\n const info = this.querySelector('#play-audio-info');\n if (info) {\n container.removeChild(info);\n }\n\n audio.removeEventListener('playing', handlePlaying);\n };\n\n audio.addEventListener('playing', handlePlaying);\n\n // we need to listen for the ended event to update the isComplete state\n const handleEnded = () => {\n //timestamp when auto-played audio completed playing\n this._session.audioEndTime = this._session.audioEndTime || new Date().getTime();\n\n let { audioStartTime, audioEndTime, waitTime } = this._session;\n if (!waitTime && audioStartTime && audioEndTime) {\n // waitTime is elapsed time the user waited for auto-played audio to finish\n this._session.waitTime = audioEndTime - audioStartTime;\n }\n\n this.audioComplete = true;\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), this.isComplete()));\n\n audio.removeEventListener('ended', handleEnded);\n };\n\n audio.addEventListener('ended', handleEnded);\n\n // store references to remove later\n this._audio = audio;\n this._handlePlaying = handlePlaying;\n this._handleEnded = handleEnded;\n this._enableAudio = enableAudio;\n // set to true to prevent multiple initializations\n this._audioInitialized = true;\n\n observer.disconnect();\n }\n });\n });\n\n observer.observe(this, { childList: true, subtree: true });\n }\n\n disconnectedCallback() {\n this._disconnectMathObserver();\n \n document.removeEventListener('click', this._enableAudio);\n\n if (this._audio) {\n this._audio.removeEventListener('playing', this._handlePlaying);\n this._audio.removeEventListener('ended', this._handleEnded);\n this._audio = null;\n }\n\n if (this._root) {\n this._root.unmount();\n }\n }\n\n render() {\n if (this._model && this._session) {\n const el = React.createElement(CategorizeComponent, {\n model: this._model,\n session: this._session,\n onAnswersChange: this.changeAnswers.bind(this),\n onShowCorrectToggle: this.onShowCorrectToggle.bind(this),\n pauseMathObserver: this.pauseMathObserver,\n resumeMathObserver: this.resumeMathObserver,\n });\n\n if (!this._root) {\n this._root = createRoot(this);\n }\n this._root.render(el);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
7
- "version": "13.2.0-beta.0",
7
+ "version": "13.2.0",
8
8
  "description": "",
9
9
  "author": "pie framework developers",
10
10
  "license": "ISC",
@@ -16,11 +16,11 @@
16
16
  "@mui/material": "^7.3.4",
17
17
  "@pie-framework/pie-player-events": "^0.1.0",
18
18
  "@pie-lib/categorize": "2.0.2",
19
- "@pie-lib/config-ui": "13.1.0-beta",
20
- "@pie-lib/correct-answer-toggle": "4.0.5",
21
- "@pie-lib/drag": "4.0.6",
19
+ "@pie-lib/config-ui": "13.0.16",
20
+ "@pie-lib/correct-answer-toggle": "4.0.6",
21
+ "@pie-lib/drag": "4.1.1",
22
22
  "@pie-lib/math-rendering": "5.1.0",
23
- "@pie-lib/render-ui": "6.1.3",
23
+ "@pie-lib/render-ui": "7.0.0",
24
24
  "@pie-lib/translator": "4.0.2",
25
25
  "debug": "^4.1.1",
26
26
  "lodash-es": "^4.17.23",
@@ -28,7 +28,7 @@
28
28
  "react": "18.3.1",
29
29
  "react-dom": "18.3.1"
30
30
  },
31
- "gitHead": "fe47b94dd1957aaae2617f391d9e29142fb11b82",
31
+ "gitHead": "e299866c75466c3c3f12469e783c129c800f24fb",
32
32
  "scripts": {
33
33
  "postpublish": "../../scripts/postpublish"
34
34
  },
@@ -1,100 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _react = _interopRequireDefault(require("react"));
5
- var _react2 = require("@testing-library/react");
6
- var _styles = require("@mui/material/styles");
7
- var _main = require("../main");
8
- // Mock the Design component to avoid complex dependencies
9
- jest.mock('../design', () => ({
10
- model,
11
- configuration,
12
- onChange,
13
- title
14
- }) => /*#__PURE__*/_react.default.createElement("div", {
15
- "data-testid": "design-component"
16
- }, /*#__PURE__*/_react.default.createElement("span", {
17
- "data-testid": "design-title"
18
- }, title), /*#__PURE__*/_react.default.createElement("span", {
19
- "data-testid": "categories-count"
20
- }, model?.categories?.length || 0), /*#__PURE__*/_react.default.createElement("span", {
21
- "data-testid": "choices-count"
22
- }, model?.choices?.length || 0)));
23
- const theme = (0, _styles.createTheme)();
24
- const createModel = (overrides = {}) => ({
25
- correctResponse: [],
26
- choices: [],
27
- categories: [],
28
- ...overrides
29
- });
30
- describe('Main', () => {
31
- const onModelChanged = jest.fn();
32
- beforeEach(() => {
33
- jest.clearAllMocks();
34
- });
35
- const renderMain = (extras = {}) => {
36
- const defaults = {
37
- classes: {},
38
- className: 'className',
39
- onModelChanged,
40
- model: createModel()
41
- };
42
- const props = {
43
- ...defaults,
44
- ...extras
45
- };
46
- return (0, _react2.render)(/*#__PURE__*/_react.default.createElement(_styles.ThemeProvider, {
47
- theme: theme
48
- }, /*#__PURE__*/_react.default.createElement(_main.Main, props)));
49
- };
50
- describe('rendering', () => {
51
- it('renders without crashing', () => {
52
- const {
53
- container
54
- } = renderMain();
55
- expect(container).toBeInTheDocument();
56
- });
57
- it('renders the Design component', () => {
58
- renderMain();
59
- expect(_react2.screen.getByTestId('design-component')).toBeInTheDocument();
60
- });
61
- it('passes "Design" as the title', () => {
62
- renderMain();
63
- expect(_react2.screen.getByTestId('design-title')).toHaveTextContent('Design');
64
- });
65
- });
66
- describe('model passing', () => {
67
- it('passes model with categories to Design', () => {
68
- renderMain({
69
- model: createModel({
70
- categories: [{
71
- id: '1',
72
- label: 'Category 1'
73
- }, {
74
- id: '2',
75
- label: 'Category 2'
76
- }]
77
- })
78
- });
79
- expect(_react2.screen.getByTestId('categories-count')).toHaveTextContent('2');
80
- });
81
- it('passes model with choices to Design', () => {
82
- renderMain({
83
- model: createModel({
84
- choices: [{
85
- id: '1',
86
- content: 'Choice 1'
87
- }, {
88
- id: '2',
89
- content: 'Choice 2'
90
- }, {
91
- id: '3',
92
- content: 'Choice 3'
93
- }]
94
- })
95
- });
96
- expect(_react2.screen.getByTestId('choices-count')).toHaveTextContent('3');
97
- });
98
- });
99
- });
100
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfc3R5bGVzIiwiX21haW4iLCJqZXN0IiwibW9jayIsIm1vZGVsIiwiY29uZmlndXJhdGlvbiIsIm9uQ2hhbmdlIiwidGl0bGUiLCJkZWZhdWx0IiwiY3JlYXRlRWxlbWVudCIsImNhdGVnb3JpZXMiLCJsZW5ndGgiLCJjaG9pY2VzIiwidGhlbWUiLCJjcmVhdGVUaGVtZSIsImNyZWF0ZU1vZGVsIiwib3ZlcnJpZGVzIiwiY29ycmVjdFJlc3BvbnNlIiwiZGVzY3JpYmUiLCJvbk1vZGVsQ2hhbmdlZCIsImZuIiwiYmVmb3JlRWFjaCIsImNsZWFyQWxsTW9ja3MiLCJyZW5kZXJNYWluIiwiZXh0cmFzIiwiZGVmYXVsdHMiLCJjbGFzc2VzIiwiY2xhc3NOYW1lIiwicHJvcHMiLCJyZW5kZXIiLCJUaGVtZVByb3ZpZGVyIiwiTWFpbiIsIml0IiwiY29udGFpbmVyIiwiZXhwZWN0IiwidG9CZUluVGhlRG9jdW1lbnQiLCJzY3JlZW4iLCJnZXRCeVRlc3RJZCIsInRvSGF2ZVRleHRDb250ZW50IiwiaWQiLCJsYWJlbCIsImNvbnRlbnQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvX190ZXN0c19fL21haW4udGVzdC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHJlbmRlciwgc2NyZWVuIH0gZnJvbSAnQHRlc3RpbmctbGlicmFyeS9yZWFjdCc7XG5pbXBvcnQgeyBUaGVtZVByb3ZpZGVyLCBjcmVhdGVUaGVtZSB9IGZyb20gJ0BtdWkvbWF0ZXJpYWwvc3R5bGVzJztcblxuaW1wb3J0IHsgTWFpbiB9IGZyb20gJy4uL21haW4nO1xuXG4vLyBNb2NrIHRoZSBEZXNpZ24gY29tcG9uZW50IHRvIGF2b2lkIGNvbXBsZXggZGVwZW5kZW5jaWVzXG5qZXN0Lm1vY2soJy4uL2Rlc2lnbicsICgpID0+ICh7IG1vZGVsLCBjb25maWd1cmF0aW9uLCBvbkNoYW5nZSwgdGl0bGUgfSkgPT4gKFxuICA8ZGl2IGRhdGEtdGVzdGlkPVwiZGVzaWduLWNvbXBvbmVudFwiPlxuICAgIDxzcGFuIGRhdGEtdGVzdGlkPVwiZGVzaWduLXRpdGxlXCI+e3RpdGxlfTwvc3Bhbj5cbiAgICA8c3BhbiBkYXRhLXRlc3RpZD1cImNhdGVnb3JpZXMtY291bnRcIj57bW9kZWw/LmNhdGVnb3JpZXM/Lmxlbmd0aCB8fCAwfTwvc3Bhbj5cbiAgICA8c3BhbiBkYXRhLXRlc3RpZD1cImNob2ljZXMtY291bnRcIj57bW9kZWw/LmNob2ljZXM/Lmxlbmd0aCB8fCAwfTwvc3Bhbj5cbiAgPC9kaXY+XG4pKTtcblxuY29uc3QgdGhlbWUgPSBjcmVhdGVUaGVtZSgpO1xuXG5jb25zdCBjcmVhdGVNb2RlbCA9IChvdmVycmlkZXMgPSB7fSkgPT4gKHtcbiAgY29ycmVjdFJlc3BvbnNlOiBbXSxcbiAgY2hvaWNlczogW10sXG4gIGNhdGVnb3JpZXM6IFtdLFxuICAuLi5vdmVycmlkZXMsXG59KTtcblxuZGVzY3JpYmUoJ01haW4nLCAoKSA9PiB7XG4gIGNvbnN0IG9uTW9kZWxDaGFuZ2VkID0gamVzdC5mbigpO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGplc3QuY2xlYXJBbGxNb2NrcygpO1xuICB9KTtcblxuICBjb25zdCByZW5kZXJNYWluID0gKGV4dHJhcyA9IHt9KSA9PiB7XG4gICAgY29uc3QgZGVmYXVsdHMgPSB7XG4gICAgICBjbGFzc2VzOiB7fSxcbiAgICAgIGNsYXNzTmFtZTogJ2NsYXNzTmFtZScsXG4gICAgICBvbk1vZGVsQ2hhbmdlZCxcbiAgICAgIG1vZGVsOiBjcmVhdGVNb2RlbCgpLFxuICAgIH07XG4gICAgY29uc3QgcHJvcHMgPSB7IC4uLmRlZmF1bHRzLCAuLi5leHRyYXMgfTtcblxuICAgIHJldHVybiByZW5kZXIoXG4gICAgICA8VGhlbWVQcm92aWRlciB0aGVtZT17dGhlbWV9PlxuICAgICAgICA8TWFpbiB7Li4ucHJvcHN9IC8+XG4gICAgICA8L1RoZW1lUHJvdmlkZXI+XG4gICAgKTtcbiAgfTtcblxuICBkZXNjcmliZSgncmVuZGVyaW5nJywgKCkgPT4ge1xuICAgIGl0KCdyZW5kZXJzIHdpdGhvdXQgY3Jhc2hpbmcnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyTWFpbigpO1xuICAgICAgZXhwZWN0KGNvbnRhaW5lcikudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIHRoZSBEZXNpZ24gY29tcG9uZW50JywgKCkgPT4ge1xuICAgICAgcmVuZGVyTWFpbigpO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRlc3RJZCgnZGVzaWduLWNvbXBvbmVudCcpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Bhc3NlcyBcIkRlc2lnblwiIGFzIHRoZSB0aXRsZScsICgpID0+IHtcbiAgICAgIHJlbmRlck1haW4oKTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXN0SWQoJ2Rlc2lnbi10aXRsZScpKS50b0hhdmVUZXh0Q29udGVudCgnRGVzaWduJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdtb2RlbCBwYXNzaW5nJywgKCkgPT4ge1xuICAgIGl0KCdwYXNzZXMgbW9kZWwgd2l0aCBjYXRlZ29yaWVzIHRvIERlc2lnbicsICgpID0+IHtcbiAgICAgIHJlbmRlck1haW4oe1xuICAgICAgICBtb2RlbDogY3JlYXRlTW9kZWwoe1xuICAgICAgICAgIGNhdGVnb3JpZXM6IFtcbiAgICAgICAgICAgIHsgaWQ6ICcxJywgbGFiZWw6ICdDYXRlZ29yeSAxJyB9LFxuICAgICAgICAgICAgeyBpZDogJzInLCBsYWJlbDogJ0NhdGVnb3J5IDInIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSksXG4gICAgICB9KTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXN0SWQoJ2NhdGVnb3JpZXMtY291bnQnKSkudG9IYXZlVGV4dENvbnRlbnQoJzInKTtcbiAgICB9KTtcblxuICAgIGl0KCdwYXNzZXMgbW9kZWwgd2l0aCBjaG9pY2VzIHRvIERlc2lnbicsICgpID0+IHtcbiAgICAgIHJlbmRlck1haW4oe1xuICAgICAgICBtb2RlbDogY3JlYXRlTW9kZWwoe1xuICAgICAgICAgIGNob2ljZXM6IFtcbiAgICAgICAgICAgIHsgaWQ6ICcxJywgY29udGVudDogJ0Nob2ljZSAxJyB9LFxuICAgICAgICAgICAgeyBpZDogJzInLCBjb250ZW50OiAnQ2hvaWNlIDInIH0sXG4gICAgICAgICAgICB7IGlkOiAnMycsIGNvbnRlbnQ6ICdDaG9pY2UgMycgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9KSxcbiAgICAgIH0pO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRlc3RJZCgnY2hvaWNlcy1jb3VudCcpKS50b0hhdmVUZXh0Q29udGVudCgnMycpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxPQUFBLEdBQUFGLE9BQUE7QUFFQSxJQUFBRyxLQUFBLEdBQUFILE9BQUE7QUFFQTtBQUNBSSxJQUFJLENBQUNDLElBQUksQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDO0VBQUVDLEtBQUs7RUFBRUMsYUFBYTtFQUFFQyxRQUFRO0VBQUVDO0FBQU0sQ0FBQyxrQkFDckVYLE1BQUEsQ0FBQVksT0FBQSxDQUFBQyxhQUFBO0VBQUssZUFBWTtBQUFrQixnQkFDakNiLE1BQUEsQ0FBQVksT0FBQSxDQUFBQyxhQUFBO0VBQU0sZUFBWTtBQUFjLEdBQUVGLEtBQVksQ0FBQyxlQUMvQ1gsTUFBQSxDQUFBWSxPQUFBLENBQUFDLGFBQUE7RUFBTSxlQUFZO0FBQWtCLEdBQUVMLEtBQUssRUFBRU0sVUFBVSxFQUFFQyxNQUFNLElBQUksQ0FBUSxDQUFDLGVB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
@@ -1,39 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.extractArgs = exports.callsOnChange = void 0;
8
- var _util = _interopRequireDefault(require("util"));
9
- const extractArgs = argObject => {
10
- let args = Array.prototype.slice.call(arguments);
11
- const method = args[0];
12
- const last = args[args.length - 1];
13
- const fnArgs = args.splice(1, args.length - 2);
14
- return {
15
- method,
16
- last,
17
- fnArgs
18
- };
19
- };
20
- exports.extractArgs = extractArgs;
21
- const callsOnChange = function () {
22
- let args = Array.prototype.slice.call(arguments);
23
- const wrapper = args[0];
24
- const method = args[1];
25
- const expected = args[args.length - 1];
26
- const fnArgs = args.splice(2, args.length - 3);
27
- const argString = fnArgs.map(o => _util.default.inspect(o, {
28
- colors: true
29
- })).join(', ');
30
- it(`${method}(${argString}) calls onChange with ${_util.default.inspect(expected, {
31
- colors: true
32
- })}`, () => {
33
- const instance = wrapper.instance();
34
- instance[method].apply(instance, fnArgs);
35
- expected();
36
- });
37
- };
38
- exports.callsOnChange = callsOnChange;
39
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdXRpbCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiZXh0cmFjdEFyZ3MiLCJhcmdPYmplY3QiLCJhcmdzIiwiQXJyYXkiLCJwcm90b3R5cGUiLCJzbGljZSIsImNhbGwiLCJhcmd1bWVudHMiLCJtZXRob2QiLCJsYXN0IiwibGVuZ3RoIiwiZm5BcmdzIiwic3BsaWNlIiwiZXhwb3J0cyIsImNhbGxzT25DaGFuZ2UiLCJ3cmFwcGVyIiwiZXhwZWN0ZWQiLCJhcmdTdHJpbmciLCJtYXAiLCJvIiwidXRpbCIsImluc3BlY3QiLCJjb2xvcnMiLCJqb2luIiwiaXQiLCJpbnN0YW5jZSIsImFwcGx5Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL19fdGVzdHNfXy91dGlscy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdXRpbCBmcm9tICd1dGlsJztcblxuZXhwb3J0IGNvbnN0IGV4dHJhY3RBcmdzID0gKGFyZ09iamVjdCkgPT4ge1xuICBsZXQgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7XG4gIGNvbnN0IG1ldGhvZCA9IGFyZ3NbMF07XG4gIGNvbnN0IGxhc3QgPSBhcmdzW2FyZ3MubGVuZ3RoIC0gMV07XG4gIGNvbnN0IGZuQXJncyA9IGFyZ3Muc3BsaWNlKDEsIGFyZ3MubGVuZ3RoIC0gMik7XG4gIHJldHVybiB7IG1ldGhvZCwgbGFzdCwgZm5BcmdzIH07XG59O1xuXG5leHBvcnQgY29uc3QgY2FsbHNPbkNoYW5nZSA9IGZ1bmN0aW9uICgpIHtcbiAgbGV0IGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuICBjb25zdCB3cmFwcGVyID0gYXJnc1swXTtcbiAgY29uc3QgbWV0aG9kID0gYXJnc1sxXTtcbiAgY29uc3QgZXhwZWN0ZWQgPSBhcmdzW2FyZ3MubGVuZ3RoIC0gMV07XG4gIGNvbnN0IGZuQXJncyA9IGFyZ3Muc3BsaWNlKDIsIGFyZ3MubGVuZ3RoIC0gMyk7XG4gIGNvbnN0IGFyZ1N0cmluZyA9IGZuQXJncy5tYXAoKG8pID0+IHV0aWwuaW5zcGVjdChvLCB7IGNvbG9yczogdHJ1ZSB9KSkuam9pbignLCAnKTtcbiAgaXQoYCR7bWV0aG9kfSgke2FyZ1N0cmluZ30pIGNhbGxzIG9uQ2hhbmdlIHdpdGggJHt1dGlsLmluc3BlY3QoZXhwZWN0ZWQsIHtcbiAgICBjb2xvcnM6IHRydWUsXG4gIH0pfWAsICgpID0+IHtcbiAgICBjb25zdCBpbnN0YW5jZSA9IHdyYXBwZXIuaW5zdGFuY2UoKTtcbiAgICBpbnN0YW5jZVttZXRob2RdLmFwcGx5KGluc3RhbmNlLCBmbkFyZ3MpO1xuICAgIGV4cGVjdGVkKCk7XG4gIH0pO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVPLE1BQU1DLFdBQVcsR0FBSUMsU0FBUyxJQUFLO0VBQ3hDLElBQUlDLElBQUksR0FBR0MsS0FBSyxDQUFDQyxTQUFTLENBQUNDLEtBQUssQ0FBQ0MsSUFBSSxDQUFDQyxTQUFTLENBQUM7RUFDaEQsTUFBTUMsTUFBTSxHQUFHTixJQUFJLENBQUMsQ0FBQyxDQUFDO0VBQ3RCLE1BQU1PLElBQUksR0FBR1AsSUFBSSxDQUFDQSxJQUFJLENBQUNRLE1BQU0sR0FBRyxDQUFDLENBQUM7RUFDbEMsTUFBTUMsTUFBTSxHQUFHVCxJQUFJLENBQUNVLE1BQU0sQ0FBQyxDQUFDLEVBQUVWLElBQUksQ0FBQ1EsTUFBTSxHQUFHLENBQUMsQ0FBQztFQUM5QyxPQUFPO0lBQUVGLE1BQU07SUFBRUMsSUFBSTtJQUFFRTtFQUFPLENBQUM7QUFDakMsQ0FBQztBQUFDRSxPQUFBLENBQUFiLFdBQUEsR0FBQUEsV0FBQTtBQUVLLE1BQU1jLGFBQWEsR0FBRyxTQUFBQSxDQUFBLEVBQVk7RUFDdkMsSUFBSVosSUFBSSxHQUFHQyxLQUFLLENBQUNDLFNBQVMsQ0FBQ0MsS0FBSyxDQUFDQyxJQUFJLENBQUNDLFNBQVMsQ0FBQztFQUNoRCxNQUFNUSxPQUFPLEdBQUdiLElBQUksQ0FBQyxDQUFDLENBQUM7RUFDdkIsTUFBTU0sTUFBTSxHQUFHTixJQUFJLENBQUMsQ0FBQyxDQUFDO0VBQ3RCLE1BQU1jLFFBQVEsR0FBR2QsSUFBSSxDQUFDQSxJQUFJLENBQUNRLE1BQU0sR0FBRyxDQUFDLENBQUM7RUFDdEMsTUFBTUMsTUFBTSxHQUFHVCxJQUFJLENBQUNVLE1BQU0sQ0FBQyxDQUFDLEVBQUVWLElBQUksQ0FBQ1EsTUFBTSxHQUFHLENBQUMsQ0FBQztFQUM5QyxNQUFNTyxTQUFTLEdBQUdOLE1BQU0sQ0FBQ08sR0FBRyxDQUFFQyxDQUFDLElBQUtDLGFBQUksQ0FBQ0MsT0FBTyxDQUFDRixDQUFDLEVBQUU7SUFBRUcsTUFBTSxFQUFFO0VBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsSUFBSSxDQUFDLElBQUksQ0FBQztFQUNqRkMsRUFBRSxDQUFDLEdBQUdoQixNQUFNLElBQUlTLFNBQVMseUJBQXlCRyxhQUFJLENBQUNDLE9BQU8sQ0FBQ0wsUUFBUSxFQUFFO0lBQ3ZFTSxNQUFNLEVBQUU7RUFDVixDQUFDLENBQUMsRUFBRSxFQUFFLE1BQU07SUFDVixNQUFNRyxRQUFRLEdBQUdWLE9BQU8sQ0FBQ1UsUUFBUSxDQUFDLENBQUM7SUFDbkNBLFFBQVEsQ0FBQ2pCLE1BQU0sQ0FBQyxDQUFDa0IsS0FBSyxDQUFDRCxRQUFRLEVBQUVkLE1BQU0sQ0FBQztJQUN4Q0ssUUFBUSxDQUFDLENBQUM7RUFDWixDQUFDLENBQUM7QUFDSixDQUFDO0FBQUNILE9BQUEsQ0FBQUMsYUFBQSxHQUFBQSxhQUFBIiwiaWdub3JlTGlzdCI6W119