@pie-lib/rubric 1.0.0-beta.5 → 1.1.0-next.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.
package/CHANGELOG.md CHANGED
@@ -3,7 +3,7 @@
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
- ## [0.8.5](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.4...@pie-lib/rubric@0.8.5) (2023-07-04)
6
+ # [1.0.0-next.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.28.3-next.0...@pie-lib/rubric@1.0.0-next.0) (2026-01-19)
7
7
 
8
8
  **Note:** Version bump only for package @pie-lib/rubric
9
9
 
@@ -11,7 +11,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
11
11
 
12
12
 
13
13
 
14
- ## [0.8.4](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.3...@pie-lib/rubric@0.8.4) (2023-06-24)
14
+ ## [0.28.3-next.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.42.0-mui-update.0...@pie-lib/rubric@0.28.3-next.0) (2026-01-19)
15
15
 
16
16
  **Note:** Version bump only for package @pie-lib/rubric
17
17
 
@@ -19,21 +19,349 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
19
19
 
20
20
 
21
21
 
22
- ## [0.8.3](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.2...@pie-lib/rubric@0.8.3) (2023-06-23)
22
+ ## [0.28.2](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.28.1...@pie-lib/rubric@0.28.2) (2025-11-27)
23
23
 
24
24
  **Note:** Version bump only for package @pie-lib/rubric
25
25
 
26
+ ## [0.28.1](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.24.2...@pie-lib/rubric@0.28.1) (2025-10-22)
27
+
28
+ **Note:** Version bump only for package @pie-lib/rubric
26
29
 
30
+ # [0.28.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.27.0...@pie-lib/rubric@0.28.0) (2025-10-16)
27
31
 
32
+ **Note:** Version bump only for package @pie-lib/rubric
28
33
 
34
+ # [0.27.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.24.0...@pie-lib/rubric@0.27.0) (2025-10-16)
29
35
 
