@pie-element/categorize 13.1.1 → 13.1.2-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.
Files changed (265) hide show
  1. package/configure.js +2 -0
  2. package/controller.js +1 -0
  3. package/dist/author/defaults.d.ts +223 -0
  4. package/dist/author/defaults.js +170 -0
  5. package/dist/author/design/builder.d.ts +10 -0
  6. package/dist/author/design/builder.js +24 -0
  7. package/dist/author/design/buttons.d.ts +28 -0
  8. package/dist/author/design/buttons.js +36 -0
  9. package/dist/author/design/categories/RowLabel.d.ts +23 -0
  10. package/dist/author/design/categories/RowLabel.js +47 -0
  11. package/dist/author/design/categories/alternateResponses.d.ts +31 -0
  12. package/dist/author/design/categories/alternateResponses.js +62 -0
  13. package/dist/author/design/categories/category.d.ts +44 -0
  14. package/dist/author/design/categories/category.js +98 -0
  15. package/dist/author/design/categories/choice-preview.d.ts +25 -0
  16. package/dist/author/design/categories/choice-preview.js +60 -0
  17. package/dist/author/design/categories/droppable-placeholder.d.ts +11 -0
  18. package/dist/author/design/categories/droppable-placeholder.js +71 -0
  19. package/dist/author/design/categories/index.d.ts +41 -0
  20. package/dist/author/design/categories/index.js +146 -0
  21. package/dist/author/design/choices/choice.d.ts +11 -0
  22. package/dist/author/design/choices/choice.js +129 -0
  23. package/dist/author/design/choices/config.d.ts +21 -0
  24. package/dist/author/design/choices/config.js +33 -0
  25. package/dist/author/design/choices/index.d.ts +41 -0
  26. package/dist/author/design/choices/index.js +110 -0
  27. package/dist/author/design/header.d.ts +24 -0
  28. package/dist/author/design/header.js +49 -0
  29. package/dist/author/design/index.d.ts +52 -0
  30. package/dist/author/design/index.js +417 -0
  31. package/dist/author/design/input-header.d.ts +39 -0
  32. package/dist/author/design/input-header.js +69 -0
  33. package/dist/author/design/utils.d.ts +9 -0
  34. package/dist/author/design/utils.js +7 -0
  35. package/dist/author/index.d.ts +51 -0
  36. package/dist/author/index.js +87 -0
  37. package/dist/author/main.d.ts +23 -0
  38. package/dist/author/main.js +30 -0
  39. package/dist/author/utils.d.ts +16 -0
  40. package/dist/author/utils.js +17 -0
  41. package/dist/browser/author/index.js +2047 -0
  42. package/dist/browser/author/index.js.map +1 -0
  43. package/dist/browser/categorize.css +2 -0
  44. package/dist/browser/controller/index.js +299 -0
  45. package/dist/browser/controller/index.js.map +1 -0
  46. package/dist/browser/delivery/index.js +1051 -0
  47. package/dist/browser/delivery/index.js.map +1 -0
  48. package/dist/browser/dist-BaJrqHFp.js +50183 -0
  49. package/dist/browser/dist-BaJrqHFp.js.map +1 -0
  50. package/dist/browser/dist-BsrA0RFp.js +2938 -0
  51. package/dist/browser/dist-BsrA0RFp.js.map +1 -0
  52. package/dist/controller/defaults.d.ts +34 -0
  53. package/dist/controller/defaults.js +29 -0
  54. package/dist/controller/index.d.ts +61 -0
  55. package/dist/controller/index.js +155 -0
  56. package/dist/controller/utils.d.ts +20 -0
  57. package/dist/controller/utils.js +35 -0
  58. package/dist/delivery/categorize/categories.d.ts +34 -0
  59. package/dist/delivery/categorize/categories.js +66 -0
  60. package/dist/delivery/categorize/category.d.ts +28 -0
  61. package/dist/delivery/categorize/category.js +48 -0
  62. package/dist/delivery/categorize/choice.d.ts +27 -0
  63. package/dist/delivery/categorize/choice.js +94 -0
  64. package/dist/delivery/categorize/choices.d.ts +39 -0
  65. package/dist/delivery/categorize/choices.js +51 -0
  66. package/dist/delivery/categorize/droppable-placeholder.d.ts +32 -0
  67. package/dist/delivery/categorize/droppable-placeholder.js +64 -0
  68. package/dist/delivery/categorize/grid-content.d.ts +25 -0
  69. package/dist/delivery/categorize/grid-content.js +39 -0
  70. package/dist/delivery/categorize/index.d.ts +57 -0
  71. package/dist/delivery/categorize/index.js +260 -0
  72. package/dist/delivery/index.d.ts +27 -0
  73. package/dist/delivery/index.js +152 -0
  74. package/dist/index.d.ts +1 -0
  75. package/dist/index.iife.d.ts +8 -0
  76. package/dist/index.iife.js +152 -0
  77. package/dist/index.js +2 -0
  78. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_DataView.js +6 -0
  79. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Hash.js +16 -0
  80. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_ListCache.js +16 -0
  81. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Map.js +6 -0
  82. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_MapCache.js +16 -0
  83. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Promise.js +6 -0
  84. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Set.js +6 -0
  85. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Stack.js +14 -0
  86. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Symbol.js +5 -0
  87. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Uint8Array.js +5 -0
  88. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_WeakMap.js +6 -0
  89. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_arrayEach.js +7 -0
  90. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_arrayFilter.js +10 -0
  91. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_arrayLikeKeys.js +15 -0
  92. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_arrayPush.js +7 -0
  93. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_assignValue.js +10 -0
  94. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_assocIndexOf.js +8 -0
  95. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseAssign.js +8 -0
  96. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseAssignIn.js +8 -0
  97. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseAssignValue.js +12 -0
  98. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseClone.js +57 -0
  99. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseCreate.js +14 -0
  100. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseGetAllKeys.js +9 -0
  101. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseGetTag.js +10 -0
  102. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsArguments.js +9 -0
  103. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsMap.js +9 -0
  104. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsNative.js +11 -0
  105. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsSet.js +9 -0
  106. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsTypedArray.js +11 -0
  107. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseKeys.js +12 -0
  108. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseKeysIn.js +13 -0
  109. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseTimes.js +7 -0
  110. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseUnary.js +8 -0
  111. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_cloneArrayBuffer.js +8 -0
  112. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_cloneBuffer.js +10 -0
  113. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_cloneDataView.js +8 -0
  114. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_cloneRegExp.js +8 -0
  115. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_cloneSymbol.js +8 -0
  116. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_cloneTypedArray.js +8 -0
  117. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_copyArray.js +8 -0
  118. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_copyObject.js +14 -0
  119. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_copySymbols.js +8 -0
  120. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_copySymbolsIn.js +8 -0
  121. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_coreJsData.js +5 -0
  122. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_defineProperty.js +10 -0
  123. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_freeGlobal.js +4 -0
  124. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getAllKeys.js +9 -0
  125. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getAllKeysIn.js +9 -0
  126. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getMapData.js +8 -0
  127. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getNative.js +9 -0
  128. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getPrototype.js +5 -0
  129. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getRawTag.js +14 -0
  130. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getSymbols.js +10 -0
  131. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getSymbolsIn.js +11 -0
  132. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getTag.js +23 -0
  133. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getValue.js +6 -0
  134. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_hashClear.js +7 -0
  135. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_hashDelete.js +7 -0
  136. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_hashGet.js +13 -0
  137. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_hashHas.js +9 -0
  138. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_hashSet.js +9 -0
  139. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_initCloneArray.js +8 -0
  140. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_initCloneByTag.js +33 -0
  141. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_initCloneObject.js +9 -0
  142. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_isIndex.js +8 -0
  143. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_isKeyable.js +7 -0
  144. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_isMasked.js +11 -0
  145. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_isPrototype.js +8 -0
  146. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_listCacheClear.js +6 -0
  147. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_listCacheDelete.js +9 -0
  148. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_listCacheGet.js +8 -0
  149. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_listCacheHas.js +7 -0
  150. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_listCacheSet.js +8 -0
  151. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheClear.js +13 -0
  152. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheDelete.js +8 -0
  153. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheGet.js +7 -0
  154. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheHas.js +7 -0
  155. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheSet.js +8 -0
  156. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_nativeCreate.js +5 -0
  157. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_nativeKeys.js +5 -0
  158. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_nativeKeysIn.js +8 -0
  159. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_nodeUtil.js +9 -0
  160. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_objectToString.js +7 -0
  161. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_overArg.js +8 -0
  162. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_root.js +5 -0
  163. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_stackClear.js +7 -0
  164. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_stackDelete.js +7 -0
  165. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_stackGet.js +6 -0
  166. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_stackHas.js +6 -0
  167. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_stackSet.js +16 -0
  168. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_toSource.js +15 -0
  169. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/cloneDeep.js +8 -0
  170. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/eq.js +6 -0
  171. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isArguments.js +10 -0
  172. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isArray.js +4 -0
  173. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isArrayLike.js +8 -0
  174. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isBuffer.js +6 -0
  175. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isEmpty.js +21 -0
  176. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isFunction.js +11 -0
  177. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isLength.js +7 -0
  178. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isMap.js +7 -0
  179. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isObject.js +7 -0
  180. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isObjectLike.js +6 -0
  181. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isSet.js +7 -0
  182. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isTypedArray.js +7 -0
  183. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/keys.js +9 -0
  184. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/keysIn.js +9 -0
  185. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/stubArray.js +6 -0
  186. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/stubFalse.js +6 -0
  187. package/package.json +77 -17
  188. package/CHANGELOG.json +0 -1637
  189. package/CHANGELOG.md +0 -2536
  190. package/LICENSE.md +0 -5
  191. package/README.md +0 -5
  192. package/configure/CHANGELOG.json +0 -1202
  193. package/configure/CHANGELOG.md +0 -2119
  194. package/configure/lib/defaults.js +0 -222
  195. package/configure/lib/defaults.js.map +0 -1
  196. package/configure/lib/design/builder.js +0 -55
  197. package/configure/lib/design/builder.js.map +0 -1
  198. package/configure/lib/design/buttons.js +0 -59
  199. package/configure/lib/design/buttons.js.map +0 -1
  200. package/configure/lib/design/categories/RowLabel.js +0 -66
  201. package/configure/lib/design/categories/RowLabel.js.map +0 -1
  202. package/configure/lib/design/categories/alternateResponses.js +0 -116
  203. package/configure/lib/design/categories/alternateResponses.js.map +0 -1
  204. package/configure/lib/design/categories/category.js +0 -153
  205. package/configure/lib/design/categories/category.js.map +0 -1
  206. package/configure/lib/design/categories/choice-preview.js +0 -79
  207. package/configure/lib/design/categories/choice-preview.js.map +0 -1
  208. package/configure/lib/design/categories/droppable-placeholder.js +0 -93
  209. package/configure/lib/design/categories/droppable-placeholder.js.map +0 -1
  210. package/configure/lib/design/categories/index.js +0 -256
  211. package/configure/lib/design/categories/index.js.map +0 -1
  212. package/configure/lib/design/choices/choice.js +0 -187
  213. package/configure/lib/design/choices/choice.js.map +0 -1
  214. package/configure/lib/design/choices/config.js +0 -58
  215. package/configure/lib/design/choices/config.js.map +0 -1
  216. package/configure/lib/design/choices/index.js +0 -197
  217. package/configure/lib/design/choices/index.js.map +0 -1
  218. package/configure/lib/design/header.js +0 -71
  219. package/configure/lib/design/header.js.map +0 -1
  220. package/configure/lib/design/index.js +0 -727
  221. package/configure/lib/design/index.js.map +0 -1
  222. package/configure/lib/design/input-header.js +0 -105
  223. package/configure/lib/design/input-header.js.map +0 -1
  224. package/configure/lib/design/utils.js +0 -12
  225. package/configure/lib/design/utils.js.map +0 -1
  226. package/configure/lib/index.js +0 -147
  227. package/configure/lib/index.js.map +0 -1
  228. package/configure/lib/main.js +0 -44
  229. package/configure/lib/main.js.map +0 -1
  230. package/configure/lib/utils.js +0 -43
  231. package/configure/lib/utils.js.map +0 -1
  232. package/configure/package.json +0 -32
  233. package/controller/CHANGELOG.json +0 -452
  234. package/controller/CHANGELOG.md +0 -1377
  235. package/controller/lib/defaults.js +0 -33
  236. package/controller/lib/defaults.js.map +0 -1
  237. package/controller/lib/index.js +0 -479
  238. package/controller/lib/index.js.map +0 -1
  239. package/controller/lib/utils.js +0 -69
  240. package/controller/lib/utils.js.map +0 -1
  241. package/controller/package.json +0 -18
  242. package/docs/config-schema.json +0 -2897
  243. package/docs/config-schema.json.md +0 -2138
  244. package/docs/demo/config.js +0 -8
  245. package/docs/demo/generate.js +0 -357
  246. package/docs/demo/index.html +0 -1
  247. package/docs/demo/session.js +0 -12
  248. package/docs/pie-schema.json +0 -1784
  249. package/docs/pie-schema.json.md +0 -1046
  250. package/lib/categorize/categories.js +0 -135
  251. package/lib/categorize/categories.js.map +0 -1
  252. package/lib/categorize/category.js +0 -67
  253. package/lib/categorize/category.js.map +0 -1
  254. package/lib/categorize/choice.js +0 -140
  255. package/lib/categorize/choice.js.map +0 -1
  256. package/lib/categorize/choices.js +0 -99
  257. package/lib/categorize/choices.js.map +0 -1
  258. package/lib/categorize/droppable-placeholder.js +0 -84
  259. package/lib/categorize/droppable-placeholder.js.map +0 -1
  260. package/lib/categorize/grid-content.js +0 -55
  261. package/lib/categorize/grid-content.js.map +0 -1
  262. package/lib/categorize/index.js +0 -450
  263. package/lib/categorize/index.js.map +0 -1
  264. package/lib/index.js +0 -316
  265. package/lib/index.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../../lib-react/icons/dist/correct-response-icon.js","../../../../../shared/player-events/dist/index.js","../../../../../lib-react/correct-answer-toggle/dist/expander.js","../../../../../lib-react/correct-answer-toggle/dist/index.js","../../../../../../node_modules/.bun/@mui+material@7.3.11+eb26afe407ed7030/node_modules/@mui/material/esm/CardContent/cardContentClasses.js","../../../../../../node_modules/.bun/@mui+material@7.3.11+eb26afe407ed7030/node_modules/@mui/material/esm/CardContent/CardContent.js","../../../src/delivery/categorize/choice.tsx","../../../src/delivery/categorize/droppable-placeholder.tsx","../../../src/delivery/categorize/choices.tsx","../../../src/delivery/categorize/grid-content.tsx","../../../src/delivery/categorize/category.tsx","../../../src/delivery/categorize/categories.tsx","../../../src/delivery/categorize/index.tsx","../../../src/delivery/index.ts"],"sourcesContent":["import \"react\";\nimport e from \"prop-types\";\nimport { jsx as t, jsxs as n } from \"react/jsx-runtime\";\nimport { styled as r } from \"@mui/material/styles\";\n//#region src/correct-response-icon.tsx\nvar i = ({ bgFill: e, fgFill: r }) => /* @__PURE__ */ n(\"svg\", {\n\tpreserveAspectRatio: \"xMinYMin meet\",\n\tversion: \"1.1\",\n\tviewBox: \"-283 359 34 35\",\n\tstyle: { enableBackground: \"new -283 359 34 35\" },\n\tchildren: [\n\t\t/* @__PURE__ */ t(\"circle\", {\n\t\t\tcx: \"-266\",\n\t\t\tcy: \"375.9\",\n\t\t\tr: \"14\",\n\t\t\tfill: e\n\t\t}),\n\t\t/* @__PURE__ */ t(\"path\", {\n\t\t\td: \"M-280.5,375.9c0-8,6.5-14.5,14.5-14.5s14.5,6.5,14.5,14.5s-6.5,14.5-14.5,14.5S-280.5,383.9-280.5,375.9z\\n M-279.5,375.9c0,7.4,6.1,13.5,13.5,13.5c7.4,0,13.5-6.1,13.5-13.5s-6.1-13.5-13.5-13.5C-273.4,362.4-279.5,368.5-279.5,375.9z\",\n\t\t\tfill: e\n\t\t}),\n\t\t/* @__PURE__ */ t(\"polygon\", {\n\t\t\tpoints: \"-265.4,383.1 -258.6,377.2 -261.2,374.2 -264.3,376.9 -268.9,368.7 -272.4,370.6\",\n\t\t\tfill: r\n\t\t})\n\t]\n});\ni.propTypes = {\n\tbgFill: e.string.isRequired,\n\tfgFill: e.string.isRequired\n};\nvar a = ({ bgFill: e, fgFill: r, borderFill: i }) => /* @__PURE__ */ n(\"svg\", {\n\tpreserveAspectRatio: \"xMinYMin meet\",\n\tversion: \"1.1\",\n\tviewBox: \"-129.5 127 34 35\",\n\tstyle: { enableBackground: \"new -129.5 127 34 35\" },\n\tchildren: [\n\t\t/* @__PURE__ */ t(\"path\", {\n\t\t\tstyle: {\n\t\t\t\tfill: \"#D0CAC5\",\n\t\t\t\tstroke: \"#E6E3E0\",\n\t\t\t\tstrokeWidth: .75,\n\t\t\t\tstrokeMiterlimit: 10\n\t\t\t},\n\t\t\td: \"M-112.9,160.4c-8.5,0-15.5-6.9-15.5-15.5c0-8.5,6.9-15.5,15.5-15.5s15.5,6.9,15.5,15.5\\n C-97.4,153.5-104.3,160.4-112.9,160.4z\"\n\t\t}),\n\t\t/* @__PURE__ */ t(\"path\", {\n\t\t\tstyle: {\n\t\t\t\tfill: \"#B3ABA4\",\n\t\t\t\tstroke: \"#CDC7C2\",\n\t\t\t\tstrokeWidth: .5,\n\t\t\t\tstrokeMiterlimit: 10\n\t\t\t},\n\t\t\td: \"M-113.2,159c-8,0-14.5-6.5-14.5-14.5s6.5-14.5,14.5-14.5s14.5,6.5,14.5,14.5S-105.2,159-113.2,159z\"\n\t\t}),\n\t\t/* @__PURE__ */ t(\"circle\", {\n\t\t\tcx: \"-114.2\",\n\t\t\tcy: \"143.5\",\n\t\t\tr: \"14\",\n\t\t\tfill: e\n\t\t}),\n\t\t/* @__PURE__ */ t(\"path\", {\n\t\t\td: \"M-114.2,158c-8,0-14.5-6.5-14.5-14.5s6.5-14.5,14.5-14.5s14.5,6.5,14.5,14.5S-106.2,158-114.2,158z\\n M-114.2,130c-7.4,0-13.5,6.1-13.5,13.5s6.1,13.5,13.5,13.5s13.5-6.1,13.5-13.5S-106.8,130-114.2,130z\",\n\t\t\tfill: i\n\t\t}),\n\t\t/* @__PURE__ */ t(\"polygon\", {\n\t\t\tpoints: \"-114.8,150.7 -121.6,144.8 -119,141.8 -115.9,144.5 -111.3,136.3 -107.8,138.2\",\n\t\t\tfill: r\n\t\t})\n\t]\n});\na.propTypes = {\n\tbgFill: e.string.isRequired,\n\tfgFill: e.string.isRequired,\n\tborderFill: e.string.isRequired\n};\nvar o = r(\"div\")(({ size: e }) => ({\n\twidth: e || \"25px\",\n\theight: e || \"25px\"\n})), s = ({ open: e, size: n }) => /* @__PURE__ */ t(o, {\n\tsize: n,\n\tchildren: e ? /* @__PURE__ */ t(i, {\n\t\tbgFill: \"#bce2ff\",\n\t\tfgFill: \"#1a9cff\"\n\t}) : /* @__PURE__ */ t(a, {\n\t\tbgFill: \"white\",\n\t\tfgFill: \"#1a9cff\",\n\t\tborderFill: \"#bce2ff\"\n\t})\n});\ns.propTypes = {\n\topen: e.bool,\n\tsize: e.string\n}, s.defaultProps = { open: !1 };\n//#endregion\nexport { s as default };\n","//#region src/index.ts\nvar e = class e extends CustomEvent {\n\tstatic {\n\t\tthis.TYPE = \"model-set\";\n\t}\n\tconstructor(t, n, r) {\n\t\tsuper(e.TYPE, {\n\t\t\tbubbles: !0,\n\t\t\tcomposed: !0,\n\t\t\tdetail: {\n\t\t\t\tcomplete: n,\n\t\t\t\tcomponent: t,\n\t\t\t\thasModel: r\n\t\t\t}\n\t\t}), this.component = t, this.complete = n;\n\t}\n}, t = class e extends CustomEvent {\n\tstatic {\n\t\tthis.TYPE = \"session-changed\";\n\t}\n\tconstructor(t, n) {\n\t\tsuper(e.TYPE, {\n\t\t\tbubbles: !0,\n\t\t\tcomposed: !0,\n\t\t\tdetail: {\n\t\t\t\tcomplete: n,\n\t\t\t\tcomponent: t\n\t\t\t}\n\t\t}), this.component = t, this.complete = n;\n\t}\n};\n//#endregion\nexport { e as ModelSetEvent, t as SessionChangedEvent };\n","import { styled as e } from \"@mui/material/styles\";\nimport { CSSTransition as t } from \"react-transition-group\";\nimport { jsx as n } from \"react/jsx-runtime\";\nimport { useRef as r } from \"react\";\nimport i from \"prop-types\";\n//#region src/expander.tsx\nvar a = \"height ease-in 300ms, opacity ease-in 300ms\", o = e(\"div\")(() => ({\n\tposition: \"relative\",\n\theight: 0,\n\toverflow: \"hidden\",\n\tdisplay: \"flex\",\n\tvisibility: \"hidden\",\n\twidth: 0,\n\t\"&.enter\": {\n\t\ttransition: a,\n\t\topacity: 1,\n\t\theight: \"auto\",\n\t\twidth: \"auto\",\n\t\tvisibility: \"visible\",\n\t\tminHeight: \"25px\"\n\t},\n\t\"&.enter-done\": {\n\t\theight: \"auto\",\n\t\tvisibility: \"visible\",\n\t\twidth: \"auto\",\n\t\tminHeight: \"25px\"\n\t},\n\t\"&.exit\": {\n\t\ttransition: a,\n\t\topacity: 0,\n\t\theight: 0,\n\t\tvisibility: \"visible\",\n\t\twidth: 0\n\t},\n\t\"&.exit-done\": {\n\t\topacity: 0,\n\t\tvisibility: \"hidden\",\n\t\theight: 0,\n\t\twidth: 0\n\t}\n})), s = (e) => {\n\tlet { show: i, children: a, className: s } = e, c = r(null);\n\treturn /* @__PURE__ */ n(t, {\n\t\tnodeRef: c,\n\t\tin: i,\n\t\tappear: !0,\n\t\tmountOnEnter: !1,\n\t\ttimeout: 300,\n\t\tclassNames: {\n\t\t\tenter: \"enter\",\n\t\t\tenterDone: \"enter-done\",\n\t\t\texit: \"exit\",\n\t\t\texitDone: \"exit-done\"\n\t\t},\n\t\tchildren: /* @__PURE__ */ n(o, {\n\t\t\tref: c,\n\t\t\tclassName: s,\n\t\t\tchildren: a\n\t\t})\n\t});\n};\ns.propTypes = {\n\tshow: i.bool.isRequired,\n\tclassName: i.string,\n\tchildren: i.oneOfType([i.arrayOf(i.node), i.node]).isRequired\n};\n//#endregion\nexport { s as default };\n","import e from \"./expander.js\";\nimport { styled as t } from \"@mui/material/styles\";\nimport { CSSTransition as n } from \"react-transition-group\";\nimport { CorrectResponse as r } from \"@pie-lib/icons\";\nimport * as i from \"@pie-lib/render-ui\";\nimport { Readable as a, color as o } from \"@pie-lib/render-ui\";\nimport { jsx as s, jsxs as c } from \"react/jsx-runtime\";\nimport l from \"react\";\nimport u from \"prop-types\";\nimport d from \"@pie-lib/translator\";\n//#region src/index.tsx\nfunction f(e) {\n\treturn typeof e == \"function\" || typeof e == \"object\" && !!e && typeof e.$$typeof == \"symbol\";\n}\nfunction p(e, t) {\n\treturn !e || f(e) ? e : f(e.default) ? e.default : t && f(e[t]) ? e[t] : t && f(e[t]?.default) ? e[t].default : e;\n}\nvar m = p(a, \"Readable\") || p(_.Readable, \"Readable\"), h = i, g = h.default, _ = g && typeof g == \"object\" ? g : h, { translator: v } = d, y = {\n\tWebkitTouchCallout: \"none\",\n\tWebkitUserSelect: \"none\",\n\tKhtmlUserSelect: \"none\",\n\tMozUserSelect: \"none\",\n\tmsUserSelect: \"none\",\n\tuserSelect: \"none\"\n}, b = t(\"div\")(() => ({\n\twidth: \"100%\",\n\tcursor: \"pointer\"\n})), x = t(\"div\")(() => ({\n\tmargin: \"0 auto\",\n\ttextAlign: \"center\",\n\tdisplay: \"flex\"\n})), S = t(\"div\")(() => ({\n\twidth: \"fit-content\",\n\tminWidth: \"140px\",\n\talignSelf: \"center\",\n\tverticalAlign: \"middle\",\n\tcolor: `var(--correct-answer-toggle-label-color, ${o.text()})`,\n\tfontWeight: \"normal\",\n\t...y\n})), C = t(\"div\")(() => ({\n\tposition: \"absolute\",\n\twidth: \"25px\",\n\t\"&.enter\": { opacity: \"0\" },\n\t\"&.enter-active\": {\n\t\topacity: \"1\",\n\t\ttransition: \"opacity 0.3s ease-in\"\n\t},\n\t\"&.exit\": { opacity: \"1\" },\n\t\"&.exit-active\": {\n\t\topacity: \"0\",\n\t\ttransition: \"opacity 0.3s ease-in\"\n\t}\n})), w = t(\"div\")(() => ({\n\twidth: \"25px\",\n\tmarginRight: \"5px\",\n\tdisplay: \"flex\",\n\talignItems: \"center\"\n})), T = class t extends l.Component {\n\tstatic propTypes = {\n\t\tonToggle: u.func,\n\t\ttoggled: u.bool,\n\t\tshow: u.bool,\n\t\thideMessage: u.string,\n\t\tshowMessage: u.string,\n\t\tclassName: u.string,\n\t\tlanguage: u.string\n\t};\n\tstatic defaultProps = {\n\t\tshowMessage: \"Show correct answer\",\n\t\thideMessage: \"Hide correct answer\",\n\t\tshow: !1,\n\t\ttoggled: !1\n\t};\n\tconstructor(e) {\n\t\tsuper(e), this.state = { show: e.show }, this.openIconRef = l.createRef(), this.closedIconRef = l.createRef(), t.defaultProps = {\n\t\t\t...t.defaultProps,\n\t\t\tshowMessage: v.t(\"common:showCorrectAnswer\", { lng: e.language }),\n\t\t\thideMessage: v.t(\"common:hideCorrectAnswer\", { lng: e.language })\n\t\t};\n\t}\n\tonClick() {\n\t\tthis.props.onToggle(!this.props.toggled);\n\t}\n\tonTouch(e) {\n\t\te.preventDefault(), this.props.onToggle(!this.props.toggled);\n\t}\n\tUNSAFE_componentWillReceiveProps(e) {\n\t\tthis.setState({ show: e.show }), e.language !== this.props?.language && (t.defaultProps = {\n\t\t\t...t.defaultProps,\n\t\t\tshowMessage: v.t(\"common:showCorrectAnswer\", { lng: e.language }),\n\t\t\thideMessage: v.t(\"common:hideCorrectAnswer\", { lng: e.language })\n\t\t});\n\t}\n\trender() {\n\t\tlet { className: t, toggled: i, hideMessage: a, showMessage: o } = this.props;\n\t\treturn /* @__PURE__ */ s(b, {\n\t\t\tclassName: t,\n\t\t\tchildren: /* @__PURE__ */ s(e, {\n\t\t\t\tshow: this.state.show,\n\t\t\t\tchildren: /* @__PURE__ */ c(x, {\n\t\t\t\t\tonClick: this.onClick.bind(this),\n\t\t\t\t\tonTouchEnd: this.onTouch.bind(this),\n\t\t\t\t\tchildren: [/* @__PURE__ */ c(w, { children: [/* @__PURE__ */ s(n, {\n\t\t\t\t\t\tnodeRef: this.openIconRef,\n\t\t\t\t\t\ttimeout: 400,\n\t\t\t\t\t\tin: i,\n\t\t\t\t\t\texit: !i,\n\t\t\t\t\t\tclassNames: {\n\t\t\t\t\t\t\tenter: \"enter\",\n\t\t\t\t\t\t\tenterActive: \"enter-active\",\n\t\t\t\t\t\t\texit: \"exit\",\n\t\t\t\t\t\t\texitActive: \"exit-active\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tchildren: /* @__PURE__ */ s(C, {\n\t\t\t\t\t\t\tref: this.openIconRef,\n\t\t\t\t\t\t\tchildren: /* @__PURE__ */ s(r, { open: i }, \"correct-open\")\n\t\t\t\t\t\t})\n\t\t\t\t\t}), /* @__PURE__ */ s(n, {\n\t\t\t\t\t\tnodeRef: this.closedIconRef,\n\t\t\t\t\t\ttimeout: 5e3,\n\t\t\t\t\t\tin: !i,\n\t\t\t\t\t\texit: i,\n\t\t\t\t\t\tclassNames: {\n\t\t\t\t\t\t\tenter: \"enter\",\n\t\t\t\t\t\t\tenterActive: \"enter-active\",\n\t\t\t\t\t\t\texit: \"exit\",\n\t\t\t\t\t\t\texitActive: \"exit-active\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tchildren: /* @__PURE__ */ s(C, {\n\t\t\t\t\t\t\tref: this.closedIconRef,\n\t\t\t\t\t\t\tchildren: /* @__PURE__ */ s(r, { open: i }, \"correct-closed\")\n\t\t\t\t\t\t})\n\t\t\t\t\t})] }), /* @__PURE__ */ s(m, {\n\t\t\t\t\t\tfalse: !0,\n\t\t\t\t\t\tchildren: /* @__PURE__ */ s(S, {\n\t\t\t\t\t\t\t\"aria-hidden\": !this.state.show,\n\t\t\t\t\t\t\tchildren: i ? a : o\n\t\t\t\t\t\t})\n\t\t\t\t\t})]\n\t\t\t\t})\n\t\t\t})\n\t\t});\n\t}\n};\n//#endregion\nexport { T as CorrectAnswerToggle, T as default };\n","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCardContentUtilityClass(slot) {\n return generateUtilityClass('MuiCardContent', slot);\n}\nconst cardContentClasses = generateUtilityClasses('MuiCardContent', ['root']);\nexport default cardContentClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getCardContentUtilityClass } from \"./cardContentClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getCardContentUtilityClass, classes);\n};\nconst CardContentRoot = styled('div', {\n name: 'MuiCardContent',\n slot: 'Root'\n})({\n padding: 16,\n '&:last-child': {\n paddingBottom: 24\n }\n});\nconst CardContent = /*#__PURE__*/React.forwardRef(function CardContent(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiCardContent'\n });\n const {\n className,\n component = 'div',\n ...other\n } = props;\n const ownerState = {\n ...props,\n component\n };\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(CardContentRoot, {\n as: component,\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref,\n ...other\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? CardContent.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default CardContent;","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/categorize/src/categorize/choice.jsx\n * @auto-generated\n *\n * This file is automatically synced from pie-elements and converted to TypeScript.\n * Manual edits will be overwritten on next sync.\n * To make changes, edit the upstream JavaScript file and run sync again.\n */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport debug from 'debug';\nimport { styled } from '@mui/material/styles';\nimport { useDraggable } from '@dnd-kit/core';\nimport { uid } from '@pie-lib/drag';\nimport Card from '@mui/material/Card';\nimport CardContent from '@mui/material/CardContent';\nimport { color } from '@pie-lib/render-ui';\n\nconst log = debug('@pie-ui:categorize:choice');\n\nexport const ChoiceType = {\n content: PropTypes.string.isRequired,\n id: PropTypes.string,\n};\n\nconst ChoiceContainer: any = styled('div', {\n shouldForwardProp: (prop) => !['isDragging', 'disabled', 'correct'].includes(prop),\n})(({ isDragging, disabled, correct }) => ({\n direction: 'initial',\n cursor: disabled ? 'not-allowed' : isDragging ? 'move' : 'pointer',\n width: '100%',\n borderRadius: '6px',\n ...(correct === true && {\n border: `solid 2px ${color.correct()}`,\n }),\n ...(correct === false && {\n border: `solid 2px ${color.incorrect()}`,\n }),\n}));\n\nconst StyledCard: any = styled(Card)({\n color: color.text(),\n backgroundColor: color.background(),\n width: '100%',\n});\n\nconst StyledCardContent: any = styled(CardContent)(({ theme }) => ({\n color: color.text(),\n backgroundColor: color.white(),\n '&:last-child': {\n paddingBottom: theme.spacing(2),\n },\n borderRadius: '4px',\n border: '1px solid',\n '& p': {\n margin: '0px',\n },\n}));\n\nexport class Layout extends React.Component {\n static propTypes = {\n ...ChoiceType,\n disabled: PropTypes.bool,\n correct: PropTypes.bool,\n isDragging: PropTypes.bool,\n };\n static defaultProps = {};\n render() {\n const { content, isDragging, disabled, correct } = this.props;\n\n return (\n <ChoiceContainer isDragging={isDragging} disabled={disabled} correct={correct}>\n <StyledCard>\n <StyledCardContent dangerouslySetInnerHTML={{ __html: content }} />\n </StyledCard>\n </ChoiceContainer>\n );\n }\n}\n\nconst DraggableChoice = ({ id, content, disabled, correct, extraStyle, categoryId, choiceIndex }) => {\n // Generate unique draggable ID for each instance\n // If in choices board (categoryId is undefined), use 'board' suffix\n // If in a category, include categoryId and choiceIndex to make it unique\n const draggableId = categoryId !== undefined ? `choice-${id}-${categoryId}-${choiceIndex}` : `choice-${id}-board`;\n\n const { attributes, listeners, setNodeRef, isDragging } = useDraggable({\n id: draggableId,\n data: {\n id,\n categoryId,\n choiceIndex,\n value: content,\n itemType: 'categorize',\n type: 'choice',\n },\n disabled,\n });\n\n return (\n <div ref={setNodeRef} style={{ margin: '4px', ...extraStyle }} {...listeners} {...attributes}>\n <Layout id={id} content={content} disabled={disabled} correct={correct} isDragging={isDragging} />\n </div>\n );\n};\n\nDraggableChoice.propTypes = {\n ...ChoiceType,\n extraStyle: PropTypes.object,\n categoryId: PropTypes.string,\n choiceIndex: PropTypes.number,\n onRemoveChoice: PropTypes.func,\n};\n\nexport default uid.withUid(DraggableChoice);\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/categorize/src/categorize/droppable-placeholder.jsx\n * @auto-generated\n *\n * This file is automatically synced from pie-elements and converted to TypeScript.\n * Manual edits will be overwritten on next sync.\n * To make changes, edit the upstream JavaScript file and run sync again.\n */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport debug from 'debug';\nimport { useTheme } from '@mui/material/styles';\nimport { useDroppable } from '@dnd-kit/core';\nimport { PlaceHolder } from '@pie-lib/drag';\nimport { color } from '@pie-lib/render-ui';\n\nconst log = debug('@pie-ui:categorize:droppable-placeholder');\n\nconst DroppablePlaceholder = ({\n children,\n grid,\n disabled,\n choiceBoard,\n minRowHeight,\n id,\n correct\n}) => {\n const theme = useTheme();\n const { setNodeRef, isOver } = useDroppable({\n id,\n data: {\n itemType: 'categorize',\n categoryId: id\n },\n disabled,\n });\n\n const extraStyles = {\n padding: theme.spacing(0.5),\n borderRadius: theme.spacing(0.5),\n gridColumnGap: 0,\n gridRowGap: 0,\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'center',\n alignItems: 'center',\n alignContent: 'flex-start',\n width: '100%',\n height: '100%',\n ...(correct === false && !choiceBoard && {\n border: `solid 2px ${color.incorrect()}`,\n }),\n ...(correct === true && !choiceBoard && {\n border: `solid 2px ${color.correct()}`,\n }),\n };\n\n return (\n <div\n ref={setNodeRef}\n style={{\n flex: 1,\n minHeight: minRowHeight || '80px',\n position: 'relative',\n touchAction: 'none',\n }}\n >\n <PlaceHolder\n isOver={isOver}\n grid={grid}\n disabled={disabled}\n choiceBoard={choiceBoard}\n isCategorize\n extraStyles={extraStyles}\n >\n {children}\n </PlaceHolder>\n </div>\n );\n};\n\nDroppablePlaceholder.propTypes = {\n choiceBoard: PropTypes.bool,\n children: PropTypes.node.isRequired,\n grid: PropTypes.object,\n disabled: PropTypes.bool,\n minRowHeight: PropTypes.string,\n onDropChoice: PropTypes.func,\n id: PropTypes.string.isRequired,\n correct: PropTypes.bool\n};\n\nexport default DroppablePlaceholder;\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/categorize/src/categorize/choices.jsx\n * @auto-generated\n *\n * This file is automatically synced from pie-elements and converted to TypeScript.\n * Manual edits will be overwritten on next sync.\n * To make changes, edit the upstream JavaScript file and run sync again.\n */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { styled } from '@mui/material/styles';\nimport Choice, { ChoiceType } from './choice.js';\nimport DroppablePlaceholder from './droppable-placeholder.js';\nexport { ChoiceType };\n\nconst Wrapper: any = styled('div')({\n flex: 1,\n touchAction: 'none',\n});\n\nconst LabelHolder: any = styled('div')(({ theme }) => ({\n margin: '0 auto',\n textAlign: 'center',\n paddingTop: theme.spacing(1),\n}));\n\nexport class Choices extends React.Component {\n static propTypes = {\n choices: PropTypes.arrayOf(\n PropTypes.oneOfType([PropTypes.shape(ChoiceType), PropTypes.shape({ empty: PropTypes.bool })]),\n ),\n model: PropTypes.shape({\n categoriesPerRow: PropTypes.number,\n choicesLabel: PropTypes.string,\n }),\n disabled: PropTypes.bool,\n choicePosition: PropTypes.string,\n onDropChoice: PropTypes.func,\n onRemoveChoice: PropTypes.func,\n correct: PropTypes.boolean,\n };\n\n static defaultProps = {\n model: {\n categoriesPerRow: 1,\n choicesLabel: '',\n },\n };\n\n render() {\n const { choices = [], model, disabled, onDropChoice, onRemoveChoice, choicePosition, correct } = this.props;\n\n let style = {\n textAlign: 'center',\n };\n\n if (choicePosition === 'left') {\n style.direction = 'rtl';\n }\n\n return (\n <Wrapper>\n <DroppablePlaceholder\n id=\"choices-board\"\n onDropChoice={onDropChoice}\n onRemoveChoice={onRemoveChoice}\n disabled={disabled}\n style={{ background: 'none' }}\n choiceBoard={true}\n correct={correct}\n >\n {model.choicesLabel && model.choicesLabel !== '' && (\n <LabelHolder dangerouslySetInnerHTML={{ __html: model.choicesLabel }} />\n )}\n {choices.map((c, index) => {\n return c.empty ? (\n <div key={index} />\n ) : (\n <Choice\n disabled={disabled}\n key={index}\n extraStyle={{ maxWidth: `${95 / model.categoriesPerRow}%` }}\n {...c}\n />\n );\n })}\n </DroppablePlaceholder>\n </Wrapper>\n );\n }\n}\n\nexport default Choices;\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/categorize/src/categorize/grid-content.jsx\n * @auto-generated\n *\n * This file is automatically synced from pie-elements and converted to TypeScript.\n * Manual edits will be overwritten on next sync.\n * To make changes, edit the upstream JavaScript file and run sync again.\n */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { styled } from '@mui/material/styles';\n\nexport class GridContent extends React.Component {\n static propTypes = {\n className: PropTypes.string,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n columns: PropTypes.number,\n rows: PropTypes.number,\n extraStyle: PropTypes.object,\n };\n static defaultProps = {\n columns: 2,\n rows: 2,\n };\n\n render() {\n const { className, children, columns, extraStyle, rows } = this.props;\n const style = {\n gridTemplateColumns: `repeat(${columns}, 1fr)`,\n gridTemplateRows: rows === 2 ? 'auto 1fr' : `repeat(${rows}, auto)`,\n ...extraStyle,\n };\n\n return (\n <StyledDiv style={style} className={className}>\n {children}\n </StyledDiv>\n );\n }\n}\n\nconst StyledDiv: any = styled('div')(({ theme }) => ({\n display: 'grid',\n columnGap: theme.spacing(1),\n gridColumnGap: theme.spacing(1),\n rowGap: theme.spacing(1),\n gridRowGap: theme.spacing(1),\n gridAutoRows: '1fr',\n}));\n\nexport default GridContent;\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/categorize/src/categorize/category.jsx\n * @auto-generated\n *\n * This file is automatically synced from pie-elements and converted to TypeScript.\n * Manual edits will be overwritten on next sync.\n * To make changes, edit the upstream JavaScript file and run sync again.\n */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { styled } from '@mui/material/styles';\n\nimport Choice from './choice.js';\nimport PlaceHolder from './droppable-placeholder.js';\n\nexport const CategoryType = {\n id: PropTypes.string.isRequired,\n categoryId: PropTypes.string,\n};\n\nexport class Category extends React.Component {\n static propTypes = {\n ...CategoryType,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n onDropChoice: PropTypes.func,\n onRemoveChoice: PropTypes.func,\n minRowHeight: PropTypes.string,\n };\n\n static defaultProps = {};\n\n render() {\n const {\n className,\n choices = [],\n disabled,\n onDropChoice,\n onRemoveChoice,\n id,\n correct,\n minRowHeight,\n } = this.props;\n\n return (\n <StyledDiv className={className} id={id}>\n <PlaceHolder\n id={id}\n onDropChoice={onDropChoice}\n disabled={disabled}\n correct={correct}\n minRowHeight={minRowHeight}\n >\n {choices.map((c, index) => (\n <Choice\n onRemoveChoice={onRemoveChoice}\n disabled={disabled}\n key={index}\n choiceIndex={index}\n categoryId={id}\n {...c}\n />\n ))}\n </PlaceHolder>\n </StyledDiv>\n );\n }\n}\n\nconst StyledDiv: any = styled('div')(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n flex: 2,\n}));\n\nexport default Category;\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/categorize/src/categorize/categories.jsx\n * @auto-generated\n *\n * This file is automatically synced from pie-elements and converted to TypeScript.\n * Manual edits will be overwritten on next sync.\n * To make changes, edit the upstream JavaScript file and run sync again.\n */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { styled } from '@mui/material/styles';\nimport { color } from '@pie-lib/render-ui';\n\nimport GridContent from './grid-content.js';\nimport Category, { CategoryType } from './category.js';\n\nexport { CategoryType };\n\nexport class Categories extends React.Component {\n static propTypes = {\n categories: PropTypes.arrayOf(PropTypes.shape(CategoryType)),\n model: PropTypes.shape({\n categoriesPerRow: PropTypes.number,\n }),\n disabled: PropTypes.bool,\n onDropChoice: PropTypes.func.isRequired,\n onRemoveChoice: PropTypes.func.isRequired,\n rowLabels: PropTypes.array,\n };\n\n static defaultProps = {\n model: {\n categoriesPerRow: 1,\n },\n };\n\n render() {\n const { categories, model, disabled, onDropChoice, onRemoveChoice, rowLabels } = this.props;\n const { categoriesPerRow, minRowHeight } = model;\n\n // split categories into an array of arrays (inner array),\n // where each inner array represents how many categories should be displayed on one row\n const chunkedCategories = [];\n const cats = categories || [];\n for (let i = 0; i < cats.length; i += categoriesPerRow) {\n chunkedCategories.push(cats.slice(i, i + categoriesPerRow));\n }\n\n const hasNonEmptyString = (array) => {\n let found = false;\n\n (array || []).forEach((element) => {\n if (typeof element === 'string' && element.trim() !== '' && element.trim() !== '<div></div>') {\n found = true;\n }\n });\n\n return found;\n };\n\n return (\n <GridContent\n columns={categoriesPerRow}\n rows={Math.ceil(categories.length / categoriesPerRow) * 2}\n extraStyle={{ flex: 1 }}\n >\n {chunkedCategories.map((cat, rowIndex) => {\n let items = [];\n\n // for each inner array of categories, create a row with category titles\n // first cell of row has to be the row label\n cat.forEach((c, columnIndex) => {\n items.push(\n <div style={{ display: 'flex' }}>\n {columnIndex === 0 && hasNonEmptyString(rowLabels) ? (\n <StyledRowLabel\n key={rowIndex}\n dangerouslySetInnerHTML={{\n __html: rowLabels[rowIndex] || '',\n }}\n />\n ) : null}\n <StyledCategoryWrapper>\n <StyledLabel\n key={`category-label-${rowIndex}-${columnIndex}`}\n dangerouslySetInnerHTML={{ __html: c.label }}\n />\n\n <Category\n minRowHeight={minRowHeight}\n onDropChoice={(h) => onDropChoice(c.id, h)}\n onRemoveChoice={onRemoveChoice}\n disabled={disabled}\n key={`category-element-${rowIndex}-${columnIndex}`}\n {...c}\n />\n </StyledCategoryWrapper>\n </div>,\n );\n });\n\n // if the last row has fewer categories than max on a row, fill the spaces with divs\n items = items.concat(\n Array(categoriesPerRow - cat.length)\n .fill(<div />)\n .map((value, index) => <div key={`fill-space-final-${index}`} />),\n );\n\n return items;\n })}\n </GridContent>\n );\n }\n}\n\nconst StyledLabel: any = styled('div')(({ theme }) => ({\n color: color.text(),\n backgroundColor: color.background(),\n textAlign: 'center',\n paddingTop: theme.spacing(1),\n}));\n\nconst StyledRowLabel: any = styled('div')({\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'center',\n flex: 0.5,\n marginRight: '12px',\n});\n\nconst StyledCategoryWrapper: any = styled('div')({\n display: 'flex',\n flex: '2',\n flexDirection: 'column',\n});\n\nexport default Categories;\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/categorize/src/categorize/index.jsx\n * @auto-generated\n *\n * This file is automatically synced from pie-elements and converted to TypeScript.\n * Manual edits will be overwritten on next sync.\n * To make changes, edit the upstream JavaScript file and run sync again.\n */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport debug from 'debug';\nimport { styled } from '@mui/material/styles';\nimport { DragOverlay } from '@dnd-kit/core';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport { buildState, removeChoiceFromCategory, moveChoiceToCategory } from '@pie-lib/categorize';\nimport { DragProvider, uid } from '@pie-lib/drag';\nimport { color, Feedback as FeedbackImport, Collapsible as CollapsibleImport, hasText, hasMedia, PreviewPrompt as PreviewPromptImport, UiLayout as UiLayoutImport } from '@pie-lib/render-ui';\n\nfunction isRenderableReactInteropType(value: any) {\n return (\n typeof value === 'function' ||\n (typeof value === 'object' && value !== null && typeof value.$$typeof === 'symbol')\n );\n}\n\nfunction unwrapReactInteropSymbol(maybeSymbol: any, namedExport?: string) {\n if (!maybeSymbol) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol)) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol.default)) return maybeSymbol.default;\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport])) {\n return maybeSymbol[namedExport];\n }\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport]?.default)) {\n return maybeSymbol[namedExport].default;\n }\n return maybeSymbol;\n}\nconst UiLayout = unwrapReactInteropSymbol(UiLayoutImport, 'UiLayout') || unwrapReactInteropSymbol(renderUi.UiLayout, 'UiLayout');\nconst PreviewPrompt = unwrapReactInteropSymbol(PreviewPromptImport, 'PreviewPrompt') || unwrapReactInteropSymbol(renderUi.PreviewPrompt, 'PreviewPrompt');\nconst Collapsible = unwrapReactInteropSymbol(CollapsibleImport, 'Collapsible') || unwrapReactInteropSymbol(renderUi.Collapsible, 'Collapsible');\nconst Feedback = unwrapReactInteropSymbol(FeedbackImport, 'Feedback') || unwrapReactInteropSymbol(renderUi.Feedback, 'Feedback');\nimport * as RenderUiNamespace from '@pie-lib/render-ui';\nconst renderUiNamespaceAny = RenderUiNamespace as any;\nconst renderUiDefaultMaybe = renderUiNamespaceAny['default'];\nconst renderUi =\n renderUiDefaultMaybe && typeof renderUiDefaultMaybe === 'object'\n ? renderUiDefaultMaybe\n : renderUiNamespaceAny;\nimport { renderMath } from '@pie-element/shared-math-rendering-mathjax';\nimport Translator from '@pie-lib/translator';\nimport { AlertDialog } from '@pie-lib/config-ui';\nimport Choices from './choices.js';\nimport Choice from './choice.js';\nimport Categories from './categories.js';\n\nconst { translator } = Translator;\nconst log = debug('@pie-ui:categorize');\n\nclass DragPreviewWrapper extends React.Component {\n static propTypes = {\n children: PropTypes.node,\n };\n\n containerRef = React.createRef();\n\n componentDidMount() {\n if (this.containerRef.current) {\n renderMath(this.containerRef.current);\n }\n }\n\n render() {\n return <div ref={this.containerRef}>{this.props.children}</div>;\n }\n}\n\nexport class Categorize extends React.Component {\n static propTypes = {\n model: PropTypes.object,\n session: PropTypes.shape({\n answers: PropTypes.arrayOf(\n PropTypes.shape({\n choice: PropTypes.string,\n category: PropTypes.string,\n }),\n ),\n }),\n onAnswersChange: PropTypes.func.isRequired,\n onShowCorrectToggle: PropTypes.func.isRequired,\n pauseMathObserver: PropTypes.func,\n resumeMathObserver: PropTypes.func,\n };\n\n static defaultProps = {\n disabled: false,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n showCorrect: false,\n showMaxChoiceAlert: false,\n };\n }\n\n removeChoice: any = (c) => {\n log('[removeChoice]: ', c);\n const { onAnswersChange, session } = this.props;\n const answers = removeChoiceFromCategory(c.id, c.categoryId, c.choiceIndex, session.answers);\n onAnswersChange(answers);\n };\n\n dropChoice: any = (categoryId, draggedChoice) => {\n const { session, onAnswersChange, model } = this.props;\n const { maxChoicesPerCategory = 0 } = model || {};\n const { answers = [] } = session || {};\n let newAnswers;\n if (draggedChoice) {\n log('[dropChoice] category: ', draggedChoice.categoryId, 'choice: ', draggedChoice);\n } else {\n log('[dropChoice] category: ', undefined, 'choice: ', undefined);\n }\n\n const answer = answers.find((answer) => answer.category === categoryId);\n\n // treat special case to replace the existing choice with the new one when maxChoicesPerCategory = 1\n if (draggedChoice && maxChoicesPerCategory === 1 && answer && answer.choices && answer.choices.length === 1) {\n // First, move the dragged choice to the target category (this will also remove it from source if allowMultiplePlacements is disabled)\n newAnswers = moveChoiceToCategory(\n draggedChoice.id,\n draggedChoice.categoryId,\n categoryId,\n draggedChoice.choiceIndex,\n answers,\n );\n // Then, remove the existing choice from the target category (use newAnswers, not answers)\n newAnswers = removeChoiceFromCategory(answer.choices[0], categoryId, 0, newAnswers);\n }\n\n // treat special case when there are as many choices as maxChoicesPerCategory is\n else if (\n draggedChoice &&\n maxChoicesPerCategory > 1 &&\n answer &&\n answer.choices &&\n answer.choices.length === maxChoicesPerCategory\n ) {\n newAnswers = draggedChoice.categoryId\n ? moveChoiceToCategory(\n draggedChoice.id,\n draggedChoice.categoryId,\n draggedChoice.categoryId,\n draggedChoice.choiceIndex,\n answers,\n )\n : removeChoiceFromCategory(draggedChoice.id, draggedChoice.categoryId, draggedChoice.choiceIndex, answers);\n this.setState({ showMaxChoiceAlert: true });\n }\n\n // treat special case when there are more choices that maxChoicesPerCategory is (testing purpose in pits)\n else if (maxChoicesPerCategory !== 0 && answer && answer.choices && answer.choices.length > maxChoicesPerCategory) {\n newAnswers = answers;\n this.setState({ showMaxChoiceAlert: true });\n } else {\n newAnswers = draggedChoice\n ? moveChoiceToCategory(\n draggedChoice.id,\n draggedChoice.categoryId,\n categoryId,\n draggedChoice.choiceIndex,\n answers,\n )\n : this.removeChoice(categoryId);\n }\n\n if (draggedChoice) {\n onAnswersChange(newAnswers);\n }\n };\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { model } = this.props;\n const { model: nextModel } = nextProps;\n\n // check if the note is the default one for prev language and change to the default one for new language\n // this check is necessary in order to diferanciate between default and authour defined note\n // and only change between languages for default ones\n if (\n model.note &&\n model.language &&\n model.language !== nextModel.language &&\n model.note === translator.t('common:commonCorrectAnswerWithAlternates', { lng: model.language })\n ) {\n model.note = translator.t('common:commonCorrectAnswerWithAlternates', { lng: nextModel.language });\n }\n\n this.setState({ showCorrect: false });\n }\n\n toggleShowCorrect = () =>\n this.setState({ showCorrect: !this.state.showCorrect }, () => {\n this.props.onShowCorrectToggle();\n });\n\n getPositionDirection: any = (choicePosition) => {\n let flexDirection;\n\n switch (choicePosition) {\n case 'left':\n flexDirection = 'row-reverse';\n break;\n case 'right':\n flexDirection = 'row';\n break;\n case 'below':\n flexDirection = 'column';\n break;\n default:\n // above\n flexDirection = 'column-reverse';\n break;\n }\n\n return flexDirection;\n };\n\n existAlternateResponse = (correctResponse) =>\n correctResponse?.some((correctRes) => correctRes.alternateResponses?.length > 0);\n\n render() {\n const { model, session } = this.props;\n const { showCorrect, showMaxChoiceAlert } = this.state;\n const {\n choicesPosition,\n extraCSSRules,\n note,\n showNote,\n env,\n language,\n maxChoicesPerCategory,\n autoplayAudioEnabled,\n customAudioButton,\n } = model;\n const { mode, role } = env || {};\n const choicePosition = choicesPosition || 'above';\n\n const style = {\n flexDirection: this.getPositionDirection(choicePosition),\n gap: '8px',\n };\n\n const { categories, choices, correct } = buildState(\n model.categories,\n model.choices,\n showCorrect ? model.correctResponse : session.answers,\n model.correctResponse,\n );\n\n log('[render] disabled: ', model.disabled);\n\n const { rowLabels, categoriesPerRow, correctResponse, fontSizeFactor } = model;\n const nbOfRows = (categories && Math.ceil(categories.length / categoriesPerRow)) || 0;\n const existAlternate = this.existAlternateResponse(correctResponse) || false;\n const displayNote =\n (showCorrect || (mode === 'view' && role === 'instructor')) && showNote && note && existAlternate;\n const alertMessage = translator.t('translation:categorize:limitMaxChoicesPerCategory', {\n lng: model.language,\n maxChoicesPerCategory,\n });\n\n const alertTitle = translator.t('common:warning', {\n lng: model.language,\n });\n\n const onCloseText = translator.t('common:cancel', {\n lng: model.language,\n });\n\n const showRationale = model.rationale && (hasText(model.rationale) || hasMedia(model.rationale));\n const showTeacherInstructions =\n model.teacherInstructions && (hasText(model.teacherInstructions) || hasMedia(model.teacherInstructions));\n\n return (\n <StyledUiLayout extraCSSRules={extraCSSRules} id={'main-container'} fontSizeFactor={fontSizeFactor}>\n {showTeacherInstructions && (\n <React.Fragment>\n <StyledCollapsible\n labels={{\n hidden: 'Show Teacher Instructions',\n visible: 'Hide Teacher Instructions',\n }}\n >\n <PreviewPrompt prompt={model.teacherInstructions} />\n </StyledCollapsible>\n </React.Fragment>\n )}\n\n {model.prompt && (\n <PreviewPrompt\n prompt={model.prompt}\n autoplayAudioEnabled={autoplayAudioEnabled}\n customAudioButton={customAudioButton}\n />\n )}\n\n <CorrectAnswerToggle\n show={showCorrect || correct === false}\n toggled={showCorrect}\n onToggle={this.toggleShowCorrect}\n language={language}\n />\n\n <StyledCategorize style={style}>\n <div style={{ display: 'flex', flex: 1 }}>\n <Categories\n model={model}\n disabled={model.disabled}\n categories={categories}\n onDropChoice={this.dropChoice}\n onRemoveChoice={this.removeChoice}\n rowLabels={(rowLabels || []).slice(0, nbOfRows)}\n />\n </div>\n <Choices\n disabled={model.disabled}\n model={model}\n choices={choices}\n choicePosition={choicePosition}\n onDropChoice={this.dropChoice}\n onRemoveChoice={this.removeChoice}\n correct={correct}\n />\n </StyledCategorize>\n {displayNote && (\n <StyledNote\n dangerouslySetInnerHTML={{\n __html: note,\n }}\n />\n )}\n\n {showRationale && (\n <StyledCollapsible labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}>\n <PreviewPrompt prompt={model.rationale} />\n </StyledCollapsible>\n )}\n\n {model.correctness && model.feedback && !showCorrect && (\n <Feedback correctness={model.correctness} feedback={model.feedback} />\n )}\n <AlertDialog\n title={alertTitle}\n text={alertMessage}\n open={showMaxChoiceAlert}\n onCloseText={onCloseText}\n onClose={() => this.setState({ showMaxChoiceAlert: false })}\n ></AlertDialog>\n </StyledUiLayout>\n );\n }\n}\n\nclass CategorizeProvider extends React.Component {\n static propTypes = {\n model: PropTypes.object,\n session: PropTypes.shape({\n answers: PropTypes.arrayOf(\n PropTypes.shape({\n choice: PropTypes.string,\n category: PropTypes.string,\n }),\n ),\n }),\n onAnswersChange: PropTypes.func.isRequired,\n onShowCorrectToggle: PropTypes.func.isRequired,\n pauseMathObserver: PropTypes.func,\n resumeMathObserver: PropTypes.func,\n };\n\n constructor(props) {\n super(props);\n this.uid = uid.generateId();\n this.state = {\n activeDragItem: null,\n isValidDrop: false,\n };\n }\n\n onDragStart: any = (event) => {\n const { active } = event;\n const { pauseMathObserver } = this.props;\n\n if (pauseMathObserver) {\n pauseMathObserver();\n }\n\n if (active?.data?.current) {\n this.setState({\n activeDragItem: active.data.current,\n isValidDrop: false,\n });\n }\n };\n\n onDragEnd: any = (event) => {\n const { active, over } = event;\n const { resumeMathObserver } = this.props;\n\n // Check if drop is valid\n const draggedItem = active?.data?.current;\n const overData = over?.data?.current;\n const isValidDrop =\n over && active && draggedItem && draggedItem.type === 'choice' && overData && overData.itemType === 'categorize';\n\n this.setState({\n activeDragItem: null,\n isValidDrop: isValidDrop,\n });\n\n if (resumeMathObserver) {\n resumeMathObserver();\n }\n\n if (!active || !draggedItem || draggedItem.type !== 'choice') {\n return;\n }\n\n const choiceData = {\n id: draggedItem.id,\n categoryId: draggedItem.categoryId,\n choiceIndex: draggedItem.choiceIndex,\n value: draggedItem.value,\n itemType: draggedItem.itemType,\n };\n\n // Dropped outside a valid/known target: remove from source category,\n // which returns the choice to the choices pool.\n if (!over) {\n if (this.categorizeRef && this.categorizeRef.removeChoice && draggedItem.categoryId) {\n this.categorizeRef.removeChoice(choiceData);\n }\n return;\n }\n\n if (over.id === 'choices-board') {\n if (this.categorizeRef && this.categorizeRef.removeChoice && draggedItem.categoryId) {\n this.categorizeRef.removeChoice(choiceData);\n }\n return;\n }\n\n if (this.categorizeRef && this.categorizeRef.dropChoice) {\n this.categorizeRef.dropChoice(over.id, choiceData);\n }\n };\n\n renderDragOverlay: any = () => {\n const { activeDragItem } = this.state;\n const { model } = this.props;\n\n if (!activeDragItem) return null;\n\n if (activeDragItem.type === 'choice') {\n const choice = model.choices?.find((c) => c.id === activeDragItem.id);\n if (choice) {\n return <Choice key={choice.id} id={choice.id} {...choice} />;\n }\n }\n\n return null;\n };\n\n render() {\n const { isValidDrop } = this.state;\n // Disable drop animation for valid drops to prevent visual snap-back\n // Keep default animation for invalid drops to show visual feedback\n const dropAnimation = isValidDrop ? null : undefined;\n\n return (\n <DragProvider onDragStart={this.onDragStart} onDragEnd={this.onDragEnd}>\n <uid.Provider value={this.uid}>\n <Categorize ref={(ref) => (this.categorizeRef = ref)} {...this.props} />\n <DragOverlay dropAnimation={dropAnimation}>\n <DragPreviewWrapper>{this.renderDragOverlay()}</DragPreviewWrapper>\n </DragOverlay>\n </uid.Provider>\n </DragProvider>\n );\n }\n}\n\nconst StyledUiLayout: any = styled(UiLayout)({\n color: color.text(),\n backgroundColor: color.background(),\n position: 'relative',\n});\n\nconst StyledNote: any = styled('div')(({ theme }) => ({\n marginBottom: theme.spacing(2),\n}));\n\nconst StyledCategorize: any = styled('div')(({ theme }) => ({\n marginBottom: theme.spacing(1),\n display: 'flex',\n flexDirection: 'column',\n}));\n\nconst StyledCollapsible: any = styled(Collapsible)(({ theme }) => ({\n paddingBottom: theme.spacing(2),\n}));\n\nexport default CategorizeProvider;\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/categorize/src/index.js\n * @auto-generated\n *\n * This file is automatically synced from pie-elements and converted to TypeScript.\n * Manual edits will be overwritten on next sync.\n * To make changes, edit the upstream JavaScript file and run sync again.\n */\n\nimport React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { renderMath } from '@pie-element/shared-math-rendering-mathjax';\nimport { EnableAudioAutoplayImage as EnableAudioAutoplayImageImport } from '@pie-lib/render-ui';\n\nfunction isRenderableReactInteropType(value: any) {\n return (\n typeof value === 'function' ||\n (typeof value === 'object' && value !== null && typeof value.$$typeof === 'symbol')\n );\n}\n\nfunction unwrapReactInteropSymbol(maybeSymbol: any, namedExport?: string) {\n if (!maybeSymbol) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol)) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol.default)) return maybeSymbol.default;\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport])) {\n return maybeSymbol[namedExport];\n }\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport]?.default)) {\n return maybeSymbol[namedExport].default;\n }\n return maybeSymbol;\n}\nconst EnableAudioAutoplayImage = unwrapReactInteropSymbol(EnableAudioAutoplayImageImport, 'EnableAudioAutoplayImage') || unwrapReactInteropSymbol(renderUi.EnableAudioAutoplayImage, 'EnableAudioAutoplayImage');\nimport * as RenderUiNamespace from '@pie-lib/render-ui';\nconst renderUiNamespaceAny = RenderUiNamespace as any;\nconst renderUiDefaultMaybe = renderUiNamespaceAny['default'];\nconst renderUi =\n renderUiDefaultMaybe && typeof renderUiDefaultMaybe === 'object'\n ? renderUiDefaultMaybe\n : renderUiNamespaceAny;\nimport { SessionChangedEvent, ModelSetEvent } from '@pie-element/shared-player-events';\nimport CategorizeComponent from './categorize/index.js';\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: any = () => {\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: any = () => {\n if (this._mathObserver) {\n this._mathObserver.disconnect();\n this._mathObserverPaused = true;\n }\n };\n\n resumeMathObserver: any = () => {\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"],"x_google_ignoreList":[4,5],"mappings":"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"}