@pie-element/graphing 10.1.0-next.2 → 10.1.1-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (233) hide show
  1. package/dist/author/configure.d.ts +26 -0
  2. package/dist/author/configure.js +208 -0
  3. package/dist/author/correct-response.d.ts +54 -0
  4. package/dist/author/correct-response.js +304 -0
  5. package/dist/author/defaults.d.ts +294 -0
  6. package/dist/author/defaults.js +415 -0
  7. package/dist/author/graphing-config.d.ts +34 -0
  8. package/dist/author/graphing-config.js +244 -0
  9. package/dist/author/index.d.ts +59 -0
  10. package/dist/author/index.js +96 -0
  11. package/dist/author/utils.d.ts +43 -0
  12. package/dist/author/utils.js +260 -0
  13. package/dist/controller/defaults.d.ts +59 -0
  14. package/dist/controller/defaults.js +61 -0
  15. package/dist/controller/index.d.ts +34 -0
  16. package/dist/controller/index.js +181 -0
  17. package/dist/controller/utils.d.ts +37 -0
  18. package/dist/controller/utils.js +114 -0
  19. package/dist/delivery/index.d.ts +21 -0
  20. package/dist/delivery/index.js +43 -0
  21. package/dist/delivery/main.d.ts +23 -0
  22. package/dist/delivery/main.js +107 -0
  23. package/dist/delivery/utils.d.ts +22 -0
  24. package/dist/graphing.css +2 -0
  25. package/dist/index.d.ts +1 -0
  26. package/dist/index.iife.d.ts +8 -0
  27. package/dist/index.iife.js +375 -0
  28. package/dist/index.js +2 -0
  29. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_DataView.js +6 -0
  30. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Hash.js +16 -0
  31. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_ListCache.js +16 -0
  32. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Map.js +6 -0
  33. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_MapCache.js +16 -0
  34. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Promise.js +6 -0
  35. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Set.js +6 -0
  36. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_SetCache.js +11 -0
  37. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Stack.js +14 -0
  38. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Symbol.js +5 -0
  39. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Uint8Array.js +5 -0
  40. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_WeakMap.js +6 -0
  41. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_apply.js +12 -0
  42. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_arrayEach.js +7 -0
  43. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_arrayFilter.js +10 -0
  44. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_arrayIncludes.js +7 -0
  45. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_arrayIncludesWith.js +7 -0
  46. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_arrayLikeKeys.js +15 -0
  47. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_arrayMap.js +7 -0
  48. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_arrayPush.js +7 -0
  49. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_arraySome.js +7 -0
  50. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_assignValue.js +10 -0
  51. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_assocIndexOf.js +8 -0
  52. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseAssign.js +8 -0
  53. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseAssignIn.js +8 -0
  54. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseAssignValue.js +12 -0
  55. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseClone.js +57 -0
  56. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseCreate.js +14 -0
  57. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseDifference.js +23 -0
  58. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseFindIndex.js +7 -0
  59. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseFlatten.js +13 -0
  60. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseGetAllKeys.js +9 -0
  61. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseGetTag.js +10 -0
  62. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIndexOf.js +9 -0
  63. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIntersection.js +29 -0
  64. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsArguments.js +9 -0
  65. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsEqual.js +8 -0
  66. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsEqualDeep.js +30 -0
  67. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsMap.js +9 -0
  68. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsNaN.js +6 -0
  69. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsNative.js +11 -0
  70. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsSet.js +9 -0
  71. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsTypedArray.js +11 -0
  72. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseKeys.js +12 -0
  73. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseKeysIn.js +13 -0
  74. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseRest.js +9 -0
  75. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseSet.js +22 -0
  76. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseSetToString.js +14 -0
  77. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseTimes.js +7 -0
  78. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseToString.js +15 -0
  79. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseUnary.js +8 -0
  80. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseUniq.js +27 -0
  81. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_cacheHas.js +6 -0
  82. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_castArrayLikeObject.js +7 -0
  83. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_castPath.js +10 -0
  84. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_cloneArrayBuffer.js +8 -0
  85. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_cloneBuffer.js +10 -0
  86. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_cloneDataView.js +8 -0
  87. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_cloneRegExp.js +8 -0
  88. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_cloneSymbol.js +8 -0
  89. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_cloneTypedArray.js +8 -0
  90. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_copyArray.js +8 -0
  91. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_copyObject.js +14 -0
  92. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_copySymbols.js +8 -0
  93. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_copySymbolsIn.js +8 -0
  94. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_coreJsData.js +5 -0
  95. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_createSet.js +9 -0
  96. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_defineProperty.js +10 -0
  97. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_equalArrays.js +35 -0
  98. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_equalByTag.js +35 -0
  99. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_equalObjects.js +32 -0
  100. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_freeGlobal.js +4 -0
  101. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getAllKeys.js +9 -0
  102. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getAllKeysIn.js +9 -0
  103. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getMapData.js +8 -0
  104. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getNative.js +9 -0
  105. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getPrototype.js +5 -0
  106. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getRawTag.js +14 -0
  107. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getSymbols.js +10 -0
  108. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getSymbolsIn.js +11 -0
  109. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getTag.js +23 -0
  110. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getValue.js +6 -0
  111. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_hashClear.js +7 -0
  112. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_hashDelete.js +7 -0
  113. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_hashGet.js +13 -0
  114. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_hashHas.js +9 -0
  115. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_hashSet.js +9 -0
  116. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_initCloneArray.js +8 -0
  117. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_initCloneByTag.js +33 -0
  118. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_initCloneObject.js +9 -0
  119. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_isFlattenable.js +10 -0
  120. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_isIndex.js +8 -0
  121. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_isKey.js +11 -0
  122. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_isKeyable.js +7 -0
  123. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_isMasked.js +11 -0
  124. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_isPrototype.js +8 -0
  125. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_listCacheClear.js +6 -0
  126. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_listCacheDelete.js +9 -0
  127. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_listCacheGet.js +8 -0
  128. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_listCacheHas.js +7 -0
  129. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_listCacheSet.js +8 -0
  130. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheClear.js +13 -0
  131. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheDelete.js +8 -0
  132. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheGet.js +7 -0
  133. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheHas.js +7 -0
  134. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheSet.js +8 -0
  135. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_mapToArray.js +9 -0
  136. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_memoizeCapped.js +11 -0
  137. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_nativeCreate.js +5 -0
  138. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_nativeKeys.js +5 -0
  139. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_nativeKeysIn.js +8 -0
  140. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_nodeUtil.js +9 -0
  141. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_objectToString.js +7 -0
  142. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_overArg.js +8 -0
  143. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_overRest.js +13 -0
  144. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_root.js +5 -0
  145. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_setCacheAdd.js +7 -0
  146. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_setCacheHas.js +6 -0
  147. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_setToArray.js +9 -0
  148. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_setToString.js +6 -0
  149. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_shortOut.js +14 -0
  150. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_stackClear.js +7 -0
  151. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_stackDelete.js +7 -0
  152. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_stackGet.js +6 -0
  153. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_stackHas.js +6 -0
  154. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_stackSet.js +16 -0
  155. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_strictIndexOf.js +7 -0
  156. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_stringToPath.js +10 -0
  157. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_toKey.js +10 -0
  158. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_toSource.js +15 -0
  159. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/cloneDeep.js +8 -0
  160. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/constant.js +8 -0
  161. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/differenceWith.js +12 -0
  162. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/eq.js +6 -0
  163. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/identity.js +6 -0
  164. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/intersection.js +11 -0
  165. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isArguments.js +10 -0
  166. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isArray.js +4 -0
  167. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isArrayLike.js +8 -0
  168. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isArrayLikeObject.js +8 -0
  169. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isBuffer.js +6 -0
  170. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isEmpty.js +21 -0
  171. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isEqual.js +7 -0
  172. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isFunction.js +11 -0
  173. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isLength.js +7 -0
  174. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isMap.js +7 -0
  175. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isObject.js +7 -0
  176. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isObjectLike.js +6 -0
  177. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isSet.js +7 -0
  178. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isSymbol.js +9 -0
  179. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isTypedArray.js +7 -0
  180. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/keys.js +9 -0
  181. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/keysIn.js +9 -0
  182. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/last.js +7 -0
  183. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/memoize.js +16 -0
  184. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/noop.js +4 -0
  185. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/set.js +7 -0
  186. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/stubArray.js +6 -0
  187. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/stubFalse.js +6 -0
  188. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/toString.js +7 -0
  189. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/uniq.js +7 -0
  190. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/uniqWith.js +7 -0
  191. package/package.json +59 -20
  192. package/CHANGELOG.json +0 -652
  193. package/CHANGELOG.md +0 -2029
  194. package/LICENSE.md +0 -5
  195. package/README.md +0 -1
  196. package/configure/CHANGELOG.json +0 -382
  197. package/configure/CHANGELOG.md +0 -1822
  198. package/configure/lib/configure.js +0 -328
  199. package/configure/lib/configure.js.map +0 -1
  200. package/configure/lib/correct-response.js +0 -484
  201. package/configure/lib/correct-response.js.map +0 -1
  202. package/configure/lib/defaults.js +0 -448
  203. package/configure/lib/defaults.js.map +0 -1
  204. package/configure/lib/graphing-config.js +0 -388
  205. package/configure/lib/graphing-config.js.map +0 -1
  206. package/configure/lib/index.js +0 -173
  207. package/configure/lib/index.js.map +0 -1
  208. package/configure/lib/utils.js +0 -122
  209. package/configure/lib/utils.js.map +0 -1
  210. package/configure/package.json +0 -30
  211. package/controller/CHANGELOG.json +0 -412
  212. package/controller/CHANGELOG.md +0 -1254
  213. package/controller/lib/defaults.js +0 -64
  214. package/controller/lib/defaults.js.map +0 -1
  215. package/controller/lib/index.js +0 -450
  216. package/controller/lib/index.js.map +0 -1
  217. package/controller/lib/utils.js +0 -441
  218. package/controller/lib/utils.js.map +0 -1
  219. package/controller/package.json +0 -24
  220. package/docs/config-schema.json +0 -3164
  221. package/docs/config-schema.json.md +0 -2293
  222. package/docs/demo/config.js +0 -8
  223. package/docs/demo/generate.js +0 -200
  224. package/docs/demo/index.html +0 -1
  225. package/docs/demo/session.js +0 -20
  226. package/docs/pie-schema.json +0 -3495
  227. package/docs/pie-schema.json.md +0 -1345
  228. package/lib/index.js +0 -69
  229. package/lib/index.js.map +0 -1
  230. package/lib/main.js +0 -161
  231. package/lib/main.js.map +0 -1
  232. package/lib/utils.js +0 -24
  233. package/lib/utils.js.map +0 -1
