@pie-element/graphing-solution-set 6.1.2-next.0 → 6.1.2-next.2

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 (182) hide show
  1. package/dist/author/correct-response.js +67 -67
  2. package/dist/author/graphing-config.js +67 -68
  3. package/dist/author/utils.js +1 -1
  4. package/dist/browser/author/index.js +71 -71
  5. package/dist/browser/author/index.js.map +1 -1
  6. package/dist/browser/browser-pUycHh7Y.js +348 -0
  7. package/dist/browser/browser-pUycHh7Y.js.map +1 -0
  8. package/dist/browser/controller/index.js +52 -79
  9. package/dist/browser/controller/index.js.map +1 -1
  10. package/dist/browser/delivery/index.js +17 -17
  11. package/dist/browser/{dist-SjeWPldT.js → dist-B9B3lIkf.js} +13602 -17635
  12. package/dist/browser/dist-B9B3lIkf.js.map +1 -0
  13. package/dist/controller/index.d.ts +1 -1
  14. package/dist/controller/index.js +40 -42
  15. package/dist/controller/utils.d.ts +2 -2
  16. package/dist/controller/utils.js +1 -4
  17. package/dist/index.iife.js +109 -107
  18. package/dist/runtime-support.d.ts +12 -0
  19. package/dist/runtime-support.js +12 -0
  20. package/package.json +13 -10
  21. package/dist/browser/browser-DpedO01u.js +0 -1218
  22. package/dist/browser/browser-DpedO01u.js.map +0 -1
  23. package/dist/browser/dist-SjeWPldT.js.map +0 -1
  24. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_DataView.js +0 -6
  25. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Hash.js +0 -16
  26. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_ListCache.js +0 -16
  27. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Map.js +0 -6
  28. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_MapCache.js +0 -16
  29. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Promise.js +0 -6
  30. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Set.js +0 -6
  31. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_SetCache.js +0 -11
  32. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Stack.js +0 -14
  33. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Symbol.js +0 -5
  34. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Uint8Array.js +0 -5
  35. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_WeakMap.js +0 -6
  36. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_apply.js +0 -12
  37. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_arrayEach.js +0 -7
  38. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_arrayFilter.js +0 -10
  39. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_arrayIncludes.js +0 -7
  40. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_arrayIncludesWith.js +0 -7
  41. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_arrayLikeKeys.js +0 -15
  42. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_arrayMap.js +0 -7
  43. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_arrayPush.js +0 -7
  44. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_arraySome.js +0 -7
  45. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_assignValue.js +0 -10
  46. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_assocIndexOf.js +0 -8
  47. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseAssign.js +0 -8
  48. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseAssignIn.js +0 -8
  49. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseAssignValue.js +0 -12
  50. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseClone.js +0 -57
  51. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseCreate.js +0 -14
  52. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseDifference.js +0 -23
  53. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseFindIndex.js +0 -7
  54. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseFlatten.js +0 -13
  55. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseGetAllKeys.js +0 -9
  56. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseGetTag.js +0 -10
  57. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIndexOf.js +0 -9
  58. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsArguments.js +0 -9
  59. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsEqual.js +0 -8
  60. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsEqualDeep.js +0 -30
  61. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsMap.js +0 -9
  62. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsNaN.js +0 -6
  63. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsNative.js +0 -11
  64. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsSet.js +0 -9
  65. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsTypedArray.js +0 -11
  66. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseKeys.js +0 -12
  67. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseKeysIn.js +0 -13
  68. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseRest.js +0 -9
  69. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseSet.js +0 -22
  70. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseSetToString.js +0 -14
  71. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseTimes.js +0 -7
  72. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseToString.js +0 -15
  73. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseUnary.js +0 -8
  74. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseUniq.js +0 -27
  75. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_cacheHas.js +0 -6
  76. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_castPath.js +0 -10
  77. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_cloneArrayBuffer.js +0 -8
  78. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_cloneBuffer.js +0 -10
  79. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_cloneDataView.js +0 -8
  80. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_cloneRegExp.js +0 -8
  81. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_cloneSymbol.js +0 -8
  82. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_cloneTypedArray.js +0 -8
  83. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_copyArray.js +0 -8
  84. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_copyObject.js +0 -14
  85. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_copySymbols.js +0 -8
  86. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_copySymbolsIn.js +0 -8
  87. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_coreJsData.js +0 -5
  88. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_createSet.js +0 -9
  89. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_defineProperty.js +0 -10
  90. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_equalArrays.js +0 -35
  91. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_equalByTag.js +0 -35
  92. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_equalObjects.js +0 -32
  93. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_freeGlobal.js +0 -4
  94. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getAllKeys.js +0 -9
  95. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getAllKeysIn.js +0 -9
  96. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getMapData.js +0 -8
  97. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getNative.js +0 -9
  98. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getPrototype.js +0 -5
  99. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getRawTag.js +0 -14
  100. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getSymbols.js +0 -10
  101. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getSymbolsIn.js +0 -11
  102. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getTag.js +0 -23
  103. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getValue.js +0 -6
  104. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_hashClear.js +0 -7
  105. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_hashDelete.js +0 -7
  106. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_hashGet.js +0 -13
  107. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_hashHas.js +0 -9
  108. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_hashSet.js +0 -9
  109. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_initCloneArray.js +0 -8
  110. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_initCloneByTag.js +0 -33
  111. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_initCloneObject.js +0 -9
  112. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_isFlattenable.js +0 -10
  113. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_isIndex.js +0 -8
  114. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_isKey.js +0 -11
  115. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_isKeyable.js +0 -7
  116. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_isMasked.js +0 -11
  117. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_isPrototype.js +0 -8
  118. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_listCacheClear.js +0 -6
  119. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_listCacheDelete.js +0 -9
  120. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_listCacheGet.js +0 -8
  121. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_listCacheHas.js +0 -7
  122. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_listCacheSet.js +0 -8
  123. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheClear.js +0 -13
  124. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheDelete.js +0 -8
  125. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheGet.js +0 -7
  126. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheHas.js +0 -7
  127. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheSet.js +0 -8
  128. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_mapToArray.js +0 -9
  129. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_memoizeCapped.js +0 -11
  130. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_nativeCreate.js +0 -5
  131. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_nativeKeys.js +0 -5
  132. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_nativeKeysIn.js +0 -8
  133. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_nodeUtil.js +0 -9
  134. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_objectToString.js +0 -7
  135. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_overArg.js +0 -8
  136. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_overRest.js +0 -13
  137. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_root.js +0 -5
  138. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_setCacheAdd.js +0 -7
  139. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_setCacheHas.js +0 -6
  140. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_setToArray.js +0 -9
  141. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_setToString.js +0 -6
  142. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_shortOut.js +0 -14
  143. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_stackClear.js +0 -7
  144. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_stackDelete.js +0 -7
  145. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_stackGet.js +0 -6
  146. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_stackHas.js +0 -6
  147. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_stackSet.js +0 -16
  148. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_strictIndexOf.js +0 -7
  149. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_stringToPath.js +0 -10
  150. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_toKey.js +0 -10
  151. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_toSource.js +0 -15
  152. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/cloneDeep.js +0 -8
  153. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/constant.js +0 -8
  154. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/differenceWith.js +0 -12
  155. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/eq.js +0 -6
  156. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/identity.js +0 -6
  157. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isArguments.js +0 -10
  158. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isArray.js +0 -4
  159. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isArrayLike.js +0 -8
  160. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isArrayLikeObject.js +0 -8
  161. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isBuffer.js +0 -6
  162. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isEmpty.js +0 -21
  163. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isEqual.js +0 -7
  164. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isFunction.js +0 -11
  165. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isLength.js +0 -7
  166. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isMap.js +0 -7
  167. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isObject.js +0 -7
  168. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isObjectLike.js +0 -6
  169. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isSet.js +0 -7
  170. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isSymbol.js +0 -9
  171. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isTypedArray.js +0 -7
  172. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/keys.js +0 -9
  173. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/keysIn.js +0 -9
  174. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/last.js +0 -7
  175. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/memoize.js +0 -16
  176. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/noop.js +0 -4
  177. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/set.js +0 -7
  178. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/stubArray.js +0 -6
  179. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/stubFalse.js +0 -6
  180. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/toString.js +0 -7
  181. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/uniq.js +0 -7
  182. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/uniqWith.js +0 -7
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["useUtilityClasses","React","useControlled","useForkRef","useId"],"sources":["../../../../../../node_modules/.bun/@mui+material@7.3.11+eb26afe407ed7030/node_modules/@mui/material/esm/FormGroup/formGroupClasses.js","../../../../../../node_modules/.bun/@mui+material@7.3.11+eb26afe407ed7030/node_modules/@mui/material/esm/FormGroup/FormGroup.js","../../../../../../node_modules/.bun/@mui+material@7.3.11+eb26afe407ed7030/node_modules/@mui/material/esm/RadioGroup/radioGroupClasses.js","../../../../../../node_modules/.bun/@mui+material@7.3.11+eb26afe407ed7030/node_modules/@mui/material/esm/RadioGroup/RadioGroup.js","../../../../../lib-react/graphing-solution-set/dist/grid-setup.js","../../../src/author/utils.ts","../../../src/author/graphing-config.tsx","../../../src/author/correct-response.tsx","../../../src/author/configure.tsx","../../../../../shared/configure-events/dist/index.js","../../../src/author/defaults.tsx","../../../src/author/index.ts"],"sourcesContent":["import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getFormGroupUtilityClass(slot) {\n return generateUtilityClass('MuiFormGroup', slot);\n}\nconst formGroupClasses = generateUtilityClasses('MuiFormGroup', ['root', 'row', 'error']);\nexport default formGroupClasses;","'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 { getFormGroupUtilityClass } from \"./formGroupClasses.js\";\nimport useFormControl from \"../FormControl/useFormControl.js\";\nimport formControlState from \"../FormControl/formControlState.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n row,\n error\n } = ownerState;\n const slots = {\n root: ['root', row && 'row', error && 'error']\n };\n return composeClasses(slots, getFormGroupUtilityClass, classes);\n};\nconst FormGroupRoot = styled('div', {\n name: 'MuiFormGroup',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.row && styles.row];\n }\n})({\n display: 'flex',\n flexDirection: 'column',\n flexWrap: 'wrap',\n variants: [{\n props: {\n row: true\n },\n style: {\n flexDirection: 'row'\n }\n }]\n});\n\n/**\n * `FormGroup` wraps controls such as `Checkbox` and `Switch`.\n * It provides compact row layout.\n * For the `Radio`, you should be using the `RadioGroup` component instead of this one.\n */\nconst FormGroup = /*#__PURE__*/React.forwardRef(function FormGroup(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiFormGroup'\n });\n const {\n className,\n row = false,\n ...other\n } = props;\n const muiFormControl = useFormControl();\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['error']\n });\n const ownerState = {\n ...props,\n row,\n error: fcs.error\n };\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(FormGroupRoot, {\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref,\n ...other\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? FormGroup.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 * Display group of elements in a compact row.\n * @default false\n */\n row: PropTypes.bool,\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 FormGroup;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getRadioGroupUtilityClass(slot) {\n return generateUtilityClass('MuiRadioGroup', slot);\n}\nconst radioGroupClasses = generateUtilityClasses('MuiRadioGroup', ['root', 'row', 'error']);\nexport default radioGroupClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport FormGroup from \"../FormGroup/index.js\";\nimport { getRadioGroupUtilityClass } from \"./radioGroupClasses.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport useControlled from \"../utils/useControlled.js\";\nimport RadioGroupContext from \"./RadioGroupContext.js\";\nimport useId from \"../utils/useId.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = props => {\n const {\n classes,\n row,\n error\n } = props;\n const slots = {\n root: ['root', row && 'row', error && 'error']\n };\n return composeClasses(slots, getRadioGroupUtilityClass, classes);\n};\nconst RadioGroup = /*#__PURE__*/React.forwardRef(function RadioGroup(props, ref) {\n const {\n // private\n // eslint-disable-next-line react/prop-types\n actions,\n children,\n className,\n defaultValue,\n name: nameProp,\n onChange,\n value: valueProp,\n ...other\n } = props;\n const rootRef = React.useRef(null);\n const classes = useUtilityClasses(props);\n const [value, setValueState] = useControlled({\n controlled: valueProp,\n default: defaultValue,\n name: 'RadioGroup'\n });\n React.useImperativeHandle(actions, () => ({\n focus: () => {\n let input = rootRef.current.querySelector('input:not(:disabled):checked');\n if (!input) {\n input = rootRef.current.querySelector('input:not(:disabled)');\n }\n if (input) {\n input.focus();\n }\n }\n }), []);\n const handleRef = useForkRef(ref, rootRef);\n const name = useId(nameProp);\n const contextValue = React.useMemo(() => ({\n name,\n onChange(event) {\n setValueState(event.target.value);\n if (onChange) {\n onChange(event, event.target.value);\n }\n },\n value\n }), [name, onChange, setValueState, value]);\n return /*#__PURE__*/_jsx(RadioGroupContext.Provider, {\n value: contextValue,\n children: /*#__PURE__*/_jsx(FormGroup, {\n role: \"radiogroup\",\n ref: handleRef,\n className: clsx(classes.root, className),\n ...other,\n children: children\n })\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? RadioGroup.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 * @ignore\n */\n className: PropTypes.string,\n /**\n * The default value. Use when the component is not controlled.\n */\n defaultValue: PropTypes.any,\n /**\n * The name used to reference the value of the control.\n * If you don't provide this prop, it falls back to a randomly generated name.\n */\n name: PropTypes.string,\n /**\n * Callback fired when a radio button is selected.\n *\n * @param {React.ChangeEvent<HTMLInputElement>} event The event source of the callback.\n * @param {string} value The value of the selected radio button.\n * You can pull out the new value by accessing `event.target.value` (string).\n */\n onChange: PropTypes.func,\n /**\n * Value of the selected radio button. The DOM API casts this to a string.\n */\n value: PropTypes.any\n} : void 0;\nexport default RadioGroup;","import \"react\";\nimport e from \"prop-types\";\nimport { styled as t } from \"@mui/material/styles\";\nimport { Fragment as n, jsx as r, jsxs as i } from \"react/jsx-runtime\";\nimport * as a from \"@pie-lib/render-ui\";\nimport { InputContainer as o, color as s } from \"@pie-lib/render-ui\";\nimport c from \"@pie-lib/editable-html-tip-tap\";\nimport { Accordion as l, AccordionDetails as u, AccordionSummary as d, Typography as f } from \"@mui/material\";\nimport p from \"@mui/icons-material/ExpandMore\";\nimport { NumberTextFieldCustom as m, Toggle as h } from \"@pie-lib/config-ui\";\n//#region src/grid-setup.tsx\nfunction g(e) {\n\treturn typeof e == \"function\" || typeof e == \"object\" && !!e && typeof e.$$typeof == \"symbol\";\n}\nfunction _(e, t) {\n\treturn !e || g(e) ? e : g(e.default) ? e.default : t && g(e[t]) ? e[t] : t && g(e[t]?.default) ? e[t].default : e;\n}\nvar v = _(o, \"InputContainer\") || _(x.InputContainer, \"InputContainer\"), y = a, b = y.default, x = b && typeof b == \"object\" ? b : y, S = t(\"div\")(() => ({ width: \"450px\" })), C = t(\"div\")(() => ({\n\tdisplay: \"flex\",\n\tflexDirection: \"column\",\n\twidth: \"100%\"\n})), w = t(\"div\")(() => ({\n\tdisplay: \"flex\",\n\tflexDirection: \"column\",\n\talignItems: \"center\"\n})), T = t(\"div\")(() => ({\n\tdisplay: \"flex\",\n\tjustifyContent: \"space-around\",\n\talignItems: \"center\"\n})), E = t(\"div\")(({ theme: e }) => ({\n\twidth: \"130px\",\n\tmargin: `${e.spacing(1)} ${e.spacing(.5)}`\n})), D = t(\"div\")(({ theme: e }) => ({\n\twidth: \"160px\",\n\tmargin: `${e.spacing(1)} ${e.spacing(.5)}`,\n\t\"& .MuiFormControl-root\": { width: \"100%\" }\n})), O = t(\"div\")(({ theme: e }) => ({\n\twidth: \"230px\",\n\tmargin: `${e.spacing(1)} ${e.spacing(.5)}`,\n\t\"& .MuiFormControl-root\": { width: \"100%\" }\n})), k = t(f)(({ theme: e }) => ({\n\tfontStyle: \"italic\",\n\tmargin: `${e.spacing(1)} 0`\n})), A = t(\"div\")(() => ({\n\tdisplay: \"flex\",\n\tjustifyContent: \"space-between\",\n\talignItems: \"center\"\n})), j = t(f)(() => ({ color: s.disabled() })), M = t(\"div\")(({ theme: e }) => ({ paddingTop: e.spacing(2) })), N = (e) => {\n\tlet { disabled: t, displayedFields: n, labelValue: a, labelValues: o, gridValue: s, gridValues: c, onChange: l } = e, { labelStep: u = {}, step: d = {} } = n;\n\treturn /* @__PURE__ */ i(w, { children: [d && d.enabled && /* @__PURE__ */ r(D, { children: /* @__PURE__ */ r(m, {\n\t\tlabel: d.label || \"\",\n\t\tvalue: s,\n\t\tcustomValues: c,\n\t\tvariant: \"outlined\",\n\t\tdisabled: t,\n\t\tonChange: (e, t) => l(\"step\", t)\n\t}) }), u && u.enabled && /* @__PURE__ */ r(D, { children: /* @__PURE__ */ r(m, {\n\t\tlabel: u.label || \"\",\n\t\tvalue: a,\n\t\tcustomValues: o,\n\t\tvariant: \"outlined\",\n\t\tdisabled: t,\n\t\tonChange: (e, t) => l(\"labelStep\", t)\n\t}) })] });\n};\nN.propTypes = {\n\tdisabled: e.bool,\n\tdisplayedFields: e.object,\n\tlabelValue: e.number,\n\tlabelValues: e.array,\n\tgridValue: e.number,\n\tgridValues: e.array,\n\tonChange: e.func\n};\nvar P = (e) => {\n\tlet { disabled: t, displayedFields: n, displayHeader: a, label: o, maxValue: s, minValue: l, onChange: u, type: d } = e, { axisLabel: p = {}, min: h = {}, max: g = {} } = n;\n\treturn /* @__PURE__ */ i(w, { children: [\n\t\ta && /* @__PURE__ */ i(f, {\n\t\t\tvariant: \"subtitle2\",\n\t\t\tchildren: [/* @__PURE__ */ r(\"i\", { children: d === \"domain\" ? \"x\" : \"y\" }), \"-axis\"]\n\t\t}),\n\t\th && h.enabled && /* @__PURE__ */ r(D, { children: /* @__PURE__ */ r(m, {\n\t\t\tlabel: h.label || \"\",\n\t\t\tvalue: l,\n\t\t\tmin: -1e4,\n\t\t\tmax: s - .05,\n\t\t\tvariant: \"outlined\",\n\t\t\tdisabled: t,\n\t\t\tonChange: (e, t) => u(\"min\", t)\n\t\t}) }),\n\t\tg && g.enabled && /* @__PURE__ */ r(D, { children: /* @__PURE__ */ r(m, {\n\t\t\tlabel: g.label || \"\",\n\t\t\tvalue: s,\n\t\t\tmin: l + .05,\n\t\t\tmax: 1e4,\n\t\t\tvariant: \"outlined\",\n\t\t\tdisabled: t,\n\t\t\tonChange: (e, t) => u(\"max\", t)\n\t\t}) }),\n\t\tp && p.enabled && /* @__PURE__ */ r(D, { children: /* @__PURE__ */ r(v, {\n\t\t\tlabel: p.label || \"\",\n\t\t\tchildren: /* @__PURE__ */ r(M, { children: /* @__PURE__ */ r(c, {\n\t\t\t\tonChange: (e) => u(\"axisLabel\", e),\n\t\t\t\tmarkup: o || \"\",\n\t\t\t\tcharactersLimit: 5,\n\t\t\t\tonKeyDown: (e) => e.key === \"Enter\",\n\t\t\t\tactivePlugins: [\n\t\t\t\t\t\"bold\",\n\t\t\t\t\t\"italic\",\n\t\t\t\t\t\"underline\",\n\t\t\t\t\t\"strikethrough\"\n\t\t\t\t]\n\t\t\t}) })\n\t\t}) })\n\t] });\n};\nP.propTypes = {\n\tdisabled: e.bool,\n\tdisplayedFields: e.object,\n\tdisplayHeader: e.bool,\n\tlabel: e.string,\n\tmaxValue: e.number,\n\tminValue: e.number,\n\ttype: e.string,\n\tonChange: e.func\n};\nvar F = (e) => {\n\tlet { domain: t, displayedFields: a = {}, gridValues: o = {}, includeAxes: s, labelValues: c = {}, onChange: g, onChangeView: _, range: v, size: y, sizeConstraints: b, standardGrid: x } = e, D = {\n\t\tmin: 2,\n\t\tmax: 41\n\t}, { axisLabel: M = {}, dimensionsEnabled: F, includeAxesEnabled: I, labelStep: L = {}, min: R = {}, max: z = {}, standardGridEnabled: B, step: V = {} } = a || {}, H = R.enabled || z.enabled || M.enabled || V.enabled || L.enabled, U = {\n\t\tstep: V,\n\t\tlabelStep: L\n\t}, W = {\n\t\tmin: R,\n\t\tmax: z,\n\t\taxisLabel: M\n\t}, G = (e) => {\n\t\tlet n = (e) => {\n\t\t\tlet n = e === \"domain\" ? t : v;\n\t\t\treturn {\n\t\t\t\tmin: 1,\n\t\t\t\tmax: n.max < D.min || n.max > D.max ? 16 : n.max,\n\t\t\t\tstep: 1,\n\t\t\t\tlabelStep: 0\n\t\t\t};\n\t\t};\n\t\tg({\n\t\t\tincludeAxes: e,\n\t\t\trange: {\n\t\t\t\t...v,\n\t\t\t\t...e ? { labelStep: 1 } : n(\"range\")\n\t\t\t},\n\t\t\tdomain: {\n\t\t\t\t...t,\n\t\t\t\t...e ? { labelStep: 1 } : n(\"domain\")\n\t\t\t}\n\t\t});\n\t}, K = (e) => {\n\t\tg({\n\t\t\tstandardGrid: e,\n\t\t\trange: {\n\t\t\t\t...t,\n\t\t\t\taxisLabel: v.axisLabel\n\t\t\t},\n\t\t\tgraph: {\n\t\t\t\t...y,\n\t\t\t\theight: y.width\n\t\t\t}\n\t\t});\n\t}, q = (e, t) => {\n\t\tlet n = {\n\t\t\t...y,\n\t\t\t[e]: t\n\t\t};\n\t\tx && (n.height = t), g({ graph: n });\n\t}, J = (e, n) => {\n\t\tt[e] = n, x && e !== \"axisLabel\" && (v[e] = n), g({\n\t\t\tdomain: t,\n\t\t\trange: v\n\t\t});\n\t}, Y = (e, t) => {\n\t\tv[e] = t, g({ range: v });\n\t}, X = /* @__PURE__ */ i(n, { children: [\n\t\t/* @__PURE__ */ i(T, { children: [/* @__PURE__ */ r(P, {\n\t\t\tdisplayedFields: W,\n\t\t\tdisplayHeader: H,\n\t\t\ttype: \"domain\",\n\t\t\tminValue: t.min,\n\t\t\tmaxValue: t.max,\n\t\t\tlabel: t.axisLabel,\n\t\t\tincludeAxes: s,\n\t\t\tonChange: J\n\t\t}), /* @__PURE__ */ r(P, {\n\t\t\tdisplayedFields: W,\n\t\t\tdisplayHeader: H,\n\t\t\ttype: \"range\",\n\t\t\tminValue: v.min,\n\t\t\tmaxValue: v.max,\n\t\t\tlabel: v.axisLabel,\n\t\t\tdisabled: x,\n\t\t\tincludeAxes: s,\n\t\t\tonChange: Y\n\t\t})] }),\n\t\t(R.enabled || z.enabled) && /* @__PURE__ */ r(k, { children: \"If you want the axis to be visible, use a zero or negative Min Value, and a positive Max Value\" }),\n\t\t(V.enabled || L.enabled) && /* @__PURE__ */ i(T, { children: [/* @__PURE__ */ r(N, {\n\t\t\tdisplayedFields: U,\n\t\t\tgridValue: t.step,\n\t\t\tlabelValue: t.labelStep,\n\t\t\tgridValues: o.domain || [],\n\t\t\tlabelValues: c.domain || [],\n\t\t\tonChange: J\n\t\t}), /* @__PURE__ */ r(N, {\n\t\t\tdisabled: x,\n\t\t\tdisplayedFields: U,\n\t\t\tgridValue: v.step,\n\t\t\tlabelValue: v.labelStep,\n\t\t\tgridValues: o.range || [],\n\t\t\tlabelValues: c.range || [],\n\t\t\tonChange: Y\n\t\t})] }),\n\t\tL.enabled && /* @__PURE__ */ r(k, { children: \"For unnumbered gridlines, enter a label interval of 0\" })\n\t] }), Z = z.enabled ? /* @__PURE__ */ i(w, { children: [/* @__PURE__ */ r(O, { children: /* @__PURE__ */ r(m, {\n\t\tlabel: \"Number of Vertical Gridlines\",\n\t\tvalue: t.max,\n\t\tmin: !s && D.min,\n\t\tmax: !s && D.max,\n\t\tvariant: \"outlined\",\n\t\tonChange: (e, t) => J(\"max\", t)\n\t}) }), /* @__PURE__ */ r(O, { children: /* @__PURE__ */ r(m, {\n\t\tlabel: \"Number of Horizontal Gridlines\",\n\t\tvalue: v.max,\n\t\tmin: !s && D.min,\n\t\tmax: !s && D.max,\n\t\tvariant: \"outlined\",\n\t\tdisabled: x,\n\t\tonChange: (e, t) => Y(\"max\", t)\n\t}) })] }) : null;\n\treturn /* @__PURE__ */ r(S, { children: /* @__PURE__ */ i(l, {\n\t\tonChange: _,\n\t\tTransitionProps: { timeout: {\n\t\t\tenter: 225,\n\t\t\texit: 195\n\t\t} },\n\t\tchildren: [/* @__PURE__ */ r(d, {\n\t\t\texpandIcon: /* @__PURE__ */ r(p, {}),\n\t\t\tchildren: /* @__PURE__ */ r(f, {\n\t\t\t\tvariant: \"subtitle1\",\n\t\t\t\tchildren: \"Customize Grid Setup\"\n\t\t\t})\n\t\t}), /* @__PURE__ */ r(u, { children: /* @__PURE__ */ i(C, { children: [\n\t\t\tI && /* @__PURE__ */ r(h, {\n\t\t\t\tlabel: \"Include axes and labels?\",\n\t\t\t\ttoggle: G,\n\t\t\t\tchecked: s\n\t\t\t}),\n\t\t\tB && /* @__PURE__ */ r(h, {\n\t\t\t\tlabel: \"Constrain to standard coordinate grid?\",\n\t\t\t\ttoggle: K,\n\t\t\t\tchecked: x\n\t\t\t}),\n\t\t\ts ? X : Z,\n\t\t\tF && /* @__PURE__ */ i(A, { children: [\n\t\t\t\t/* @__PURE__ */ i(\"div\", { children: [/* @__PURE__ */ r(f, { children: \"Dimensions(px)\" }), /* @__PURE__ */ i(j, { children: [\n\t\t\t\t\t\"Min \",\n\t\t\t\t\tb.min,\n\t\t\t\t\t\", Max \",\n\t\t\t\t\tb.max\n\t\t\t\t] })] }),\n\t\t\t\t/* @__PURE__ */ r(E, { children: /* @__PURE__ */ r(m, {\n\t\t\t\t\tlabel: \"Width\",\n\t\t\t\t\tvalue: y.width,\n\t\t\t\t\tmin: b.min,\n\t\t\t\t\tmax: b.max,\n\t\t\t\t\tstep: b.step,\n\t\t\t\t\tvariant: \"outlined\",\n\t\t\t\t\tonChange: (e, t) => q(\"width\", t)\n\t\t\t\t}) }),\n\t\t\t\t/* @__PURE__ */ r(E, { children: /* @__PURE__ */ r(m, {\n\t\t\t\t\tlabel: \"Height\",\n\t\t\t\t\tvalue: y.height,\n\t\t\t\t\tmin: b.min,\n\t\t\t\t\tmax: b.max,\n\t\t\t\t\tstep: b.step,\n\t\t\t\t\tvariant: \"outlined\",\n\t\t\t\t\tdisabled: x,\n\t\t\t\t\tonChange: (e, t) => q(\"height\", t)\n\t\t\t\t}) })\n\t\t\t] })\n\t\t] }) })]\n\t}) });\n};\nF.propTypes = {\n\tdomain: e.object,\n\tdisplayedFields: e.object,\n\tgridValues: e.object,\n\tincludeAxes: e.bool,\n\tlabelValues: e.object,\n\tonChange: e.func,\n\tonChangeView: e.func,\n\trange: e.object,\n\tsize: e.object,\n\tsizeConstraints: e.object,\n\tstandardGrid: e.bool\n};\n//#endregion\nexport { F as default };\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/graphing-solution-set/configure/src/utils.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 { isEqual } from 'lodash-es';\n\n/*Valid grid values*/\nconst VALID_GRID_VALUES = [\n 0.01, 0.02, 0.04, 0.05, 0.0625, 0.1, 0.125, 0.2, 0.25, 0.5, 1, 2, 3, 4, 5, 8, 10, 12, 15, 20, 40, 50, 64, 100, 500,\n 1000,\n];\n\n// same as VALID_GRID_VALUES but next values are excluded: 0.04, 0.0625, 0.125, 3, 4, 8, 12, 15, 40, 64\nconst PREFERRED_VALID_GRID_VALUES = [0.01, 0.02, 0.05, 0.1, 0.2, 0.25, 0.5, 1, 2, 5, 10, 20, 50, 100, 500, 1000];\n\n/*Valid label values*/\nexport const VALID_LABEL_VALUES = {\n 0.01: [0, 0.01, 0.02, 0.04, 0.05, 0.1],\n 0.02: [0, 0.02, 0.04, 0.1],\n 0.04: [0, 0.04, 0.08, 0.16, 0.2],\n 0.05: [0, 0.05, 0.1, 0.2, 0.25],\n 0.0625: [0, 0.0625, 0.125, 0.25, 0.5],\n 0.1: [0, 0.1, 0.2, 0.4, 0.5, 1],\n 0.125: [0, 0.125, 0.25, 0.5, 1],\n 0.2: [0, 0.2, 0.5, 0.1],\n 0.25: [0, 0.25, 0.5, 1, 2],\n 0.5: [0, 0.5, 1, 2],\n 1: [0, 1, 2, 4, 5, 10],\n 2: [0, 2, 4, 8, 10],\n 3: [0, 3, 6, 12, 15],\n 4: [0, 4, 8, 16, 20],\n 5: [0, 5, 10, 20, 25],\n 8: [0, 8, 16, 32, 40, 64],\n 10: [0, 10, 20, 40, 50, 100],\n 12: [0, 12, 24],\n 15: [0, 15, 30, 60],\n 20: [0, 20, 40, 80, 100],\n 40: [0, 40, 80, 160, 200],\n 50: [0, 50, 100, 200, 250],\n 64: [0, 64, 128],\n 100: [0, 100, 200, 400, 500],\n 500: [0, 500, 1000, 2500],\n 1000: [0, 1000, 2000, 4000, 5000],\n};\n\n/*\n * Function to get grid values\n * @param {Object} axis - axis object\n * @param {Number} size - size of the axis\n * @param {Boolean} prefferedValues - flag to get preffered values\n * */\nexport const getGridValues = (axis, size, prefferedValues = false) => {\n const minValue = (10 * (axis.max - axis.min)) / size;\n const maxValue = minValue * 10;\n const values = prefferedValues ? PREFERRED_VALID_GRID_VALUES : VALID_GRID_VALUES;\n return values.filter((value) => value >= minValue && value <= maxValue);\n};\n\n/*\n * Function to get label values\n * @param {Number} value - value of the axis step\n * */\nexport const getLabelValues = (value) => VALID_LABEL_VALUES[value] || [];\n\n/*\n * Function to apply constraints\n * @param {Object} axis - axis object\n * @param {Number} size - size of the axis\n * @param {Array} oldGridValues - old grid values\n * @param {Array} oldLabelValues - old label values\n * */\nexport const applyConstraints = (axis, size, oldGridValues, oldLabelValues) => {\n const gridValues = getGridValues(axis, size);\n let labelValues = getLabelValues(axis.step);\n if (!isEqual(oldGridValues, gridValues) && !gridValues.includes(axis.step)) {\n const preferredValues = getGridValues(axis, size, true);\n const lowestValue = preferredValues[0] || 1;\n axis.step = lowestValue;\n labelValues = getLabelValues(lowestValue);\n if (!labelValues.includes(axis.labelStep)) {\n axis.labelStep = lowestValue;\n }\n return { gridValues, labelValues };\n }\n if (!isEqual(oldLabelValues, labelValues) && !labelValues.includes(axis.labelStep)) {\n axis.labelStep = axis.step;\n }\n return { gridValues, labelValues };\n};\n\n// also used in pie-lib/graphing/utils as 'getTickValues'\n/*\n * Function to get plotable points\n * @param {Object} prop - axis object\n * */\nconst getPlotablePoints = (prop) => {\n const tickValues = [];\n let tickVal = 0;\n while (tickVal >= prop.min && tickValues.indexOf(tickVal) < 0) {\n tickValues.push(tickVal);\n tickVal = Math.round((tickVal - prop.step) * 10000) / 10000;\n }\n tickVal = Math.round(prop.step * 10000) / 10000;\n while (tickVal <= prop.max && tickValues.indexOf(tickVal) < 0) {\n tickValues.push(tickVal);\n tickVal = Math.round((tickVal + prop.step) * 10000) / 10000;\n }\n // return only ticks that are inside the min-max interval\n if (tickValues) {\n return tickValues.filter((tV) => tV >= prop.min && tV <= prop.max);\n }\n return [];\n};\n\n/*\n * Function to get plotable marks\n * @param {Object} domain - domain object\n * @param {Object} range - range object\n * @param {Object} answers - answers object\n * */\nexport const filterPlotableMarks = (domain, range, answers) => {\n const domainValues = getPlotablePoints(domain);\n const rangeValues = getPlotablePoints(range);\n const isPointPlotable = (x, y) => domainValues.includes(x) && rangeValues.includes(y);\n return Object.entries(answers || {}).reduce((newAnswers, [key, answer]) => {\n newAnswers[key] = {\n ...answer,\n marks: (answer.marks || []).filter((mark) => {\n if (mark.type === 'point') {\n return isPointPlotable(mark.x, mark.y);\n }\n if (mark.type === 'polygon') {\n return !mark.points.find((point) => !isPointPlotable(point.x, point.y));\n }\n const from = mark.from || mark.root;\n const to = mark.to || mark.edge;\n return mark.building\n ? isPointPlotable(from.x, from.y)\n : isPointPlotable(from.x, from.y) && isPointPlotable(to.x, to.y);\n }),\n };\n return newAnswers;\n }, {});\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n// BELOW FUNCTIONS ARE USED IN src/utils as well\n//////////////////////////////////////////////////////////////////////////////////\n\n/*\n * Function to calculate the distance between two points\n * @param {Object} a - point a\n * @param {Object} b - point b\n * */\nconst distance = (a, b) => {\n return Number(Math.sqrt((a.x - b.x) ** 2 + (a.y - b.y) ** 2).toFixed(3));\n};\n\n/*\n * Function to check if a point lies on edges of a polygon\n * @param {Object} point - point object\n * @param {Array} polygon - polygon points array\n * */\nconst pointInPolygon = (point, polygon) => {\n let c = point;\n let inside = false;\n let clonePolygon = [...polygon];\n clonePolygon.push(polygon[0]);\n for (let i = 0; i < clonePolygon.length - 1; i++) {\n let a = clonePolygon[i];\n let b = clonePolygon[i + 1];\n // check if point is on the edge\n if (distance(a, c) + distance(c, b) === distance(a, b)) {\n inside = true;\n break;\n }\n }\n return inside;\n};\n\n/*\n * Function to get the intersection point of two lines\n * @param {Number} x1 - x coordinate of point 1 of line 1\n * @param {Number} y1 - y coordinate of point 1 of line 1\n * @param {Number} x2 - x coordinate of point 2 of line 1\n * @param {Number} y2 - y coordinate of point 2 of line 1\n * @param {Number} x3 - x coordinate of point 1 of line 2\n * @param {Number} y3 - y coordinate of point 1 of line 2\n * @param {Number} x4 - x coordinate of point 2 of line 2\n * @param {Number} y4 - y coordinate of point 2 of line 2\n * */\nconst lineIntersect = (x1, y1, x2, y2, x3, y3, x4, y4) => {\n let ua,\n denominator = (y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1);\n if (denominator === 0) {\n return null;\n }\n ua = ((x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3)) / denominator;\n return {\n x: Number((x1 + ua * (x2 - x1)).toFixed(3)),\n y: Number((y1 + ua * (y2 - y1)).toFixed(3)),\n };\n};\n\n/*\n * Check if a point is inside the graph\n * @param {Object} point - point object\n * @param {Object} domain - domain object\n * @param {Object} range - range object\n * */\nconst isPointInsideGraph = (point, domain, range) => {\n return point.x > domain.min && point.x < domain.max && point.y > range.min && point.y < range.max;\n};\n\n/*\n * Check if a point is on or inside the graph\n * @param {Object} point - point object\n * @param {Object} domain - domain object\n * @param {Object} range - range object\n * */\nconst isPointOnOrInsideGraph = (point, domain, range) => {\n return point.x >= domain.min && point.x <= domain.max && point.y >= range.min && point.y <= range.max;\n};\n\n/*\n * Find the intersection point of a mark with the graph\n * @param {Object} mark - mark object\n * @param {Object} domain - domain object\n * @param {Object} range - range object\n * */\nconst findIntersectionPointForMark = (mark, domain, range) => {\n let intersectionPoint = [];\n let tempData = [\n [domain.max, range.max, domain.max, range.min],\n [domain.min, range.max, domain.min, range.min],\n [domain.min, range.max, domain.max, range.max],\n [domain.min, range.min, domain.max, range.min],\n ];\n for (let i = 0; i < tempData.length; i++) {\n let intersection = lineIntersect(\n mark.from.x,\n mark.from.y,\n mark.to.x,\n mark.to.y,\n tempData[i][0],\n tempData[i][1],\n tempData[i][2],\n tempData[i][3],\n );\n if (intersection && isPointOnOrInsideGraph(intersection, domain, range)) {\n intersectionPoint.push(intersection);\n }\n }\n return intersectionPoint;\n};\n\n/*\n * Sort points in clockwise direction for a polygon\n * @param {Array} points - points array\n * */\nconst sortPointsClockWise = (points) => {\n // Find min max to get center and Sort from top to bottom\n points.sort((a, b) => a.y - b.y);\n // Get center y\n const cy = (points[0].y + points[points.length - 1].y) / 2;\n // Sort from right to left\n points.sort((a, b) => b.x - a.x);\n // Get center x\n const cx = (points[0].x + points[points.length - 1].x) / 2;\n // Center point\n const center = { x: cx, y: cy };\n // As the points are sorted from right to left the first point is the rightmost Starting angle used to reference other angles\n let startAng;\n points.forEach((point) => {\n let ang = Math.atan2(point.y - center.y, point.x - center.x);\n if (!startAng) {\n startAng = ang;\n } else {\n if (ang < startAng) {\n // ensure that all points are clockwise of the start point\n ang += Math.PI * 2;\n }\n }\n point.angle = ang; // add the angle to the point\n });\n // first sort clockwise\n points.sort((a, b) => a.angle - b.angle);\n // then reverse the order\n const ccwPoints = points.reverse();\n // move the last point back to the start\n ccwPoints.unshift(ccwPoints.pop());\n return ccwPoints.map(({ angle, ...attr }) => attr);\n};\n\n/*\n * Function to calculate the dot product of two vectors\n * @param {Object} v1 - point 1\n * @param {Object} v2 - point 2\n * */\nconst dotProduct = (v1, v2) => {\n return v1.x * v2.x + v1.y * v2.y;\n};\n\n/*\n * Function to calculate the magnitude of a vector\n * @param {Object} v - point object\n * */\nconst magnitude = (v) => {\n return Math.sqrt(v.x * v.x + v.y * v.y);\n};\n\n/*\n * Function to calculate the angle between two vectors in radians\n * @param {Object} v1 - point 1\n * @param {Object} v2 - point 2\n * */\nconst angleBetweenVectors = (v1, v2) => {\n const dot = dotProduct(v1, v2);\n const magV1 = magnitude(v1);\n const magV2 = magnitude(v2);\n // Ensure the dot product is within the domain of the acos function\n return Math.acos(dot / (magV1 * magV2));\n};\n\n/*\n * Function to check if a point lies between the angle formed by two lines\n * @param {Object} commonPoint - common point of the two lines\n * @param {Object} point1 - point 1 of cone\n * @param {Object} point2 - point 2 of cone\n * @param {Object} testPoint - point to be tested\n * */\nconst pointInAngle = (commonPoint, point1, point2, testPoint) => {\n const vector1 = { x: point1.x - commonPoint.x, y: point1.y - commonPoint.y };\n const vector2 = { x: point2.x - commonPoint.x, y: point2.y - commonPoint.y };\n const testVector = { x: testPoint.x - commonPoint.x, y: testPoint.y - commonPoint.y };\n const angle1 = angleBetweenVectors(vector1, testVector);\n const angle2 = angleBetweenVectors(vector2, testVector);\n const angleSum = angle1 + angle2;\n // Check if the sum of angles is approximately equal to the angle between the two lines\n // You may need to adjust the tolerance (e.g., 0.0001) based on your specific requirements\n const tolerance = 0.0001;\n return Math.abs(angleSum - angleBetweenVectors(vector1, vector2)) < tolerance;\n};\n\n/*\n * Function to remove duplicate points from an array\n * @param {Array} array - array of points\n * */\nconst removeDuplicatesFromArray = (array) => {\n return array.filter((obj, index) => {\n return index === array.findIndex((o) => obj.x === o.x && obj.y === o.y);\n });\n};\n\n/*\n * Function to remove duplicate points and filter sections\n * @param {Array} sections - array of sections\n * */\nconst removeDuplicateAndFilterSections = (sections) => {\n //removing duplicate points.\n for (let i = 0; i < sections.length; i++) {\n sections[i] = sections[i].filter((obj, index) => {\n return index === sections[i].findIndex((o) => obj.x === o.x && obj.y === o.y);\n });\n }\n //removing arrays with two points\n sections = sections.filter((section) => section.length > 2);\n //sorting the points in clockwise direction\n for (let i = 0; i < sections.length; i++) {\n sections[i] = sortPointsClockWise(sections[i]);\n }\n return sections;\n};\n\n/*\n * Function to find sections in solution set for one line\n * @param {Array} intersectionPoint - intersection point\n * @param {Object} domain - domain object\n * @param {Object} range - range object\n * */\nconst findSectionsInSolutionSetForOneLine = (intersectionPoint, domain, range) => {\n let sections = [];\n sections.push([].concat(intersectionPoint));\n sections.push([].concat(intersectionPoint));\n if (\n (intersectionPoint[0].x === domain.max && intersectionPoint[1].y === range.max) ||\n (intersectionPoint[1].x === domain.max && intersectionPoint[0].y === range.max)\n ) {\n sections[0].push({ x: domain.max, y: range.max });\n sections[1].push({ x: domain.min, y: range.max }, { x: domain.min, y: range.min }, { x: domain.max, y: range.min });\n } else if (\n (intersectionPoint[0].x === domain.min && intersectionPoint[1].y === range.max) ||\n (intersectionPoint[1].x === domain.min && intersectionPoint[0].y === range.max)\n ) {\n sections[0].push({ x: domain.min, y: range.max });\n sections[1].push({ x: domain.max, y: range.max }, { x: domain.max, y: range.min }, { x: domain.min, y: range.min });\n } else if (\n (intersectionPoint[0].x === domain.min && intersectionPoint[1].y === range.min) ||\n (intersectionPoint[1].x === domain.min && intersectionPoint[0].y === range.min)\n ) {\n sections[0].push({ x: domain.min, y: range.min });\n sections[1].push({ x: domain.max, y: range.min }, { x: domain.max, y: range.max }, { x: domain.min, y: range.max });\n } else if (\n (intersectionPoint[0].x === domain.max && intersectionPoint[1].y === range.min) ||\n (intersectionPoint[1].x === domain.max && intersectionPoint[0].y === range.min)\n ) {\n sections[0].push({ x: domain.max, y: range.min });\n sections[1].push({ x: domain.min, y: range.min }, { x: domain.min, y: range.max }, { x: domain.max, y: range.max });\n } else if (\n (intersectionPoint[0].x === domain.min && intersectionPoint[1].x === domain.max) ||\n (intersectionPoint[0].x === domain.max && intersectionPoint[1].x === domain.min)\n ) {\n sections[0].push({ x: domain.min, y: range.max }, { x: domain.max, y: range.max });\n sections[1].push({ x: domain.min, y: range.min }, { x: domain.max, y: range.min });\n } else if (\n (intersectionPoint[0].y === range.min && intersectionPoint[1].y === range.max) ||\n (intersectionPoint[0].y === range.max && intersectionPoint[1].y === range.min)\n ) {\n sections[0].push({ x: domain.min, y: range.min }, { x: domain.min, y: range.max });\n sections[1].push({ x: domain.max, y: range.min }, { x: domain.max, y: range.max });\n }\n return removeDuplicateAndFilterSections(sections);\n};\n\n/*\n * Function to find sections in solution set for two lines\n * @param {Object} gssLineData - graphing solution set line data\n * @param {Array} answers - answers array\n * @param {Object} domain - domain object\n * @param {Object} range - range object\n * */\nconst findSectionsInSolutionSetForTwoLines = (gssLineData, answers, domain, range) => {\n let mark1 = answers[0];\n let mark2 = answers[1];\n let cornerPoints = [\n { x: domain.min, y: range.min },\n { x: domain.min, y: range.max },\n { x: domain.max, y: range.min },\n { x: domain.max, y: range.max },\n ];\n let intersectPoint = lineIntersect(\n mark1.from.x,\n mark1.from.y,\n mark1.to.x,\n mark1.to.y,\n mark2.from.x,\n mark2.from.y,\n mark2.to.x,\n mark2.to.y,\n );\n let sections = [];\n let intersectionPoint1 = findIntersectionPointForMark(mark1, domain, range);\n intersectionPoint1 = removeDuplicatesFromArray(intersectionPoint1);\n let intersectionPoint2 = findIntersectionPointForMark(mark2, domain, range);\n intersectionPoint2 = removeDuplicatesFromArray(intersectionPoint2);\n if (intersectPoint && isPointInsideGraph(intersectPoint, domain, range)) {\n for (let i = 0; i < intersectionPoint1.length; i++) {\n for (let j = 0; j < intersectionPoint2.length; j++) {\n let bucket = [];\n let newCornerPoints = [];\n bucket.push(intersectPoint);\n bucket.push(intersectionPoint1[i]);\n bucket.push(intersectionPoint2[j]);\n for (let k = 0; k < cornerPoints.length; k++) {\n if (pointInAngle(intersectPoint, intersectionPoint1[i], intersectionPoint2[j], cornerPoints[k])) {\n bucket.push(cornerPoints[k]);\n } else {\n newCornerPoints.push(cornerPoints[k]);\n }\n }\n cornerPoints = newCornerPoints;\n sections.push(bucket);\n }\n }\n } else {\n let sections1 = findSectionsInSolutionSetForOneLine(intersectionPoint1, domain, range);\n let sections2 = findSectionsInSolutionSetForOneLine(intersectionPoint2, domain, range);\n for (let i = 0; i < sections1.length; i++) {\n if (\n !(pointInPolygon(intersectionPoint2[0], sections1[i]) && pointInPolygon(intersectionPoint2[1], sections1[i]))\n ) {\n sections.push(sections1[i]);\n }\n }\n for (let i = 0; i < sections2.length; i++) {\n if (\n !(pointInPolygon(intersectionPoint1[0], sections2[i]) && pointInPolygon(intersectionPoint1[1], sections2[i]))\n ) {\n sections.push(sections2[i]);\n }\n }\n for (let i = 0; i < sections.length; i++) {\n cornerPoints = cornerPoints.filter(function (o1) {\n return !sections[i].some(function (o2) {\n return o1.x === o2.x && o1.y === o2.y;\n });\n });\n }\n let sections3 = cornerPoints.concat(intersectionPoint1, intersectionPoint2);\n sections.push(sections3);\n }\n return removeDuplicateAndFilterSections(sections);\n};\n\n/*\n * Function to find sections in solution set\n * @param {Object} gssLineData - graphing solution set line data\n * @param {Array} answers - answers array\n * @param {Object} domain - domain object\n * @param {Object} range - range object\n * */\nexport const findSectionsInSolutionSet = (gssLineData, answers, domain, range) => {\n if (gssLineData.numberOfLines === 1) {\n const intersectionPoint = findIntersectionPointForMark(answers[0], domain, range);\n gssLineData.sections = findSectionsInSolutionSetForOneLine(intersectionPoint, domain, range);\n } else {\n gssLineData.sections = findSectionsInSolutionSetForTwoLines(gssLineData, answers, domain, range);\n }\n return gssLineData;\n};\n\n/*\n * Function to check if a point is inside a polygon\n * @param {Object} point - point to be checked\n * @param {Array} polygon - polygon points array\n * */\nexport const pointInsidePolygon = (point, polygon) => {\n const num_vertices = polygon.length;\n const x = point.x;\n const y = point.y;\n let inside = false;\n let p1 = polygon[0];\n let p2;\n for (let i = 1; i <= num_vertices; i++) {\n p2 = polygon[i % num_vertices];\n if (y > Math.min(p1.y, p2.y)) {\n if (y <= Math.max(p1.y, p2.y)) {\n if (x <= Math.max(p1.x, p2.x)) {\n const x_intersection = ((y - p1.y) * (p2.x - p1.x)) / (p2.y - p1.y) + p1.x;\n if (p1.x === p2.x || x <= x_intersection) {\n inside = !inside;\n }\n }\n }\n }\n p1 = p2;\n }\n return inside;\n};\n\n/*\n * Function to check if lines are added in the graph\n * @param {Object} gssLineData - graphing solution set line data\n * @param {Array} answer - answer array\n * */\nexport const checkIfLinesAreAdded = (gssLineData, answer) => {\n if (answer.length === 0) {\n return false;\n }\n if (gssLineData.numberOfLines === 1) {\n if (answer.length === 1) {\n return !answer[0].building;\n }\n } else {\n if (answer.length !== 2) {\n return false;\n } else {\n return !answer[1].building;\n }\n }\n};\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/graphing-solution-set/configure/src/graphing-config.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 * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { GraphContainer, GridSetup } from '@pie-lib/graphing-solution-set';\nimport { AlertDialog } from '@pie-lib/config-ui';\nimport { MenuItem, Select, Typography, OutlinedInput } from '@mui/material';\nimport { styled } from '@mui/material/styles';\nimport { applyConstraints, filterPlotableMarks, getGridValues, getLabelValues } from './utils.js';\nimport { isEqual, cloneDeep } from 'lodash-es';\n\nconst Container: any = styled('div')(({ theme }) => ({\n display: 'flex',\n flexWrap: 'wrap',\n marginBottom: theme.spacing(2.5),\n}));\n\nconst GridConfigWrapper: any = styled('div')(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n marginRight: theme.spacing(3),\n marginBottom: theme.spacing(2.5),\n}));\n\nconst GraphConfig: any = styled('div')({\n display: 'flex',\n flexDirection: 'column',\n});\n\nconst SubtitleText: any = styled(Typography)(({ theme }) => ({\n marginTop: theme.spacing(1.5),\n marginBottom: theme.spacing(1),\n}));\n\nconst GridConfig: any = styled('div')(({ theme }) => ({\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n width: '100%',\n marginBottom: theme.spacing(2.5),\n}));\n\nconst GridConfigLabel: any = styled(Typography)(({ theme }) => ({\n padding: `0 ${theme.spacing(1)}`,\n}));\n\nconst GridConfigSelect: any = styled(Select)({\n flex: '1',\n});\n\nexport class GraphingConfig extends React.Component {\n static propTypes = {\n availableTools: PropTypes.array,\n authoring: PropTypes.object,\n dimensionsEnabled: PropTypes.bool,\n graphDimensions: PropTypes.object,\n gridConfigurations: PropTypes.array,\n labelsPlaceholders: PropTypes.object,\n model: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n showLabels: PropTypes.bool,\n showTitle: PropTypes.bool,\n titlePlaceholder: PropTypes.string,\n };\n\n constructor(props) {\n super(props);\n const { domain, range, graph } = props.model || {};\n const gridValues = {\n domain: getGridValues(domain, graph.width, true),\n range: getGridValues(range, graph.height, true),\n };\n const labelValues = {\n domain: getLabelValues(domain.step),\n range: getLabelValues(range.step),\n };\n this.state = {\n gridValues,\n labelValues,\n showPixelGuides: false,\n dialog: { isOpened: false },\n domain: { ...domain },\n range: { ...range },\n };\n }\n\n /*\n * Function to change labels\n * @param {object} labels - labels object\n * */\n changeLabels: any = (labels) => {\n const { model, onChange } = this.props;\n onChange({ ...model, labels });\n };\n\n /*\n * Function to change title\n * @param {string} title - title string\n * */\n changeTitle: any = (title) => {\n const { model, onChange } = this.props;\n onChange({ ...model, title });\n };\n\n /*\n * Function to change grid configuration\n * @param {object} config - grid configuration object\n * @param {number} newSelectedGrid - new selected grid\n * */\n onConfigChange: any = (config, newSelectedGrid) => {\n const { model, onChange } = this.props;\n const { defaultGridConfiguration: oldSelectedGrid = 0 } = model;\n const { gridValues: oldGridValues, labelValues: oldLabelValues, domain: oldDomain, range: oldRange } = this.state;\n const updatedModel = { ...model, ...config };\n const { answers, domain, includeAxes = true, graph, range, standardGrid } = updatedModel;\n const gridValues = { domain: [], range: [] };\n const labelValues = { domain: [], range: [] };\n const selectedGrid = newSelectedGrid >= 0 ? newSelectedGrid : oldSelectedGrid;\n if (includeAxes) {\n const domainConstraints = applyConstraints(domain, graph.width, oldGridValues.domain, oldLabelValues.domain);\n gridValues.domain = domainConstraints.gridValues || [];\n labelValues.domain = domainConstraints.labelValues || [];\n }\n if (standardGrid) {\n gridValues.range = gridValues.domain;\n labelValues.range = labelValues.domain;\n range.step = domain.step;\n range.labelStep = domain.labelStep;\n } else {\n if (includeAxes) {\n const rangeConstraints = applyConstraints(range, graph.height, oldGridValues.range, oldLabelValues.range);\n gridValues.range = rangeConstraints.gridValues || [];\n labelValues.range = rangeConstraints.labelValues || [];\n }\n }\n const filteredAnswers = cloneDeep(answers);\n filteredAnswers.correctAnswer.marks = answers.correctAnswer.marks.filter((mark) => mark.type !== 'polygon');\n const plotableAnswers = filterPlotableMarks(domain, range, filteredAnswers);\n if (!isEqual(filteredAnswers, plotableAnswers)) {\n this.setState({\n dialog: {\n isOpened: true,\n onClose: () =>\n this.setState({ dialog: { isOpened: false } }, onChange({ ...model, domain: oldDomain, range: oldRange })),\n onConfirm: () => {\n updatedModel.gssLineData.sections = [];\n updatedModel.gssLineData.selectedTool = 'lineA';\n this.setState(\n {\n gridValues,\n labelValues,\n dialog: { isOpened: false },\n domain: { ...domain },\n range: { ...range },\n },\n onChange({ ...updatedModel, answers: plotableAnswers, defaultGridConfiguration: selectedGrid }),\n );\n },\n },\n });\n return;\n }\n this.setState({ gridValues, labelValues, domain: { ...domain }, range: { ...range } });\n onChange({ ...updatedModel, defaultGridConfiguration: selectedGrid });\n };\n\n /*\n * Function to change view\n * @param {object} event - event object\n * @param {boolean} expanded - expanded boolean\n * */\n onChangeView: any = (event, expanded) => {\n const { graphDimensions: { enabled } = {} } = this.props;\n if (enabled) {\n this.setState({ showPixelGuides: expanded });\n }\n };\n\n /*\n * Function to change grid configuration\n * @param {object} event - event object\n * */\n changeGridConfiguration: any = (event) => {\n const { gridConfigurations } = this.props;\n const { value } = event.target;\n this.onConfigChange(gridConfigurations?.[value] || {}, value);\n };\n\n /*\n * Render the component\n * */\n render() {\n const {\n authoring = {},\n gridConfigurations = [],\n graphDimensions = {},\n labelsPlaceholders,\n model,\n showLabels,\n dimensionsEnabled,\n showTitle,\n titlePlaceholder,\n mathMlOptions = {},\n } = this.props;\n const { arrows, coordinatesOnHover, defaultGridConfiguration, domain, labels, range, standardGrid, title } =\n model || {};\n const graph = (model || {}).graph || {};\n const { min, max, step } = graphDimensions || {};\n const { dialog = {}, gridValues, labelValues, showPixelGuides } = this.state;\n const sizeConstraints = {\n min: Math.max(150, min),\n max: Math.min(800, max),\n step: step >= 1 ? Math.min(200, step) : 20,\n };\n const displayedFields = {\n axisLabel: authoring.axisLabel,\n dimensionsEnabled,\n includeAxesEnabled: false, //Setting false by default as per requirement\n labelStep: authoring.labelStep,\n min: authoring.min,\n max: authoring.max,\n standardGridEnabled: authoring.standardGridEnabled,\n step: authoring.step,\n };\n const displayGridSetup =\n authoring.enabled &&\n Object.values(displayedFields).some((field) => (typeof field === 'object' ? field.enabled : field));\n return (\n <Container>\n <GridConfigWrapper>\n {gridConfigurations && gridConfigurations.length ? (\n <GridConfig>\n <GridConfigLabel component=\"div\" variant=\"h6\">\n Grid Configuration\n </GridConfigLabel>\n <GridConfigSelect\n input={<OutlinedInput labelWidth={10} />}\n displayEmpty\n onChange={this.changeGridConfiguration}\n value={defaultGridConfiguration}\n MenuProps={{ transitionDuration: { enter: 225, exit: 195 } }}\n >\n {(gridConfigurations || []).map((config, index) => (\n <MenuItem key={index} value={index}>\n {config.label}\n </MenuItem>\n ))}\n </GridConfigSelect>\n </GridConfig>\n ) : null}\n {displayGridSetup && (\n <GridSetup\n displayedFields={displayedFields}\n domain={domain}\n gridValues={gridValues}\n includeAxes={true} //Setting true by default as per requirement\n labelValues={labelValues}\n range={range}\n size={graph}\n sizeConstraints={sizeConstraints}\n standardGrid={standardGrid}\n onChange={this.onConfigChange}\n onChangeView={this.onChangeView}\n />\n )}\n </GridConfigWrapper>\n <GraphConfig key=\"graph\">\n <Typography component=\"div\" variant=\"h6\">\n Define Graph Attributes\n </Typography>\n <SubtitleText component=\"div\" variant=\"body1\">\n Use this interface to add/edit a title and/or labels\n </SubtitleText>\n <GraphContainer\n axesSettings={{ includeArrows: arrows }}\n backgroundMarks={[]}\n coordinatesOnHover={coordinatesOnHover}\n collapsibleToolbar={true}\n collapsibleToolbarTitle={'Add Background Shapes to Graph'}\n domain={domain}\n key=\"graphing-config\"\n labels={labels}\n labelsPlaceholders={labelsPlaceholders}\n marks={[]}\n onChangeLabels={this.changeLabels}\n onChangeTitle={this.changeTitle}\n range={range}\n showLabels={showLabels}\n showPixelGuides={showPixelGuides}\n showTitle={showTitle}\n size={{ width: graph.width, height: graph.height }}\n title={title}\n titlePlaceholder={titlePlaceholder}\n disableToolbar={true}\n mathMlOptions={mathMlOptions}\n />\n </GraphConfig>\n <AlertDialog\n open={dialog.isOpened}\n title=\"Warning\"\n text=\"This change would make it impossible for students to plot one or more graph objects in the current correct answers. If you proceed, all such graph objects will be removed from the correct answers.\"\n onClose={dialog.onClose}\n onConfirm={dialog.onConfirm}\n />\n </Container>\n );\n }\n}\n\nexport default GraphingConfig;\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/graphing-solution-set/configure/src/correct-response.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 * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { styled } from '@mui/material/styles';\nimport { GraphContainer as Graph } from '@pie-lib/graphing-solution-set';\nimport { AlertDialog } from '@pie-lib/config-ui';\nimport { set } from 'lodash-es';\nimport { RadioGroup, Typography } from '@mui/material';\nimport Radio from '@mui/material/Radio';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport { findSectionsInSolutionSet, pointInsidePolygon, checkIfLinesAreAdded } from './utils.js';\n\nconst SubtitleText: any = styled(Typography)(({ theme }) => ({\n marginTop: theme.spacing(1.5),\n marginBottom: theme.spacing(1),\n}));\n\nconst RadioButtonClass: any = styled(FormControlLabel)({\n height: '20px',\n width: 'fit-content',\n padding: '.5rem 0',\n});\n\nconst StyledRadio: any = styled(Radio)({\n color: '#000000 !important',\n});\n\nconst ErrorMessage: any = styled('div')(({ theme }) => ({\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing(1),\n}));\n\nexport class CorrectResponse extends React.Component {\n static propTypes = {\n errors: PropTypes.object,\n model: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n };\n\n state = {\n dialog: {\n open: false,\n },\n };\n\n /*\n * Function to handle the alert dialog open and close\n * @param {boolean} open - open or close the dialog\n * @param {function} callback - callback function to be called after setting the state\n * */\n handleAlertDialog = (open, callback) =>\n this.setState(\n {\n dialog: { open },\n },\n callback,\n );\n\n /*\n * Function to change the marks on the graph\n * @param {array} marks - marks to be added on the graph\n * */\n changeMarks: any = (marks) => {\n const { model, onChange } = this.props;\n const { gssLineData } = model;\n if (gssLineData.selectedTool === 'lineA' && marks.length > 0) {\n marks[0].fill = gssLineData['lineA'].lineType;\n }\n if (gssLineData.selectedTool === 'lineB' && marks.length > 1) {\n marks[1].fill = gssLineData['lineB'].lineType;\n }\n if (marks.length === 0) {\n gssLineData.selectedTool = 'lineA';\n set(model, 'gssLineData', gssLineData);\n }\n set(model, 'answers.correctAnswer.marks', marks);\n onChange(model);\n };\n\n /*\n * Reset the graph to original state and remove all the elements added on the graph\n * */\n onResetClick: any = () => {\n const { model, onChange } = this.props;\n const { gssLineData, answers } = model;\n this.setState({\n dialog: {\n open: true,\n title: 'Warning',\n text: 'This will remove all the elements added on the graph and reset graph to original state. Are you sure you want to continue?',\n onConfirm: () => {\n // Reset the graph to original state\n answers.correctAnswer.marks = [];\n gssLineData.selectedTool = 'lineA';\n gssLineData.lineA.lineType = 'Solid';\n if (gssLineData.lineB) gssLineData.lineB.lineType = 'Solid';\n set(model, 'answers', answers);\n set(model, 'gssLineData', gssLineData);\n onChange(model);\n this.handleAlertDialog(false);\n },\n onClose: () => this.handleAlertDialog(false),\n },\n });\n };\n\n /*\n * Function to change the number of lines on the graph\n * @param {object} e - event object\n * @param {number} value - number of lines to be added on the graph\n * */\n changeNumberOfLines: any = (e, value) => {\n const { model } = this.props;\n let gssLineData = model.gssLineData;\n if (gssLineData.selectedTool === 'solutionSet') {\n this.setState({\n dialog: {\n open: true,\n title: 'Warning',\n text: 'Changing number of lines after adding solution set will remove added solution set. Are you sure you want to continue?',\n onConfirm: () => {\n this.changeLine(e, value);\n this.handleAlertDialog(false);\n },\n onClose: () => this.handleAlertDialog(false),\n },\n });\n } else {\n this.changeLine(e, value);\n }\n };\n\n /*\n * Function to change the number of line on the graph\n * @param {object} e - event object\n * @param {number} value - number of lines to be added on the graph\n * */\n changeLine: any = (e, value) => {\n const { model, onChange } = this.props;\n const { answers } = model;\n let gssLineData = model.gssLineData;\n //remove polygon from correct answer\n answers.correctAnswer.marks = answers.correctAnswer.marks.filter((mark) => mark.type !== 'polygon');\n if (Number.parseInt(value) === 1) {\n //remove lineB from gssLineData and correct answer\n delete gssLineData.lineB;\n if (answers.correctAnswer.marks.length > 1) answers.correctAnswer.marks.pop();\n gssLineData.numberOfLines = 1;\n gssLineData.selectedTool = 'lineA';\n } else {\n gssLineData.numberOfLines = 2;\n if (answers.correctAnswer.marks.length > 0) gssLineData.selectedTool = 'lineB';\n gssLineData.lineB = {\n lineType: 'Solid',\n };\n }\n //reset solution set\n set(model, 'answers', answers);\n set(model, 'gssLineData', gssLineData);\n onChange(model);\n };\n\n /*\n * Function to handle the changes to solution set on the graph\n * @param {object} point - point selected on the graph\n * */\n onSolutionSetSelected: any = (point) => {\n const { model, onChange } = this.props;\n const { answers, gssLineData } = model;\n for (const section of gssLineData.sections) {\n //check if the point is inside the polygon\n if (pointInsidePolygon(point, section)) {\n let polygon = {\n points: section,\n building: false,\n type: 'polygon',\n closed: true,\n isSolution: true,\n };\n //remove old answer section from correct answer\n answers.correctAnswer.marks = answers.correctAnswer.marks.filter((mark) => mark.type !== 'polygon');\n //add new answer section to correct answer\n answers.correctAnswer.marks.push(polygon);\n break;\n }\n }\n set(model, 'answers', answers);\n onChange(model);\n };\n\n /*\n * Function to handle the changes to line data on the graph\n * @param {object} gssLineData - line data on the graph\n * @param {string} oldSelectedTool - old selected tool\n * */\n onChangeGssLineData: any = (gssLineData, oldSelectedTool) => {\n const { model } = this.props;\n const { answers, domain, range } = model;\n //handle solution set changes\n if (gssLineData.selectedTool === 'solutionSet') {\n let lines = answers.correctAnswer.marks.filter((mark) => mark.type !== 'polygon');\n if (!checkIfLinesAreAdded(gssLineData, lines)) {\n gssLineData.selectedTool = oldSelectedTool;\n this.setState({\n dialog: {\n open: true,\n title: 'Warning',\n text: 'Please define the line(s) and then select a solution set for the item.',\n onConfirm: () => this.handleAlertDialog(false),\n },\n });\n } else {\n let lines = answers.correctAnswer.marks.filter((mark) => mark.type !== 'polygon');\n gssLineData = findSectionsInSolutionSet(gssLineData, lines, domain, range);\n }\n this.handleGssLineDataChange(gssLineData, answers);\n } else {\n let polygons = answers.correctAnswer.marks.filter((mark) => mark.type === 'polygon');\n if (oldSelectedTool === 'solutionSet' && polygons.length > 0) {\n this.setState({\n dialog: {\n open: true,\n title: 'Warning',\n text: 'Changing a line after adding a solution set will clear your selected solution set. Click \\'Clear Solution Set\\' to change the line. Otherwise, click \\'Cancel\\'.',\n onConfirm: () => {\n answers.correctAnswer.marks = answers.correctAnswer.marks.filter((mark) => mark.type !== 'polygon');\n this.handleGssLineDataChange(gssLineData, answers);\n this.handleAlertDialog(false);\n },\n onConfirmText: 'CLEAR SOLUTION SET',\n onClose: () => {\n gssLineData.selectedTool = oldSelectedTool;\n this.handleGssLineDataChange(gssLineData, answers);\n this.handleAlertDialog(false);\n },\n },\n });\n } else {\n this.handleGssLineDataChange(gssLineData, answers);\n }\n }\n };\n\n /*\n * Function to handle the changes to line data on the graph\n * @param {object} gssLineData - line data on the graph\n * @param {object} answers - correct answer\n * */\n handleGssLineDataChange: any = (gssLineData, answers) => {\n const { model, onChange } = this.props;\n //handle line type changes from solid to dashed and vice versa\n if (answers.correctAnswer.marks.length > 0 && answers.correctAnswer.marks[0] && gssLineData.lineA) {\n answers.correctAnswer.marks[0].fill = gssLineData.lineA.lineType;\n }\n if (answers.correctAnswer.marks.length > 1 && answers.correctAnswer.marks[1] && gssLineData.lineB) {\n answers.correctAnswer.marks[1].fill = gssLineData.lineB.lineType;\n }\n //check if line is added to the graph before switching to lineB\n if (\n (gssLineData.selectedTool === 'lineB' && answers.correctAnswer.marks.length === 0) ||\n (gssLineData.selectedTool === 'lineB' && answers.correctAnswer.marks[0].building)\n ) {\n this.setState({\n dialog: {\n open: true,\n title: 'Warning',\n text: 'Please add Line A to the graph before adding Line B',\n onConfirm: () => this.handleAlertDialog(false),\n },\n });\n gssLineData.selectedTool = 'lineA';\n }\n //check if lineB is added to the graph before switching to lineA\n if (\n gssLineData.selectedTool === 'lineA' &&\n answers.correctAnswer.marks.length > 1 &&\n answers.correctAnswer.marks[1].building\n ) {\n this.setState({\n dialog: {\n open: true,\n title: 'Warning',\n text: 'Please add Line B to the graph before switching to Line A',\n onConfirm: () => this.handleAlertDialog(false),\n },\n });\n gssLineData.selectedTool = 'lineB';\n }\n set(model, 'gssLineData', gssLineData);\n set(model, 'answers', answers);\n onChange(model);\n };\n\n /*\n * Function to update the model\n * @param {object} props - updated props\n * */\n updateModel: any = (props) => {\n const { model, onChange } = this.props;\n onChange({\n ...model,\n ...props,\n });\n };\n\n /*\n * Render the component\n * */\n render() {\n const { errors, model, mathMlOptions = {} } = this.props;\n const { dialog } = this.state;\n //get the default values to GssLineData\n const {\n gssLineData = {\n numberOfLines: 1,\n selectedTool: 'lineA',\n lineA: {\n lineType: 'Solid',\n },\n },\n arrows,\n coordinatesOnHover,\n domain,\n graph = {},\n labels,\n labelsEnabled,\n range,\n title,\n titleEnabled,\n answers,\n } = model || {};\n const { correctAnswerErrors = '' } = errors || {};\n return (\n <div>\n <Typography component=\"div\" variant=\"h6\">\n Define Line Type(s) and Correct Response\n </Typography>\n <SubtitleText component=\"div\" variant=\"body1\">\n Use this interface to choose how many lines students will be able to draw, and to define the correct answer.\n </SubtitleText>\n <SubtitleText component=\"div\" variant=\"body1\">\n Choose Number of Lines\n </SubtitleText>\n <RadioGroup name=\"numberOfLines\" value={gssLineData.numberOfLines} onChange={this.changeNumberOfLines}>\n <RadioButtonClass\n value=\"1\"\n control={<StyledRadio checked={gssLineData.numberOfLines === 1} />}\n label=\"One\"\n />\n <RadioButtonClass\n value=\"2\"\n control={<StyledRadio checked={gssLineData.numberOfLines === 2} />}\n label=\"Two\"\n />\n </RadioGroup>\n <React.Fragment>\n <Graph\n style={correctAnswerErrors['correctAnswer'] && { border: '2px solid red' }}\n axesSettings={{ includeArrows: arrows }}\n backgroundMarks={[]}\n coordinatesOnHover={coordinatesOnHover}\n disabledLabels={true}\n disabledTitle={true}\n domain={domain}\n draggableTools={true}\n labels={labels}\n marks={answers && answers.correctAnswer && answers.correctAnswer.marks ? answers.correctAnswer.marks : []}\n onChangeMarks={(newMarks) => this.changeMarks(newMarks)}\n onCustomReset={this.onResetClick}\n range={range}\n showLabels={labelsEnabled}\n showTitle={titleEnabled}\n size={{ width: graph.width, height: graph.height }}\n title={title}\n gssLineData={gssLineData}\n onChangeGssLineData={this.onChangeGssLineData}\n onSolutionSetSelected={this.onSolutionSetSelected}\n toolbarTools={['line', 'polygon']}\n mathMlOptions={mathMlOptions}\n />\n {correctAnswerErrors['correctAnswer'] && (\n <ErrorMessage>{correctAnswerErrors['correctAnswer']}</ErrorMessage>\n )}\n </React.Fragment>\n <AlertDialog\n open={dialog.open}\n title={dialog.title}\n text={dialog.text}\n onClose={dialog.onClose}\n onConfirm={dialog.onConfirm}\n onConfirmText={dialog.onConfirmText ? dialog.onConfirmText : 'OK'}\n />\n </div>\n );\n }\n}\n\nexport default CorrectResponse;\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/graphing-solution-set/configure/src/configure.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 { styled } from '@mui/material/styles';\n\nimport { settings, layout, InputContainer } from '@pie-lib/config-ui';\nimport PropTypes from 'prop-types';\nimport debug from 'debug';\nimport Typography from '@mui/material/Typography';\nimport EditableHtml from '@pie-lib/editable-html-tip-tap';\nimport GraphingConfig from './graphing-config.js';\nimport CorrectResponse from './correct-response.js';\n\nconst { Panel, toggle, radio, checkboxes, textField, dropdown } = settings;\nconst log = debug('@pie-element:graphing-solution-set:configure');\n\nconst StyledInputContainer: any = styled(InputContainer)(({ theme }) => ({\n width: '100%',\n paddingTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n marginTop: theme.spacing(2),\n}));\n\nconst Description: any = styled(Typography)(({ theme }) => ({\n marginBottom: theme.spacing(2.5),\n}));\n\nexport class Configure extends React.Component {\n static propTypes = {\n onModelChanged: PropTypes.func,\n onConfigurationChanged: PropTypes.func,\n imageSupport: PropTypes.object,\n uploadSoundSupport: PropTypes.object,\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n };\n\n /*\n * Triggered when configure component is mounted\n * */\n componentDidMount() {\n const { configuration, onModelChanged, model } = this.props;\n const { title, graphDimensions } = configuration || {};\n let { arrows, titleEnabled: showTitle, dimensionsEnabled: showDimensions } = model || {};\n // This is used for offering support for old models which have the property arrows: boolean\n // Same thing is set in the controller: packages/graphing/controller/src/index.js - model\n if (typeof arrows === 'boolean') {\n if (arrows) {\n arrows = { left: true, right: true, up: true, down: true };\n } else {\n arrows = { left: false, right: false, up: false, down: false };\n }\n }\n const titleEnabled = showTitle === undefined || showTitle === null ? title.enabled : showTitle;\n const dimensionsEnabled =\n showDimensions === undefined || showDimensions === null ? graphDimensions.enabled : showDimensions;\n onModelChanged && onModelChanged({ ...model, arrows, titleEnabled, dimensionsEnabled });\n }\n\n /*\n * Triggered when the rationale is changed\n * @param {string} rationale - The new rationale\n * */\n onRationaleChange: any = (rationale) => {\n const { onModelChanged, model } = this.props;\n onModelChanged({ ...model, rationale });\n };\n\n /*\n * Triggered when the prompt is changed\n * @param {string} prompt - The new prompt\n * */\n onPromptChange: any = (prompt) => {\n const { onModelChanged, model } = this.props;\n onModelChanged({ ...model, prompt });\n };\n\n /*\n * Triggered when the teacher instructions are changed\n * @param {string} teacherInstructions - The new teacher instructions\n * */\n onTeacherInstructionsChange: any = (teacherInstructions) => {\n const { onModelChanged, model } = this.props;\n onModelChanged({ ...model, teacherInstructions });\n };\n\n /*\n * Render the component\n * */\n render() {\n const { model, configuration, onConfigurationChanged, onModelChanged, imageSupport, uploadSoundSupport } =\n this.props;\n const {\n arrows = {},\n authoring = {},\n coordinatesOnHover = {},\n contentDimensions = {},\n gridConfigurations = [],\n graphDimensions = {},\n instruction = {},\n labels = {},\n padding = {},\n prompt = {},\n rationale = {},\n scoringType = {},\n settingsPanelDisabled,\n spellCheck = {},\n studentInstructions = {},\n teacherInstructions = {},\n title = {},\n maxImageWidth = {},\n maxImageHeight = {},\n withRubric = {},\n language = {},\n languageChoices = {},\n mathMlOptions = {},\n } = configuration || {};\n const {\n errors = {},\n extraCSSRules,\n labelsEnabled,\n dimensionsEnabled,\n promptEnabled,\n rationaleEnabled,\n spellCheckEnabled,\n teacherInstructionsEnabled,\n titleEnabled,\n } = model || {};\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n const labelsPlaceholders = {\n top: labels.top,\n right: labels.right,\n bottom: labels.bottom,\n left: labels.left,\n };\n const panelItemType = {\n arrows:\n arrows.settings &&\n checkboxes(arrows.label, {\n left: arrows.left,\n right: arrows.right,\n up: arrows.up,\n down: arrows.down,\n }),\n titleEnabled: title.settings && toggle(title.label),\n padding: padding.settings && toggle(padding.label),\n labelsEnabled: labels.settings && toggle(labels.label),\n 'language.enabled': language.settings && toggle(language.label, true),\n language: language.settings && language.enabled && dropdown(languageChoices.label, languageChoices.options),\n dimensionsEnabled: graphDimensions.settings && toggle(graphDimensions.label),\n coordinatesOnHover: coordinatesOnHover.settings && toggle(coordinatesOnHover.label),\n };\n const panelProperties = {\n 'authoring.enabled': authoring.settings && toggle(authoring.label, true),\n teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),\n studentInstructionsEnabled: studentInstructions.settings && toggle(studentInstructions.label),\n promptEnabled: prompt.settings && toggle(prompt.label),\n rationaleEnabled: rationale.settings && toggle(rationale.label),\n spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),\n scoringType: scoringType.settings && radio(scoringType.label, ['dichotomous', 'partial scoring']),\n rubricEnabled: withRubric?.settings && toggle(withRubric?.label),\n instruction: instruction.settings && textField(instruction.label),\n };\n return (\n <layout.ConfigLayout\n extraCSSRules={extraCSSRules}\n dimensions={contentDimensions}\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n configuration={configuration}\n onChangeModel={onModelChanged}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n Settings: panelItemType,\n Properties: panelProperties,\n }}\n />\n }\n >\n <Description component=\"div\" variant=\"body1\">\n {instruction?.label || ''}\n </Description>\n {teacherInstructionsEnabled && (\n <StyledInputContainer label={teacherInstructions.label}>\n <EditableHtml\n markup={model.teacherInstructions || ''}\n onChange={this.onTeacherInstructionsChange}\n imageSupport={imageSupport}\n nonEmpty={false}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.teacherInstructions) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.teacherInstructions) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n </StyledInputContainer>\n )}\n {promptEnabled && (\n <StyledInputContainer label={prompt.label}>\n <EditableHtml\n markup={model.prompt}\n onChange={this.onPromptChange}\n imageSupport={imageSupport}\n nonEmpty={false}\n spellCheck={spellCheckEnabled}\n disableUnderline\n maxImageWidth={defaultImageMaxWidth}\n maxImageHeight={defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n </StyledInputContainer>\n )}\n <GraphingConfig\n authoring={authoring}\n gridConfigurations={gridConfigurations}\n graphDimensions={graphDimensions}\n labelsPlaceholders={labelsPlaceholders}\n model={model}\n showLabels={labelsEnabled}\n dimensionsEnabled={dimensionsEnabled}\n showTitle={titleEnabled}\n titlePlaceholder={title.placeholder}\n onChange={this.props.onModelChanged}\n mathMlOptions={mathMlOptions}\n />\n <CorrectResponse\n errors={errors}\n model={model}\n onChange={this.props.onModelChanged}\n mathMlOptions={mathMlOptions}\n />\n {rationaleEnabled && (\n <StyledInputContainer label={rationale.label || 'Rationale'}>\n <EditableHtml\n markup={model.rationale || ''}\n onChange={this.onRationaleChange}\n imageSupport={imageSupport}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.rationale) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rationale) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n </StyledInputContainer>\n )}\n </layout.ConfigLayout>\n );\n }\n}\n\nexport default Configure;\n","//#region src/index.ts\nvar e = class e extends CustomEvent {\n\tstatic {\n\t\tthis.TYPE = \"model.updated\";\n\t}\n\tconstructor(t, n = !1) {\n\t\tsuper(e.TYPE, {\n\t\t\tbubbles: !0,\n\t\t\tdetail: {\n\t\t\t\tupdate: t,\n\t\t\t\treset: n\n\t\t\t}\n\t\t}), this.update = t, this.reset = n;\n\t}\n}, t = class e extends CustomEvent {\n\tstatic {\n\t\tthis.TYPE = \"delete.image\";\n\t}\n\tconstructor(t, n) {\n\t\tsuper(e.TYPE, {\n\t\t\tbubbles: !0,\n\t\t\tdetail: {\n\t\t\t\tsrc: t,\n\t\t\t\tdone: n\n\t\t\t}\n\t\t}), this.src = t, this.done = n;\n\t}\n}, n = class e extends CustomEvent {\n\tstatic {\n\t\tthis.TYPE = \"insert.image\";\n\t}\n\tconstructor(t) {\n\t\tsuper(e.TYPE, {\n\t\t\tbubbles: !0,\n\t\t\tdetail: t\n\t\t}), this.handler = t;\n\t}\n}, r = class e extends CustomEvent {\n\tstatic {\n\t\tthis.TYPE = \"delete.sound\";\n\t}\n\tconstructor(t, n) {\n\t\tsuper(e.TYPE, {\n\t\t\tbubbles: !0,\n\t\t\tdetail: {\n\t\t\t\tsrc: t,\n\t\t\t\tdone: n\n\t\t\t}\n\t\t}), this.src = t, this.done = n;\n\t}\n}, i = class e extends CustomEvent {\n\tstatic {\n\t\tthis.TYPE = \"insert.sound\";\n\t}\n\tconstructor(t) {\n\t\tsuper(e.TYPE, {\n\t\t\tbubbles: !0,\n\t\t\tdetail: t\n\t\t}), this.handler = t;\n\t}\n};\n//#endregion\nexport { t as DeleteImageEvent, r as DeleteSoundEvent, n as InsertImageEvent, i as InsertSoundEvent, e as ModelUpdatedEvent };\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/graphing-solution-set/configure/src/defaults.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\n/*\n * This file contains the default configuration for the Graphing Solution Set Item Type.\n * Model is similar to the one used in graphing item type except for the gssLineData object which handles\n * the configuration for the lines and the solution set.\n *\n * Same model is used in controller default.js\n * */\nexport default {\n model: {\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 marks: [],\n defaultGridConfiguration: 0,\n domain: {\n min: -5,\n max: 5,\n step: 1,\n labelStep: 1,\n axisLabel: 'x',\n },\n graph: {\n width: 500,\n height: 500,\n },\n gssLineData: {\n numberOfLines: 1,\n selectedTool: 'lineA',\n sections: [],\n lineA: {\n lineType: 'Solid',\n },\n },\n includeAxes: true,\n labels: {},\n labelsEnabled: true,\n padding: true,\n prompt: '',\n range: {\n min: -5,\n max: 5,\n step: 1,\n labelStep: 1,\n axisLabel: 'y',\n },\n rationale: '',\n standardGrid: false,\n title: '',\n coordinatesOnHover: false,\n promptEnabled: true,\n rationaleEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n },\n configuration: {\n authoring: {\n settings: false,\n label: 'Customize Grid Setup',\n enabled: true,\n includeAxesEnabled: false,\n standardGridEnabled: true,\n min: {\n label: 'Min Value',\n enabled: true,\n },\n max: {\n label: 'Max Value',\n enabled: true,\n },\n axisLabel: {\n label: 'Label',\n enabled: true,\n },\n step: {\n label: 'Grid Interval',\n enabled: true,\n },\n labelStep: {\n label: 'Label Interval',\n enabled: true,\n },\n },\n arrows: {\n settings: true,\n label: 'Include Arrows',\n left: {\n label: 'left',\n },\n right: {\n label: 'right',\n },\n up: {\n label: 'up',\n },\n down: {\n label: 'down',\n },\n },\n gridConfigurations: [\n {\n label: '4-quadrant coordinate grid, -10 to 10',\n arrows: {\n left: true,\n right: true,\n up: true,\n down: true,\n },\n domain: {\n min: -10,\n max: 10,\n step: 1,\n padding: 0,\n labelStep: 1,\n axisLabel: '<i>x</i>',\n },\n graph: {\n width: 480,\n height: 480,\n },\n includeAxes: true,\n labels: {\n top: '',\n right: '',\n bottom: '',\n left: '',\n },\n padding: true,\n range: {\n min: -10,\n max: 10,\n step: 1,\n padding: 0,\n labelStep: 1,\n axisLabel: '<i>y</i>',\n },\n standardGrid: true,\n title: '',\n },\n {\n label: '0 to 10 on both axes',\n arrows: {\n left: false,\n right: true,\n up: true,\n down: false,\n },\n domain: {\n min: 0,\n max: 10,\n step: 1,\n padding: 0,\n labelStep: 1,\n axisLabel: '<i>x</i>',\n },\n graph: {\n width: 480,\n height: 480,\n },\n includeAxes: true,\n labels: {\n top: '',\n right: '',\n bottom: '',\n left: '',\n },\n padding: true,\n range: {\n min: 0,\n max: 10,\n step: 1,\n padding: 0,\n labelStep: 1,\n axisLabel: '<i>y</i>',\n },\n standardGrid: true,\n title: '',\n },\n {\n label: '0 to 20 on both axes',\n arrows: {\n left: false,\n right: true,\n up: true,\n down: false,\n },\n domain: {\n min: 0,\n max: 20,\n step: 1,\n padding: 0,\n labelStep: 1,\n axisLabel: '<i>x</i>',\n },\n graph: {\n width: 480,\n height: 480,\n },\n includeAxes: true,\n labels: {\n top: '',\n right: '',\n bottom: '',\n left: '',\n },\n padding: true,\n range: {\n min: 0,\n max: 20,\n step: 1,\n padding: 0,\n labelStep: 1,\n axisLabel: '<i>y</i>',\n },\n standardGrid: true,\n title: '',\n },\n {\n label: 'Sample Data Graph',\n arrows: {\n left: false,\n right: true,\n up: true,\n down: false,\n },\n domain: {\n min: 0,\n max: 30,\n step: 1,\n padding: 0,\n labelStep: 2,\n axisLabel: '<i>t</i>',\n },\n graph: {\n width: 480,\n height: 480,\n },\n includeAxes: true,\n labels: {\n top: '',\n right: '',\n bottom: 'Time (seconds)',\n left: 'Distance (meters)',\n },\n padding: true,\n range: {\n min: 0,\n max: 80,\n step: 5,\n padding: 0,\n labelStep: 10,\n axisLabel: '<i>d</i>',\n },\n standardGrid: false,\n title: 'Distance as a function of time',\n },\n ],\n graphDimensions: {\n settings: false,\n label: 'Graph Dimensions',\n enabled: true,\n min: 150,\n max: 800,\n step: 20,\n },\n padding: {\n settings: false,\n label: 'Padding',\n },\n labels: {\n settings: true,\n label: 'Graph Labels',\n enabled: true,\n top: 'Click here to add a top label',\n right: 'Click here to add a right label',\n bottom: 'Click here to add a bottom label',\n left: 'Click here to add a left label',\n },\n prompt: {\n settings: true,\n label: 'Item Stem',\n },\n rationale: {\n settings: true,\n label: 'Rationale',\n },\n scoringType: {\n settings: false,\n label: 'Scoring Type',\n },\n studentInstructions: {\n settings: false,\n label: 'Student Instructions',\n },\n teacherInstructions: {\n settings: true,\n label: 'Teacher Instructions',\n },\n title: {\n settings: true,\n label: 'Graph Title',\n enabled: true,\n placeholder: 'Click here to add a title for this graph',\n },\n instruction: {\n settings: false,\n label:\n 'Graphing Solution Set items involve plotting one or two lines on a graph and then selecting the correct area that represents the solution set. To create one, first configure the grid, then select if one or two lines will be offered and if the lines should be solid or dashed. After defining the line(s), define the correct answer by clicking the area that represents the solution set.',\n },\n settingsPanelDisabled: false,\n spellCheck: {\n label: 'Spellcheck',\n settings: false,\n enabled: true,\n },\n coordinatesOnHover: {\n settings: true,\n label: 'Coordinates on Hover',\n },\n maxImageWidth: {\n teacherInstructions: 300,\n prompt: 300,\n rationale: 300,\n },\n maxImageHeight: {\n teacherInstructions: 300,\n prompt: 300,\n rationale: 300,\n },\n withRubric: {\n settings: false,\n label: 'Add Rubric',\n },\n language: {\n settings: false,\n label: 'Specify Language',\n enabled: false,\n },\n languageChoices: {\n label: 'Language Choices',\n options: [],\n },\n mathMlOptions: {\n mmlOutput: false,\n mmlEditing: false,\n },\n },\n};\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/graphing-solution-set/configure/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 Configure from './configure.js';\nimport {\n ModelUpdatedEvent,\n DeleteImageEvent,\n InsertImageEvent,\n InsertSoundEvent,\n DeleteSoundEvent,\n} from '@pie-element/shared-configure-events';\nimport debug from 'debug';\nimport defaultValues from './defaults.js';\nimport { renderMath } from '@pie-element/shared-math-rendering-mathjax';\n\nconst log = debug('pie-elements:graphing-solution-set:configure');\n\n// this function is implemented in controller as well\nconst sortedAnswers = (answers) =>\n Object.keys(answers || {})\n .sort()\n .reduce((result, key) => {\n if (key !== 'correctAnswer') {\n result[key] = answers[key];\n }\n\n return result;\n }, {});\n\nexport default class GraphLinesConfigure extends HTMLElement {\n static createDefaultModel = (model = {}) => {\n const normalizedModel = { ...defaultValues.model, ...model };\n const { answers = {}, domain = {}, graph = {}, range = {}, standardGrid } = normalizedModel;\n return {\n ...normalizedModel,\n answers:\n (answers &&\n answers.correctAnswer && {\n correctAnswer: answers.correctAnswer,\n ...sortedAnswers(answers),\n }) ||\n answers,\n range:\n (standardGrid && {\n ...range,\n min: domain.min,\n max: domain.max,\n step: domain.step,\n labelStep: domain.labelStep,\n }) ||\n range,\n graph: (standardGrid && { ...graph, height: graph.width }) || graph,\n };\n };\n\n constructor() {\n super();\n this._root = null;\n this._model = GraphLinesConfigure.createDefaultModel();\n this._configuration = defaultValues.configuration;\n }\n\n /*\n * Function to set the model\n * */\n set model(m) {\n this._model = GraphLinesConfigure.createDefaultModel(m);\n this._render();\n }\n\n /*\n * Function to set the configuration\n * */\n set configuration(c) {\n this._configuration = c;\n // if language:enabled is true, then the corresponding default item model should include a language value;\n // if it is false, then the language field should be omitted from the item model.\n // if a default item model includes a language value (e.g., en_US) and the corresponding authoring view settings have language:settings = true,\n // then (a) language:enabled should also be true, and (b) that default language value should be represented in languageChoices[] (as a key).\n //TODO: add logic in controller and add tests\n if (c.language?.enabled) {\n if (c.languageChoices?.options?.length) {\n this._model.language = c.languageChoices.options[0].value;\n }\n } else {\n if (c.language.settings) {\n if (this._model.language) {\n this._configuration.language.enabled = true;\n }\n } else {\n delete this._model.language;\n }\n }\n this._render();\n }\n\n /*\n * Triggered when the model is changed\n * @param {object} model - the new model\n * */\n onModelChanged: any = (model) => {\n this._model = model;\n this._render();\n log('[onModelChanged]: ', this._model);\n this.dispatchEvent(new ModelUpdatedEvent(this._model));\n };\n\n /*\n * Triggered when the configuration is changed\n * @param {object} config - the new configuration\n * */\n onConfigurationChanged: any = (config) => {\n this._configuration = config;\n this._render();\n };\n\n insertImage: any = (handler) => {\n this.dispatchEvent(new InsertImageEvent(handler));\n };\n\n onDeleteImage: any = (src, done) => {\n this.dispatchEvent(new DeleteImageEvent(src, done));\n };\n\n insertSound(handler) {\n this.dispatchEvent(new InsertSoundEvent(handler));\n }\n\n onDeleteSound(src, done) {\n this.dispatchEvent(new DeleteSoundEvent(src, done));\n }\n\n /*\n * Render the component\n * */\n _render() {\n if (this._model) {\n const el = React.createElement(Configure, {\n onModelChanged: this.onModelChanged,\n onConfigurationChanged: this.onConfigurationChanged,\n model: this._model,\n configuration: this._configuration,\n imageSupport: {\n add: this.insertImage,\n delete: this.onDeleteImage,\n },\n uploadSoundSupport: {\n add: this.insertSound.bind(this),\n delete: this.onDeleteSound.bind(this),\n },\n });\n if (!this._root) {\n this._root = createRoot(this);\n }\n this._root.render(el);\n queueMicrotask(() => {\n renderMath(this);\n });\n }\n }\n\n disconnectedCallback() {\n if (this._root) {\n this._root.unmount();\n }\n }\n}\n"],"x_google_ignoreList":[0,1,2,3],"mappings":"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GACL,MAAM;GACN,WAAW;GACX,WAAW;EACb;EACA,OAAO;GACL,OAAO;GACP,QAAQ;EACV;EACA,aAAa;GACX,eAAe;GACf,cAAc;GACd,UAAU,CAAC;GACX,OAAO,EACL,UAAU,QACZ;EACF;EACA,aAAa;EACb,QAAQ,CAAC;EACT,eAAe;EACf,SAAS;EACT,QAAQ;EACR,OAAO;GACL,KAAK;GACL,KAAK;GACL,MAAM;GACN,WAAW;GACX,WAAW;EACb;EACA,WAAW;EACX,cAAc;EACd,OAAO;EACP,oBAAoB;EACpB,eAAe;EACf,kBAAkB;EAClB,4BAA4B;EAC5B,4BAA4B;CAC9B;CACA,eAAe;EACb,WAAW;GACT,UAAU;GACV,OAAO;GACP,SAAS;GACT,oBAAoB;GACpB,qBAAqB;GACrB,KAAK;IACH,OAAO;IACP,SAAS;GACX;GACA,KAAK;IACH,OAAO;IACP,SAAS;GACX;GACA,WAAW;IACT,OAAO;IACP,SAAS;GACX;GACA,MAAM;IACJ,OAAO;IACP,SAAS;GACX;GACA,WAAW;IACT,OAAO;IACP,SAAS;GACX;EACF;EACA,QAAQ;GACN,UAAU;GACV,OAAO;GACP,MAAM,EACJ,OAAO,OACT;GACA,OAAO,EACL,OAAO,QACT;GACA,IAAI,EACF,OAAO,KACT;GACA,MAAM,EACJ,OAAO,OACT;EACF;EACA,oBAAoB;GAClB;IACE,OAAO;IACP,QAAQ;KACN,MAAM;KACN,OAAO;KACP,IAAI;KACJ,MAAM;IACR;IACA,QAAQ;KACN,KAAK;KACL,KAAK;KACL,MAAM;KACN,SAAS;KACT,WAAW;KACX,WAAW;IACb;IACA,OAAO;KACL,OAAO;KACP,QAAQ;IACV;IACA,aAAa;IACb,QAAQ;KACN,KAAK;KACL,OAAO;KACP,QAAQ;KACR,MAAM;IACR;IACA,SAAS;IACT,OAAO;KACL,KAAK;KACL,KAAK;KACL,MAAM;KACN,SAAS;KACT,WAAW;KACX,WAAW;IACb;IACA,cAAc;IACd,OAAO;GACT;GACA;IACE,OAAO;IACP,QAAQ;KACN,MAAM;KACN,OAAO;KACP,IAAI;KACJ,MAAM;IACR;IACA,QAAQ;KACN,KAAK;KACL,KAAK;KACL,MAAM;KACN,SAAS;KACT,WAAW;KACX,WAAW;IACb;IACA,OAAO;KACL,OAAO;KACP,QAAQ;IACV;IACA,aAAa;IACb,QAAQ;KACN,KAAK;KACL,OAAO;KACP,QAAQ;KACR,MAAM;IACR;IACA,SAAS;IACT,OAAO;KACL,KAAK;KACL,KAAK;KACL,MAAM;KACN,SAAS;KACT,WAAW;KACX,WAAW;IACb;IACA,cAAc;IACd,OAAO;GACT;GACA;IACE,OAAO;IACP,QAAQ;KACN,MAAM;KACN,OAAO;KACP,IAAI;KACJ,MAAM;IACR;IACA,QAAQ;KACN,KAAK;KACL,KAAK;KACL,MAAM;KACN,SAAS;KACT,WAAW;KACX,WAAW;IACb;IACA,OAAO;KACL,OAAO;KACP,QAAQ;IACV;IACA,aAAa;IACb,QAAQ;KACN,KAAK;KACL,OAAO;KACP,QAAQ;KACR,MAAM;IACR;IACA,SAAS;IACT,OAAO;KACL,KAAK;KACL,KAAK;KACL,MAAM;KACN,SAAS;KACT,WAAW;KACX,WAAW;IACb;IACA,cAAc;IACd,OAAO;GACT;GACA;IACE,OAAO;IACP,QAAQ;KACN,MAAM;KACN,OAAO;KACP,IAAI;KACJ,MAAM;IACR;IACA,QAAQ;KACN,KAAK;KACL,KAAK;KACL,MAAM;KACN,SAAS;KACT,WAAW;KACX,WAAW;IACb;IACA,OAAO;KACL,OAAO;KACP,QAAQ;IACV;IACA,aAAa;IACb,QAAQ;KACN,KAAK;KACL,OAAO;KACP,QAAQ;KACR,MAAM;IACR;IACA,SAAS;IACT,OAAO;KACL,KAAK;KACL,KAAK;KACL,MAAM;KACN,SAAS;KACT,WAAW;KACX,WAAW;IACb;IACA,cAAc;IACd,OAAO;GACT;EACF;EACA,iBAAiB;GACf,UAAU;GACV,OAAO;GACP,SAAS;GACT,KAAK;GACL,KAAK;GACL,MAAM;EACR;EACA,SAAS;GACP,UAAU;GACV,OAAO;EACT;EACA,QAAQ;GACN,UAAU;GACV,OAAO;GACP,SAAS;GACT,KAAK;GACL,OAAO;GACP,QAAQ;GACR,MAAM;EACR;EACA,QAAQ;GA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"}
1
+ {"version":3,"file":"index.js","names":["useUtilityClasses","React","useControlled","useForkRef","useId"],"sources":["../../../../../../node_modules/.bun/@mui+material@7.3.11+eb26afe407ed7030/node_modules/@mui/material/esm/FormGroup/formGroupClasses.js","../../../../../../node_modules/.bun/@mui+material@7.3.11+eb26afe407ed7030/node_modules/@mui/material/esm/FormGroup/FormGroup.js","../../../../../../node_modules/.bun/@mui+material@7.3.11+eb26afe407ed7030/node_modules/@mui/material/esm/RadioGroup/radioGroupClasses.js","../../../../../../node_modules/.bun/@mui+material@7.3.11+eb26afe407ed7030/node_modules/@mui/material/esm/RadioGroup/RadioGroup.js","../../../../../lib-react/graphing-solution-set/dist/grid-setup.js","../../../src/author/utils.ts","../../../src/author/graphing-config.tsx","../../../src/author/correct-response.tsx","../../../src/author/configure.tsx","../../../../../shared/configure-events/dist/index.js","../../../src/author/defaults.tsx","../../../src/author/index.ts"],"sourcesContent":["import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getFormGroupUtilityClass(slot) {\n return generateUtilityClass('MuiFormGroup', slot);\n}\nconst formGroupClasses = generateUtilityClasses('MuiFormGroup', ['root', 'row', 'error']);\nexport default formGroupClasses;","'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 { getFormGroupUtilityClass } from \"./formGroupClasses.js\";\nimport useFormControl from \"../FormControl/useFormControl.js\";\nimport formControlState from \"../FormControl/formControlState.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n row,\n error\n } = ownerState;\n const slots = {\n root: ['root', row && 'row', error && 'error']\n };\n return composeClasses(slots, getFormGroupUtilityClass, classes);\n};\nconst FormGroupRoot = styled('div', {\n name: 'MuiFormGroup',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.row && styles.row];\n }\n})({\n display: 'flex',\n flexDirection: 'column',\n flexWrap: 'wrap',\n variants: [{\n props: {\n row: true\n },\n style: {\n flexDirection: 'row'\n }\n }]\n});\n\n/**\n * `FormGroup` wraps controls such as `Checkbox` and `Switch`.\n * It provides compact row layout.\n * For the `Radio`, you should be using the `RadioGroup` component instead of this one.\n */\nconst FormGroup = /*#__PURE__*/React.forwardRef(function FormGroup(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiFormGroup'\n });\n const {\n className,\n row = false,\n ...other\n } = props;\n const muiFormControl = useFormControl();\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['error']\n });\n const ownerState = {\n ...props,\n row,\n error: fcs.error\n };\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(FormGroupRoot, {\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref,\n ...other\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? FormGroup.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 * Display group of elements in a compact row.\n * @default false\n */\n row: PropTypes.bool,\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 FormGroup;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getRadioGroupUtilityClass(slot) {\n return generateUtilityClass('MuiRadioGroup', slot);\n}\nconst radioGroupClasses = generateUtilityClasses('MuiRadioGroup', ['root', 'row', 'error']);\nexport default radioGroupClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport FormGroup from \"../FormGroup/index.js\";\nimport { getRadioGroupUtilityClass } from \"./radioGroupClasses.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport useControlled from \"../utils/useControlled.js\";\nimport RadioGroupContext from \"./RadioGroupContext.js\";\nimport useId from \"../utils/useId.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = props => {\n const {\n classes,\n row,\n error\n } = props;\n const slots = {\n root: ['root', row && 'row', error && 'error']\n };\n return composeClasses(slots, getRadioGroupUtilityClass, classes);\n};\nconst RadioGroup = /*#__PURE__*/React.forwardRef(function RadioGroup(props, ref) {\n const {\n // private\n // eslint-disable-next-line react/prop-types\n actions,\n children,\n className,\n defaultValue,\n name: nameProp,\n onChange,\n value: valueProp,\n ...other\n } = props;\n const rootRef = React.useRef(null);\n const classes = useUtilityClasses(props);\n const [value, setValueState] = useControlled({\n controlled: valueProp,\n default: defaultValue,\n name: 'RadioGroup'\n });\n React.useImperativeHandle(actions, () => ({\n focus: () => {\n let input = rootRef.current.querySelector('input:not(:disabled):checked');\n if (!input) {\n input = rootRef.current.querySelector('input:not(:disabled)');\n }\n if (input) {\n input.focus();\n }\n }\n }), []);\n const handleRef = useForkRef(ref, rootRef);\n const name = useId(nameProp);\n const contextValue = React.useMemo(() => ({\n name,\n onChange(event) {\n setValueState(event.target.value);\n if (onChange) {\n onChange(event, event.target.value);\n }\n },\n value\n }), [name, onChange, setValueState, value]);\n return /*#__PURE__*/_jsx(RadioGroupContext.Provider, {\n value: contextValue,\n children: /*#__PURE__*/_jsx(FormGroup, {\n role: \"radiogroup\",\n ref: handleRef,\n className: clsx(classes.root, className),\n ...other,\n children: children\n })\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? RadioGroup.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 * @ignore\n */\n className: PropTypes.string,\n /**\n * The default value. Use when the component is not controlled.\n */\n defaultValue: PropTypes.any,\n /**\n * The name used to reference the value of the control.\n * If you don't provide this prop, it falls back to a randomly generated name.\n */\n name: PropTypes.string,\n /**\n * Callback fired when a radio button is selected.\n *\n * @param {React.ChangeEvent<HTMLInputElement>} event The event source of the callback.\n * @param {string} value The value of the selected radio button.\n * You can pull out the new value by accessing `event.target.value` (string).\n */\n onChange: PropTypes.func,\n /**\n * Value of the selected radio button. The DOM API casts this to a string.\n */\n value: PropTypes.any\n} : void 0;\nexport default RadioGroup;","import \"react\";\nimport e from \"prop-types\";\nimport { styled as t } from \"@mui/material/styles\";\nimport { Fragment as n, jsx as r, jsxs as i } from \"react/jsx-runtime\";\nimport * as a from \"@pie-lib/render-ui\";\nimport { InputContainer as o, color as s } from \"@pie-lib/render-ui\";\nimport c from \"@pie-lib/editable-html-tip-tap\";\nimport { Accordion as l, AccordionDetails as u, AccordionSummary as d, Typography as f } from \"@mui/material\";\nimport p from \"@mui/icons-material/ExpandMore\";\nimport { NumberTextFieldCustom as m, Toggle as h } from \"@pie-lib/config-ui\";\n//#region src/grid-setup.tsx\nfunction g(e) {\n\treturn typeof e == \"function\" || typeof e == \"object\" && !!e && typeof e.$$typeof == \"symbol\";\n}\nfunction _(e, t) {\n\treturn !e || g(e) ? e : g(e.default) ? e.default : t && g(e[t]) ? e[t] : t && g(e[t]?.default) ? e[t].default : e;\n}\nvar v = _(o, \"InputContainer\") || _(x.InputContainer, \"InputContainer\"), y = a, b = y.default, x = b && typeof b == \"object\" ? b : y, S = t(\"div\")(() => ({ width: \"450px\" })), C = t(\"div\")(() => ({\n\tdisplay: \"flex\",\n\tflexDirection: \"column\",\n\twidth: \"100%\"\n})), w = t(\"div\")(() => ({\n\tdisplay: \"flex\",\n\tflexDirection: \"column\",\n\talignItems: \"center\"\n})), T = t(\"div\")(() => ({\n\tdisplay: \"flex\",\n\tjustifyContent: \"space-around\",\n\talignItems: \"center\"\n})), E = t(\"div\")(({ theme: e }) => ({\n\twidth: \"130px\",\n\tmargin: `${e.spacing(1)} ${e.spacing(.5)}`\n})), D = t(\"div\")(({ theme: e }) => ({\n\twidth: \"160px\",\n\tmargin: `${e.spacing(1)} ${e.spacing(.5)}`,\n\t\"& .MuiFormControl-root\": { width: \"100%\" }\n})), O = t(\"div\")(({ theme: e }) => ({\n\twidth: \"230px\",\n\tmargin: `${e.spacing(1)} ${e.spacing(.5)}`,\n\t\"& .MuiFormControl-root\": { width: \"100%\" }\n})), k = t(f)(({ theme: e }) => ({\n\tfontStyle: \"italic\",\n\tmargin: `${e.spacing(1)} 0`\n})), A = t(\"div\")(() => ({\n\tdisplay: \"flex\",\n\tjustifyContent: \"space-between\",\n\talignItems: \"center\"\n})), j = t(f)(() => ({ color: s.disabled() })), M = t(\"div\")(({ theme: e }) => ({ paddingTop: e.spacing(2) })), N = (e) => {\n\tlet { disabled: t, displayedFields: n, labelValue: a, labelValues: o, gridValue: s, gridValues: c, onChange: l } = e, { labelStep: u = {}, step: d = {} } = n;\n\treturn /* @__PURE__ */ i(w, { children: [d && d.enabled && /* @__PURE__ */ r(D, { children: /* @__PURE__ */ r(m, {\n\t\tlabel: d.label || \"\",\n\t\tvalue: s,\n\t\tcustomValues: c,\n\t\tvariant: \"outlined\",\n\t\tdisabled: t,\n\t\tonChange: (e, t) => l(\"step\", t)\n\t}) }), u && u.enabled && /* @__PURE__ */ r(D, { children: /* @__PURE__ */ r(m, {\n\t\tlabel: u.label || \"\",\n\t\tvalue: a,\n\t\tcustomValues: o,\n\t\tvariant: \"outlined\",\n\t\tdisabled: t,\n\t\tonChange: (e, t) => l(\"labelStep\", t)\n\t}) })] });\n};\nN.propTypes = {\n\tdisabled: e.bool,\n\tdisplayedFields: e.object,\n\tlabelValue: e.number,\n\tlabelValues: e.array,\n\tgridValue: e.number,\n\tgridValues: e.array,\n\tonChange: e.func\n};\nvar P = (e) => {\n\tlet { disabled: t, displayedFields: n, displayHeader: a, label: o, maxValue: s, minValue: l, onChange: u, type: d } = e, { axisLabel: p = {}, min: h = {}, max: g = {} } = n;\n\treturn /* @__PURE__ */ i(w, { children: [\n\t\ta && /* @__PURE__ */ i(f, {\n\t\t\tvariant: \"subtitle2\",\n\t\t\tchildren: [/* @__PURE__ */ r(\"i\", { children: d === \"domain\" ? \"x\" : \"y\" }), \"-axis\"]\n\t\t}),\n\t\th && h.enabled && /* @__PURE__ */ r(D, { children: /* @__PURE__ */ r(m, {\n\t\t\tlabel: h.label || \"\",\n\t\t\tvalue: l,\n\t\t\tmin: -1e4,\n\t\t\tmax: s - .05,\n\t\t\tvariant: \"outlined\",\n\t\t\tdisabled: t,\n\t\t\tonChange: (e, t) => u(\"min\", t)\n\t\t}) }),\n\t\tg && g.enabled && /* @__PURE__ */ r(D, { children: /* @__PURE__ */ r(m, {\n\t\t\tlabel: g.label || \"\",\n\t\t\tvalue: s,\n\t\t\tmin: l + .05,\n\t\t\tmax: 1e4,\n\t\t\tvariant: \"outlined\",\n\t\t\tdisabled: t,\n\t\t\tonChange: (e, t) => u(\"max\", t)\n\t\t}) }),\n\t\tp && p.enabled && /* @__PURE__ */ r(D, { children: /* @__PURE__ */ r(v, {\n\t\t\tlabel: p.label || \"\",\n\t\t\tchildren: /* @__PURE__ */ r(M, { children: /* @__PURE__ */ r(c, {\n\t\t\t\tonChange: (e) => u(\"axisLabel\", e),\n\t\t\t\tmarkup: o || \"\",\n\t\t\t\tcharactersLimit: 5,\n\t\t\t\tonKeyDown: (e) => e.key === \"Enter\",\n\t\t\t\tactivePlugins: [\n\t\t\t\t\t\"bold\",\n\t\t\t\t\t\"italic\",\n\t\t\t\t\t\"underline\",\n\t\t\t\t\t\"strikethrough\"\n\t\t\t\t]\n\t\t\t}) })\n\t\t}) })\n\t] });\n};\nP.propTypes = {\n\tdisabled: e.bool,\n\tdisplayedFields: e.object,\n\tdisplayHeader: e.bool,\n\tlabel: e.string,\n\tmaxValue: e.number,\n\tminValue: e.number,\n\ttype: e.string,\n\tonChange: e.func\n};\nvar F = (e) => {\n\tlet { domain: t, displayedFields: a = {}, gridValues: o = {}, includeAxes: s, labelValues: c = {}, onChange: g, onChangeView: _, range: v, size: y, sizeConstraints: b, standardGrid: x } = e, D = {\n\t\tmin: 2,\n\t\tmax: 41\n\t}, { axisLabel: M = {}, dimensionsEnabled: F, includeAxesEnabled: I, labelStep: L = {}, min: R = {}, max: z = {}, standardGridEnabled: B, step: V = {} } = a || {}, H = R.enabled || z.enabled || M.enabled || V.enabled || L.enabled, U = {\n\t\tstep: V,\n\t\tlabelStep: L\n\t}, W = {\n\t\tmin: R,\n\t\tmax: z,\n\t\taxisLabel: M\n\t}, G = (e) => {\n\t\tlet n = (e) => {\n\t\t\tlet n = e === \"domain\" ? t : v;\n\t\t\treturn {\n\t\t\t\tmin: 1,\n\t\t\t\tmax: n.max < D.min || n.max > D.max ? 16 : n.max,\n\t\t\t\tstep: 1,\n\t\t\t\tlabelStep: 0\n\t\t\t};\n\t\t};\n\t\tg({\n\t\t\tincludeAxes: e,\n\t\t\trange: {\n\t\t\t\t...v,\n\t\t\t\t...e ? { labelStep: 1 } : n(\"range\")\n\t\t\t},\n\t\t\tdomain: {\n\t\t\t\t...t,\n\t\t\t\t...e ? { labelStep: 1 } : n(\"domain\")\n\t\t\t}\n\t\t});\n\t}, K = (e) => {\n\t\tg({\n\t\t\tstandardGrid: e,\n\t\t\trange: {\n\t\t\t\t...t,\n\t\t\t\taxisLabel: v.axisLabel\n\t\t\t},\n\t\t\tgraph: {\n\t\t\t\t...y,\n\t\t\t\theight: y.width\n\t\t\t}\n\t\t});\n\t}, q = (e, t) => {\n\t\tlet n = {\n\t\t\t...y,\n\t\t\t[e]: t\n\t\t};\n\t\tx && (n.height = t), g({ graph: n });\n\t}, J = (e, n) => {\n\t\tt[e] = n, x && e !== \"axisLabel\" && (v[e] = n), g({\n\t\t\tdomain: t,\n\t\t\trange: v\n\t\t});\n\t}, Y = (e, t) => {\n\t\tv[e] = t, g({ range: v });\n\t}, X = /* @__PURE__ */ i(n, { children: [\n\t\t/* @__PURE__ */ i(T, { children: [/* @__PURE__ */ r(P, {\n\t\t\tdisplayedFields: W,\n\t\t\tdisplayHeader: H,\n\t\t\ttype: \"domain\",\n\t\t\tminValue: t.min,\n\t\t\tmaxValue: t.max,\n\t\t\tlabel: t.axisLabel,\n\t\t\tincludeAxes: s,\n\t\t\tonChange: J\n\t\t}), /* @__PURE__ */ r(P, {\n\t\t\tdisplayedFields: W,\n\t\t\tdisplayHeader: H,\n\t\t\ttype: \"range\",\n\t\t\tminValue: v.min,\n\t\t\tmaxValue: v.max,\n\t\t\tlabel: v.axisLabel,\n\t\t\tdisabled: x,\n\t\t\tincludeAxes: s,\n\t\t\tonChange: Y\n\t\t})] }),\n\t\t(R.enabled || z.enabled) && /* @__PURE__ */ r(k, { children: \"If you want the axis to be visible, use a zero or negative Min Value, and a positive Max Value\" }),\n\t\t(V.enabled || L.enabled) && /* @__PURE__ */ i(T, { children: [/* @__PURE__ */ r(N, {\n\t\t\tdisplayedFields: U,\n\t\t\tgridValue: t.step,\n\t\t\tlabelValue: t.labelStep,\n\t\t\tgridValues: o.domain || [],\n\t\t\tlabelValues: c.domain || [],\n\t\t\tonChange: J\n\t\t}), /* @__PURE__ */ r(N, {\n\t\t\tdisabled: x,\n\t\t\tdisplayedFields: U,\n\t\t\tgridValue: v.step,\n\t\t\tlabelValue: v.labelStep,\n\t\t\tgridValues: o.range || [],\n\t\t\tlabelValues: c.range || [],\n\t\t\tonChange: Y\n\t\t})] }),\n\t\tL.enabled && /* @__PURE__ */ r(k, { children: \"For unnumbered gridlines, enter a label interval of 0\" })\n\t] }), Z = z.enabled ? /* @__PURE__ */ i(w, { children: [/* @__PURE__ */ r(O, { children: /* @__PURE__ */ r(m, {\n\t\tlabel: \"Number of Vertical Gridlines\",\n\t\tvalue: t.max,\n\t\tmin: !s && D.min,\n\t\tmax: !s && D.max,\n\t\tvariant: \"outlined\",\n\t\tonChange: (e, t) => J(\"max\", t)\n\t}) }), /* @__PURE__ */ r(O, { children: /* @__PURE__ */ r(m, {\n\t\tlabel: \"Number of Horizontal Gridlines\",\n\t\tvalue: v.max,\n\t\tmin: !s && D.min,\n\t\tmax: !s && D.max,\n\t\tvariant: \"outlined\",\n\t\tdisabled: x,\n\t\tonChange: (e, t) => Y(\"max\", t)\n\t}) })] }) : null;\n\treturn /* @__PURE__ */ r(S, { children: /* @__PURE__ */ i(l, {\n\t\tonChange: _,\n\t\tTransitionProps: { timeout: {\n\t\t\tenter: 225,\n\t\t\texit: 195\n\t\t} },\n\t\tchildren: [/* @__PURE__ */ r(d, {\n\t\t\texpandIcon: /* @__PURE__ */ r(p, {}),\n\t\t\tchildren: /* @__PURE__ */ r(f, {\n\t\t\t\tvariant: \"subtitle1\",\n\t\t\t\tchildren: \"Customize Grid Setup\"\n\t\t\t})\n\t\t}), /* @__PURE__ */ r(u, { children: /* @__PURE__ */ i(C, { children: [\n\t\t\tI && /* @__PURE__ */ r(h, {\n\t\t\t\tlabel: \"Include axes and labels?\",\n\t\t\t\ttoggle: G,\n\t\t\t\tchecked: s\n\t\t\t}),\n\t\t\tB && /* @__PURE__ */ r(h, {\n\t\t\t\tlabel: \"Constrain to standard coordinate grid?\",\n\t\t\t\ttoggle: K,\n\t\t\t\tchecked: x\n\t\t\t}),\n\t\t\ts ? X : Z,\n\t\t\tF && /* @__PURE__ */ i(A, { children: [\n\t\t\t\t/* @__PURE__ */ i(\"div\", { children: [/* @__PURE__ */ r(f, { children: \"Dimensions(px)\" }), /* @__PURE__ */ i(j, { children: [\n\t\t\t\t\t\"Min \",\n\t\t\t\t\tb.min,\n\t\t\t\t\t\", Max \",\n\t\t\t\t\tb.max\n\t\t\t\t] })] }),\n\t\t\t\t/* @__PURE__ */ r(E, { children: /* @__PURE__ */ r(m, {\n\t\t\t\t\tlabel: \"Width\",\n\t\t\t\t\tvalue: y.width,\n\t\t\t\t\tmin: b.min,\n\t\t\t\t\tmax: b.max,\n\t\t\t\t\tstep: b.step,\n\t\t\t\t\tvariant: \"outlined\",\n\t\t\t\t\tonChange: (e, t) => q(\"width\", t)\n\t\t\t\t}) }),\n\t\t\t\t/* @__PURE__ */ r(E, { children: /* @__PURE__ */ r(m, {\n\t\t\t\t\tlabel: \"Height\",\n\t\t\t\t\tvalue: y.height,\n\t\t\t\t\tmin: b.min,\n\t\t\t\t\tmax: b.max,\n\t\t\t\t\tstep: b.step,\n\t\t\t\t\tvariant: \"outlined\",\n\t\t\t\t\tdisabled: x,\n\t\t\t\t\tonChange: (e, t) => q(\"height\", t)\n\t\t\t\t}) })\n\t\t\t] })\n\t\t] }) })]\n\t}) });\n};\nF.propTypes = {\n\tdomain: e.object,\n\tdisplayedFields: e.object,\n\tgridValues: e.object,\n\tincludeAxes: e.bool,\n\tlabelValues: e.object,\n\tonChange: e.func,\n\tonChangeView: e.func,\n\trange: e.object,\n\tsize: e.object,\n\tsizeConstraints: e.object,\n\tstandardGrid: e.bool\n};\n//#endregion\nexport { F as default };\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/graphing-solution-set/configure/src/utils.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 { isEqual } from '@pie-element/shared-lodash';\n\n/*Valid grid values*/\nconst VALID_GRID_VALUES = [\n 0.01, 0.02, 0.04, 0.05, 0.0625, 0.1, 0.125, 0.2, 0.25, 0.5, 1, 2, 3, 4, 5, 8, 10, 12, 15, 20, 40, 50, 64, 100, 500,\n 1000,\n];\n\n// same as VALID_GRID_VALUES but next values are excluded: 0.04, 0.0625, 0.125, 3, 4, 8, 12, 15, 40, 64\nconst PREFERRED_VALID_GRID_VALUES = [0.01, 0.02, 0.05, 0.1, 0.2, 0.25, 0.5, 1, 2, 5, 10, 20, 50, 100, 500, 1000];\n\n/*Valid label values*/\nexport const VALID_LABEL_VALUES = {\n 0.01: [0, 0.01, 0.02, 0.04, 0.05, 0.1],\n 0.02: [0, 0.02, 0.04, 0.1],\n 0.04: [0, 0.04, 0.08, 0.16, 0.2],\n 0.05: [0, 0.05, 0.1, 0.2, 0.25],\n 0.0625: [0, 0.0625, 0.125, 0.25, 0.5],\n 0.1: [0, 0.1, 0.2, 0.4, 0.5, 1],\n 0.125: [0, 0.125, 0.25, 0.5, 1],\n 0.2: [0, 0.2, 0.5, 0.1],\n 0.25: [0, 0.25, 0.5, 1, 2],\n 0.5: [0, 0.5, 1, 2],\n 1: [0, 1, 2, 4, 5, 10],\n 2: [0, 2, 4, 8, 10],\n 3: [0, 3, 6, 12, 15],\n 4: [0, 4, 8, 16, 20],\n 5: [0, 5, 10, 20, 25],\n 8: [0, 8, 16, 32, 40, 64],\n 10: [0, 10, 20, 40, 50, 100],\n 12: [0, 12, 24],\n 15: [0, 15, 30, 60],\n 20: [0, 20, 40, 80, 100],\n 40: [0, 40, 80, 160, 200],\n 50: [0, 50, 100, 200, 250],\n 64: [0, 64, 128],\n 100: [0, 100, 200, 400, 500],\n 500: [0, 500, 1000, 2500],\n 1000: [0, 1000, 2000, 4000, 5000],\n};\n\n/*\n * Function to get grid values\n * @param {Object} axis - axis object\n * @param {Number} size - size of the axis\n * @param {Boolean} prefferedValues - flag to get preffered values\n * */\nexport const getGridValues = (axis, size, prefferedValues = false) => {\n const minValue = (10 * (axis.max - axis.min)) / size;\n const maxValue = minValue * 10;\n const values = prefferedValues ? PREFERRED_VALID_GRID_VALUES : VALID_GRID_VALUES;\n return values.filter((value) => value >= minValue && value <= maxValue);\n};\n\n/*\n * Function to get label values\n * @param {Number} value - value of the axis step\n * */\nexport const getLabelValues = (value) => VALID_LABEL_VALUES[value] || [];\n\n/*\n * Function to apply constraints\n * @param {Object} axis - axis object\n * @param {Number} size - size of the axis\n * @param {Array} oldGridValues - old grid values\n * @param {Array} oldLabelValues - old label values\n * */\nexport const applyConstraints = (axis, size, oldGridValues, oldLabelValues) => {\n const gridValues = getGridValues(axis, size);\n let labelValues = getLabelValues(axis.step);\n if (!isEqual(oldGridValues, gridValues) && !gridValues.includes(axis.step)) {\n const preferredValues = getGridValues(axis, size, true);\n const lowestValue = preferredValues[0] || 1;\n axis.step = lowestValue;\n labelValues = getLabelValues(lowestValue);\n if (!labelValues.includes(axis.labelStep)) {\n axis.labelStep = lowestValue;\n }\n return { gridValues, labelValues };\n }\n if (!isEqual(oldLabelValues, labelValues) && !labelValues.includes(axis.labelStep)) {\n axis.labelStep = axis.step;\n }\n return { gridValues, labelValues };\n};\n\n// also used in pie-lib/graphing/utils as 'getTickValues'\n/*\n * Function to get plotable points\n * @param {Object} prop - axis object\n * */\nconst getPlotablePoints = (prop) => {\n const tickValues = [];\n let tickVal = 0;\n while (tickVal >= prop.min && tickValues.indexOf(tickVal) < 0) {\n tickValues.push(tickVal);\n tickVal = Math.round((tickVal - prop.step) * 10000) / 10000;\n }\n tickVal = Math.round(prop.step * 10000) / 10000;\n while (tickVal <= prop.max && tickValues.indexOf(tickVal) < 0) {\n tickValues.push(tickVal);\n tickVal = Math.round((tickVal + prop.step) * 10000) / 10000;\n }\n // return only ticks that are inside the min-max interval\n if (tickValues) {\n return tickValues.filter((tV) => tV >= prop.min && tV <= prop.max);\n }\n return [];\n};\n\n/*\n * Function to get plotable marks\n * @param {Object} domain - domain object\n * @param {Object} range - range object\n * @param {Object} answers - answers object\n * */\nexport const filterPlotableMarks = (domain, range, answers) => {\n const domainValues = getPlotablePoints(domain);\n const rangeValues = getPlotablePoints(range);\n const isPointPlotable = (x, y) => domainValues.includes(x) && rangeValues.includes(y);\n return Object.entries(answers || {}).reduce((newAnswers, [key, answer]) => {\n newAnswers[key] = {\n ...answer,\n marks: (answer.marks || []).filter((mark) => {\n if (mark.type === 'point') {\n return isPointPlotable(mark.x, mark.y);\n }\n if (mark.type === 'polygon') {\n return !mark.points.find((point) => !isPointPlotable(point.x, point.y));\n }\n const from = mark.from || mark.root;\n const to = mark.to || mark.edge;\n return mark.building\n ? isPointPlotable(from.x, from.y)\n : isPointPlotable(from.x, from.y) && isPointPlotable(to.x, to.y);\n }),\n };\n return newAnswers;\n }, {});\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n// BELOW FUNCTIONS ARE USED IN src/utils as well\n//////////////////////////////////////////////////////////////////////////////////\n\n/*\n * Function to calculate the distance between two points\n * @param {Object} a - point a\n * @param {Object} b - point b\n * */\nconst distance = (a, b) => {\n return Number(Math.sqrt((a.x - b.x) ** 2 + (a.y - b.y) ** 2).toFixed(3));\n};\n\n/*\n * Function to check if a point lies on edges of a polygon\n * @param {Object} point - point object\n * @param {Array} polygon - polygon points array\n * */\nconst pointInPolygon = (point, polygon) => {\n let c = point;\n let inside = false;\n let clonePolygon = [...polygon];\n clonePolygon.push(polygon[0]);\n for (let i = 0; i < clonePolygon.length - 1; i++) {\n let a = clonePolygon[i];\n let b = clonePolygon[i + 1];\n // check if point is on the edge\n if (distance(a, c) + distance(c, b) === distance(a, b)) {\n inside = true;\n break;\n }\n }\n return inside;\n};\n\n/*\n * Function to get the intersection point of two lines\n * @param {Number} x1 - x coordinate of point 1 of line 1\n * @param {Number} y1 - y coordinate of point 1 of line 1\n * @param {Number} x2 - x coordinate of point 2 of line 1\n * @param {Number} y2 - y coordinate of point 2 of line 1\n * @param {Number} x3 - x coordinate of point 1 of line 2\n * @param {Number} y3 - y coordinate of point 1 of line 2\n * @param {Number} x4 - x coordinate of point 2 of line 2\n * @param {Number} y4 - y coordinate of point 2 of line 2\n * */\nconst lineIntersect = (x1, y1, x2, y2, x3, y3, x4, y4) => {\n let ua,\n denominator = (y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1);\n if (denominator === 0) {\n return null;\n }\n ua = ((x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3)) / denominator;\n return {\n x: Number((x1 + ua * (x2 - x1)).toFixed(3)),\n y: Number((y1 + ua * (y2 - y1)).toFixed(3)),\n };\n};\n\n/*\n * Check if a point is inside the graph\n * @param {Object} point - point object\n * @param {Object} domain - domain object\n * @param {Object} range - range object\n * */\nconst isPointInsideGraph = (point, domain, range) => {\n return point.x > domain.min && point.x < domain.max && point.y > range.min && point.y < range.max;\n};\n\n/*\n * Check if a point is on or inside the graph\n * @param {Object} point - point object\n * @param {Object} domain - domain object\n * @param {Object} range - range object\n * */\nconst isPointOnOrInsideGraph = (point, domain, range) => {\n return point.x >= domain.min && point.x <= domain.max && point.y >= range.min && point.y <= range.max;\n};\n\n/*\n * Find the intersection point of a mark with the graph\n * @param {Object} mark - mark object\n * @param {Object} domain - domain object\n * @param {Object} range - range object\n * */\nconst findIntersectionPointForMark = (mark, domain, range) => {\n let intersectionPoint = [];\n let tempData = [\n [domain.max, range.max, domain.max, range.min],\n [domain.min, range.max, domain.min, range.min],\n [domain.min, range.max, domain.max, range.max],\n [domain.min, range.min, domain.max, range.min],\n ];\n for (let i = 0; i < tempData.length; i++) {\n let intersection = lineIntersect(\n mark.from.x,\n mark.from.y,\n mark.to.x,\n mark.to.y,\n tempData[i][0],\n tempData[i][1],\n tempData[i][2],\n tempData[i][3],\n );\n if (intersection && isPointOnOrInsideGraph(intersection, domain, range)) {\n intersectionPoint.push(intersection);\n }\n }\n return intersectionPoint;\n};\n\n/*\n * Sort points in clockwise direction for a polygon\n * @param {Array} points - points array\n * */\nconst sortPointsClockWise = (points) => {\n // Find min max to get center and Sort from top to bottom\n points.sort((a, b) => a.y - b.y);\n // Get center y\n const cy = (points[0].y + points[points.length - 1].y) / 2;\n // Sort from right to left\n points.sort((a, b) => b.x - a.x);\n // Get center x\n const cx = (points[0].x + points[points.length - 1].x) / 2;\n // Center point\n const center = { x: cx, y: cy };\n // As the points are sorted from right to left the first point is the rightmost Starting angle used to reference other angles\n let startAng;\n points.forEach((point) => {\n let ang = Math.atan2(point.y - center.y, point.x - center.x);\n if (!startAng) {\n startAng = ang;\n } else {\n if (ang < startAng) {\n // ensure that all points are clockwise of the start point\n ang += Math.PI * 2;\n }\n }\n point.angle = ang; // add the angle to the point\n });\n // first sort clockwise\n points.sort((a, b) => a.angle - b.angle);\n // then reverse the order\n const ccwPoints = points.reverse();\n // move the last point back to the start\n ccwPoints.unshift(ccwPoints.pop());\n return ccwPoints.map(({ angle, ...attr }) => attr);\n};\n\n/*\n * Function to calculate the dot product of two vectors\n * @param {Object} v1 - point 1\n * @param {Object} v2 - point 2\n * */\nconst dotProduct = (v1, v2) => {\n return v1.x * v2.x + v1.y * v2.y;\n};\n\n/*\n * Function to calculate the magnitude of a vector\n * @param {Object} v - point object\n * */\nconst magnitude = (v) => {\n return Math.sqrt(v.x * v.x + v.y * v.y);\n};\n\n/*\n * Function to calculate the angle between two vectors in radians\n * @param {Object} v1 - point 1\n * @param {Object} v2 - point 2\n * */\nconst angleBetweenVectors = (v1, v2) => {\n const dot = dotProduct(v1, v2);\n const magV1 = magnitude(v1);\n const magV2 = magnitude(v2);\n // Ensure the dot product is within the domain of the acos function\n return Math.acos(dot / (magV1 * magV2));\n};\n\n/*\n * Function to check if a point lies between the angle formed by two lines\n * @param {Object} commonPoint - common point of the two lines\n * @param {Object} point1 - point 1 of cone\n * @param {Object} point2 - point 2 of cone\n * @param {Object} testPoint - point to be tested\n * */\nconst pointInAngle = (commonPoint, point1, point2, testPoint) => {\n const vector1 = { x: point1.x - commonPoint.x, y: point1.y - commonPoint.y };\n const vector2 = { x: point2.x - commonPoint.x, y: point2.y - commonPoint.y };\n const testVector = { x: testPoint.x - commonPoint.x, y: testPoint.y - commonPoint.y };\n const angle1 = angleBetweenVectors(vector1, testVector);\n const angle2 = angleBetweenVectors(vector2, testVector);\n const angleSum = angle1 + angle2;\n // Check if the sum of angles is approximately equal to the angle between the two lines\n // You may need to adjust the tolerance (e.g., 0.0001) based on your specific requirements\n const tolerance = 0.0001;\n return Math.abs(angleSum - angleBetweenVectors(vector1, vector2)) < tolerance;\n};\n\n/*\n * Function to remove duplicate points from an array\n * @param {Array} array - array of points\n * */\nconst removeDuplicatesFromArray = (array) => {\n return array.filter((obj, index) => {\n return index === array.findIndex((o) => obj.x === o.x && obj.y === o.y);\n });\n};\n\n/*\n * Function to remove duplicate points and filter sections\n * @param {Array} sections - array of sections\n * */\nconst removeDuplicateAndFilterSections = (sections) => {\n //removing duplicate points.\n for (let i = 0; i < sections.length; i++) {\n sections[i] = sections[i].filter((obj, index) => {\n return index === sections[i].findIndex((o) => obj.x === o.x && obj.y === o.y);\n });\n }\n //removing arrays with two points\n sections = sections.filter((section) => section.length > 2);\n //sorting the points in clockwise direction\n for (let i = 0; i < sections.length; i++) {\n sections[i] = sortPointsClockWise(sections[i]);\n }\n return sections;\n};\n\n/*\n * Function to find sections in solution set for one line\n * @param {Array} intersectionPoint - intersection point\n * @param {Object} domain - domain object\n * @param {Object} range - range object\n * */\nconst findSectionsInSolutionSetForOneLine = (intersectionPoint, domain, range) => {\n let sections = [];\n sections.push([].concat(intersectionPoint));\n sections.push([].concat(intersectionPoint));\n if (\n (intersectionPoint[0].x === domain.max && intersectionPoint[1].y === range.max) ||\n (intersectionPoint[1].x === domain.max && intersectionPoint[0].y === range.max)\n ) {\n sections[0].push({ x: domain.max, y: range.max });\n sections[1].push({ x: domain.min, y: range.max }, { x: domain.min, y: range.min }, { x: domain.max, y: range.min });\n } else if (\n (intersectionPoint[0].x === domain.min && intersectionPoint[1].y === range.max) ||\n (intersectionPoint[1].x === domain.min && intersectionPoint[0].y === range.max)\n ) {\n sections[0].push({ x: domain.min, y: range.max });\n sections[1].push({ x: domain.max, y: range.max }, { x: domain.max, y: range.min }, { x: domain.min, y: range.min });\n } else if (\n (intersectionPoint[0].x === domain.min && intersectionPoint[1].y === range.min) ||\n (intersectionPoint[1].x === domain.min && intersectionPoint[0].y === range.min)\n ) {\n sections[0].push({ x: domain.min, y: range.min });\n sections[1].push({ x: domain.max, y: range.min }, { x: domain.max, y: range.max }, { x: domain.min, y: range.max });\n } else if (\n (intersectionPoint[0].x === domain.max && intersectionPoint[1].y === range.min) ||\n (intersectionPoint[1].x === domain.max && intersectionPoint[0].y === range.min)\n ) {\n sections[0].push({ x: domain.max, y: range.min });\n sections[1].push({ x: domain.min, y: range.min }, { x: domain.min, y: range.max }, { x: domain.max, y: range.max });\n } else if (\n (intersectionPoint[0].x === domain.min && intersectionPoint[1].x === domain.max) ||\n (intersectionPoint[0].x === domain.max && intersectionPoint[1].x === domain.min)\n ) {\n sections[0].push({ x: domain.min, y: range.max }, { x: domain.max, y: range.max });\n sections[1].push({ x: domain.min, y: range.min }, { x: domain.max, y: range.min });\n } else if (\n (intersectionPoint[0].y === range.min && intersectionPoint[1].y === range.max) ||\n (intersectionPoint[0].y === range.max && intersectionPoint[1].y === range.min)\n ) {\n sections[0].push({ x: domain.min, y: range.min }, { x: domain.min, y: range.max });\n sections[1].push({ x: domain.max, y: range.min }, { x: domain.max, y: range.max });\n }\n return removeDuplicateAndFilterSections(sections);\n};\n\n/*\n * Function to find sections in solution set for two lines\n * @param {Object} gssLineData - graphing solution set line data\n * @param {Array} answers - answers array\n * @param {Object} domain - domain object\n * @param {Object} range - range object\n * */\nconst findSectionsInSolutionSetForTwoLines = (gssLineData, answers, domain, range) => {\n let mark1 = answers[0];\n let mark2 = answers[1];\n let cornerPoints = [\n { x: domain.min, y: range.min },\n { x: domain.min, y: range.max },\n { x: domain.max, y: range.min },\n { x: domain.max, y: range.max },\n ];\n let intersectPoint = lineIntersect(\n mark1.from.x,\n mark1.from.y,\n mark1.to.x,\n mark1.to.y,\n mark2.from.x,\n mark2.from.y,\n mark2.to.x,\n mark2.to.y,\n );\n let sections = [];\n let intersectionPoint1 = findIntersectionPointForMark(mark1, domain, range);\n intersectionPoint1 = removeDuplicatesFromArray(intersectionPoint1);\n let intersectionPoint2 = findIntersectionPointForMark(mark2, domain, range);\n intersectionPoint2 = removeDuplicatesFromArray(intersectionPoint2);\n if (intersectPoint && isPointInsideGraph(intersectPoint, domain, range)) {\n for (let i = 0; i < intersectionPoint1.length; i++) {\n for (let j = 0; j < intersectionPoint2.length; j++) {\n let bucket = [];\n let newCornerPoints = [];\n bucket.push(intersectPoint);\n bucket.push(intersectionPoint1[i]);\n bucket.push(intersectionPoint2[j]);\n for (let k = 0; k < cornerPoints.length; k++) {\n if (pointInAngle(intersectPoint, intersectionPoint1[i], intersectionPoint2[j], cornerPoints[k])) {\n bucket.push(cornerPoints[k]);\n } else {\n newCornerPoints.push(cornerPoints[k]);\n }\n }\n cornerPoints = newCornerPoints;\n sections.push(bucket);\n }\n }\n } else {\n let sections1 = findSectionsInSolutionSetForOneLine(intersectionPoint1, domain, range);\n let sections2 = findSectionsInSolutionSetForOneLine(intersectionPoint2, domain, range);\n for (let i = 0; i < sections1.length; i++) {\n if (\n !(pointInPolygon(intersectionPoint2[0], sections1[i]) && pointInPolygon(intersectionPoint2[1], sections1[i]))\n ) {\n sections.push(sections1[i]);\n }\n }\n for (let i = 0; i < sections2.length; i++) {\n if (\n !(pointInPolygon(intersectionPoint1[0], sections2[i]) && pointInPolygon(intersectionPoint1[1], sections2[i]))\n ) {\n sections.push(sections2[i]);\n }\n }\n for (let i = 0; i < sections.length; i++) {\n cornerPoints = cornerPoints.filter(function (o1) {\n return !sections[i].some(function (o2) {\n return o1.x === o2.x && o1.y === o2.y;\n });\n });\n }\n let sections3 = cornerPoints.concat(intersectionPoint1, intersectionPoint2);\n sections.push(sections3);\n }\n return removeDuplicateAndFilterSections(sections);\n};\n\n/*\n * Function to find sections in solution set\n * @param {Object} gssLineData - graphing solution set line data\n * @param {Array} answers - answers array\n * @param {Object} domain - domain object\n * @param {Object} range - range object\n * */\nexport const findSectionsInSolutionSet = (gssLineData, answers, domain, range) => {\n if (gssLineData.numberOfLines === 1) {\n const intersectionPoint = findIntersectionPointForMark(answers[0], domain, range);\n gssLineData.sections = findSectionsInSolutionSetForOneLine(intersectionPoint, domain, range);\n } else {\n gssLineData.sections = findSectionsInSolutionSetForTwoLines(gssLineData, answers, domain, range);\n }\n return gssLineData;\n};\n\n/*\n * Function to check if a point is inside a polygon\n * @param {Object} point - point to be checked\n * @param {Array} polygon - polygon points array\n * */\nexport const pointInsidePolygon = (point, polygon) => {\n const num_vertices = polygon.length;\n const x = point.x;\n const y = point.y;\n let inside = false;\n let p1 = polygon[0];\n let p2;\n for (let i = 1; i <= num_vertices; i++) {\n p2 = polygon[i % num_vertices];\n if (y > Math.min(p1.y, p2.y)) {\n if (y <= Math.max(p1.y, p2.y)) {\n if (x <= Math.max(p1.x, p2.x)) {\n const x_intersection = ((y - p1.y) * (p2.x - p1.x)) / (p2.y - p1.y) + p1.x;\n if (p1.x === p2.x || x <= x_intersection) {\n inside = !inside;\n }\n }\n }\n }\n p1 = p2;\n }\n return inside;\n};\n\n/*\n * Function to check if lines are added in the graph\n * @param {Object} gssLineData - graphing solution set line data\n * @param {Array} answer - answer array\n * */\nexport const checkIfLinesAreAdded = (gssLineData, answer) => {\n if (answer.length === 0) {\n return false;\n }\n if (gssLineData.numberOfLines === 1) {\n if (answer.length === 1) {\n return !answer[0].building;\n }\n } else {\n if (answer.length !== 2) {\n return false;\n } else {\n return !answer[1].building;\n }\n }\n};\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/graphing-solution-set/configure/src/graphing-config.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 * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { GraphContainer, GridSetup } from '@pie-lib/graphing-solution-set';\nimport { AlertDialog } from '@pie-lib/config-ui';\nimport { MenuItem, Select, Typography, OutlinedInput } from '@mui/material';\nimport { styled } from '@mui/material/styles';\nimport { applyConstraints, filterPlotableMarks, getGridValues, getLabelValues } from './utils.js';\nimport { isEqual, cloneDeep } from '@pie-element/shared-lodash';\n\nconst Container: any = styled('div')(({ theme }) => ({\n display: 'flex',\n flexWrap: 'wrap',\n marginBottom: theme.spacing(2.5),\n}));\n\nconst GridConfigWrapper: any = styled('div')(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n marginRight: theme.spacing(3),\n marginBottom: theme.spacing(2.5),\n}));\n\nconst GraphConfig: any = styled('div')({\n display: 'flex',\n flexDirection: 'column',\n});\n\nconst SubtitleText: any = styled(Typography)(({ theme }) => ({\n marginTop: theme.spacing(1.5),\n marginBottom: theme.spacing(1),\n}));\n\nconst GridConfig: any = styled('div')(({ theme }) => ({\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n width: '100%',\n marginBottom: theme.spacing(2.5),\n}));\n\nconst GridConfigLabel: any = styled(Typography)(({ theme }) => ({\n padding: `0 ${theme.spacing(1)}`,\n}));\n\nconst GridConfigSelect: any = styled(Select)({\n flex: '1',\n});\n\nexport class GraphingConfig extends React.Component {\n static propTypes = {\n availableTools: PropTypes.array,\n authoring: PropTypes.object,\n dimensionsEnabled: PropTypes.bool,\n graphDimensions: PropTypes.object,\n gridConfigurations: PropTypes.array,\n labelsPlaceholders: PropTypes.object,\n model: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n showLabels: PropTypes.bool,\n showTitle: PropTypes.bool,\n titlePlaceholder: PropTypes.string,\n };\n\n constructor(props) {\n super(props);\n const { domain, range, graph } = props.model || {};\n const gridValues = {\n domain: getGridValues(domain, graph.width, true),\n range: getGridValues(range, graph.height, true),\n };\n const labelValues = {\n domain: getLabelValues(domain.step),\n range: getLabelValues(range.step),\n };\n this.state = {\n gridValues,\n labelValues,\n showPixelGuides: false,\n dialog: { isOpened: false },\n domain: { ...domain },\n range: { ...range },\n };\n }\n\n /*\n * Function to change labels\n * @param {object} labels - labels object\n * */\n changeLabels: any = (labels) => {\n const { model, onChange } = this.props;\n onChange({ ...model, labels });\n };\n\n /*\n * Function to change title\n * @param {string} title - title string\n * */\n changeTitle: any = (title) => {\n const { model, onChange } = this.props;\n onChange({ ...model, title });\n };\n\n /*\n * Function to change grid configuration\n * @param {object} config - grid configuration object\n * @param {number} newSelectedGrid - new selected grid\n * */\n onConfigChange: any = (config, newSelectedGrid) => {\n const { model, onChange } = this.props;\n const { defaultGridConfiguration: oldSelectedGrid = 0 } = model;\n const { gridValues: oldGridValues, labelValues: oldLabelValues, domain: oldDomain, range: oldRange } = this.state;\n const updatedModel = { ...model, ...config };\n const { answers, domain, includeAxes = true, graph, range, standardGrid } = updatedModel;\n const gridValues = { domain: [], range: [] };\n const labelValues = { domain: [], range: [] };\n const selectedGrid = newSelectedGrid >= 0 ? newSelectedGrid : oldSelectedGrid;\n if (includeAxes) {\n const domainConstraints = applyConstraints(domain, graph.width, oldGridValues.domain, oldLabelValues.domain);\n gridValues.domain = domainConstraints.gridValues || [];\n labelValues.domain = domainConstraints.labelValues || [];\n }\n if (standardGrid) {\n gridValues.range = gridValues.domain;\n labelValues.range = labelValues.domain;\n range.step = domain.step;\n range.labelStep = domain.labelStep;\n } else {\n if (includeAxes) {\n const rangeConstraints = applyConstraints(range, graph.height, oldGridValues.range, oldLabelValues.range);\n gridValues.range = rangeConstraints.gridValues || [];\n labelValues.range = rangeConstraints.labelValues || [];\n }\n }\n const filteredAnswers = cloneDeep(answers);\n filteredAnswers.correctAnswer.marks = answers.correctAnswer.marks.filter((mark) => mark.type !== 'polygon');\n const plotableAnswers = filterPlotableMarks(domain, range, filteredAnswers);\n if (!isEqual(filteredAnswers, plotableAnswers)) {\n this.setState({\n dialog: {\n isOpened: true,\n onClose: () =>\n this.setState({ dialog: { isOpened: false } }, onChange({ ...model, domain: oldDomain, range: oldRange })),\n onConfirm: () => {\n updatedModel.gssLineData.sections = [];\n updatedModel.gssLineData.selectedTool = 'lineA';\n this.setState(\n {\n gridValues,\n labelValues,\n dialog: { isOpened: false },\n domain: { ...domain },\n range: { ...range },\n },\n onChange({ ...updatedModel, answers: plotableAnswers, defaultGridConfiguration: selectedGrid }),\n );\n },\n },\n });\n return;\n }\n this.setState({ gridValues, labelValues, domain: { ...domain }, range: { ...range } });\n onChange({ ...updatedModel, defaultGridConfiguration: selectedGrid });\n };\n\n /*\n * Function to change view\n * @param {object} event - event object\n * @param {boolean} expanded - expanded boolean\n * */\n onChangeView: any = (event, expanded) => {\n const { graphDimensions: { enabled } = {} } = this.props;\n if (enabled) {\n this.setState({ showPixelGuides: expanded });\n }\n };\n\n /*\n * Function to change grid configuration\n * @param {object} event - event object\n * */\n changeGridConfiguration: any = (event) => {\n const { gridConfigurations } = this.props;\n const { value } = event.target;\n this.onConfigChange(gridConfigurations?.[value] || {}, value);\n };\n\n /*\n * Render the component\n * */\n render() {\n const {\n authoring = {},\n gridConfigurations = [],\n graphDimensions = {},\n labelsPlaceholders,\n model,\n showLabels,\n dimensionsEnabled,\n showTitle,\n titlePlaceholder,\n mathMlOptions = {},\n } = this.props;\n const { arrows, coordinatesOnHover, defaultGridConfiguration, domain, labels, range, standardGrid, title } =\n model || {};\n const graph = (model || {}).graph || {};\n const { min, max, step } = graphDimensions || {};\n const { dialog = {}, gridValues, labelValues, showPixelGuides } = this.state;\n const sizeConstraints = {\n min: Math.max(150, min),\n max: Math.min(800, max),\n step: step >= 1 ? Math.min(200, step) : 20,\n };\n const displayedFields = {\n axisLabel: authoring.axisLabel,\n dimensionsEnabled,\n includeAxesEnabled: false, //Setting false by default as per requirement\n labelStep: authoring.labelStep,\n min: authoring.min,\n max: authoring.max,\n standardGridEnabled: authoring.standardGridEnabled,\n step: authoring.step,\n };\n const displayGridSetup =\n authoring.enabled &&\n Object.values(displayedFields).some((field) => (typeof field === 'object' ? field.enabled : field));\n return (\n <Container>\n <GridConfigWrapper>\n {gridConfigurations && gridConfigurations.length ? (\n <GridConfig>\n <GridConfigLabel component=\"div\" variant=\"h6\">\n Grid Configuration\n </GridConfigLabel>\n <GridConfigSelect\n input={<OutlinedInput labelWidth={10} />}\n displayEmpty\n onChange={this.changeGridConfiguration}\n value={defaultGridConfiguration}\n MenuProps={{ transitionDuration: { enter: 225, exit: 195 } }}\n >\n {(gridConfigurations || []).map((config, index) => (\n <MenuItem key={index} value={index}>\n {config.label}\n </MenuItem>\n ))}\n </GridConfigSelect>\n </GridConfig>\n ) : null}\n {displayGridSetup && (\n <GridSetup\n displayedFields={displayedFields}\n domain={domain}\n gridValues={gridValues}\n includeAxes={true} //Setting true by default as per requirement\n labelValues={labelValues}\n range={range}\n size={graph}\n sizeConstraints={sizeConstraints}\n standardGrid={standardGrid}\n onChange={this.onConfigChange}\n onChangeView={this.onChangeView}\n />\n )}\n </GridConfigWrapper>\n <GraphConfig key=\"graph\">\n <Typography component=\"div\" variant=\"h6\">\n Define Graph Attributes\n </Typography>\n <SubtitleText component=\"div\" variant=\"body1\">\n Use this interface to add/edit a title and/or labels\n </SubtitleText>\n <GraphContainer\n axesSettings={{ includeArrows: arrows }}\n backgroundMarks={[]}\n coordinatesOnHover={coordinatesOnHover}\n collapsibleToolbar={true}\n collapsibleToolbarTitle={'Add Background Shapes to Graph'}\n domain={domain}\n key=\"graphing-config\"\n labels={labels}\n labelsPlaceholders={labelsPlaceholders}\n marks={[]}\n onChangeLabels={this.changeLabels}\n onChangeTitle={this.changeTitle}\n range={range}\n showLabels={showLabels}\n showPixelGuides={showPixelGuides}\n showTitle={showTitle}\n size={{ width: graph.width, height: graph.height }}\n title={title}\n titlePlaceholder={titlePlaceholder}\n disableToolbar={true}\n mathMlOptions={mathMlOptions}\n />\n </GraphConfig>\n <AlertDialog\n open={dialog.isOpened}\n title=\"Warning\"\n text=\"This change would make it impossible for students to plot one or more graph objects in the current correct answers. If you proceed, all such graph objects will be removed from the correct answers.\"\n onClose={dialog.onClose}\n onConfirm={dialog.onConfirm}\n />\n </Container>\n );\n }\n}\n\nexport default GraphingConfig;\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/graphing-solution-set/configure/src/correct-response.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 * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { styled } from '@mui/material/styles';\nimport { GraphContainer as Graph } from '@pie-lib/graphing-solution-set';\nimport { AlertDialog } from '@pie-lib/config-ui';\nimport { set } from '@pie-element/shared-lodash';\nimport { RadioGroup, Typography } from '@mui/material';\nimport Radio from '@mui/material/Radio';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport { findSectionsInSolutionSet, pointInsidePolygon, checkIfLinesAreAdded } from './utils.js';\n\nconst SubtitleText: any = styled(Typography)(({ theme }) => ({\n marginTop: theme.spacing(1.5),\n marginBottom: theme.spacing(1),\n}));\n\nconst RadioButtonClass: any = styled(FormControlLabel)({\n height: '20px',\n width: 'fit-content',\n padding: '.5rem 0',\n});\n\nconst StyledRadio: any = styled(Radio)({\n color: '#000000 !important',\n});\n\nconst ErrorMessage: any = styled('div')(({ theme }) => ({\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing(1),\n}));\n\nexport class CorrectResponse extends React.Component {\n static propTypes = {\n errors: PropTypes.object,\n model: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n };\n\n state = {\n dialog: {\n open: false,\n },\n };\n\n /*\n * Function to handle the alert dialog open and close\n * @param {boolean} open - open or close the dialog\n * @param {function} callback - callback function to be called after setting the state\n * */\n handleAlertDialog = (open, callback) =>\n this.setState(\n {\n dialog: { open },\n },\n callback,\n );\n\n /*\n * Function to change the marks on the graph\n * @param {array} marks - marks to be added on the graph\n * */\n changeMarks: any = (marks) => {\n const { model, onChange } = this.props;\n const { gssLineData } = model;\n if (gssLineData.selectedTool === 'lineA' && marks.length > 0) {\n marks[0].fill = gssLineData['lineA'].lineType;\n }\n if (gssLineData.selectedTool === 'lineB' && marks.length > 1) {\n marks[1].fill = gssLineData['lineB'].lineType;\n }\n if (marks.length === 0) {\n gssLineData.selectedTool = 'lineA';\n set(model, 'gssLineData', gssLineData);\n }\n set(model, 'answers.correctAnswer.marks', marks);\n onChange(model);\n };\n\n /*\n * Reset the graph to original state and remove all the elements added on the graph\n * */\n onResetClick: any = () => {\n const { model, onChange } = this.props;\n const { gssLineData, answers } = model;\n this.setState({\n dialog: {\n open: true,\n title: 'Warning',\n text: 'This will remove all the elements added on the graph and reset graph to original state. Are you sure you want to continue?',\n onConfirm: () => {\n // Reset the graph to original state\n answers.correctAnswer.marks = [];\n gssLineData.selectedTool = 'lineA';\n gssLineData.lineA.lineType = 'Solid';\n if (gssLineData.lineB) gssLineData.lineB.lineType = 'Solid';\n set(model, 'answers', answers);\n set(model, 'gssLineData', gssLineData);\n onChange(model);\n this.handleAlertDialog(false);\n },\n onClose: () => this.handleAlertDialog(false),\n },\n });\n };\n\n /*\n * Function to change the number of lines on the graph\n * @param {object} e - event object\n * @param {number} value - number of lines to be added on the graph\n * */\n changeNumberOfLines: any = (e, value) => {\n const { model } = this.props;\n let gssLineData = model.gssLineData;\n if (gssLineData.selectedTool === 'solutionSet') {\n this.setState({\n dialog: {\n open: true,\n title: 'Warning',\n text: 'Changing number of lines after adding solution set will remove added solution set. Are you sure you want to continue?',\n onConfirm: () => {\n this.changeLine(e, value);\n this.handleAlertDialog(false);\n },\n onClose: () => this.handleAlertDialog(false),\n },\n });\n } else {\n this.changeLine(e, value);\n }\n };\n\n /*\n * Function to change the number of line on the graph\n * @param {object} e - event object\n * @param {number} value - number of lines to be added on the graph\n * */\n changeLine: any = (e, value) => {\n const { model, onChange } = this.props;\n const { answers } = model;\n let gssLineData = model.gssLineData;\n //remove polygon from correct answer\n answers.correctAnswer.marks = answers.correctAnswer.marks.filter((mark) => mark.type !== 'polygon');\n if (Number.parseInt(value) === 1) {\n //remove lineB from gssLineData and correct answer\n delete gssLineData.lineB;\n if (answers.correctAnswer.marks.length > 1) answers.correctAnswer.marks.pop();\n gssLineData.numberOfLines = 1;\n gssLineData.selectedTool = 'lineA';\n } else {\n gssLineData.numberOfLines = 2;\n if (answers.correctAnswer.marks.length > 0) gssLineData.selectedTool = 'lineB';\n gssLineData.lineB = {\n lineType: 'Solid',\n };\n }\n //reset solution set\n set(model, 'answers', answers);\n set(model, 'gssLineData', gssLineData);\n onChange(model);\n };\n\n /*\n * Function to handle the changes to solution set on the graph\n * @param {object} point - point selected on the graph\n * */\n onSolutionSetSelected: any = (point) => {\n const { model, onChange } = this.props;\n const { answers, gssLineData } = model;\n for (const section of gssLineData.sections) {\n //check if the point is inside the polygon\n if (pointInsidePolygon(point, section)) {\n let polygon = {\n points: section,\n building: false,\n type: 'polygon',\n closed: true,\n isSolution: true,\n };\n //remove old answer section from correct answer\n answers.correctAnswer.marks = answers.correctAnswer.marks.filter((mark) => mark.type !== 'polygon');\n //add new answer section to correct answer\n answers.correctAnswer.marks.push(polygon);\n break;\n }\n }\n set(model, 'answers', answers);\n onChange(model);\n };\n\n /*\n * Function to handle the changes to line data on the graph\n * @param {object} gssLineData - line data on the graph\n * @param {string} oldSelectedTool - old selected tool\n * */\n onChangeGssLineData: any = (gssLineData, oldSelectedTool) => {\n const { model } = this.props;\n const { answers, domain, range } = model;\n //handle solution set changes\n if (gssLineData.selectedTool === 'solutionSet') {\n let lines = answers.correctAnswer.marks.filter((mark) => mark.type !== 'polygon');\n if (!checkIfLinesAreAdded(gssLineData, lines)) {\n gssLineData.selectedTool = oldSelectedTool;\n this.setState({\n dialog: {\n open: true,\n title: 'Warning',\n text: 'Please define the line(s) and then select a solution set for the item.',\n onConfirm: () => this.handleAlertDialog(false),\n },\n });\n } else {\n let lines = answers.correctAnswer.marks.filter((mark) => mark.type !== 'polygon');\n gssLineData = findSectionsInSolutionSet(gssLineData, lines, domain, range);\n }\n this.handleGssLineDataChange(gssLineData, answers);\n } else {\n let polygons = answers.correctAnswer.marks.filter((mark) => mark.type === 'polygon');\n if (oldSelectedTool === 'solutionSet' && polygons.length > 0) {\n this.setState({\n dialog: {\n open: true,\n title: 'Warning',\n text: 'Changing a line after adding a solution set will clear your selected solution set. Click \\'Clear Solution Set\\' to change the line. Otherwise, click \\'Cancel\\'.',\n onConfirm: () => {\n answers.correctAnswer.marks = answers.correctAnswer.marks.filter((mark) => mark.type !== 'polygon');\n this.handleGssLineDataChange(gssLineData, answers);\n this.handleAlertDialog(false);\n },\n onConfirmText: 'CLEAR SOLUTION SET',\n onClose: () => {\n gssLineData.selectedTool = oldSelectedTool;\n this.handleGssLineDataChange(gssLineData, answers);\n this.handleAlertDialog(false);\n },\n },\n });\n } else {\n this.handleGssLineDataChange(gssLineData, answers);\n }\n }\n };\n\n /*\n * Function to handle the changes to line data on the graph\n * @param {object} gssLineData - line data on the graph\n * @param {object} answers - correct answer\n * */\n handleGssLineDataChange: any = (gssLineData, answers) => {\n const { model, onChange } = this.props;\n //handle line type changes from solid to dashed and vice versa\n if (answers.correctAnswer.marks.length > 0 && answers.correctAnswer.marks[0] && gssLineData.lineA) {\n answers.correctAnswer.marks[0].fill = gssLineData.lineA.lineType;\n }\n if (answers.correctAnswer.marks.length > 1 && answers.correctAnswer.marks[1] && gssLineData.lineB) {\n answers.correctAnswer.marks[1].fill = gssLineData.lineB.lineType;\n }\n //check if line is added to the graph before switching to lineB\n if (\n (gssLineData.selectedTool === 'lineB' && answers.correctAnswer.marks.length === 0) ||\n (gssLineData.selectedTool === 'lineB' && answers.correctAnswer.marks[0].building)\n ) {\n this.setState({\n dialog: {\n open: true,\n title: 'Warning',\n text: 'Please add Line A to the graph before adding Line B',\n onConfirm: () => this.handleAlertDialog(false),\n },\n });\n gssLineData.selectedTool = 'lineA';\n }\n //check if lineB is added to the graph before switching to lineA\n if (\n gssLineData.selectedTool === 'lineA' &&\n answers.correctAnswer.marks.length > 1 &&\n answers.correctAnswer.marks[1].building\n ) {\n this.setState({\n dialog: {\n open: true,\n title: 'Warning',\n text: 'Please add Line B to the graph before switching to Line A',\n onConfirm: () => this.handleAlertDialog(false),\n },\n });\n gssLineData.selectedTool = 'lineB';\n }\n set(model, 'gssLineData', gssLineData);\n set(model, 'answers', answers);\n onChange(model);\n };\n\n /*\n * Function to update the model\n * @param {object} props - updated props\n * */\n updateModel: any = (props) => {\n const { model, onChange } = this.props;\n onChange({\n ...model,\n ...props,\n });\n };\n\n /*\n * Render the component\n * */\n render() {\n const { errors, model, mathMlOptions = {} } = this.props;\n const { dialog } = this.state;\n //get the default values to GssLineData\n const {\n gssLineData = {\n numberOfLines: 1,\n selectedTool: 'lineA',\n lineA: {\n lineType: 'Solid',\n },\n },\n arrows,\n coordinatesOnHover,\n domain,\n graph = {},\n labels,\n labelsEnabled,\n range,\n title,\n titleEnabled,\n answers,\n } = model || {};\n const { correctAnswerErrors = '' } = errors || {};\n return (\n <div>\n <Typography component=\"div\" variant=\"h6\">\n Define Line Type(s) and Correct Response\n </Typography>\n <SubtitleText component=\"div\" variant=\"body1\">\n Use this interface to choose how many lines students will be able to draw, and to define the correct answer.\n </SubtitleText>\n <SubtitleText component=\"div\" variant=\"body1\">\n Choose Number of Lines\n </SubtitleText>\n <RadioGroup name=\"numberOfLines\" value={gssLineData.numberOfLines} onChange={this.changeNumberOfLines}>\n <RadioButtonClass\n value=\"1\"\n control={<StyledRadio checked={gssLineData.numberOfLines === 1} />}\n label=\"One\"\n />\n <RadioButtonClass\n value=\"2\"\n control={<StyledRadio checked={gssLineData.numberOfLines === 2} />}\n label=\"Two\"\n />\n </RadioGroup>\n <React.Fragment>\n <Graph\n style={correctAnswerErrors['correctAnswer'] && { border: '2px solid red' }}\n axesSettings={{ includeArrows: arrows }}\n backgroundMarks={[]}\n coordinatesOnHover={coordinatesOnHover}\n disabledLabels={true}\n disabledTitle={true}\n domain={domain}\n draggableTools={true}\n labels={labels}\n marks={answers && answers.correctAnswer && answers.correctAnswer.marks ? answers.correctAnswer.marks : []}\n onChangeMarks={(newMarks) => this.changeMarks(newMarks)}\n onCustomReset={this.onResetClick}\n range={range}\n showLabels={labelsEnabled}\n showTitle={titleEnabled}\n size={{ width: graph.width, height: graph.height }}\n title={title}\n gssLineData={gssLineData}\n onChangeGssLineData={this.onChangeGssLineData}\n onSolutionSetSelected={this.onSolutionSetSelected}\n toolbarTools={['line', 'polygon']}\n mathMlOptions={mathMlOptions}\n />\n {correctAnswerErrors['correctAnswer'] && (\n <ErrorMessage>{correctAnswerErrors['correctAnswer']}</ErrorMessage>\n )}\n </React.Fragment>\n <AlertDialog\n open={dialog.open}\n title={dialog.title}\n text={dialog.text}\n onClose={dialog.onClose}\n onConfirm={dialog.onConfirm}\n onConfirmText={dialog.onConfirmText ? dialog.onConfirmText : 'OK'}\n />\n </div>\n );\n }\n}\n\nexport default CorrectResponse;\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/graphing-solution-set/configure/src/configure.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 { styled } from '@mui/material/styles';\n\nimport { settings, layout, InputContainer } from '@pie-lib/config-ui';\nimport PropTypes from 'prop-types';\nimport debug from 'debug';\nimport Typography from '@mui/material/Typography';\nimport EditableHtml from '@pie-lib/editable-html-tip-tap';\nimport GraphingConfig from './graphing-config.js';\nimport CorrectResponse from './correct-response.js';\n\nconst { Panel, toggle, radio, checkboxes, textField, dropdown } = settings;\nconst log = debug('@pie-element:graphing-solution-set:configure');\n\nconst StyledInputContainer: any = styled(InputContainer)(({ theme }) => ({\n width: '100%',\n paddingTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n marginTop: theme.spacing(2),\n}));\n\nconst Description: any = styled(Typography)(({ theme }) => ({\n marginBottom: theme.spacing(2.5),\n}));\n\nexport class Configure extends React.Component {\n static propTypes = {\n onModelChanged: PropTypes.func,\n onConfigurationChanged: PropTypes.func,\n imageSupport: PropTypes.object,\n uploadSoundSupport: PropTypes.object,\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n };\n\n /*\n * Triggered when configure component is mounted\n * */\n componentDidMount() {\n const { configuration, onModelChanged, model } = this.props;\n const { title, graphDimensions } = configuration || {};\n let { arrows, titleEnabled: showTitle, dimensionsEnabled: showDimensions } = model || {};\n // This is used for offering support for old models which have the property arrows: boolean\n // Same thing is set in the controller: packages/graphing/controller/src/index.js - model\n if (typeof arrows === 'boolean') {\n if (arrows) {\n arrows = { left: true, right: true, up: true, down: true };\n } else {\n arrows = { left: false, right: false, up: false, down: false };\n }\n }\n const titleEnabled = showTitle === undefined || showTitle === null ? title.enabled : showTitle;\n const dimensionsEnabled =\n showDimensions === undefined || showDimensions === null ? graphDimensions.enabled : showDimensions;\n onModelChanged && onModelChanged({ ...model, arrows, titleEnabled, dimensionsEnabled });\n }\n\n /*\n * Triggered when the rationale is changed\n * @param {string} rationale - The new rationale\n * */\n onRationaleChange: any = (rationale) => {\n const { onModelChanged, model } = this.props;\n onModelChanged({ ...model, rationale });\n };\n\n /*\n * Triggered when the prompt is changed\n * @param {string} prompt - The new prompt\n * */\n onPromptChange: any = (prompt) => {\n const { onModelChanged, model } = this.props;\n onModelChanged({ ...model, prompt });\n };\n\n /*\n * Triggered when the teacher instructions are changed\n * @param {string} teacherInstructions - The new teacher instructions\n * */\n onTeacherInstructionsChange: any = (teacherInstructions) => {\n const { onModelChanged, model } = this.props;\n onModelChanged({ ...model, teacherInstructions });\n };\n\n /*\n * Render the component\n * */\n render() {\n const { model, configuration, onConfigurationChanged, onModelChanged, imageSupport, uploadSoundSupport } =\n this.props;\n const {\n arrows = {},\n authoring = {},\n coordinatesOnHover = {},\n contentDimensions = {},\n gridConfigurations = [],\n graphDimensions = {},\n instruction = {},\n labels = {},\n padding = {},\n prompt = {},\n rationale = {},\n scoringType = {},\n settingsPanelDisabled,\n spellCheck = {},\n studentInstructions = {},\n teacherInstructions = {},\n title = {},\n maxImageWidth = {},\n maxImageHeight = {},\n withRubric = {},\n language = {},\n languageChoices = {},\n mathMlOptions = {},\n } = configuration || {};\n const {\n errors = {},\n extraCSSRules,\n labelsEnabled,\n dimensionsEnabled,\n promptEnabled,\n rationaleEnabled,\n spellCheckEnabled,\n teacherInstructionsEnabled,\n titleEnabled,\n } = model || {};\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n const labelsPlaceholders = {\n top: labels.top,\n right: labels.right,\n bottom: labels.bottom,\n left: labels.left,\n };\n const panelItemType = {\n arrows:\n arrows.settings &&\n checkboxes(arrows.label, {\n left: arrows.left,\n right: arrows.right,\n up: arrows.up,\n down: arrows.down,\n }),\n titleEnabled: title.settings && toggle(title.label),\n padding: padding.settings && toggle(padding.label),\n labelsEnabled: labels.settings && toggle(labels.label),\n 'language.enabled': language.settings && toggle(language.label, true),\n language: language.settings && language.enabled && dropdown(languageChoices.label, languageChoices.options),\n dimensionsEnabled: graphDimensions.settings && toggle(graphDimensions.label),\n coordinatesOnHover: coordinatesOnHover.settings && toggle(coordinatesOnHover.label),\n };\n const panelProperties = {\n 'authoring.enabled': authoring.settings && toggle(authoring.label, true),\n teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),\n studentInstructionsEnabled: studentInstructions.settings && toggle(studentInstructions.label),\n promptEnabled: prompt.settings && toggle(prompt.label),\n rationaleEnabled: rationale.settings && toggle(rationale.label),\n spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),\n scoringType: scoringType.settings && radio(scoringType.label, ['dichotomous', 'partial scoring']),\n rubricEnabled: withRubric?.settings && toggle(withRubric?.label),\n instruction: instruction.settings && textField(instruction.label),\n };\n return (\n <layout.ConfigLayout\n extraCSSRules={extraCSSRules}\n dimensions={contentDimensions}\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n configuration={configuration}\n onChangeModel={onModelChanged}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n Settings: panelItemType,\n Properties: panelProperties,\n }}\n />\n }\n >\n <Description component=\"div\" variant=\"body1\">\n {instruction?.label || ''}\n </Description>\n {teacherInstructionsEnabled && (\n <StyledInputContainer label={teacherInstructions.label}>\n <EditableHtml\n markup={model.teacherInstructions || ''}\n onChange={this.onTeacherInstructionsChange}\n imageSupport={imageSupport}\n nonEmpty={false}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.teacherInstructions) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.teacherInstructions) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n </StyledInputContainer>\n )}\n {promptEnabled && (\n <StyledInputContainer label={prompt.label}>\n <EditableHtml\n markup={model.prompt}\n onChange={this.onPromptChange}\n imageSupport={imageSupport}\n nonEmpty={false}\n spellCheck={spellCheckEnabled}\n disableUnderline\n maxImageWidth={defaultImageMaxWidth}\n maxImageHeight={defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n </StyledInputContainer>\n )}\n <GraphingConfig\n authoring={authoring}\n gridConfigurations={gridConfigurations}\n graphDimensions={graphDimensions}\n labelsPlaceholders={labelsPlaceholders}\n model={model}\n showLabels={labelsEnabled}\n dimensionsEnabled={dimensionsEnabled}\n showTitle={titleEnabled}\n titlePlaceholder={title.placeholder}\n onChange={this.props.onModelChanged}\n mathMlOptions={mathMlOptions}\n />\n <CorrectResponse\n errors={errors}\n model={model}\n onChange={this.props.onModelChanged}\n mathMlOptions={mathMlOptions}\n />\n {rationaleEnabled && (\n <StyledInputContainer label={rationale.label || 'Rationale'}>\n <EditableHtml\n markup={model.rationale || ''}\n onChange={this.onRationaleChange}\n imageSupport={imageSupport}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.rationale) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rationale) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n </StyledInputContainer>\n )}\n </layout.ConfigLayout>\n );\n }\n}\n\nexport default Configure;\n","//#region src/index.ts\nvar e = class e extends CustomEvent {\n\tstatic {\n\t\tthis.TYPE = \"model.updated\";\n\t}\n\tconstructor(t, n = !1) {\n\t\tsuper(e.TYPE, {\n\t\t\tbubbles: !0,\n\t\t\tdetail: {\n\t\t\t\tupdate: t,\n\t\t\t\treset: n\n\t\t\t}\n\t\t}), this.update = t, this.reset = n;\n\t}\n}, t = class e extends CustomEvent {\n\tstatic {\n\t\tthis.TYPE = \"delete.image\";\n\t}\n\tconstructor(t, n) {\n\t\tsuper(e.TYPE, {\n\t\t\tbubbles: !0,\n\t\t\tdetail: {\n\t\t\t\tsrc: t,\n\t\t\t\tdone: n\n\t\t\t}\n\t\t}), this.src = t, this.done = n;\n\t}\n}, n = class e extends CustomEvent {\n\tstatic {\n\t\tthis.TYPE = \"insert.image\";\n\t}\n\tconstructor(t) {\n\t\tsuper(e.TYPE, {\n\t\t\tbubbles: !0,\n\t\t\tdetail: t\n\t\t}), this.handler = t;\n\t}\n}, r = class e extends CustomEvent {\n\tstatic {\n\t\tthis.TYPE = \"delete.sound\";\n\t}\n\tconstructor(t, n) {\n\t\tsuper(e.TYPE, {\n\t\t\tbubbles: !0,\n\t\t\tdetail: {\n\t\t\t\tsrc: t,\n\t\t\t\tdone: n\n\t\t\t}\n\t\t}), this.src = t, this.done = n;\n\t}\n}, i = class e extends CustomEvent {\n\tstatic {\n\t\tthis.TYPE = \"insert.sound\";\n\t}\n\tconstructor(t) {\n\t\tsuper(e.TYPE, {\n\t\t\tbubbles: !0,\n\t\t\tdetail: t\n\t\t}), this.handler = t;\n\t}\n};\n//#endregion\nexport { t as DeleteImageEvent, r as DeleteSoundEvent, n as InsertImageEvent, i as InsertSoundEvent, e as ModelUpdatedEvent };\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/graphing-solution-set/configure/src/defaults.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\n/*\n * This file contains the default configuration for the Graphing Solution Set Item Type.\n * Model is similar to the one used in graphing item type except for the gssLineData object which handles\n * the configuration for the lines and the solution set.\n *\n * Same model is used in controller default.js\n * */\nexport default {\n model: {\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 marks: [],\n defaultGridConfiguration: 0,\n domain: {\n min: -5,\n max: 5,\n step: 1,\n labelStep: 1,\n axisLabel: 'x',\n },\n graph: {\n width: 500,\n height: 500,\n },\n gssLineData: {\n numberOfLines: 1,\n selectedTool: 'lineA',\n sections: [],\n lineA: {\n lineType: 'Solid',\n },\n },\n includeAxes: true,\n labels: {},\n labelsEnabled: true,\n padding: true,\n prompt: '',\n range: {\n min: -5,\n max: 5,\n step: 1,\n labelStep: 1,\n axisLabel: 'y',\n },\n rationale: '',\n standardGrid: false,\n title: '',\n coordinatesOnHover: false,\n promptEnabled: true,\n rationaleEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n },\n configuration: {\n authoring: {\n settings: false,\n label: 'Customize Grid Setup',\n enabled: true,\n includeAxesEnabled: false,\n standardGridEnabled: true,\n min: {\n label: 'Min Value',\n enabled: true,\n },\n max: {\n label: 'Max Value',\n enabled: true,\n },\n axisLabel: {\n label: 'Label',\n enabled: true,\n },\n step: {\n label: 'Grid Interval',\n enabled: true,\n },\n labelStep: {\n label: 'Label Interval',\n enabled: true,\n },\n },\n arrows: {\n settings: true,\n label: 'Include Arrows',\n left: {\n label: 'left',\n },\n right: {\n label: 'right',\n },\n up: {\n label: 'up',\n },\n down: {\n label: 'down',\n },\n },\n gridConfigurations: [\n {\n label: '4-quadrant coordinate grid, -10 to 10',\n arrows: {\n left: true,\n right: true,\n up: true,\n down: true,\n },\n domain: {\n min: -10,\n max: 10,\n step: 1,\n padding: 0,\n labelStep: 1,\n axisLabel: '<i>x</i>',\n },\n graph: {\n width: 480,\n height: 480,\n },\n includeAxes: true,\n labels: {\n top: '',\n right: '',\n bottom: '',\n left: '',\n },\n padding: true,\n range: {\n min: -10,\n max: 10,\n step: 1,\n padding: 0,\n labelStep: 1,\n axisLabel: '<i>y</i>',\n },\n standardGrid: true,\n title: '',\n },\n {\n label: '0 to 10 on both axes',\n arrows: {\n left: false,\n right: true,\n up: true,\n down: false,\n },\n domain: {\n min: 0,\n max: 10,\n step: 1,\n padding: 0,\n labelStep: 1,\n axisLabel: '<i>x</i>',\n },\n graph: {\n width: 480,\n height: 480,\n },\n includeAxes: true,\n labels: {\n top: '',\n right: '',\n bottom: '',\n left: '',\n },\n padding: true,\n range: {\n min: 0,\n max: 10,\n step: 1,\n padding: 0,\n labelStep: 1,\n axisLabel: '<i>y</i>',\n },\n standardGrid: true,\n title: '',\n },\n {\n label: '0 to 20 on both axes',\n arrows: {\n left: false,\n right: true,\n up: true,\n down: false,\n },\n domain: {\n min: 0,\n max: 20,\n step: 1,\n padding: 0,\n labelStep: 1,\n axisLabel: '<i>x</i>',\n },\n graph: {\n width: 480,\n height: 480,\n },\n includeAxes: true,\n labels: {\n top: '',\n right: '',\n bottom: '',\n left: '',\n },\n padding: true,\n range: {\n min: 0,\n max: 20,\n step: 1,\n padding: 0,\n labelStep: 1,\n axisLabel: '<i>y</i>',\n },\n standardGrid: true,\n title: '',\n },\n {\n label: 'Sample Data Graph',\n arrows: {\n left: false,\n right: true,\n up: true,\n down: false,\n },\n domain: {\n min: 0,\n max: 30,\n step: 1,\n padding: 0,\n labelStep: 2,\n axisLabel: '<i>t</i>',\n },\n graph: {\n width: 480,\n height: 480,\n },\n includeAxes: true,\n labels: {\n top: '',\n right: '',\n bottom: 'Time (seconds)',\n left: 'Distance (meters)',\n },\n padding: true,\n range: {\n min: 0,\n max: 80,\n step: 5,\n padding: 0,\n labelStep: 10,\n axisLabel: '<i>d</i>',\n },\n standardGrid: false,\n title: 'Distance as a function of time',\n },\n ],\n graphDimensions: {\n settings: false,\n label: 'Graph Dimensions',\n enabled: true,\n min: 150,\n max: 800,\n step: 20,\n },\n padding: {\n settings: false,\n label: 'Padding',\n },\n labels: {\n settings: true,\n label: 'Graph Labels',\n enabled: true,\n top: 'Click here to add a top label',\n right: 'Click here to add a right label',\n bottom: 'Click here to add a bottom label',\n left: 'Click here to add a left label',\n },\n prompt: {\n settings: true,\n label: 'Item Stem',\n },\n rationale: {\n settings: true,\n label: 'Rationale',\n },\n scoringType: {\n settings: false,\n label: 'Scoring Type',\n },\n studentInstructions: {\n settings: false,\n label: 'Student Instructions',\n },\n teacherInstructions: {\n settings: true,\n label: 'Teacher Instructions',\n },\n title: {\n settings: true,\n label: 'Graph Title',\n enabled: true,\n placeholder: 'Click here to add a title for this graph',\n },\n instruction: {\n settings: false,\n label:\n 'Graphing Solution Set items involve plotting one or two lines on a graph and then selecting the correct area that represents the solution set. To create one, first configure the grid, then select if one or two lines will be offered and if the lines should be solid or dashed. After defining the line(s), define the correct answer by clicking the area that represents the solution set.',\n },\n settingsPanelDisabled: false,\n spellCheck: {\n label: 'Spellcheck',\n settings: false,\n enabled: true,\n },\n coordinatesOnHover: {\n settings: true,\n label: 'Coordinates on Hover',\n },\n maxImageWidth: {\n teacherInstructions: 300,\n prompt: 300,\n rationale: 300,\n },\n maxImageHeight: {\n teacherInstructions: 300,\n prompt: 300,\n rationale: 300,\n },\n withRubric: {\n settings: false,\n label: 'Add Rubric',\n },\n language: {\n settings: false,\n label: 'Specify Language',\n enabled: false,\n },\n languageChoices: {\n label: 'Language Choices',\n options: [],\n },\n mathMlOptions: {\n mmlOutput: false,\n mmlEditing: false,\n },\n },\n};\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/graphing-solution-set/configure/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 Configure from './configure.js';\nimport {\n ModelUpdatedEvent,\n DeleteImageEvent,\n InsertImageEvent,\n InsertSoundEvent,\n DeleteSoundEvent,\n} from '@pie-element/shared-configure-events';\nimport debug from 'debug';\nimport defaultValues from './defaults.js';\nimport { renderMath } from '@pie-element/shared-math-rendering-mathjax';\n\nconst log = debug('pie-elements:graphing-solution-set:configure');\n\n// this function is implemented in controller as well\nconst sortedAnswers = (answers) =>\n Object.keys(answers || {})\n .sort()\n .reduce((result, key) => {\n if (key !== 'correctAnswer') {\n result[key] = answers[key];\n }\n\n return result;\n }, {});\n\nexport default class GraphLinesConfigure extends HTMLElement {\n static createDefaultModel = (model = {}) => {\n const normalizedModel = { ...defaultValues.model, ...model };\n const { answers = {}, domain = {}, graph = {}, range = {}, standardGrid } = normalizedModel;\n return {\n ...normalizedModel,\n answers:\n (answers &&\n answers.correctAnswer && {\n correctAnswer: answers.correctAnswer,\n ...sortedAnswers(answers),\n }) ||\n answers,\n range:\n (standardGrid && {\n ...range,\n min: domain.min,\n max: domain.max,\n step: domain.step,\n labelStep: domain.labelStep,\n }) ||\n range,\n graph: (standardGrid && { ...graph, height: graph.width }) || graph,\n };\n };\n\n constructor() {\n super();\n this._root = null;\n this._model = GraphLinesConfigure.createDefaultModel();\n this._configuration = defaultValues.configuration;\n }\n\n /*\n * Function to set the model\n * */\n set model(m) {\n this._model = GraphLinesConfigure.createDefaultModel(m);\n this._render();\n }\n\n /*\n * Function to set the configuration\n * */\n set configuration(c) {\n this._configuration = c;\n // if language:enabled is true, then the corresponding default item model should include a language value;\n // if it is false, then the language field should be omitted from the item model.\n // if a default item model includes a language value (e.g., en_US) and the corresponding authoring view settings have language:settings = true,\n // then (a) language:enabled should also be true, and (b) that default language value should be represented in languageChoices[] (as a key).\n //TODO: add logic in controller and add tests\n if (c.language?.enabled) {\n if (c.languageChoices?.options?.length) {\n this._model.language = c.languageChoices.options[0].value;\n }\n } else {\n if (c.language.settings) {\n if (this._model.language) {\n this._configuration.language.enabled = true;\n }\n } else {\n delete this._model.language;\n }\n }\n this._render();\n }\n\n /*\n * Triggered when the model is changed\n * @param {object} model - the new model\n * */\n onModelChanged: any = (model) => {\n this._model = model;\n this._render();\n log('[onModelChanged]: ', this._model);\n this.dispatchEvent(new ModelUpdatedEvent(this._model));\n };\n\n /*\n * Triggered when the configuration is changed\n * @param {object} config - the new configuration\n * */\n onConfigurationChanged: any = (config) => {\n this._configuration = config;\n this._render();\n };\n\n insertImage: any = (handler) => {\n this.dispatchEvent(new InsertImageEvent(handler));\n };\n\n onDeleteImage: any = (src, done) => {\n this.dispatchEvent(new DeleteImageEvent(src, done));\n };\n\n insertSound(handler) {\n this.dispatchEvent(new InsertSoundEvent(handler));\n }\n\n onDeleteSound(src, done) {\n this.dispatchEvent(new DeleteSoundEvent(src, done));\n }\n\n /*\n * Render the component\n * */\n _render() {\n if (this._model) {\n const el = React.createElement(Configure, {\n onModelChanged: this.onModelChanged,\n onConfigurationChanged: this.onConfigurationChanged,\n model: this._model,\n configuration: this._configuration,\n imageSupport: {\n add: this.insertImage,\n delete: this.onDeleteImage,\n },\n uploadSoundSupport: {\n add: this.insertSound.bind(this),\n delete: this.onDeleteSound.bind(this),\n },\n });\n if (!this._root) {\n this._root = createRoot(this);\n }\n this._root.render(el);\n queueMicrotask(() => {\n renderMath(this);\n });\n }\n }\n\n disconnectedCallback() {\n if (this._root) {\n this._root.unmount();\n }\n }\n}\n"],"x_google_ignoreList":[0,1,2,3],"mappings":"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GACL,MAAM;GACN,WAAW;GACX,WAAW;EACb;EACA,OAAO;GACL,OAAO;GACP,QAAQ;EACV;EACA,aAAa;GACX,eAAe;GACf,cAAc;GACd,UAAU,CAAC;GACX,OAAO,EACL,UAAU,QACZ;EACF;EACA,aAAa;EACb,QAAQ,CAAC;EACT,eAAe;EACf,SAAS;EACT,QAAQ;EACR,OAAO;GACL,KAAK;GACL,KAAK;GACL,MAAM;GACN,WAAW;GACX,WAAW;EACb;EACA,WAAW;EACX,cAAc;EACd,OAAO;EACP,oBAAoB;EACpB,eAAe;EACf,kBAAkB;EAClB,4BAA4B;EAC5B,4BAA4B;CAC9B;CACA,eAAe;EACb,WAAW;GACT,UAAU;GACV,OAAO;GACP,SAAS;GACT,oBAAoB;GACpB,qBAAqB;GACrB,KAAK;IACH,OAAO;IACP,SAAS;GACX;GACA,KAAK;IACH,OAAO;IACP,SAAS;GACX;GACA,WAAW;IACT,OAAO;IACP,SAAS;GACX;GACA,MAAM;IACJ,OAAO;IACP,SAAS;GACX;GACA,WAAW;IACT,OAAO;IACP,SAAS;GACX;EACF;EACA,QAAQ;GACN,UAAU;GACV,OAAO;GACP,MAAM,EACJ,OAAO,OACT;GACA,OAAO,EACL,OAAO,QACT;GACA,IAAI,EACF,OAAO,KACT;GACA,MAAM,EACJ,OAAO,OACT;EACF;EACA,oBAAoB;GAClB;IACE,OAAO;IACP,QAAQ;KACN,MAAM;KACN,OAAO;KACP,IAAI;KACJ,MAAM;IACR;IACA,QAAQ;KACN,KAAK;KACL,KAAK;KACL,MAAM;KACN,SAAS;KACT,WAAW;KACX,WAAW;IACb;IACA,OAAO;KACL,OAAO;KACP,QAAQ;IACV;IACA,aAAa;IACb,QAAQ;KACN,KAAK;KACL,OAAO;KACP,QAAQ;KACR,MAAM;IACR;IACA,SAAS;IACT,OAAO;KACL,KAAK;KACL,KAAK;KACL,MAAM;KACN,SAAS;KACT,WAAW;KACX,WAAW;IACb;IACA,cAAc;IACd,OAAO;GACT;GACA;IACE,OAAO;IACP,QAAQ;KACN,MAAM;KACN,OAAO;KACP,IAAI;KACJ,MAAM;IACR;IACA,QAAQ;KACN,KAAK;KACL,KAAK;KACL,MAAM;KACN,SAAS;KACT,WAAW;KACX,WAAW;IACb;IACA,OAAO;KACL,OAAO;KACP,QAAQ;IACV;IACA,aAAa;IACb,QAAQ;KACN,KAAK;KACL,OAAO;KACP,QAAQ;KACR,MAAM;IACR;IACA,SAAS;IACT,OAAO;KACL,KAAK;KACL,KAAK;KACL,MAAM;KACN,SAAS;KACT,WAAW;KACX,WAAW;IACb;IACA,cAAc;IACd,OAAO;GACT;GACA;IACE,OAAO;IACP,QAAQ;KACN,MAAM;KACN,OAAO;KACP,IAAI;KACJ,MAAM;IACR;IACA,QAAQ;KACN,KAAK;KACL,KAAK;KACL,MAAM;KACN,SAAS;KACT,WAAW;KACX,WAAW;IACb;IACA,OAAO;KACL,OAAO;KACP,QAAQ;IACV;IACA,aAAa;IACb,QAAQ;KACN,KAAK;KACL,OAAO;KACP,QAAQ;KACR,MAAM;IACR;IACA,SAAS;IACT,OAAO;KACL,KAAK;KACL,KAAK;KACL,MAAM;KACN,SAAS;KACT,WAAW;KACX,WAAW;IACb;IACA,cAAc;IACd,OAAO;GACT;GACA;IACE,OAAO;IACP,QAAQ;KACN,MAAM;KACN,OAAO;KACP,IAAI;KACJ,MAAM;IACR;IACA,QAAQ;KACN,KAAK;KACL,KAAK;KACL,MAAM;KACN,SAAS;KACT,WAAW;KACX,WAAW;IACb;IACA,OAAO;KACL,OAAO;KACP,QAAQ;IACV;IACA,aAAa;IACb,QAAQ;KACN,KAAK;KACL,OAAO;KACP,QAAQ;KACR,MAAM;IACR;IACA,SAAS;IACT,OAAO;KACL,KAAK;KACL,KAAK;KACL,MAAM;KACN,SAAS;KACT,WAAW;KACX,WAAW;IACb;IACA,cAAc;IACd,OAAO;GACT;EACF;EACA,iBAAiB;GACf,UAAU;GACV,OAAO;GACP,SAAS;GACT,KAAK;GACL,KAAK;GACL,MAAM;EACR;EACA,SAAS;GACP,UAAU;GACV,OAAO;EACT;EACA,QAAQ;GACN,UAAU;GACV,OAAO;GACP,SAAS;GACT,KAAK;GACL,OAAO;GACP,QAAQ;GACR,MAAM;EACR;EACA,QAAQ;GACN,UAAU;GACV,OAAO;EACT;EACA,WAAW;GACT,UAAU;GACV,OAAO;EACT;EACA,aAAa;GACX,UAAU;GACV,OAAO;EACT;EACA,qBAAqB;GACnB,UAAU;GACV,OAAO;EACT;EACA,qBAAqB;GACnB,UAAU;GACV,OAAO;EACT;EACA,OAAO;GACL,UAAU;GACV,OAAO;GACP,SAAS;GACT,aAAa;EACf;EACA,aAAa;GACX,UAAU;GACV,OACE;EACJ;EACA,uBAAuB;EACvB,YAAY;GACV,OAAO;GACP,UAAU;GACV,SAAS;EACX;EACA,oBAAoB;GAClB,UAAU;GACV,OAAO;EACT;EACA,eAAe;GACb,qBAAqB;GACrB,QAAQ;GACR,WAAW;EACb;EACA,gBAAgB;GACd,qBAAqB;GACrB,QAAQ;GACR,WAAW;EACb;EACA,YAAY;GACV,UAAU;GACV,OAAO;EACT;EACA,UAAU;GACR,UAAU;GACV,OAAO;GACP,SAAS;EACX;EACA,iBAAiB;GACf,OAAO;GACP,SAAS,CAAC;EACZ;EACA,eAAe;GACb,WAAW;GACX,YAAY;EACd;CACF;AACF,GCrVM,MAAA,GAAA,GAAA,SAAY,8CAA8C,GAG1D,MAAiB,MACrB,OAAO,KAAK,KAAW,CAAC,CAAC,EACtB,KAAK,EACL,QAAQ,GAAQ,OACX,MAAQ,oBACV,EAAO,KAAO,EAAQ,KAGjB,IACN,CAAC,CAAC,GAEY,KAArB,MAAqB,UAA4B,YAAY;CAC3D,OAAO,sBAAsB,IAAQ,CAAC,MAAM;EAC1C,IAAM,IAAkB;GAAE,GAAG,GAAc;GAAO,GAAG;EAAM,GACrD,EAAE,aAAU,CAAC,GAAG,YAAS,CAAC,GAAG,WAAQ,CAAC,GAAG,WAAQ,CAAC,GAAG,oBAAiB;EAC5E,OAAO;GACL,GAAG;GACH,SACG,KACC,EAAQ,iBAAiB;IACvB,eAAe,EAAQ;IACvB,GAAG,GAAc,CAAO;GAC1B,KACF;GACF,OACG,KAAgB;IACf,GAAG;IACH,KAAK,EAAO;IACZ,KAAK,EAAO;IACZ,MAAM,EAAO;IACb,WAAW,EAAO;GACpB,KACA;GACF,OAAQ,KAAgB;IAAE,GAAG;IAAO,QAAQ,EAAM;GAAM,KAAM;EAChE;CACF;CAEA,cAAc;EAIZ,AAHA,MAAM,GACN,KAAK,QAAQ,MACb,KAAK,SAAS,EAAoB,mBAAmB,GACrD,KAAK,iBAAiB,GAAc;CACtC;CAKA,IAAI,MAAM,GAAG;EAEX,AADA,KAAK,SAAS,EAAoB,mBAAmB,CAAC,GACtD,KAAK,QAAQ;CACf;CAKA,IAAI,cAAc,GAAG;EAoBnB,AAnBA,KAAK,iBAAiB,GAMlB,EAAE,UAAU,UACV,EAAE,iBAAiB,SAAS,WAC9B,KAAK,OAAO,WAAW,EAAE,gBAAgB,QAAQ,GAAG,SAGlD,EAAE,SAAS,WACT,KAAK,OAAO,aACd,KAAK,eAAe,SAAS,UAAU,MAGzC,OAAO,KAAK,OAAO,UAGvB,KAAK,QAAQ;CACf;CAMA,kBAAuB,MAAU;EAI/B,AAHA,KAAK,SAAS,GACd,KAAK,QAAQ,GACb,GAAI,sBAAsB,KAAK,MAAM,GACrC,KAAK,cAAc,IAAI,GAAkB,KAAK,MAAM,CAAC;CACvD;CAMA,0BAA+B,MAAW;EAExC,AADA,KAAK,iBAAiB,GACtB,KAAK,QAAQ;CACf;CAEA,eAAoB,MAAY;EAC9B,KAAK,cAAc,IAAI,GAAiB,CAAO,CAAC;CAClD;CAEA,iBAAsB,GAAK,MAAS;EAClC,KAAK,cAAc,IAAI,GAAiB,GAAK,CAAI,CAAC;CACpD;CAEA,YAAY,GAAS;EACnB,KAAK,cAAc,IAAI,GAAiB,CAAO,CAAC;CAClD;CAEA,cAAc,GAAK,GAAM;EACvB,KAAK,cAAc,IAAI,GAAiB,GAAK,CAAI,CAAC;CACpD;CAKA,UAAU;EACR,IAAI,KAAK,QAAQ;GACf,IAAM,IAAK,EAAM,cAAc,IAAW;IACxC,gBAAgB,KAAK;IACrB,wBAAwB,KAAK;IAC7B,OAAO,KAAK;IACZ,eAAe,KAAK;IACpB,cAAc;KACZ,KAAK,KAAK;KACV,QAAQ,KAAK;IACf;IACA,oBAAoB;KAClB,KAAK,KAAK,YAAY,KAAK,IAAI;KAC/B,QAAQ,KAAK,cAAc,KAAK,IAAI;IACtC;GACF,CAAC;GAKD,AAJA,AACE,KAAK,UAAQ,GAAW,IAAI,GAE9B,KAAK,MAAM,OAAO,CAAE,GACpB,qBAAqB;IACnB,EAAW,IAAI;GACjB,CAAC;EACH;CACF;CAEA,uBAAuB;EACrB,AAAI,KAAK,SACP,KAAK,MAAM,QAAQ;CAEvB;AACF"}