30
- ## [0.8.2](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.1...@pie-lib/rubric@0.8.2) (2023-06-13)
36
+ **Note:** Version bump only for package @pie-lib/rubric
37
+
38
+ # [0.26.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.24.0...@pie-lib/rubric@0.26.0) (2025-10-16)
39
+
40
+ **Note:** Version bump only for package @pie-lib/rubric
41
+
42
+ # [0.25.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.24.0...@pie-lib/rubric@0.25.0) (2025-10-16)
43
+
44
+ **Note:** Version bump only for package @pie-lib/rubric
45
+
46
+ ## [0.24.2](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.24.1...@pie-lib/rubric@0.24.2) (2025-10-14)
47
+
48
+ **Note:** Version bump only for package @pie-lib/rubric
49
+
50
+ ## [0.24.1](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.24.0...@pie-lib/rubric@0.24.1) (2025-10-09)
51
+
52
+ **Note:** Version bump only for package @pie-lib/rubric
53
+
54
+ # [0.24.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.31...@pie-lib/rubric@0.24.0) (2025-09-25)
55
+
56
+ ### Bug Fixes
57
+
58
+ - fixed pie-lib/icons import [PD-5126](<[dcb506c](https://github.com/pie-framework/pie-lib/commit/dcb506c914a177f6d88bf73247a023bfe71dac1f)>)
59
+
60
+ ### Features
61
+
62
+ - split pie-toolbox into multiple packages [PD-5126](<[7d55a25](https://github.com/pie-framework/pie-lib/commit/7d55a2552d084cd3d0d5c00dc77411b2ced2f5e2)>)
63
+
64
+ # [0.23.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.22.0...@pie-lib/rubric@0.23.0) (2025-09-18)
65
+
66
+ **Note:** Version bump only for package @pie-lib/rubric
67
+
68
+ # [0.22.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.21.0...@pie-lib/rubric@0.22.0) (2025-09-18)
69
+
70
+ **Note:** Version bump only for package @pie-lib/rubric
71
+
72
+ # [0.21.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.31...@pie-lib/rubric@0.21.0) (2025-09-18)
73
+
74
+ ### Bug Fixes
75
+
76
+ - fixed pie-lib/icons import [PD-5126](<[dcb506c](https://github.com/pie-framework/pie-lib/commit/dcb506c914a177f6d88bf73247a023bfe71dac1f)>)
77
+
78
+ ### Features
79
+
80
+ - split pie-toolbox into multiple packages [PD-5126](<[7d55a25](https://github.com/pie-framework/pie-lib/commit/7d55a2552d084cd3d0d5c00dc77411b2ced2f5e2)>)
81
+
82
+ # [0.20.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.19.0...@pie-lib/rubric@0.20.0) (2025-09-17)
83
+
84
+ **Note:** Version bump only for package @pie-lib/rubric
85
+
86
+ # [0.19.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.18.0...@pie-lib/rubric@0.19.0) (2025-09-17)
87
+
88
+ **Note:** Version bump only for package @pie-lib/rubric
89
+
90
+ # [0.18.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.17.1...@pie-lib/rubric@0.18.0) (2025-09-17)
91
+
92
+ **Note:** Version bump only for package @pie-lib/rubric
93
+
94
+ ## [0.17.1](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.31...@pie-lib/rubric@0.17.1) (2025-08-11)
95
+
96
+ ### Bug Fixes
97
+
98
+ - fixed pie-lib/icons import [PD-5126](<[dcb506c](https://github.com/pie-framework/pie-lib/commit/dcb506c914a177f6d88bf73247a023bfe71dac1f)>)
99
+
100
+ ### Features
101
+
102
+ - split pie-toolbox into multiple packages [PD-5126](<[7d55a25](https://github.com/pie-framework/pie-lib/commit/7d55a2552d084cd3d0d5c00dc77411b2ced2f5e2)>)
103
+
104
+ # [0.17.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.31...@pie-lib/rubric@0.17.0) (2025-08-07)
105
+
106
+ ### Features
107
+
108
+ - split pie-toolbox into multiple packages [PD-5126](<[7d55a25](https://github.com/pie-framework/pie-lib/commit/7d55a2552d084cd3d0d5c00dc77411b2ced2f5e2)>)
109
+
110
+ # [0.16.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.31...@pie-lib/rubric@0.16.0) (2025-07-31)
111
+
112
+ **Note:** Version bump only for package @pie-lib/rubric
113
+
114
+ # [0.15.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.31...@pie-lib/rubric@0.15.0) (2025-07-31)
115
+
116
+ **Note:** Version bump only for package @pie-lib/rubric
117
+
118
+ # [0.14.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.31...@pie-lib/rubric@0.14.0) (2025-07-31)
119
+
120
+ **Note:** Version bump only for package @pie-lib/rubric
121
+
122
+ # [0.13.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.31...@pie-lib/rubric@0.13.0) (2025-07-31)
123
+
124
+ **Note:** Version bump only for package @pie-lib/rubric
125
+
126
+ # [0.12.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.31...@pie-lib/rubric@0.12.0) (2025-07-31)
127
+
128
+ **Note:** Version bump only for package @pie-lib/rubric
129
+
130
+ # [0.11.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.31...@pie-lib/rubric@0.11.0) (2025-07-31)
131
+
132
+ **Note:** Version bump only for package @pie-lib/rubric
133
+
134
+ # [0.13.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.31...@pie-lib/rubric@0.13.0) (2025-07-31)
135
+
136
+ **Note:** Version bump only for package @pie-lib/rubric
137
+
138
+ # [0.12.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.31...@pie-lib/rubric@0.12.0) (2025-07-31)
139
+
140
+ **Note:** Version bump only for package @pie-lib/rubric
141
+
142
+ # [0.11.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.31...@pie-lib/rubric@0.11.0) (2025-07-31)
143
+
144
+ **Note:** Version bump only for package @pie-lib/rubric
145
+
146
+ # [0.12.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.31...@pie-lib/rubric@0.12.0) (2025-07-31)
147
+
148
+ **Note:** Version bump only for package @pie-lib/rubric
149
+
150
+ # [0.11.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.31...@pie-lib/rubric@0.11.0) (2025-07-31)
151
+
152
+ **Note:** Version bump only for package @pie-lib/rubric
153
+
154
+ # [0.10.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.31...@pie-lib/rubric@0.10.0) (2025-07-31)
155
+
156
+ **Note:** Version bump only for package @pie-lib/rubric
157
+
158
+ # [0.10.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.31...@pie-lib/rubric@0.10.0) (2025-07-31)
159
+
160
+ **Note:** Version bump only for package @pie-lib/rubric
161
+
162
+ # [0.11.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.31...@pie-lib/rubric@0.11.0) (2025-07-31)
163
+
164
+ **Note:** Version bump only for package @pie-lib/rubric
165
+
166
+ # [0.10.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.31...@pie-lib/rubric@0.10.0) (2025-07-31)
167
+
168
+ **Note:** Version bump only for package @pie-lib/rubric
169
+
170
+ # [0.9.0-beta.8](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.31...@pie-lib/rubric@0.9.0-beta.8) (2025-07-25)
171
+
172
+ **Note:** Version bump only for package @pie-lib/rubric
173
+
174
+ # [0.9.0-beta.7](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.31...@pie-lib/rubric@0.9.0-beta.7) (2025-07-25)
175
+
176
+ **Note:** Version bump only for package @pie-lib/rubric
177
+
178
+ # [0.9.0-beta.7](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.31...@pie-lib/rubric@0.9.0-beta.7) (2025-07-25)
179
+
180
+ **Note:** Version bump only for package @pie-lib/rubric
181
+
182
+ # [0.9.0-beta.6](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.31...@pie-lib/rubric@0.9.0-beta.6) (2025-07-25)
183
+
184
+ **Note:** Version bump only for package @pie-lib/rubric
185
+
186
+ # [0.9.0-beta.6](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.31...@pie-lib/rubric@0.9.0-beta.6) (2025-07-25)
187
+
188
+ **Note:** Version bump only for package @pie-lib/rubric
189
+
190
+ # [0.9.0-beta.5](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.31...@pie-lib/rubric@0.9.0-beta.5) (2025-07-25)
191
+
192
+ **Note:** Version bump only for package @pie-lib/rubric
193
+
194
+ # [0.9.0-beta.5](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.31...@pie-lib/rubric@0.9.0-beta.5) (2025-07-25)
195
+
196
+ **Note:** Version bump only for package @pie-lib/rubric
197
+
198
+ # [0.9.0-beta.4](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.31...@pie-lib/rubric@0.9.0-beta.4) (2025-07-25)
199
+
200
+ **Note:** Version bump only for package @pie-lib/rubric
201
+
202
+ # [0.9.0-beta.3](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.31...@pie-lib/rubric@0.9.0-beta.3) (2025-07-25)
203
+
204
+ **Note:** Version bump only for package @pie-lib/rubric
205
+
206
+ # [0.9.0-beta.4](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.31...@pie-lib/rubric@0.9.0-beta.4) (2025-07-23)
207
+
208
+ **Note:** Version bump only for package @pie-lib/rubric
209
+
210
+ # [0.9.0-beta.3](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.31...@pie-lib/rubric@0.9.0-beta.3) (2025-07-23)
211
+
212
+ **Note:** Version bump only for package @pie-lib/rubric
213
+
214
+ # [0.9.0-beta.3](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.31...@pie-lib/rubric@0.9.0-beta.3) (2025-07-20)
215
+
216
+ **Note:** Version bump only for package @pie-lib/rubric
217
+
218
+ # [0.9.0-beta.2](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.31...@pie-lib/rubric@0.9.0-beta.2) (2025-07-20)
219
+
220
+ **Note:** Version bump only for package @pie-lib/rubric
221
+
222
+ # [0.9.0-beta.1](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.31...@pie-lib/rubric@0.9.0-beta.1) (2025-07-20)
223
+
224
+ **Note:** Version bump only for package @pie-lib/rubric
225
+
226
+ # [0.9.0-beta.2](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.31...@pie-lib/rubric@0.9.0-beta.2) (2025-07-20)
227
+
228
+ **Note:** Version bump only for package @pie-lib/rubric
229
+
230
+ # [0.9.0-beta.1](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.31...@pie-lib/rubric@0.9.0-beta.1) (2025-07-20)
231
+
232
+ **Note:** Version bump only for package @pie-lib/rubric
233
+
234
+ # [0.9.0-beta.1](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.31...@pie-lib/rubric@0.9.0-beta.1) (2025-07-20)
235
+
236
+ **Note:** Version bump only for package @pie-lib/rubric
237
+
238
+ # [0.9.0-beta.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.31...@pie-lib/rubric@0.9.0-beta.0) (2025-07-20)
31
239
 
32
240
  **Note:** Version bump only for package @pie-lib/rubric
33
241
 
242
+ # [0.10.0-beta.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.31...@pie-lib/rubric@0.10.0-beta.0) (2025-07-15)
34
243
 
244
+ **Note:** Version bump only for package @pie-lib/rubric
245
+
246
+ # [0.9.0-beta.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.31...@pie-lib/rubric@0.9.0-beta.0) (2025-07-15)
247
+
248
+ **Note:** Version bump only for package @pie-lib/rubric
249
+
250
+ ## [0.8.30](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.29...@pie-lib/rubric@0.8.30) (2023-10-16)
251
+
252
+ **Note:** Version bump only for package @pie-lib/rubric
253
+
254
+ ## [0.8.29](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.28...@pie-lib/rubric@0.8.29) (2023-10-16)
255
+
256
+ **Note:** Version bump only for package @pie-lib/rubric
257
+
258
+ ## [0.8.28](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.27...@pie-lib/rubric@0.8.28) (2023-10-03)
259
+
260
+ **Note:** Version bump only for package @pie-lib/rubric
261
+
262
+ ## [0.8.27](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.26...@pie-lib/rubric@0.8.27) (2023-10-01)
263
+
264
+ **Note:** Version bump only for package @pie-lib/rubric
265
+
266
+ ## [0.8.26](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.25...@pie-lib/rubric@0.8.26) (2023-09-27)
267
+
268
+ **Note:** Version bump only for package @pie-lib/rubric
269
+
270
+ ## [0.8.25](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.24...@pie-lib/rubric@0.8.25) (2023-09-27)
271
+
272
+ **Note:** Version bump only for package @pie-lib/rubric
273
+
274
+ ## [0.8.24](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.23...@pie-lib/rubric@0.8.24) (2023-09-27)
275
+
276
+ **Note:** Version bump only for package @pie-lib/rubric
277
+
278
+ ## [0.8.23](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.22...@pie-lib/rubric@0.8.23) (2023-09-26)
279
+
280
+ **Note:** Version bump only for package @pie-lib/rubric
281
+
282
+ ## [0.8.22](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.21...@pie-lib/rubric@0.8.22) (2023-09-25)
283
+
284
+ **Note:** Version bump only for package @pie-lib/rubric
35
285
 
286
+ ## [0.8.21](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.20...@pie-lib/rubric@0.8.21) (2023-09-20)
36
287
 
288
+ **Note:** Version bump only for package @pie-lib/rubric
289
+
290
+ ## [0.8.20](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.19...@pie-lib/rubric@0.8.20) (2023-09-20)
291
+
292
+ **Note:** Version bump only for package @pie-lib/rubric
293
+
294
+ ## [0.8.19](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.18...@pie-lib/rubric@0.8.19) (2023-09-18)
295
+
296
+ **Note:** Version bump only for package @pie-lib/rubric
297
+
298
+ ## [0.8.18](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.17...@pie-lib/rubric@0.8.18) (2023-09-14)
299
+
300
+ **Note:** Version bump only for package @pie-lib/rubric
301
+
302
+ ## [0.8.17](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.16...@pie-lib/rubric@0.8.17) (2023-09-14)
303
+
304
+ **Note:** Version bump only for package @pie-lib/rubric
305
+
306
+ ## [0.8.16](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.15...@pie-lib/rubric@0.8.16) (2023-09-14)
307
+
308
+ **Note:** Version bump only for package @pie-lib/rubric
309
+
310
+ ## [0.8.15](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.14...@pie-lib/rubric@0.8.15) (2023-09-05)
311
+
312
+ **Note:** Version bump only for package @pie-lib/rubric
313
+
314
+ ## [0.8.14](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.13...@pie-lib/rubric@0.8.14) (2023-09-02)
315
+
316
+ **Note:** Version bump only for package @pie-lib/rubric
317
+
318
+ ## [0.8.13](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.12...@pie-lib/rubric@0.8.13) (2023-09-02)
319
+
320
+ **Note:** Version bump only for package @pie-lib/rubric
321
+
322
+ ## [0.8.12](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.11...@pie-lib/rubric@0.8.12) (2023-08-30)
323
+
324
+ **Note:** Version bump only for package @pie-lib/rubric
325
+
326
+ ## [0.8.11](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.10...@pie-lib/rubric@0.8.11) (2023-08-21)
327
+
328
+ **Note:** Version bump only for package @pie-lib/rubric
329
+
330
+ ## [0.8.10](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.9...@pie-lib/rubric@0.8.10) (2023-08-21)
331
+
332
+ **Note:** Version bump only for package @pie-lib/rubric
333
+
334
+ ## [0.8.9](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.8...@pie-lib/rubric@0.8.9) (2023-08-15)
335
+
336
+ **Note:** Version bump only for package @pie-lib/rubric
337
+
338
+ ## [0.8.8](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.7...@pie-lib/rubric@0.8.8) (2023-08-07)
339
+
340
+ **Note:** Version bump only for package @pie-lib/rubric
341
+
342
+ ## [0.8.7](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.6...@pie-lib/rubric@0.8.7) (2023-07-31)
343
+
344
+ **Note:** Version bump only for package @pie-lib/rubric
345
+
346
+ ## [0.8.6](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.5...@pie-lib/rubric@0.8.6) (2023-07-24)
347
+
348
+ **Note:** Version bump only for package @pie-lib/rubric
349
+
350
+ ## [0.8.5](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.4...@pie-lib/rubric@0.8.5) (2023-07-04)
351
+
352
+ **Note:** Version bump only for package @pie-lib/rubric
353
+
354
+ ## [0.8.4](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.3...@pie-lib/rubric@0.8.4) (2023-06-24)
355
+
356
+ **Note:** Version bump only for package @pie-lib/rubric
357
+
358
+ ## [0.8.3](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.2...@pie-lib/rubric@0.8.3) (2023-06-23)
359
+
360
+ **Note:** Version bump only for package @pie-lib/rubric
361
+
362
+ ## [0.8.2](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.1...@pie-lib/rubric@0.8.2) (2023-06-13)
363
+
364
+ **Note:** Version bump only for package @pie-lib/rubric
37
365
 
38
366
  ## [0.8.1](https://github.com/pie-framework/pie-lib/compare/@pie-lib/rubric@0.8.0...@pie-lib/rubric@0.8.1) (2023-06-12)
39
367
 
package/LICENSE.md ADDED
@@ -0,0 +1,5 @@
1
+ Copyright 2019 CoreSpring Inc
2
+
3
+ Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
4
+
5
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
@@ -0,0 +1 @@
1
+ []
@@ -0,0 +1,213 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
5
+ var _react = require("@testing-library/react");
6
+ var _react2 = _interopRequireDefault(require("react"));
7
+ var _authoring = require("../authoring");
8
+ var _lodash = _interopRequireDefault(require("lodash"));
9
+ var _styles = require("@mui/material/styles");
10
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
11
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
12
+ // Mock dependencies
13
+ jest.mock('@pie-lib/editable-html-tip-tap', function () {
14
+ return function EditableHtml(props) {
15
+ return /*#__PURE__*/_react2["default"].createElement("div", {
16
+ "data-testid": "editable-html",
17
+ "data-markup": props.markup
18
+ });
19
+ };
20
+ });
21
+ jest.mock('@pie-lib/config-ui', function () {
22
+ return {
23
+ FeedbackConfig: function FeedbackConfig(_ref) {
24
+ var feedback = _ref.feedback;
25
+ return /*#__PURE__*/_react2["default"].createElement("div", {
26
+ "data-testid": "feedback-config"
27
+ }, JSON.stringify(feedback));
28
+ }
29
+ };
30
+ });
31
+ jest.mock('@hello-pangea/dnd', function () {
32
+ return {
33
+ DragDropContext: function DragDropContext(_ref2) {
34
+ var children = _ref2.children;
35
+ return /*#__PURE__*/_react2["default"].createElement("div", {
36
+ "data-testid": "drag-drop-context"
37
+ }, children);
38
+ },
39
+ Droppable: function Droppable(_ref3) {
40
+ var children = _ref3.children;
41
+ return children({
42
+ droppableProps: {},
43
+ innerRef: function innerRef() {}
44
+ }, {});
45
+ },
46
+ Draggable: function Draggable(_ref4) {
47
+ var children = _ref4.children,
48
+ index = _ref4.index;
49
+ return children({
50
+ innerRef: function innerRef() {},
51
+ draggableProps: {
52
+ 'data-draggable-index': index
53
+ },
54
+ dragHandleProps: {}
55
+ }, {});
56
+ }
57
+ };
58
+ });
59
+ describe('Rubric', function () {
60
+ var points = ['nothing right', 'a teeny bit right', 'mostly right', 'bingo'];
61
+ var sampleAnswers = [null, 'just right', 'not left', null];
62
+ var theme = (0, _styles.createTheme)();
63
+ var renderComponent = function renderComponent() {
64
+ var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
65
+ var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
66
+ var defaultProps = _objectSpread({
67
+ classes: {},
68
+ onChange: jest.fn(),
69
+ className: 'className',
70
+ value: _objectSpread({
71
+ excludeZero: false,
72
+ points: points,
73
+ sampleAnswers: sampleAnswers
74
+ }, value)
75
+ }, props);
76
+ return _objectSpread(_objectSpread({}, (0, _react.render)(/*#__PURE__*/_react2["default"].createElement(_styles.ThemeProvider, {
77
+ theme: theme
78
+ }, /*#__PURE__*/_react2["default"].createElement(_authoring.RawAuthoring, defaultProps)))), {}, {
79
+ onChange: defaultProps.onChange,
80
+ props: defaultProps
81
+ });
82
+ };
83
+ describe('render', function () {
84
+ it('renders rubric title and main structure', function () {
85
+ renderComponent();
86
+ expect(_react.screen.getByText('Rubric')).toBeInTheDocument();
87
+ expect(_react.screen.getByLabelText('Max Points')).toBeInTheDocument();
88
+ expect(_react.screen.getByLabelText('Exclude zeros')).toBeInTheDocument();
89
+ });
90
+ it('renders all point configurations', function () {
91
+ var _renderComponent = renderComponent(),
92
+ container = _renderComponent.container;
93
+ // Verify DragDropContext is rendered
94
+ expect(container.querySelector('[data-testid="drag-drop-context"]')).toBeInTheDocument();
95
+
96
+ // Check that point labels are rendered (4 points = "3 pts", "2 pts", "1 pt", "0 pt")
97
+ // Note: The PointConfig component uses singular "pt" for 0 and 1, plural "pts" for 2+
98
+ expect(_react.screen.getByText('3 pts')).toBeInTheDocument();
99
+ expect(_react.screen.getByText('2 pts')).toBeInTheDocument();
100
+ expect(_react.screen.getByText('1 pt')).toBeInTheDocument();
101
+ expect(_react.screen.getByText('0 pt')).toBeInTheDocument();
102
+ });
103
+ describe('draggable', function () {
104
+ it('renders 3 draggable items when excludeZero is true', function () {
105
+ var _renderComponent2 = renderComponent({
106
+ excludeZero: true
107
+ }),
108
+ container = _renderComponent2.container;
109
+
110
+ // When excludeZero is true, the last point (0 pts) should not be rendered
111
+ // So we should have 3 draggable items
112
+ var draggableItems = container.querySelectorAll('[data-draggable-index]');
113
+ expect(draggableItems.length).toEqual(3);
114
+
115
+ // Verify the 0 pt label is not rendered
116
+ expect(_react.screen.queryByText('0 pt')).not.toBeInTheDocument();
117
+ });
118
+ it('renders 4 draggable items when excludeZero is false', function () {
119
+ var _renderComponent3 = renderComponent({
120
+ excludeZero: false
121
+ }),
122
+ container = _renderComponent3.container;
123
+
124
+ // When excludeZero is false, all points including 0 should be rendered
125
+ var draggableItems = container.querySelectorAll('[data-draggable-index]');
126
+ expect(draggableItems.length).toEqual(4);
127
+
128
+ // Verify all point labels are rendered
129
+ expect(_react.screen.getByText('3 pts')).toBeInTheDocument();
130
+ expect(_react.screen.getByText('2 pts')).toBeInTheDocument();
131
+ expect(_react.screen.getByText('1 pt')).toBeInTheDocument();
132
+ expect(_react.screen.getByText('0 pt')).toBeInTheDocument();
133
+ });
134
+ });
135
+ });
136
+ describe('logic', function () {
137
+ describe('changeMaxPoints', function () {
138
+ var testChangeMaxPoints = function testChangeMaxPoints(maxPoints, excludeZero, expectedPoints, expectedSampleAnswers) {
139
+ it("maxPoints=".concat(maxPoints, ", excludeZero=").concat(excludeZero, " calls onChange correctly"), function () {
140
+ var _container$querySelec;
141
+ var _renderComponent4 = renderComponent({
142
+ excludeZero: excludeZero
143
+ }),
144
+ onChange = _renderComponent4.onChange,
145
+ container = _renderComponent4.container;
146
+
147
+ // Get the component instance through the container
148
+ // We need to call the method directly since we're testing internal behavior
149
+ var instance = (_container$querySelec = container.querySelector('[class*="MuiBox-root"]')) === null || _container$querySelec === void 0 ? void 0 : _container$querySelec._owner;
150
+
151
+ // Since we can't easily access instance methods in RTL, we'll test the behavior
152
+ // by verifying the onChange prop receives the correct values
153
+ // For now, we'll directly test the logic
154
+ var component = new _authoring.RawAuthoring({
155
+ value: {
156
+ excludeZero: excludeZero,
157
+ points: points,
158
+ sampleAnswers: sampleAnswers
159
+ },
160
+ onChange: onChange,
161
+ classes: {},
162
+ className: 'className'
163
+ });
164
+ component.changeMaxPoints(maxPoints);
165
+ expect(onChange).toHaveBeenCalledWith({
166
+ excludeZero: excludeZero,
167
+ points: expectedPoints,
168
+ sampleAnswers: expectedSampleAnswers,
169
+ maxPoints: expectedPoints.length - 1
170
+ });
171
+ });
172
+ };
173
+ testChangeMaxPoints(1, false, _lodash["default"].takeRight(points, 2), _lodash["default"].takeRight(sampleAnswers, 2));
174
+ testChangeMaxPoints(1, true, _lodash["default"].takeRight(points, 2), _lodash["default"].takeRight(sampleAnswers, 2));
175
+ testChangeMaxPoints(2, true, _lodash["default"].takeRight(points, 3), _lodash["default"].takeRight(sampleAnswers, 3));
176
+ testChangeMaxPoints(2, false, _lodash["default"].takeRight(points, 3), _lodash["default"].takeRight(sampleAnswers, 3));
177
+ testChangeMaxPoints(5, false, ['', ''].concat(points), [null, null].concat(sampleAnswers));
178
+ });
179
+ describe('changeSampleResponse', function () {
180
+ var testChangeSampleResponse = function testChangeSampleResponse(index, clickedItem, excludeZero, expectedPoints, expectedSampleAnswers) {
181
+ it("Point ".concat(index, " with clickedItem=\"").concat(clickedItem, "\" calls onChange correctly"), function () {
182
+ var _renderComponent5 = renderComponent({
183
+ excludeZero: excludeZero
184
+ }),
185
+ onChange = _renderComponent5.onChange;
186
+
187
+ // Test the logic by creating a component instance and calling the method
188
+ var component = new _authoring.RawAuthoring({
189
+ value: {
190
+ excludeZero: excludeZero,
191
+ points: points,
192
+ sampleAnswers: sampleAnswers
193
+ },
194
+ onChange: onChange,
195
+ classes: {},
196
+ className: 'className'
197
+ });
198
+ component.onPointMenuChange(index, clickedItem);
199
+ expect(onChange).toHaveBeenCalledWith({
200
+ excludeZero: excludeZero,
201
+ points: expectedPoints,
202
+ sampleAnswers: expectedSampleAnswers
203
+ });
204
+ });
205
+ };
206
+ testChangeSampleResponse(0, 'sample', false, points, ['', 'just right', 'not left', null]);
207
+ testChangeSampleResponse(3, 'sample', false, points, [null, 'just right', 'not left', '']);
208
+ testChangeSampleResponse(1, 'sample', true, points, [null, null, 'not left', null]);
209
+ testChangeSampleResponse(3, 'sample', true, points, [null, 'just right', 'not left', '']);
210
+ });
211
+ });
212
+ });
213
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX3JlYWN0MiIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfYXV0aG9yaW5nIiwiX2xvZGFzaCIsIl9zdHlsZXMiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsImplc3QiLCJtb2NrIiwiRWRpdGFibGVIdG1sIiwicHJvcHMiLCJjcmVhdGVFbGVtZW50IiwibWFya3VwIiwiRmVlZGJhY2tDb25maWciLCJfcmVmIiwiZmVlZGJhY2siLCJKU09OIiwic3RyaW5naWZ5IiwiRHJhZ0Ryb3BDb250ZXh0IiwiX3JlZjIiLCJjaGlsZHJlbiIsIkRyb3BwYWJsZSIsIl9yZWYzIiwiZHJvcHBhYmxlUHJvcHMiLCJpbm5lclJlZiIsIkRyYWdnYWJsZSIsIl9yZWY0IiwiaW5kZXgiLCJkcmFnZ2FibGVQcm9wcyIsImRyYWdIYW5kbGVQcm9wcyIsImRlc2NyaWJlIiwicG9pbnRzIiwic2FtcGxlQW5zd2VycyIsInRoZW1lIiwiY3JlYXRlVGhlbWUiLCJyZW5kZXJDb21wb25lbnQiLCJ2YWx1ZSIsInVuZGVmaW5lZCIsImRlZmF1bHRQcm9wcyIsImNsYXNzZXMiLCJvbkNoYW5nZSIsImZuIiwiY2xhc3NOYW1lIiwiZXhjbHVkZVplcm8iLCJyZW5kZXIiLCJUaGVtZVByb3ZpZGVyIiwiUmF3QXV0aG9yaW5nIiwiaXQiLCJleHBlY3QiLCJzY3JlZW4iLCJnZXRCeVRleHQiLCJ0b0JlSW5UaGVEb2N1bWVudCIsImdldEJ5TGFiZWxUZXh0IiwiX3JlbmRlckNvbXBvbmVudCIsImNvbnRhaW5lciIsInF1ZXJ5U2VsZWN0b3IiLCJfcmVuZGVyQ29tcG9uZW50MiIsImRyYWdnYWJsZUl0ZW1zIiwicXVlcnlTZWxlY3RvckFsbCIsInRvRXF1YWwiLCJxdWVyeUJ5VGV4dCIsIm5vdCIsIl9yZW5kZXJDb21wb25lbnQzIiwidGVzdENoYW5nZU1heFBvaW50cyIsIm1heFBvaW50cyIsImV4cGVjdGVkUG9pbnRzIiwiZXhwZWN0ZWRTYW1wbGVBbnN3ZXJzIiwiY29uY2F0IiwiX2NvbnRhaW5lciRxdWVyeVNlbGVjIiwiX3JlbmRlckNvbXBvbmVudDQiLCJpbnN0YW5jZSIsIl9vd25lciIsImNvbXBvbmVudCIsImNoYW5nZU1heFBvaW50cyIsInRvSGF2ZUJlZW5DYWxsZWRXaXRoIiwiXyIsInRha2VSaWdodCIsInRlc3RDaGFuZ2VTYW1wbGVSZXNwb25zZSIsImNsaWNrZWRJdGVtIiwiX3JlbmRlckNvbXBvbmVudDUiLCJvblBvaW50TWVudUNoYW5nZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vcnVicmljLnRlc3QuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbmRlciwgc2NyZWVuIH0gZnJvbSAnQHRlc3RpbmctbGlicmFyeS9yZWFjdCc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgUmF3QXV0aG9yaW5nIH0gZnJvbSAnLi4vYXV0aG9yaW5nJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBUaGVtZVByb3ZpZGVyLCBjcmVhdGVUaGVtZSB9IGZyb20gJ0BtdWkvbWF0ZXJpYWwvc3R5bGVzJztcblxuLy8gTW9jayBkZXBlbmRlbmNpZXNcbmplc3QubW9jaygnQHBpZS1saWIvZWRpdGFibGUtaHRtbC10aXAtdGFwJywgKCkgPT4ge1xuICByZXR1cm4gZnVuY3Rpb24gRWRpdGFibGVIdG1sKHByb3BzKSB7XG4gICAgcmV0dXJuIDxkaXYgZGF0YS10ZXN0aWQ9XCJlZGl0YWJsZS1odG1sXCIgZGF0YS1tYXJrdXA9e3Byb3BzLm1hcmt1cH0gLz47XG4gIH07XG59KTtcblxuamVzdC5tb2NrKCdAcGllLWxpYi9jb25maWctdWknLCAoKSA9PiAoe1xuICBGZWVkYmFja0NvbmZpZzogKHsgZmVlZGJhY2sgfSkgPT4gPGRpdiBkYXRhLXRlc3RpZD1cImZlZWRiYWNrLWNvbmZpZ1wiPntKU09OLnN0cmluZ2lmeShmZWVkYmFjayl9PC9kaXY+LFxufSkpO1xuXG5qZXN0Lm1vY2soJ0BoZWxsby1wYW5nZWEvZG5kJywgKCkgPT4gKHtcbiAgRHJhZ0Ryb3BDb250ZXh0OiAoeyBjaGlsZHJlbiB9KSA9PiA8ZGl2IGRhdGEtdGVzdGlkPVwiZHJhZy1kcm9wLWNvbnRleHRcIj57Y2hpbGRyZW59PC9kaXY+LFxuICBEcm9wcGFibGU6ICh7IGNoaWxkcmVuIH0pID0+IGNoaWxkcmVuKHsgZHJvcHBhYmxlUHJvcHM6IHt9LCBpbm5lclJlZjogKCkgPT4ge30gfSwge30pLFxuICBEcmFnZ2FibGU6ICh7IGNoaWxkcmVuLCBpbmRleCB9KSA9PlxuICAgIGNoaWxkcmVuKFxuICAgICAge1xuICAgICAgICBpbm5lclJlZjogKCkgPT4ge30sXG4gICAgICAgIGRyYWdnYWJsZVByb3BzOiB7ICdkYXRhLWRyYWdnYWJsZS1pbmRleCc6IGluZGV4IH0sXG4gICAgICAgIGRyYWdIYW5kbGVQcm9wczoge30sXG4gICAgICB9LFxuICAgICAge30sXG4gICAgKSxcbn0pKTtcblxuZGVzY3JpYmUoJ1J1YnJpYycsICgpID0+IHtcbiAgY29uc3QgcG9pbnRzID0gWydub3RoaW5nIHJpZ2h0JywgJ2EgdGVlbnkgYml0IHJpZ2h0JywgJ21vc3RseSByaWdodCcsICdiaW5nbyddO1xuICBjb25zdCBzYW1wbGVBbnN3ZXJzID0gW251bGwsICdqdXN0IHJpZ2h0JywgJ25vdCBsZWZ0JywgbnVsbF07XG4gIGNvbnN0IHRoZW1lID0gY3JlYXRlVGhlbWUoKTtcblxuICBjb25zdCByZW5kZXJDb21wb25lbnQgPSAodmFsdWUgPSB7fSwgcHJvcHMgPSB7fSkgPT4ge1xuICAgIGNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgICAgIGNsYXNzZXM6IHt9LFxuICAgICAgb25DaGFuZ2U6IGplc3QuZm4oKSxcbiAgICAgIGNsYXNzTmFtZTogJ2NsYXNzTmFtZScsXG4gICAgICB2YWx1ZToge1xuICAgICAgICBleGNsdWRlWmVybzogZmFsc2UsXG4gICAgICAgIHBvaW50cyxcbiAgICAgICAgc2FtcGxlQW5zd2VycyxcbiAgICAgICAgLi4udmFsdWUsXG4gICAgICB9LFxuICAgICAgLi4ucHJvcHMsXG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5yZW5kZXIoXG4gICAgICAgIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt0aGVtZX0+XG4gICAgICAgICAgPFJhd0F1dGhvcmluZyB7Li4uZGVmYXVsdFByb3BzfSAvPlxuICAgICAgICA8L1RoZW1lUHJvdmlkZXI+LFxuICAgICAgKSxcbiAgICAgIG9uQ2hhbmdlOiBkZWZhdWx0UHJvcHMub25DaGFuZ2UsXG4gICAgICBwcm9wczogZGVmYXVsdFByb3BzLFxuICAgIH07XG4gIH07XG5cbiAgZGVzY3JpYmUoJ3JlbmRlcicsICgpID0+IHtcbiAgICBpdCgncmVuZGVycyBydWJyaWMgdGl0bGUgYW5kIG1haW4gc3RydWN0dXJlJywgKCkgPT4ge1xuICAgICAgcmVuZGVyQ29tcG9uZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnUnVicmljJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5TGFiZWxUZXh0KCdNYXggUG9pbnRzJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5TGFiZWxUZXh0KCdFeGNsdWRlIHplcm9zJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyBhbGwgcG9pbnQgY29uZmlndXJhdGlvbnMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyQ29tcG9uZW50KCk7XG4gICAgICAvLyBWZXJpZnkgRHJhZ0Ryb3BDb250ZXh0IGlzIHJlbmRlcmVkXG4gICAgICBleHBlY3QoY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXRlc3RpZD1cImRyYWctZHJvcC1jb250ZXh0XCJdJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG5cbiAgICAgIC8vIENoZWNrIHRoYXQgcG9pbnQgbGFiZWxzIGFyZSByZW5kZXJlZCAoNCBwb2ludHMgPSBcIjMgcHRzXCIsIFwiMiBwdHNcIiwgXCIxIHB0XCIsIFwiMCBwdFwiKVxuICAgICAgLy8gTm90ZTogVGhlIFBvaW50Q29uZmlnIGNvbXBvbmVudCB1c2VzIHNpbmd1bGFyIFwicHRcIiBmb3IgMCBhbmQgMSwgcGx1cmFsIFwicHRzXCIgZm9yIDIrXG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnMyBwdHMnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCcyIHB0cycpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJzEgcHQnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCcwIHB0JykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnZHJhZ2dhYmxlJywgKCkgPT4ge1xuICAgICAgaXQoJ3JlbmRlcnMgMyBkcmFnZ2FibGUgaXRlbXMgd2hlbiBleGNsdWRlWmVybyBpcyB0cnVlJywgKCkgPT4ge1xuICAgICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyQ29tcG9uZW50KHsgZXhjbHVkZVplcm86IHRydWUgfSk7XG5cbiAgICAgICAgLy8gV2hlbiBleGNsdWRlWmVybyBpcyB0cnVlLCB0aGUgbGFzdCBwb2ludCAoMCBwdHMpIHNob3VsZCBub3QgYmUgcmVuZGVyZWRcbiAgICAgICAgLy8gU28gd2Ugc2hvdWxkIGhhdmUgMyBkcmFnZ2FibGUgaXRlbXNcbiAgICAgICAgY29uc3QgZHJhZ2dhYmxlSXRlbXMgPSBjb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtZHJhZ2dhYmxlLWluZGV4XScpO1xuICAgICAgICBleHBlY3QoZHJhZ2dhYmxlSXRlbXMubGVuZ3RoKS50b0VxdWFsKDMpO1xuXG4gICAgICAgIC8vIFZlcmlmeSB0aGUgMCBwdCBsYWJlbCBpcyBub3QgcmVuZGVyZWRcbiAgICAgICAgZXhwZWN0KHNjcmVlbi5xdWVyeUJ5VGV4dCgnMCBwdCcpKS5ub3QudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgncmVuZGVycyA0IGRyYWdnYWJsZSBpdGVtcyB3aGVuIGV4Y2x1ZGVaZXJvIGlzIGZhbHNlJywgKCkgPT4ge1xuICAgICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyQ29tcG9uZW50KHsgZXhjbHVkZVplcm86IGZhbHNlIH0pO1xuXG4gICAgICAgIC8vIFdoZW4gZXhjbHVkZVplcm8gaXMgZmFsc2UsIGFsbCBwb2ludHMgaW5jbHVkaW5nIDAgc2hvdWxkIGJlIHJlbmRlcmVkXG4gICAgICAgIGNvbnN0IGRyYWdnYWJsZUl0ZW1zID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLWRyYWdnYWJsZS1pbmRleF0nKTtcbiAgICAgICAgZXhwZWN0KGRyYWdnYWJsZUl0ZW1zLmxlbmd0aCkudG9FcXVhbCg0KTtcblxuICAgICAgICAvLyBWZXJpZnkgYWxsIHBvaW50IGxhYmVscyBhcmUgcmVuZGVyZWRcbiAgICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJzMgcHRzJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCcyIHB0cycpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnMSBwdCcpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnMCBwdCcpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdsb2dpYycsICgpID0+IHtcbiAgICBkZXNjcmliZSgnY2hhbmdlTWF4UG9pbnRzJywgKCkgPT4ge1xuICAgICAgY29uc3QgdGVzdENoYW5nZU1heFBvaW50cyA9IChtYXhQb2ludHMsIGV4Y2x1ZGVaZXJvLCBleHBlY3RlZFBvaW50cywgZXhwZWN0ZWRTYW1wbGVBbnN3ZXJzKSA9PiB7XG4gICAgICAgIGl0KGBtYXhQb2ludHM9JHttYXhQb2ludHN9LCBleGNsdWRlWmVybz0ke2V4Y2x1ZGVaZXJvfSBjYWxscyBvbkNoYW5nZSBjb3JyZWN0bHlgLCAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgeyBvbkNoYW5nZSwgY29udGFpbmVyIH0gPSByZW5kZXJDb21wb25lbnQoeyBleGNsdWRlWmVybyB9KTtcblxuICAgICAgICAgIC8vIEdldCB0aGUgY29tcG9uZW50IGluc3RhbmNlIHRocm91Z2ggdGhlIGNvbnRhaW5lclxuICAgICAgICAgIC8vIFdlIG5lZWQgdG8gY2FsbCB0aGUgbWV0aG9kIGRpcmVjdGx5IHNpbmNlIHdlJ3JlIHRlc3RpbmcgaW50ZXJuYWwgYmVoYXZpb3JcbiAgICAgICAgICBjb25zdCBpbnN0YW5jZSA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdbY2xhc3MqPVwiTXVpQm94LXJvb3RcIl0nKT8uX293bmVyO1xuXG4gICAgICAgICAgLy8gU2luY2Ugd2UgY2FuJ3QgZWFzaWx5IGFjY2VzcyBpbnN0YW5jZSBtZXRob2RzIGluIFJUTCwgd2UnbGwgdGVzdCB0aGUgYmVoYXZpb3JcbiAgICAgICAgICAvLyBieSB2ZXJpZnlpbmcgdGhlIG9uQ2hhbmdlIHByb3AgcmVjZWl2ZXMgdGhlIGNvcnJlY3QgdmFsdWVzXG4gICAgICAgICAgLy8gRm9yIG5vdywgd2UnbGwgZGlyZWN0bHkgdGVzdCB0aGUgbG9naWNcbiAgICAgICAgICBjb25zdCBjb21wb25lbnQgPSBuZXcgUmF3QXV0aG9yaW5nKHtcbiAgICAgICAgICAgIHZhbHVlOiB7IGV4Y2x1ZGVaZXJvLCBwb2ludHMsIHNhbXBsZUFuc3dlcnMgfSxcbiAgICAgICAgICAgIG9uQ2hhbmdlLFxuICAgICAgICAgICAgY2xhc3Nlczoge30sXG4gICAgICAgICAgICBjbGFzc05hbWU6ICdjbGFzc05hbWUnLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY29tcG9uZW50LmNoYW5nZU1heFBvaW50cyhtYXhQb2ludHMpO1xuXG4gICAgICAgICAgZXhwZWN0KG9uQ2hhbmdlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7XG4gICAgICAgICAgICBleGNsdWRlWmVybyxcbiAgICAgICAgICAgIHBvaW50czogZXhwZWN0ZWRQb2ludHMsXG4gICAgICAgICAgICBzYW1wbGVBbnN3ZXJzOiBleHBlY3RlZFNhbXBsZUFuc3dlcnMsXG4gICAgICAgICAgICBtYXhQb2ludHM6IGV4cGVjdGVkUG9pbnRzLmxlbmd0aCAtIDEsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgdGVzdENoYW5nZU1heFBvaW50cygxLCBmYWxzZSwgXy50YWtlUmlnaHQocG9pbnRzLCAyKSwgXy50YWtlUmlnaHQoc2FtcGxlQW5zd2VycywgMikpO1xuICAgICAgdGVzdENoYW5nZU1heFBvaW50cygxLCB0cnVlLCBfLnRha2VSaWdodChwb2ludHMsIDIpLCBfLnRha2VSaWdodChzYW1wbGVBbnN3ZXJzLCAyKSk7XG4gICAgICB0ZXN0Q2hhbmdlTWF4UG9pbnRzKDIsIHRydWUsIF8udGFrZVJpZ2h0KHBvaW50cywgMyksIF8udGFrZVJpZ2h0KHNhbXBsZUFuc3dlcnMsIDMpKTtcbiAgICAgIHRlc3RDaGFuZ2VNYXhQb2ludHMoMiwgZmFsc2UsIF8udGFrZVJpZ2h0KHBvaW50cywgMyksIF8udGFrZVJpZ2h0KHNhbXBsZUFuc3dlcnMsIDMpKTtcbiAgICAgIHRlc3RDaGFuZ2VNYXhQb2ludHMoNSwgZmFsc2UsIFsnJywgJyddLmNvbmNhdChwb2ludHMpLCBbbnVsbCwgbnVsbF0uY29uY2F0KHNhbXBsZUFuc3dlcnMpKTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdjaGFuZ2VTYW1wbGVSZXNwb25zZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHRlc3RDaGFuZ2VTYW1wbGVSZXNwb25zZSA9IChpbmRleCwgY2xpY2tlZEl0ZW0sIGV4Y2x1ZGVaZXJvLCBleHBlY3RlZFBvaW50cywgZXhwZWN0ZWRTYW1wbGVBbnN3ZXJzKSA9PiB7XG4gICAgICAgIGl0KGBQb2ludCAke2luZGV4fSB3aXRoIGNsaWNrZWRJdGVtPVwiJHtjbGlja2VkSXRlbX1cIiBjYWxscyBvbkNoYW5nZSBjb3JyZWN0bHlgLCAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgeyBvbkNoYW5nZSB9ID0gcmVuZGVyQ29tcG9uZW50KHsgZXhjbHVkZVplcm8gfSk7XG5cbiAgICAgICAgICAvLyBUZXN0IHRoZSBsb2dpYyBieSBjcmVhdGluZyBhIGNvbXBvbmVudCBpbnN0YW5jZSBhbmQgY2FsbGluZyB0aGUgbWV0aG9kXG4gICAgICAgICAgY29uc3QgY29tcG9uZW50ID0gbmV3IFJhd0F1dGhvcmluZyh7XG4gICAgICAgICAgICB2YWx1ZTogeyBleGNsdWRlWmVybywgcG9pbnRzLCBzYW1wbGVBbnN3ZXJzIH0sXG4gICAgICAgICAgICBvbkNoYW5nZSxcbiAgICAgICAgICAgIGNsYXNzZXM6IHt9LFxuICAgICAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3NOYW1lJyxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGNvbXBvbmVudC5vblBvaW50TWVudUNoYW5nZShpbmRleCwgY2xpY2tlZEl0ZW0pO1xuXG4gICAgICAgICAgZXhwZWN0KG9uQ2hhbmdlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7XG4gICAgICAgICAgICBleGNsdWRlWmVybyxcbiAgICAgICAgICAgIHBvaW50czogZXhwZWN0ZWRQb2ludHMsXG4gICAgICAgICAgICBzYW1wbGVBbnN3ZXJzOiBleHBlY3RlZFNhbXBsZUFuc3dlcnMsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgdGVzdENoYW5nZVNhbXBsZVJlc3BvbnNlKDAsICdzYW1wbGUnLCBmYWxzZSwgcG9pbnRzLCBbJycsICdqdXN0IHJpZ2h0JywgJ25vdCBsZWZ0JywgbnVsbF0pO1xuICAgICAgdGVzdENoYW5nZVNhbXBsZVJlc3BvbnNlKDMsICdzYW1wbGUnLCBmYWxzZSwgcG9pbnRzLCBbbnVsbCwgJ2p1c3QgcmlnaHQnLCAnbm90IGxlZnQnLCAnJ10pO1xuICAgICAgdGVzdENoYW5nZVNhbXBsZVJlc3BvbnNlKDEsICdzYW1wbGUnLCB0cnVlLCBwb2ludHMsIFtudWxsLCBudWxsLCAnbm90IGxlZnQnLCBudWxsXSk7XG4gICAgICB0ZXN0Q2hhbmdlU2FtcGxlUmVzcG9uc2UoMywgJ3NhbXBsZScsIHRydWUsIHBvaW50cywgW251bGwsICdqdXN0IHJpZ2h0JywgJ25vdCBsZWZ0JywgJyddKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLFVBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLE9BQUEsR0FBQUYsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFLLE9BQUEsR0FBQUwsT0FBQTtBQUFrRSxTQUFBTSxRQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLElBQUEsQ0FBQUosQ0FBQSxPQUFBRyxNQUFBLENBQUFFLHFCQUFBLFFBQUFDLENBQUEsR0FBQUgsTUFBQSxDQUFBRSxxQkFBQSxDQUFBTCxDQUFBLEdBQUFDLENBQUEsS0FBQUssQ0FBQSxH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