@@ -1,64 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- // TODO: This is lifted from @pie-lib/graphing, however importing this will break a controller build because it has jsx source in that package.
8
- const allTools = ['circle', 'line', 'label', 'parabola', 'point', 'polygon', 'ray', 'segment', 'sine', 'vector'
9
- // 'absolute', // - not available as default
10
- // 'exponential', // - not available as default
11
- ];
12
-
13
- /* model defaults */
14
- var _default = exports.default = {
15
- answers: {
16
- correctAnswer: {
17
- name: 'Correct Answer',
18
- marks: []
19
- }
20
- },
21
- arrows: {
22
- left: true,
23
- right: true,
24
- up: true,
25
- down: true
26
- },
27
- backgroundMarks: [],
28
- coordinatesOnHover: false,
29
- defaultGridConfiguration: 0,
30
- domain: {
31
- min: -5,
32
- max: 5,
33
- step: 1,
34
- labelStep: 1,
35
- axisLabel: 'x'
36
- },
37
- graph: {
38
- width: 500,
39
- height: 500
40
- },
41
- includeAxes: true,
42
- labels: {},
43
- labelsEnabled: true,
44
- padding: true,
45
- prompt: '',
46
- promptEnabled: true,
47
- range: {
48
- min: -5,
49
- max: 5,
50
- step: 1,
51
- labelStep: 1,
52
- axisLabel: 'y'
53
- },
54
- rationale: '',
55
- rationaleEnabled: true,
56
- standardGrid: false,
57
- studentInstructionsEnabled: true,
58
- teacherInstructions: '',
59
- teacherInstructionsEnabled: true,
60
- title: '',
61
- titleEnabled: true,
62
- toolbarTools: allTools
63
- };
64
- //# sourceMappingURL=defaults.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"defaults.js","names":["allTools","_default","exports","default","answers","correctAnswer","name","marks","arrows","left","right","up","down","backgroundMarks","coordinatesOnHover","defaultGridConfiguration","domain","min","max","step","labelStep","axisLabel","graph","width","height","includeAxes","labels","labelsEnabled","padding","prompt","promptEnabled","range","rationale","rationaleEnabled","standardGrid","studentInstructionsEnabled","teacherInstructions","teacherInstructionsEnabled","title","titleEnabled","toolbarTools"],"sources":["../src/defaults.js"],"sourcesContent":["// TODO: This is lifted from @pie-lib/graphing, however importing this will break a controller build because it has jsx source in that package.\nconst allTools = [\n 'circle',\n 'line',\n 'label',\n 'parabola',\n 'point',\n 'polygon',\n 'ray',\n 'segment',\n 'sine',\n 'vector',\n // 'absolute', // - not available as default\n // 'exponential', // - not available as default\n];\n\n/* model defaults */\nexport default {\n answers: {\n correctAnswer: {\n name: 'Correct Answer',\n marks: [],\n },\n },\n arrows: {\n left: true,\n right: true,\n up: true,\n down: true,\n },\n backgroundMarks: [],\n coordinatesOnHover: false,\n defaultGridConfiguration: 0,\n domain: {\n min: -5,\n max: 5,\n step: 1,\n labelStep: 1,\n axisLabel: 'x',\n },\n graph: { width: 500, height: 500 },\n includeAxes: true,\n labels: {},\n labelsEnabled: true,\n padding: true,\n prompt: '',\n promptEnabled: true,\n range: {\n min: -5,\n max: 5,\n step: 1,\n labelStep: 1,\n axisLabel: 'y',\n },\n rationale: '',\n rationaleEnabled: true,\n standardGrid: false,\n studentInstructionsEnabled: true,\n teacherInstructions: '',\n teacherInstructionsEnabled: true,\n title: '',\n titleEnabled: true,\n toolbarTools: allTools,\n};\n"],"mappings":";;;;;;AAAA;AACA,MAAMA,QAAQ,GAAG,CACf,QAAQ,EACR,MAAM,EACN,OAAO,EACP,UAAU,EACV,OAAO,EACP,SAAS,EACT,KAAK,EACL,SAAS,EACT,MAAM,EACN;AACA;AACA;AAAA,CACD;;AAED;AAAA,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GACe;EACbC,OAAO,EAAE;IACPC,aAAa,EAAE;MACbC,IAAI,EAAE,gBAAgB;MACtBC,KAAK,EAAE;IACT;EACF,CAAC;EACDC,MAAM,EAAE;IACNC,IAAI,EAAE,IAAI;IACVC,KAAK,EAAE,IAAI;IACXC,EAAE,EAAE,IAAI;IACRC,IAAI,EAAE;EACR,CAAC;EACDC,eAAe,EAAE,EAAE;EACnBC,kBAAkB,EAAE,KAAK;EACzBC,wBAAwB,EAAE,CAAC;EAC3BC,MAAM,EAAE;IACNC,GAAG,EAAE,CAAC,CAAC;IACPC,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,CAAC;IACPC,SAAS,EAAE,CAAC;IACZC,SAAS,EAAE;EACb,CAAC;EACDC,KAAK,EAAE;IAAEC,KAAK,EAAE,GAAG;IAAEC,MAAM,EAAE;EAAI,CAAC;EAClCC,WAAW,EAAE,IAAI;EACjBC,MAAM,EAAE,CAAC,CAAC;EACVC,aAAa,EAAE,IAAI;EACnBC,OAAO,EAAE,IAAI;EACbC,MAAM,EAAE,EAAE;EACVC,aAAa,EAAE,IAAI;EACnBC,KAAK,EAAE;IACLd,GAAG,EAAE,CAAC,CAAC;IACPC,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,CAAC;IACPC,SAAS,EAAE,CAAC;IACZC,SAAS,EAAE;EACb,CAAC;EACDW,SAAS,EAAE,EAAE;EACbC,gBAAgB,EAAE,IAAI;EACtBC,YAAY,EAAE,KAAK;EACnBC,0BAA0B,EAAE,IAAI;EAChCC,mBAAmB,EAAE,EAAE;EACvBC,0BAA0B,EAAE,IAAI;EAChCC,KAAK,EAAE,EAAE;EACTC,YAAY,EAAE,IAAI;EAClBC,YAAY,EAAExC;AAChB,CAAC","ignoreList":[]}
@@ -1,450 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.getLogTrace = exports.getBestAnswer = exports.getAnswerCorrected = exports.createCorrectResponseSession = exports.compareMarks = exports.comparLabelMarks = void 0;
8
- exports.model = model;
9
- exports.normalize = void 0;
10
- exports.outcome = outcome;
11
- exports.validate = void 0;
12
- var _debug = _interopRequireDefault(require("debug"));
13
- var _lodashEs = require("lodash-es");
14
- var _defaults = _interopRequireDefault(require("./defaults"));
15
- var _utils = require("./utils");
16
- var _controllerUtils = require("@pie-lib/controller-utils");
17
- const log = (0, _debug.default)('@pie-element:graphing:controller');
18
- const initializeGraphMap = () => ({
19
- point: [],
20
- segment: [],
21
- line: [],
22
- ray: [],
23
- vector: [],
24
- polygon: [],
25
- circle: [],
26
- sine: [],
27
- parabola: [],
28
- absolute: [],
29
- exponential: []
30
- });
31
- const graphObjectsOrder = {
32
- incorrect: 0,
33
- correct: 1,
34
- missing: 2
35
- };
36
- const compareMarks = (mark1, mark2) => {
37
- // marks can be compared with equalMarks[type] function only if they have the same type;
38
- // if type is different, they are clearly not equal
39
- return !!(mark1 && mark2 && mark1.type === mark2.type && _utils.equalMarks[mark1.type] && _utils.equalMarks[mark1.type](mark1, mark2));
40
- };
41
- exports.compareMarks = compareMarks;
42
- const comparLabelMarks = (mark1, mark2) => {
43
- return mark1.label === mark2.label ? 'correct' : 'incorrect';
44
- };
45
- exports.comparLabelMarks = comparLabelMarks;
46
- const getAnswerCorrected = ({
47
- sessionAnswers,
48
- marks: correctAnswers
49
- }) => {
50
- sessionAnswers = sessionAnswers || [];
51
- correctAnswers = correctAnswers || [];
52
- const rez = (0, _lodashEs.cloneDeep)(sessionAnswers).reduce((correctedAnswer, answer) => {
53
- const answerIsCorrect = correctAnswers.find(mark => compareMarks(answer, mark));
54
- answer.correctness = answerIsCorrect ? 'correct' : 'incorrect';
55
- if (answerIsCorrect) {
56
- answer.correctnesslabel = comparLabelMarks(answer, answerIsCorrect);
57
- answer.correctlabel = answerIsCorrect.label ? answerIsCorrect.label : '';
58
- answer.label = answer.label ? answer.label : '';
59
- }
60
- return [...correctedAnswer, answer];
61
- }, []);
62
-
63
- // add missing objects from correct answer
64
- const missingAnswers = (0, _lodashEs.cloneDeep)(correctAnswers).reduce((correctedAnswer, answer) => {
65
- const answerIndex = sessionAnswers.find(mark => compareMarks(answer, mark));
66
- if (!answerIndex) {
67
- // means that corrected answer is missing from session, so we mark it as missing object
68
- return [...correctedAnswer, {
69
- ...answer,
70
- correctness: 'missing'
71
- }];
72
- }
73
- return correctedAnswer;
74
- }, []);
75
- return [...rez, ...missingAnswers];
76
- };
77
- exports.getAnswerCorrected = getAnswerCorrected;
78
- const getPartialScoring = ({
79
- scoringType,
80
- env
81
- }) => {
82
- let pS = scoringType;
83
-
84
- // if scoringType is undefined, partialScoring should be considered undefined (not set)
85
- // because partialScoring.enabled is using that information
86
- // if it has a value, we check if it is partial scoring or dichotomous
87
- if (scoringType) {
88
- pS = scoringType === 'partial scoring';
89
- }
90
- return _controllerUtils.partialScoring.enabled({
91
- partialScoring: pS
92
- }, env);
93
- };
94
- const getBestAnswer = (question, session, env = {}) => {
95
- // questionPossibleAnswers contains all possible answers (correct response and alternates);
96
- let {
97
- answers: questionPossibleAnswers = {},
98
- scoringType
99
- } = question || {};
100
- let {
101
- answer
102
- } = session || {};
103
-
104
- // filter the incomplete objects
105
- Object.entries(questionPossibleAnswers || {}).forEach(([key, value]) => questionPossibleAnswers[key] = {
106
- ...value,
107
- marks: value?.marks.filter(mark => !mark.building)
108
- });
109
-
110
- // initialize answer if no values
111
- answer = answer || [];
112
-
113
- //filter the incomplete objects for student response - Fix for SC-33160
114
- answer = answer.filter(mark => !mark.building);
115
-
116
- // initialize one possible answer if no values
117
- if ((0, _lodashEs.isEmpty)(questionPossibleAnswers)) {
118
- questionPossibleAnswers = {
119
- correctAnswer: initializeGraphMap()
120
- };
121
- } else {
122
- questionPossibleAnswers = {
123
- correctAnswer: questionPossibleAnswers.correctAnswer,
124
- ...(0, _utils.sortedAnswers)(questionPossibleAnswers)
125
- };
126
- }
127
- const partialScoringEnabled = getPartialScoring({
128
- scoringType,
129
- env
130
- });
131
-
132
- // student's answers without DUPLICATES
133
- const sessionAnswers = (0, _lodashEs.uniqWith)(answer, compareMarks);
134
- // array of possible answers entries
135
- const possibleAnswers = Object.entries(questionPossibleAnswers);
136
- return possibleAnswers.reduce((acc, entry) => {
137
- // iterating each possible answer (main + alternates)
138
- const possibleAnswerKey = entry[0];
139
- const possibleAnswer = entry[1] || {};
140
- let {
141
- marks
142
- } = possibleAnswer;
143
- if (!marks || !marks.length) {
144
- return acc;
145
- }
146
-
147
- // returns array of marks, each having 'correctness' property
148
- const correctedAnswer = getAnswerCorrected({
149
- sessionAnswers,
150
- marks
151
- });
152
- const correctMarks = correctedAnswer.filter(answer => answer.correctness === 'correct');
153
- // filter out missing objects because they do not affect the calculation of the score
154
- // only correct and incorrect are needed
155
- const scoredCorrectedAnswer = correctedAnswer.filter(answer => answer.correctness !== 'missing');
156
- const maxScore = marks.length;
157
- let score = correctMarks.length;
158
-
159
- // if extra placements
160
- if (scoredCorrectedAnswer.length > maxScore) {
161
- score -= scoredCorrectedAnswer.length - maxScore;
162
- }
163
- if (score < 0) {
164
- score = 0;
165
- }
166
- if (score / maxScore > acc.bestScore || !acc.foundOneSolution) {
167
- if (partialScoringEnabled) {
168
- acc.bestScore = parseFloat((score / maxScore).toFixed(2));
169
- } else {
170
- acc.bestScore = Math.floor(score / maxScore);
171
- }
172
- acc.bestScoreAnswerKey = possibleAnswerKey;
173
- acc.answersCorrected = correctedAnswer;
174
- acc.foundOneSolution = true;
175
- }
176
- return acc;
177
- }, {
178
- bestScore: 0,
179
- bestScoreAnswerKey: null,
180
- // initially we just suppose all the answers are incorrect
181
- answersCorrected: (0, _lodashEs.cloneDeep)(sessionAnswers).map(answer => ({
182
- ...answer,
183
- correctness: 'incorrect'
184
- })),
185
- foundOneSolution: false
186
- });
187
- };
188
- exports.getBestAnswer = getBestAnswer;
189
- const normalize = question => ({
190
- ..._defaults.default,
191
- ...question
192
- });
193
- exports.normalize = normalize;
194
- function model(question, session, env) {
195
- return new Promise(resolve => {
196
- const normalizedQuestion = normalize(question);
197
-
198
- // added a sanity check for session for environments where it is not passed initially (ex. pie-website)
199
- if (session === undefined || session === null) {
200
- session = {};
201
- }
202
- // console.log('normalizedQuestion', normalizedQuestion);
203
- const {
204
- defaultTool,
205
- extraCSSRules,
206
- prompt,
207
- promptEnabled,
208
- graph,
209
- answers,
210
- toolbarTools,
211
- ...questionProps
212
- } = normalizedQuestion || {};
213
- let {
214
- arrows
215
- } = normalizedQuestion;
216
- const {
217
- mode,
218
- role
219
- } = env || {};
220
-
221
- // This is used for offering support for old models which have the property arrows: boolean
222
- // Same thing is set in authoring : packages/graphing/configure/src/configure.jsx - componentDidMount
223
- if (typeof arrows === 'boolean') {
224
- if (arrows) {
225
- arrows = {
226
- left: true,
227
- right: true,
228
- up: true,
229
- down: true
230
- };
231
- } else {
232
- arrows = {
233
- left: false,
234
- right: false,
235
- up: false,
236
- down: false
237
- };
238
- }
239
- }
240
-
241
- // added support for models without defaultTool defined; also used in packages/graphing/configure/src/index.js
242
- const toolbarToolsNoLabel = (toolbarTools || []).filter(tool => tool !== 'label');
243
- const normalizedDefaultTool = defaultTool || toolbarToolsNoLabel.length && toolbarToolsNoLabel[0] || '';
244
- const base = {
245
- ...questionProps,
246
- answers,
247
- arrows,
248
- defaultTool: normalizedDefaultTool,
249
- disabled: env.mode !== 'gather',
250
- prompt: promptEnabled ? prompt : null,
251
- rationale: null,
252
- size: graph,
253
- showKeyLegend: env.mode === 'evaluate',
254
- showToggle: env.mode === 'evaluate' && !(0, _lodashEs.isEmpty)(answers) && answers.correctAnswer && answers.correctAnswer.marks && !(0, _lodashEs.isEmpty)(answers.correctAnswer.marks),
255
- teacherInstructions: null,
256
- toolbarTools,
257
- extraCSSRules
258
- };
259
- if (role === 'instructor' && (mode === 'view' || mode === 'evaluate')) {
260
- const {
261
- rationale,
262
- rationaleEnabled,
263
- teacherInstructions,
264
- teacherInstructionsEnabled
265
- } = normalizedQuestion || {};
266
- base.rationale = rationaleEnabled ? rationale : null;
267
- base.teacherInstructions = teacherInstructionsEnabled ? teacherInstructions : null;
268
- }
269
- if (mode === 'evaluate') {
270
- if (!(0, _lodashEs.isEmpty)(answers) && answers.correctAnswer && answers.correctAnswer.marks && !(0, _lodashEs.isEmpty)(answers.correctAnswer.marks)) {
271
- const {
272
- answersCorrected,
273
- bestScoreAnswerKey,
274
- bestScore
275
- } = getBestAnswer(normalizedQuestion, session, env);
276
- // array of marks from session with 'correctness' property set
277
- base.answersCorrected = answersCorrected.sort((a, b) => graphObjectsOrder[a.correctness] - graphObjectsOrder[b.correctness]);
278
- base.correctResponse = bestScoreAnswerKey ? (answers[bestScoreAnswerKey] || {}).marks : [];
279
- base.showToggle = base.showToggle && bestScore !== 1;
280
- } else {
281
- base.answersCorrected = session && session.answer || [];
282
- base.correctResponse = [];
283
- }
284
- }
285
- log('base: ', base);
286
- resolve(base);
287
- });
288
- }
289
-
290
- /**
291
- * Generates detailed trace log for scoring evaluation
292
- * @param {Object} model - the question model
293
- * @param {Object} session - the student session
294
- * @param {Object} env - the environment
295
- * @returns {Array} traceLog - array of trace messages
296
- */
297
- const getLogTrace = (question, session, env) => {
298
- const traceLog = [];
299
- const {
300
- answers = {},
301
- scoringType
302
- } = question || {};
303
- const studentMarks = session && session.answer || [];
304
- if (!studentMarks.length) {
305
- return ['Student did not interact with the graph.'];
306
- }
307
- traceLog.push(`Student added ${studentMarks.length} object(s) to the graph.`);
308
- const partialScoringEnabled = getPartialScoring({
309
- scoringType,
310
- env
311
- });
312
- const {
313
- answersCorrected,
314
- bestScore,
315
- bestScoreAnswerKey
316
- } = getBestAnswer(question, session, env);
317
- const correctResponse = bestScoreAnswerKey && answers[bestScoreAnswerKey] ? answers[bestScoreAnswerKey].marks || [] : [];
318
- let correctCount = 0;
319
- let incorrectCount = 0;
320
- let missingCount = 0;
321
- for (let i = 0; i < answersCorrected.length; i++) {
322
- const c = answersCorrected[i].correctness;
323
- if (c === 'correct') correctCount++;else if (c === 'incorrect') incorrectCount++;else if (c === 'missing') missingCount++;
324
- }
325
- if (correctCount > 0) {
326
- traceLog.push(`Correct objects: ${correctCount}.`);
327
- }
328
- if (incorrectCount > 0) {
329
- traceLog.push(`Incorrect objects: ${incorrectCount}.`);
330
- }
331
- if (missingCount > 0) {
332
- traceLog.push(`Missing required objects: ${missingCount}.`);
333
- }
334
- answersCorrected.forEach((mark, index) => {
335
- const objectType = mark.type || 'graph object';
336
- const objectLabel = mark.label ? `'${mark.label}'` : '';
337
- const objectIndex = `with index ${index + 1}`;
338
- if (mark.correctness === 'correct') {
339
- traceLog.push(`${objectType.charAt(0).toUpperCase() + objectType.slice(1)} ${objectLabel || objectIndex} is correct.`);
340
- }
341
- if (mark.correctness === 'incorrect') {
342
- traceLog.push(`${objectType.charAt(0).toUpperCase() + objectType.slice(1)} ${objectLabel || objectIndex} does not match the expected ${objectType}.`);
343
- }
344
- if (mark.correctness === 'missing') {
345
- traceLog.push(`Expected ${objectType} ${objectLabel || objectIndex} was not plotted by the student.`);
346
- }
347
- });
348
- if (studentMarks.length > correctResponse.length) {
349
- const extra = studentMarks.length - correctResponse.length;
350
- traceLog.push(`${extra} extra object(s) were plotted and are penalized in scoring.`);
351
- }
352
- if (partialScoringEnabled) {
353
- traceLog.push('Score calculated using partial scoring.');
354
- } else {
355
- traceLog.push('Score calculated using all-or-nothing scoring.');
356
- }
357
- traceLog.push(`Final score: ${bestScore}.`);
358
- return traceLog;
359
- };
360
- exports.getLogTrace = getLogTrace;
361
- function outcome(question, session, env = {}) {
362
- return new Promise(resolve => {
363
- if (!session || (0, _lodashEs.isEmpty)(session)) {
364
- resolve({
365
- score: 0,
366
- empty: true,
367
- logTrace: ['Student did not interact with the graph.']
368
- });
369
- }
370
- if (env.mode !== 'evaluate' || (0, _lodashEs.isEmpty)(question.answers) || question.answers && question.answers.correctAnswer && (0, _lodashEs.isEmpty)(question.answers.correctAnswer.marks)) {
371
- resolve({
372
- score: 0,
373
- empty: true,
374
- logTrace: ['Student did not interact with the graph.']
375
- });
376
- }
377
- const {
378
- bestScore
379
- } = getBestAnswer(question, session, env);
380
- resolve({
381
- score: bestScore,
382
- empty: false,
383
- logTrace: getLogTrace(question, session, env)
384
- });
385
- });
386
- }
387
- const createCorrectResponseSession = (question, env) => {
388
- return new Promise(resolve => {
389
- if (env.mode !== 'evaluate' && env.role === 'instructor') {
390
- const {
391
- answers
392
- } = question || {};
393
- let marks = [];
394
- if (answers && Object.values(answers)) {
395
- const correctAnswer = answers.correctAnswer || Object.values(answers)[0] || {};
396
- marks = correctAnswer.marks || [];
397
- }
398
- resolve({
399
- answer: marks,
400
- id: '1'
401
- });
402
- } else {
403
- resolve(null);
404
- }
405
- });
406
- };
407
-
408
- // remove all html tags
409
- exports.createCorrectResponseSession = createCorrectResponseSession;
410
- const getInnerText = html => (html || '').replaceAll(/<[^>]*>/g, '');
411
-
412
- // remove all html tags except img, iframe and source tag for audio
413
- const getContent = html => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');
414
- const validate = (model = {}, config = {}) => {
415
- const {
416
- answers,
417
- toolbarTools
418
- } = model;
419
- const errors = {};
420
- const correctAnswerErrors = {};
421
- const toolbarToolsNoLabel = (toolbarTools || []).filter(tool => tool !== 'label');
422
- if (!toolbarToolsNoLabel.length) {
423
- errors.toolbarToolsError = 'There should be at least 1 tool defined.';
424
- }
425
- ['teacherInstructions', 'prompt', 'rationale'].forEach(field => {
426
- if (config[field]?.required && !getContent(model[field])) {
427
- errors[field] = 'This field is required.';
428
- }
429
- });
430
- Object.entries(answers || {}).forEach(([key, value]) => {
431
- if (!value.marks.length) {
432
- correctAnswerErrors[key] = 'At least 1 graph object should be defined.';
433
- }
434
-
435
- // check if all graph objects are correctly defined with respect to root, edge and from, to
436
- if (value.marks.length > 0) {
437
- value.marks.forEach(mark => {
438
- if (mark.building) {
439
- correctAnswerErrors[key] = 'At least 1 graph object is not correctly defined.';
440
- }
441
- });
442
- }
443
- });
444
- if (!(0, _lodashEs.isEmpty)(correctAnswerErrors)) {
445
- errors.correctAnswerErrors = correctAnswerErrors;
446
- }
447
- return errors;
448
- };
449
- exports.validate = validate;
450
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["_debug","_interopRequireDefault","require","_lodashEs","_defaults","_utils","_controllerUtils","log","debug","initializeGraphMap","point","segment","line","ray","vector","polygon","circle","sine","parabola","absolute","exponential","graphObjectsOrder","incorrect","correct","missing","compareMarks","mark1","mark2","type","equalMarks","exports","comparLabelMarks","label","getAnswerCorrected","sessionAnswers","marks","correctAnswers","rez","cloneDeep","reduce","correctedAnswer","answer","answerIsCorrect","find","mark","correctness","correctnesslabel","correctlabel","missingAnswers","answerIndex","getPartialScoring","scoringType","env","pS","partialScoring","enabled","getBestAnswer","question","session","answers","questionPossibleAnswers","Object","entries","forEach","key","value","filter","building","isEmpty","correctAnswer","sortedAnswers","partialScoringEnabled","uniqWith","possibleAnswers","acc","entry","possibleAnswerKey","possibleAnswer","length","correctMarks","scoredCorrectedAnswer","maxScore","score","bestScore","foundOneSolution","parseFloat","toFixed","Math","floor","bestScoreAnswerKey","answersCorrected","map","normalize","defaults","model","Promise","resolve","normalizedQuestion","undefined","defaultTool","extraCSSRules","prompt","promptEnabled","graph","toolbarTools","questionProps","arrows","mode","role","left","right","up","down","toolbarToolsNoLabel","tool","normalizedDefaultTool","base","disabled","rationale","size","showKeyLegend","showToggle","teacherInstructions","rationaleEnabled","teacherInstructionsEnabled","sort","a","b","correctResponse","getLogTrace","traceLog","studentMarks","push","correctCount","incorrectCount","missingCount","i","c","index","objectType","objectLabel","objectIndex","charAt","toUpperCase","slice","extra","outcome","empty","logTrace","createCorrectResponseSession","values","id","getInnerText","html","replaceAll","getContent","replace","validate","config","errors","correctAnswerErrors","toolbarToolsError","field","required"],"sources":["../src/index.js"],"sourcesContent":["import debug from 'debug';\n\nimport { cloneDeep, isEmpty, uniqWith } from 'lodash-es';\nimport defaults from './defaults';\nimport { equalMarks, sortedAnswers } from './utils';\n\nimport { partialScoring } from '@pie-lib/controller-utils';\n\nconst log = debug('@pie-element:graphing:controller');\n\nconst initializeGraphMap = () => ({\n point: [],\n segment: [],\n line: [],\n ray: [],\n vector: [],\n polygon: [],\n circle: [],\n sine: [],\n parabola: [],\n absolute: [],\n exponential: [],\n});\n\nconst graphObjectsOrder = {\n incorrect: 0,\n correct: 1,\n missing: 2,\n};\n\nexport const compareMarks = (mark1, mark2) => {\n // marks can be compared with equalMarks[type] function only if they have the same type;\n // if type is different, they are clearly not equal\n return !!(\n mark1 &&\n mark2 &&\n mark1.type === mark2.type &&\n equalMarks[mark1.type] &&\n equalMarks[mark1.type](mark1, mark2)\n );\n};\n\nexport const comparLabelMarks = (mark1, mark2) => {\n return mark1.label === mark2.label ? 'correct' : 'incorrect';\n};\n\nexport const getAnswerCorrected = ({ sessionAnswers, marks: correctAnswers }) => {\n sessionAnswers = sessionAnswers || [];\n correctAnswers = correctAnswers || [];\n\n const rez = cloneDeep(sessionAnswers).reduce((correctedAnswer, answer) => {\n const answerIsCorrect = correctAnswers.find((mark) => compareMarks(answer, mark));\n\n answer.correctness = answerIsCorrect ? 'correct' : 'incorrect';\n if (answerIsCorrect) {\n answer.correctnesslabel = comparLabelMarks(answer, answerIsCorrect);\n answer.correctlabel = answerIsCorrect.label ? answerIsCorrect.label : '';\n answer.label = answer.label ? answer.label : '';\n }\n return [...correctedAnswer, answer];\n }, []);\n\n // add missing objects from correct answer\n const missingAnswers = cloneDeep(correctAnswers).reduce((correctedAnswer, answer) => {\n const answerIndex = sessionAnswers.find((mark) => compareMarks(answer, mark));\n\n if (!answerIndex) {\n // means that corrected answer is missing from session, so we mark it as missing object\n return [...correctedAnswer, { ...answer, correctness: 'missing' }];\n }\n\n return correctedAnswer;\n }, []);\n\n return [...rez, ...missingAnswers];\n};\n\nconst getPartialScoring = ({ scoringType, env }) => {\n let pS = scoringType;\n\n // if scoringType is undefined, partialScoring should be considered undefined (not set)\n // because partialScoring.enabled is using that information\n // if it has a value, we check if it is partial scoring or dichotomous\n if (scoringType) {\n pS = scoringType === 'partial scoring';\n }\n\n return partialScoring.enabled({ partialScoring: pS }, env);\n};\n\nexport const getBestAnswer = (question, session, env = {}) => {\n // questionPossibleAnswers contains all possible answers (correct response and alternates);\n let { answers: questionPossibleAnswers = {}, scoringType } = question || {};\n let { answer } = session || {};\n\n // filter the incomplete objects\n Object.entries(questionPossibleAnswers || {}).forEach(\n ([key, value]) =>\n (questionPossibleAnswers[key] = { ...value, marks: value?.marks.filter((mark) => !mark.building) }),\n );\n\n // initialize answer if no values\n answer = answer || [];\n\n //filter the incomplete objects for student response - Fix for SC-33160\n answer = answer.filter((mark) => !mark.building);\n\n // initialize one possible answer if no values\n if (isEmpty(questionPossibleAnswers)) {\n questionPossibleAnswers = { correctAnswer: initializeGraphMap() };\n } else {\n questionPossibleAnswers = {\n correctAnswer: questionPossibleAnswers.correctAnswer,\n ...sortedAnswers(questionPossibleAnswers),\n };\n }\n\n const partialScoringEnabled = getPartialScoring({ scoringType, env });\n\n // student's answers without DUPLICATES\n const sessionAnswers = uniqWith(answer, compareMarks);\n // array of possible answers entries\n const possibleAnswers = Object.entries(questionPossibleAnswers);\n\n return possibleAnswers.reduce(\n (acc, entry) => {\n // iterating each possible answer (main + alternates)\n const possibleAnswerKey = entry[0];\n const possibleAnswer = entry[1] || {};\n let { marks } = possibleAnswer;\n\n if (!marks || !marks.length) {\n return acc;\n }\n\n // returns array of marks, each having 'correctness' property\n const correctedAnswer = getAnswerCorrected({ sessionAnswers, marks });\n const correctMarks = correctedAnswer.filter((answer) => answer.correctness === 'correct');\n // filter out missing objects because they do not affect the calculation of the score\n // only correct and incorrect are needed\n const scoredCorrectedAnswer = correctedAnswer.filter((answer) => answer.correctness !== 'missing');\n\n const maxScore = marks.length;\n let score = correctMarks.length;\n\n // if extra placements\n if (scoredCorrectedAnswer.length > maxScore) {\n score -= scoredCorrectedAnswer.length - maxScore;\n }\n\n if (score < 0) {\n score = 0;\n }\n\n if (score / maxScore > acc.bestScore || !acc.foundOneSolution) {\n if (partialScoringEnabled) {\n acc.bestScore = parseFloat((score / maxScore).toFixed(2));\n } else {\n acc.bestScore = Math.floor(score / maxScore);\n }\n\n acc.bestScoreAnswerKey = possibleAnswerKey;\n acc.answersCorrected = correctedAnswer;\n acc.foundOneSolution = true;\n }\n\n return acc;\n },\n {\n bestScore: 0,\n bestScoreAnswerKey: null,\n // initially we just suppose all the answers are incorrect\n answersCorrected: cloneDeep(sessionAnswers).map((answer) => ({ ...answer, correctness: 'incorrect' })),\n foundOneSolution: false,\n },\n );\n};\n\nexport const normalize = (question) => ({ ...defaults, ...question });\n\nexport function model(question, session, env) {\n return new Promise((resolve) => {\n const normalizedQuestion = normalize(question);\n\n // added a sanity check for session for environments where it is not passed initially (ex. pie-website)\n if (session === undefined || session === null) {\n session = {};\n }\n // console.log('normalizedQuestion', normalizedQuestion);\n const { defaultTool, extraCSSRules, prompt, promptEnabled, graph, answers, toolbarTools, ...questionProps } =\n normalizedQuestion || {};\n let { arrows } = normalizedQuestion;\n const { mode, role } = env || {};\n\n // This is used for offering support for old models which have the property arrows: boolean\n // Same thing is set in authoring : packages/graphing/configure/src/configure.jsx - componentDidMount\n if (typeof arrows === 'boolean') {\n if (arrows) {\n arrows = {\n left: true,\n right: true,\n up: true,\n down: true,\n };\n } else {\n arrows = {\n left: false,\n right: false,\n up: false,\n down: false,\n };\n }\n }\n\n // added support for models without defaultTool defined; also used in packages/graphing/configure/src/index.js\n const toolbarToolsNoLabel = (toolbarTools || []).filter((tool) => tool !== 'label');\n const normalizedDefaultTool = defaultTool || (toolbarToolsNoLabel.length && toolbarToolsNoLabel[0]) || '';\n\n const base = {\n ...questionProps,\n answers,\n arrows,\n defaultTool: normalizedDefaultTool,\n disabled: env.mode !== 'gather',\n prompt: promptEnabled ? prompt : null,\n rationale: null,\n size: graph,\n showKeyLegend: env.mode === 'evaluate',\n showToggle:\n env.mode === 'evaluate' &&\n !isEmpty(answers) &&\n answers.correctAnswer &&\n answers.correctAnswer.marks &&\n !isEmpty(answers.correctAnswer.marks),\n teacherInstructions: null,\n toolbarTools,\n extraCSSRules,\n };\n\n if (role === 'instructor' && (mode === 'view' || mode === 'evaluate')) {\n const { rationale, rationaleEnabled, teacherInstructions, teacherInstructionsEnabled } = normalizedQuestion || {};\n\n base.rationale = rationaleEnabled ? rationale : null;\n base.teacherInstructions = teacherInstructionsEnabled ? teacherInstructions : null;\n }\n\n if (mode === 'evaluate') {\n if (\n !isEmpty(answers) &&\n answers.correctAnswer &&\n answers.correctAnswer.marks &&\n !isEmpty(answers.correctAnswer.marks)\n ) {\n const { answersCorrected, bestScoreAnswerKey, bestScore } = getBestAnswer(normalizedQuestion, session, env);\n // array of marks from session with 'correctness' property set\n base.answersCorrected = answersCorrected.sort(\n (a, b) => graphObjectsOrder[a.correctness] - graphObjectsOrder[b.correctness],\n );\n base.correctResponse = bestScoreAnswerKey ? (answers[bestScoreAnswerKey] || {}).marks : [];\n base.showToggle = base.showToggle && bestScore !== 1;\n } else {\n base.answersCorrected = (session && session.answer) || [];\n base.correctResponse = [];\n }\n }\n\n log('base: ', base);\n resolve(base);\n });\n}\n\n /**\n * Generates detailed trace log for scoring evaluation\n * @param {Object} model - the question model\n * @param {Object} session - the student session\n * @param {Object} env - the environment\n * @returns {Array} traceLog - array of trace messages\n */\nexport const getLogTrace = (question, session, env) => {\n const traceLog = [];\n const { answers = {}, scoringType } = question || {};\n const studentMarks = (session && session.answer) || [];\n\n if (!studentMarks.length) {\n return ['Student did not interact with the graph.'];\n }\n\n traceLog.push(`Student added ${studentMarks.length} object(s) to the graph.`);\n\n const partialScoringEnabled = getPartialScoring({ scoringType, env });\n\n const {\n answersCorrected,\n bestScore,\n bestScoreAnswerKey,\n } = getBestAnswer(question, session, env);\n\n const correctResponse =\n bestScoreAnswerKey && answers[bestScoreAnswerKey]\n ? answers[bestScoreAnswerKey].marks || []\n : [];\n\n let correctCount = 0;\n let incorrectCount = 0;\n let missingCount = 0;\n\n for (let i = 0; i < answersCorrected.length; i++) {\n const c = answersCorrected[i].correctness;\n if (c === 'correct') correctCount++;\n else if (c === 'incorrect') incorrectCount++;\n else if (c === 'missing') missingCount++;\n }\n\n if (correctCount > 0) {\n traceLog.push(`Correct objects: ${correctCount}.`);\n }\n\n if (incorrectCount > 0) {\n traceLog.push(`Incorrect objects: ${incorrectCount}.`);\n }\n\n if (missingCount > 0) {\n traceLog.push(`Missing required objects: ${missingCount}.`);\n }\n\n answersCorrected.forEach((mark, index) => {\n const objectType = mark.type || 'graph object';\n const objectLabel = mark.label ? `'${mark.label}'` : '';\n const objectIndex = `with index ${index + 1}`;\n\n if (mark.correctness === 'correct') {\n traceLog.push(\n `${objectType.charAt(0).toUpperCase() + objectType.slice(1)} ${objectLabel || objectIndex} is correct.`\n );\n }\n\n if (mark.correctness === 'incorrect') {\n traceLog.push(\n `${objectType.charAt(0).toUpperCase() + objectType.slice(1)} ${objectLabel || objectIndex} does not match the expected ${objectType}.`\n );\n }\n\n if (mark.correctness === 'missing') {\n traceLog.push(`Expected ${objectType} ${objectLabel || objectIndex} was not plotted by the student.`);\n }\n });\n\n if (studentMarks.length > correctResponse.length) {\n const extra = studentMarks.length - correctResponse.length;\n traceLog.push(`${extra} extra object(s) were plotted and are penalized in scoring.`);\n }\n\n if (partialScoringEnabled) {\n traceLog.push('Score calculated using partial scoring.');\n } else {\n traceLog.push('Score calculated using all-or-nothing scoring.');\n }\n\n traceLog.push(`Final score: ${bestScore}.`);\n\n return traceLog;\n};\n\n\nexport function outcome(question, session, env = {}) {\n return new Promise((resolve) => {\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true, logTrace: ['Student did not interact with the graph.'] });\n }\n\n if (\n env.mode !== 'evaluate' ||\n isEmpty(question.answers) ||\n (question.answers && question.answers.correctAnswer && isEmpty(question.answers.correctAnswer.marks))\n ) {\n resolve({ score: 0, empty: true, logTrace: ['Student did not interact with the graph.'] });\n }\n\n const { bestScore } = getBestAnswer(question, session, env);\n\n resolve({ score: bestScore, empty: false, logTrace: getLogTrace(question, session, env) });\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { answers } = question || {};\n let marks = [];\n\n if (answers && Object.values(answers)) {\n const correctAnswer = answers.correctAnswer || Object.values(answers)[0] || {};\n marks = correctAnswer.marks || [];\n }\n\n resolve({\n answer: marks,\n id: '1',\n });\n } else {\n resolve(null);\n }\n });\n};\n\n// remove all html tags\nconst getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\n\n// remove all html tags except img, iframe and source tag for audio\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const { answers, toolbarTools } = model;\n const errors = {};\n const correctAnswerErrors = {};\n const toolbarToolsNoLabel = (toolbarTools || []).filter((tool) => tool !== 'label');\n\n if (!toolbarToolsNoLabel.length) {\n errors.toolbarToolsError = 'There should be at least 1 tool defined.';\n }\n\n ['teacherInstructions', 'prompt', 'rationale'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n Object.entries(answers || {}).forEach(([key, value]) => {\n if (!value.marks.length) {\n correctAnswerErrors[key] = 'At least 1 graph object should be defined.';\n }\n\n // check if all graph objects are correctly defined with respect to root, edge and from, to\n if (value.marks.length > 0) {\n value.marks.forEach((mark) => {\n if (mark.building) {\n correctAnswerErrors[key] = 'At least 1 graph object is not correctly defined.';\n }\n });\n }\n });\n\n if (!isEmpty(correctAnswerErrors)) {\n errors.correctAnswerErrors = correctAnswerErrors;\n }\n\n return errors;\n};\n"],"mappings":"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","ignoreList":[]}