@pie-element/ebsr 11.0.0 → 12.0.1-esmbeta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (284) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/configure/CHANGELOG.md +8 -0
  3. package/configure/node_modules/@pie-element/multiple-choice/CHANGELOG.json +1972 -0
  4. package/configure/node_modules/@pie-element/multiple-choice/CHANGELOG.md +4186 -0
  5. package/configure/node_modules/@pie-element/multiple-choice/LICENSE.md +5 -0
  6. package/configure/node_modules/@pie-element/multiple-choice/PRINT.md +35 -0
  7. package/configure/node_modules/@pie-element/multiple-choice/README.md +56 -0
  8. package/configure/node_modules/@pie-element/multiple-choice/choice.png +0 -0
  9. package/configure/node_modules/@pie-element/multiple-choice/configure/CHANGELOG.json +1387 -0
  10. package/configure/node_modules/@pie-element/multiple-choice/configure/CHANGELOG.md +3332 -0
  11. package/configure/node_modules/@pie-element/multiple-choice/configure/lib/defaults.js +202 -0
  12. package/configure/node_modules/@pie-element/multiple-choice/configure/lib/defaults.js.map +1 -0
  13. package/configure/node_modules/@pie-element/multiple-choice/configure/lib/index.js +248 -0
  14. package/configure/node_modules/@pie-element/multiple-choice/configure/lib/index.js.map +1 -0
  15. package/configure/node_modules/@pie-element/multiple-choice/configure/lib/main.js +597 -0
  16. package/configure/node_modules/@pie-element/multiple-choice/configure/lib/main.js.map +1 -0
  17. package/configure/node_modules/@pie-element/multiple-choice/configure/lib/utils.js +18 -0
  18. package/configure/node_modules/@pie-element/multiple-choice/configure/lib/utils.js.map +1 -0
  19. package/configure/node_modules/@pie-element/multiple-choice/configure/package.json +20 -0
  20. package/configure/node_modules/@pie-element/multiple-choice/controller/CHANGELOG.json +527 -0
  21. package/configure/node_modules/@pie-element/multiple-choice/controller/CHANGELOG.md +2297 -0
  22. package/configure/node_modules/@pie-element/multiple-choice/controller/lib/defaults.js +34 -0
  23. package/configure/node_modules/@pie-element/multiple-choice/controller/lib/defaults.js.map +1 -0
  24. package/configure/node_modules/@pie-element/multiple-choice/controller/lib/index.js +346 -0
  25. package/configure/node_modules/@pie-element/multiple-choice/controller/lib/index.js.map +1 -0
  26. package/configure/node_modules/@pie-element/multiple-choice/controller/lib/utils.js +28 -0
  27. package/configure/node_modules/@pie-element/multiple-choice/controller/lib/utils.js.map +1 -0
  28. package/configure/node_modules/@pie-element/multiple-choice/controller/package.json +15 -0
  29. package/configure/node_modules/@pie-element/multiple-choice/docs/config-schema.json +2993 -0
  30. package/configure/node_modules/@pie-element/multiple-choice/docs/config-schema.json.md +2217 -0
  31. package/configure/node_modules/@pie-element/multiple-choice/docs/demo/config.js +8 -0
  32. package/configure/node_modules/@pie-element/multiple-choice/docs/demo/generate.js +61 -0
  33. package/configure/node_modules/@pie-element/multiple-choice/docs/demo/index.html +1 -0
  34. package/configure/node_modules/@pie-element/multiple-choice/docs/demo/session.js +7 -0
  35. package/configure/node_modules/@pie-element/multiple-choice/docs/pie-schema.json +1332 -0
  36. package/configure/node_modules/@pie-element/multiple-choice/docs/pie-schema.json.md +1015 -0
  37. package/configure/node_modules/@pie-element/multiple-choice/esm/configure.css +847 -0
  38. package/configure/node_modules/@pie-element/multiple-choice/esm/configure.js +1218 -0
  39. package/configure/node_modules/@pie-element/multiple-choice/esm/configure.js.map +1 -0
  40. package/configure/node_modules/@pie-element/multiple-choice/esm/controller.css +847 -0
  41. package/configure/node_modules/@pie-element/multiple-choice/esm/controller.js +324 -0
  42. package/configure/node_modules/@pie-element/multiple-choice/esm/controller.js.map +1 -0
  43. package/configure/node_modules/@pie-element/multiple-choice/esm/element.css +847 -0
  44. package/configure/node_modules/@pie-element/multiple-choice/esm/element.js +3287 -0
  45. package/configure/node_modules/@pie-element/multiple-choice/esm/element.js.map +1 -0
  46. package/configure/node_modules/@pie-element/multiple-choice/esm/print.css +847 -0
  47. package/configure/node_modules/@pie-element/multiple-choice/esm/print.js +3017 -0
  48. package/configure/node_modules/@pie-element/multiple-choice/esm/print.js.map +1 -0
  49. package/configure/node_modules/@pie-element/multiple-choice/lib/choice-input.js +427 -0
  50. package/configure/node_modules/@pie-element/multiple-choice/lib/choice-input.js.map +1 -0
  51. package/configure/node_modules/@pie-element/multiple-choice/lib/choice.js +252 -0
  52. package/configure/node_modules/@pie-element/multiple-choice/lib/choice.js.map +1 -0
  53. package/configure/node_modules/@pie-element/multiple-choice/lib/feedback-tick.js +174 -0
  54. package/configure/node_modules/@pie-element/multiple-choice/lib/feedback-tick.js.map +1 -0
  55. package/configure/node_modules/@pie-element/multiple-choice/lib/index.js +388 -0
  56. package/configure/node_modules/@pie-element/multiple-choice/lib/index.js.map +1 -0
  57. package/configure/node_modules/@pie-element/multiple-choice/lib/main.js +108 -0
  58. package/configure/node_modules/@pie-element/multiple-choice/lib/main.js.map +1 -0
  59. package/configure/node_modules/@pie-element/multiple-choice/lib/multiple-choice.js +469 -0
  60. package/configure/node_modules/@pie-element/multiple-choice/lib/multiple-choice.js.map +1 -0
  61. package/configure/node_modules/@pie-element/multiple-choice/lib/print.js +129 -0
  62. package/configure/node_modules/@pie-element/multiple-choice/lib/print.js.map +1 -0
  63. package/configure/node_modules/@pie-element/multiple-choice/lib/session-updater.js +48 -0
  64. package/configure/node_modules/@pie-element/multiple-choice/lib/session-updater.js.map +1 -0
  65. package/configure/node_modules/@pie-element/multiple-choice/module/configure.js +1 -0
  66. package/configure/node_modules/@pie-element/multiple-choice/module/controller.js +3472 -0
  67. package/configure/node_modules/@pie-element/multiple-choice/module/demo.js +86 -0
  68. package/configure/node_modules/@pie-element/multiple-choice/module/element.js +1 -0
  69. package/configure/node_modules/@pie-element/multiple-choice/module/index.html +21 -0
  70. package/configure/node_modules/@pie-element/multiple-choice/module/index.js +2 -0
  71. package/configure/node_modules/@pie-element/multiple-choice/module/manifest.json +10 -0
  72. package/configure/node_modules/@pie-element/multiple-choice/module/print-demo.js +124 -0
  73. package/configure/node_modules/@pie-element/multiple-choice/module/print.html +18 -0
  74. package/configure/node_modules/@pie-element/multiple-choice/module/print.js +1 -0
  75. package/configure/node_modules/@pie-element/multiple-choice/package.json +53 -0
  76. package/configure/node_modules/@pie-lib/correct-answer-toggle/CHANGELOG.json +1 -0
  77. package/configure/node_modules/@pie-lib/correct-answer-toggle/CHANGELOG.md +898 -0
  78. package/configure/node_modules/@pie-lib/correct-answer-toggle/NEXT.CHANGELOG.json +1 -0
  79. package/configure/node_modules/@pie-lib/correct-answer-toggle/esm/index.js +262 -0
  80. package/configure/node_modules/@pie-lib/correct-answer-toggle/esm/index.js.map +1 -0
  81. package/configure/node_modules/@pie-lib/correct-answer-toggle/lib/expander.js +88 -0
  82. package/configure/node_modules/@pie-lib/correct-answer-toggle/lib/expander.js.map +1 -0
  83. package/configure/node_modules/@pie-lib/correct-answer-toggle/lib/index.js +181 -0
  84. package/configure/node_modules/@pie-lib/correct-answer-toggle/lib/index.js.map +1 -0
  85. package/configure/node_modules/@pie-lib/correct-answer-toggle/lib/styles.js +66 -0
  86. package/configure/node_modules/@pie-lib/correct-answer-toggle/lib/styles.js.map +1 -0
  87. package/configure/node_modules/@pie-lib/correct-answer-toggle/package.json +44 -0
  88. package/configure/node_modules/@pie-lib/correct-answer-toggle/src/__tests__/index.test.jsx +99 -0
  89. package/configure/node_modules/@pie-lib/correct-answer-toggle/src/expander.jsx +61 -0
  90. package/configure/node_modules/@pie-lib/correct-answer-toggle/src/index.jsx +98 -0
  91. package/configure/node_modules/@pie-lib/correct-answer-toggle/src/styles.js +61 -0
  92. package/configure/node_modules/@pie-lib/icons/CHANGELOG.json +1 -0
  93. package/configure/node_modules/@pie-lib/icons/CHANGELOG.md +539 -0
  94. package/configure/node_modules/@pie-lib/icons/NEXT.CHANGELOG.json +1 -0
  95. package/configure/node_modules/@pie-lib/icons/esm/index.js +1153 -0
  96. package/configure/node_modules/@pie-lib/icons/esm/index.js.map +1 -0
  97. package/configure/node_modules/@pie-lib/icons/lib/correct-icon.js +89 -0
  98. package/configure/node_modules/@pie-lib/icons/lib/correct-icon.js.map +1 -0
  99. package/configure/node_modules/@pie-lib/icons/lib/correct-response-icon.js +153 -0
  100. package/configure/node_modules/@pie-lib/icons/lib/correct-response-icon.js.map +1 -0
  101. package/configure/node_modules/@pie-lib/icons/lib/icon-base.js +206 -0
  102. package/configure/node_modules/@pie-lib/icons/lib/icon-base.js.map +1 -0
  103. package/configure/node_modules/@pie-lib/icons/lib/icon-root.js +130 -0
  104. package/configure/node_modules/@pie-lib/icons/lib/icon-root.js.map +1 -0
  105. package/configure/node_modules/@pie-lib/icons/lib/incorrect-icon.js +92 -0
  106. package/configure/node_modules/@pie-lib/icons/lib/incorrect-icon.js.map +1 -0
  107. package/configure/node_modules/@pie-lib/icons/lib/index.js +72 -0
  108. package/configure/node_modules/@pie-lib/icons/lib/index.js.map +1 -0
  109. package/configure/node_modules/@pie-lib/icons/lib/instructions-icon.js +229 -0
  110. package/configure/node_modules/@pie-lib/icons/lib/instructions-icon.js.map +1 -0
  111. package/configure/node_modules/@pie-lib/icons/lib/learn-more-icon.js +145 -0
  112. package/configure/node_modules/@pie-lib/icons/lib/learn-more-icon.js.map +1 -0
  113. package/configure/node_modules/@pie-lib/icons/lib/nothing-submitted-icon.js +183 -0
  114. package/configure/node_modules/@pie-lib/icons/lib/nothing-submitted-icon.js.map +1 -0
  115. package/configure/node_modules/@pie-lib/icons/lib/partially-correct-icon.js +82 -0
  116. package/configure/node_modules/@pie-lib/icons/lib/partially-correct-icon.js.map +1 -0
  117. package/configure/node_modules/@pie-lib/icons/lib/show-rationale-icon.js +206 -0
  118. package/configure/node_modules/@pie-lib/icons/lib/show-rationale-icon.js.map +1 -0
  119. package/configure/node_modules/@pie-lib/icons/lib/sized.js +41 -0
  120. package/configure/node_modules/@pie-lib/icons/lib/sized.js.map +1 -0
  121. package/configure/node_modules/@pie-lib/icons/package.json +35 -0
  122. package/configure/node_modules/@pie-lib/icons/src/__tests__/index.test.js +3 -0
  123. package/configure/node_modules/@pie-lib/icons/src/correct-icon.jsx +64 -0
  124. package/configure/node_modules/@pie-lib/icons/src/correct-response-icon.jsx +121 -0
  125. package/configure/node_modules/@pie-lib/icons/src/icon-base.jsx +158 -0
  126. package/configure/node_modules/@pie-lib/icons/src/icon-root.jsx +76 -0
  127. package/configure/node_modules/@pie-lib/icons/src/incorrect-icon.jsx +61 -0
  128. package/configure/node_modules/@pie-lib/icons/src/index.js +19 -0
  129. package/configure/node_modules/@pie-lib/icons/src/instructions-icon.jsx +189 -0
  130. package/configure/node_modules/@pie-lib/icons/src/learn-more-icon.jsx +107 -0
  131. package/configure/node_modules/@pie-lib/icons/src/nothing-submitted-icon.jsx +130 -0
  132. package/configure/node_modules/@pie-lib/icons/src/partially-correct-icon.jsx +49 -0
  133. package/configure/node_modules/@pie-lib/icons/src/show-rationale-icon.jsx +152 -0
  134. package/configure/node_modules/@pie-lib/icons/src/sized.jsx +25 -0
  135. package/configure/node_modules/@pie-lib/math-rendering/CHANGELOG.json +1 -0
  136. package/configure/node_modules/@pie-lib/math-rendering/CHANGELOG.md +775 -0
  137. package/configure/node_modules/@pie-lib/math-rendering/NEXT.CHANGELOG.json +1 -0
  138. package/configure/node_modules/@pie-lib/math-rendering/esm/index.js +690 -0
  139. package/configure/node_modules/@pie-lib/math-rendering/esm/index.js.map +1 -0
  140. package/configure/node_modules/@pie-lib/math-rendering/lib/index.js +38 -0
  141. package/configure/node_modules/@pie-lib/math-rendering/lib/index.js.map +1 -0
  142. package/configure/node_modules/@pie-lib/math-rendering/lib/mml-to-latex.js +15 -0
  143. package/configure/node_modules/@pie-lib/math-rendering/lib/mml-to-latex.js.map +1 -0
  144. package/configure/node_modules/@pie-lib/math-rendering/lib/mstack/chtml.js +296 -0
  145. package/configure/node_modules/@pie-lib/math-rendering/lib/mstack/chtml.js.map +1 -0
  146. package/configure/node_modules/@pie-lib/math-rendering/lib/mstack/index.js +23 -0
  147. package/configure/node_modules/@pie-lib/math-rendering/lib/mstack/index.js.map +1 -0
  148. package/configure/node_modules/@pie-lib/math-rendering/lib/mstack/mml.js +109 -0
  149. package/configure/node_modules/@pie-lib/math-rendering/lib/mstack/mml.js.map +1 -0
  150. package/configure/node_modules/@pie-lib/math-rendering/lib/normalization.js +95 -0
  151. package/configure/node_modules/@pie-lib/math-rendering/lib/normalization.js.map +1 -0
  152. package/configure/node_modules/@pie-lib/math-rendering/lib/render-math.js +438 -0
  153. package/configure/node_modules/@pie-lib/math-rendering/lib/render-math.js.map +1 -0
  154. package/configure/node_modules/@pie-lib/math-rendering/package.json +28 -0
  155. package/configure/node_modules/@pie-lib/math-rendering/src/__tests__/mml-to-latex.test.js +14 -0
  156. package/configure/node_modules/@pie-lib/math-rendering/src/__tests__/normalization.test.js +50 -0
  157. package/configure/node_modules/@pie-lib/math-rendering/src/__tests__/render-math.test.js +155 -0
  158. package/configure/node_modules/@pie-lib/math-rendering/src/index.js +5 -0
  159. package/configure/node_modules/@pie-lib/math-rendering/src/mml-to-latex.js +2 -0
  160. package/configure/node_modules/@pie-lib/math-rendering/src/mstack/__tests__/__snapshots__/chtml.test.js.snap +9 -0
  161. package/configure/node_modules/@pie-lib/math-rendering/src/mstack/__tests__/chtml.test.js +104 -0
  162. package/configure/node_modules/@pie-lib/math-rendering/src/mstack/chtml.js +220 -0
  163. package/configure/node_modules/@pie-lib/math-rendering/src/mstack/index.js +13 -0
  164. package/configure/node_modules/@pie-lib/math-rendering/src/mstack/mml.js +24 -0
  165. package/configure/node_modules/@pie-lib/math-rendering/src/normalization.js +69 -0
  166. package/configure/node_modules/@pie-lib/math-rendering/src/render-math.js +387 -0
  167. package/configure/node_modules/@pie-lib/render-ui/CHANGELOG.json +1 -0
  168. package/configure/node_modules/@pie-lib/render-ui/CHANGELOG.md +1026 -0
  169. package/configure/node_modules/@pie-lib/render-ui/NEXT.CHANGELOG.json +1 -0
  170. package/configure/node_modules/@pie-lib/render-ui/esm/index.js +1616 -0
  171. package/configure/node_modules/@pie-lib/render-ui/esm/index.js.map +1 -0
  172. package/configure/node_modules/@pie-lib/render-ui/lib/append-css-rules.js +88 -0
  173. package/configure/node_modules/@pie-lib/render-ui/lib/append-css-rules.js.map +1 -0
  174. package/configure/node_modules/@pie-lib/render-ui/lib/assets/enableAudioAutoplayImage.js +9 -0
  175. package/configure/node_modules/@pie-lib/render-ui/lib/assets/enableAudioAutoplayImage.js.map +1 -0
  176. package/configure/node_modules/@pie-lib/render-ui/lib/collapsible/index.js +135 -0
  177. package/configure/node_modules/@pie-lib/render-ui/lib/collapsible/index.js.map +1 -0
  178. package/configure/node_modules/@pie-lib/render-ui/lib/color.js +344 -0
  179. package/configure/node_modules/@pie-lib/render-ui/lib/color.js.map +1 -0
  180. package/configure/node_modules/@pie-lib/render-ui/lib/feedback.js +150 -0
  181. package/configure/node_modules/@pie-lib/render-ui/lib/feedback.js.map +1 -0
  182. package/configure/node_modules/@pie-lib/render-ui/lib/has-media.js +27 -0
  183. package/configure/node_modules/@pie-lib/render-ui/lib/has-media.js.map +1 -0
  184. package/configure/node_modules/@pie-lib/render-ui/lib/has-text.js +28 -0
  185. package/configure/node_modules/@pie-lib/render-ui/lib/has-text.js.map +1 -0
  186. package/configure/node_modules/@pie-lib/render-ui/lib/html-and-math.js +74 -0
  187. package/configure/node_modules/@pie-lib/render-ui/lib/html-and-math.js.map +1 -0
  188. package/configure/node_modules/@pie-lib/render-ui/lib/index.js +136 -0
  189. package/configure/node_modules/@pie-lib/render-ui/lib/index.js.map +1 -0
  190. package/configure/node_modules/@pie-lib/render-ui/lib/input-container.js +60 -0
  191. package/configure/node_modules/@pie-lib/render-ui/lib/input-container.js.map +1 -0
  192. package/configure/node_modules/@pie-lib/render-ui/lib/preview-layout.js +145 -0
  193. package/configure/node_modules/@pie-lib/render-ui/lib/preview-layout.js.map +1 -0
  194. package/configure/node_modules/@pie-lib/render-ui/lib/preview-prompt.js +321 -0
  195. package/configure/node_modules/@pie-lib/render-ui/lib/preview-prompt.js.map +1 -0
  196. package/configure/node_modules/@pie-lib/render-ui/lib/purpose.js +28 -0
  197. package/configure/node_modules/@pie-lib/render-ui/lib/purpose.js.map +1 -0
  198. package/configure/node_modules/@pie-lib/render-ui/lib/readable.js +28 -0
  199. package/configure/node_modules/@pie-lib/render-ui/lib/readable.js.map +1 -0
  200. package/configure/node_modules/@pie-lib/render-ui/lib/response-indicators.js +151 -0
  201. package/configure/node_modules/@pie-lib/render-ui/lib/response-indicators.js.map +1 -0
  202. package/configure/node_modules/@pie-lib/render-ui/lib/ui-layout.js +122 -0
  203. package/configure/node_modules/@pie-lib/render-ui/lib/ui-layout.js.map +1 -0
  204. package/configure/node_modules/@pie-lib/render-ui/lib/withUndoReset.js +181 -0
  205. package/configure/node_modules/@pie-lib/render-ui/lib/withUndoReset.js.map +1 -0
  206. package/configure/node_modules/@pie-lib/render-ui/package.json +40 -0
  207. package/configure/node_modules/@pie-lib/render-ui/src/__tests__/__snapshots__/html-and-math.test.js.snap +11 -0
  208. package/configure/node_modules/@pie-lib/render-ui/src/__tests__/__snapshots__/preview-prompt.test.jsx.snap +37 -0
  209. package/configure/node_modules/@pie-lib/render-ui/src/__tests__/__snapshots__/purpose.test.jsx.snap +42 -0
  210. package/configure/node_modules/@pie-lib/render-ui/src/__tests__/__snapshots__/readable.test.jsx.snap +64 -0
  211. package/configure/node_modules/@pie-lib/render-ui/src/__tests__/__snapshots__/response-indicators.test.jsx.snap +27 -0
  212. package/configure/node_modules/@pie-lib/render-ui/src/__tests__/color.test.js +12 -0
  213. package/configure/node_modules/@pie-lib/render-ui/src/__tests__/has-media.test.js +20 -0
  214. package/configure/node_modules/@pie-lib/render-ui/src/__tests__/has-text.test.js +21 -0
  215. package/configure/node_modules/@pie-lib/render-ui/src/__tests__/html-and-math.test.js +24 -0
  216. package/configure/node_modules/@pie-lib/render-ui/src/__tests__/preview-prompt.test.jsx +56 -0
  217. package/configure/node_modules/@pie-lib/render-ui/src/__tests__/purpose.test.jsx +47 -0
  218. package/configure/node_modules/@pie-lib/render-ui/src/__tests__/readable.test.jsx +64 -0
  219. package/configure/node_modules/@pie-lib/render-ui/src/__tests__/response-indicators.test.jsx +16 -0
  220. package/configure/node_modules/@pie-lib/render-ui/src/__tests__/ui-layout.test.jsx +34 -0
  221. package/configure/node_modules/@pie-lib/render-ui/src/__tests__/withUndoReset.test.jsx +254 -0
  222. package/configure/node_modules/@pie-lib/render-ui/src/append-css-rules.js +51 -0
  223. package/configure/node_modules/@pie-lib/render-ui/src/assets/enableAudioAutoplayImage.js +1 -0
  224. package/configure/node_modules/@pie-lib/render-ui/src/collapsible/__tests__/__snapshots__/index.test.jsx.snap +18 -0
  225. package/configure/node_modules/@pie-lib/render-ui/src/collapsible/__tests__/index.test.jsx +13 -0
  226. package/configure/node_modules/@pie-lib/render-ui/src/collapsible/index.jsx +64 -0
  227. package/configure/node_modules/@pie-lib/render-ui/src/color.js +121 -0
  228. package/configure/node_modules/@pie-lib/render-ui/src/feedback.jsx +99 -0
  229. package/configure/node_modules/@pie-lib/render-ui/src/has-media.js +16 -0
  230. package/configure/node_modules/@pie-lib/render-ui/src/has-text.js +18 -0
  231. package/configure/node_modules/@pie-lib/render-ui/src/html-and-math.js +21 -0
  232. package/configure/node_modules/@pie-lib/render-ui/src/index.js +35 -0
  233. package/configure/node_modules/@pie-lib/render-ui/src/input-container.jsx +41 -0
  234. package/configure/node_modules/@pie-lib/render-ui/src/preview-layout.jsx +95 -0
  235. package/configure/node_modules/@pie-lib/render-ui/src/preview-prompt.jsx +254 -0
  236. package/configure/node_modules/@pie-lib/render-ui/src/purpose.jsx +17 -0
  237. package/configure/node_modules/@pie-lib/render-ui/src/readable.jsx +19 -0
  238. package/configure/node_modules/@pie-lib/render-ui/src/response-indicators.jsx +89 -0
  239. package/configure/node_modules/@pie-lib/render-ui/src/ui-layout.jsx +66 -0
  240. package/configure/node_modules/@pie-lib/render-ui/src/withUndoReset.jsx +116 -0
  241. package/configure/node_modules/@pie-lib/test-utils/CHANGELOG.json +1 -0
  242. package/configure/node_modules/@pie-lib/test-utils/CHANGELOG.md +410 -0
  243. package/configure/node_modules/@pie-lib/test-utils/NEXT.CHANGELOG.json +1 -0
  244. package/configure/node_modules/@pie-lib/test-utils/esm/index.js +39 -0
  245. package/configure/node_modules/@pie-lib/test-utils/esm/index.js.map +1 -0
  246. package/configure/node_modules/@pie-lib/test-utils/lib/index.js +40 -0
  247. package/configure/node_modules/@pie-lib/test-utils/lib/index.js.map +1 -0
  248. package/configure/node_modules/@pie-lib/test-utils/package.json +25 -0
  249. package/configure/node_modules/@pie-lib/test-utils/src/__tests__/index.test.js +45 -0
  250. package/configure/node_modules/@pie-lib/test-utils/src/index.js +18 -0
  251. package/configure/node_modules/@pie-lib/translator/CHANGELOG.json +1 -0
  252. package/configure/node_modules/@pie-lib/translator/CHANGELOG.md +282 -0
  253. package/configure/node_modules/@pie-lib/translator/NEXT.CHANGELOG.json +1 -0
  254. package/configure/node_modules/@pie-lib/translator/esm/index.js +257 -0
  255. package/configure/node_modules/@pie-lib/translator/esm/index.js.map +1 -0
  256. package/configure/node_modules/@pie-lib/translator/lib/en.js +102 -0
  257. package/configure/node_modules/@pie-lib/translator/lib/en.js.map +1 -0
  258. package/configure/node_modules/@pie-lib/translator/lib/es.js +102 -0
  259. package/configure/node_modules/@pie-lib/translator/lib/es.js.map +1 -0
  260. package/configure/node_modules/@pie-lib/translator/lib/index.js +69 -0
  261. package/configure/node_modules/@pie-lib/translator/lib/index.js.map +1 -0
  262. package/configure/node_modules/@pie-lib/translator/package.json +25 -0
  263. package/configure/node_modules/@pie-lib/translator/src/en.js +99 -0
  264. package/configure/node_modules/@pie-lib/translator/src/es.js +99 -0
  265. package/configure/node_modules/@pie-lib/translator/src/index.js +43 -0
  266. package/configure/package.json +3 -3
  267. package/controller/CHANGELOG.md +8 -0
  268. package/controller/package.json +3 -3
  269. package/esm/configure.js +38602 -0
  270. package/esm/configure.js.map +1 -0
  271. package/esm/controller.js +3358 -0
  272. package/esm/controller.js.map +1 -0
  273. package/esm/element.js +2203 -0
  274. package/esm/element.js.map +1 -0
  275. package/esm/package.json +4 -0
  276. package/esm/print.js +4090 -0
  277. package/esm/print.js.map +1 -0
  278. package/module/controller.js +4973 -2252
  279. package/module/element.js +1 -1
  280. package/module/index.html +1 -1
  281. package/module/manifest.json +1 -1
  282. package/module/print.html +1 -1
  283. package/module/print.js +1 -1
  284. package/package.json +24 -6
@@ -0,0 +1,1616 @@
1
+ import * as React from 'react';
2
+ import React__default, { Component } from 'react';
3
+ import PropTypes from 'prop-types';
4
+ import * as icons from '@pie-lib/icons';
5
+ import Popover from '@material-ui/core/Popover';
6
+ import { withStyles, createMuiTheme, MuiThemeProvider } from '@material-ui/core/styles';
7
+ import { TransitionGroup, CSSTransition } from 'react-transition-group';
8
+ import classNames from 'classnames';
9
+ import green from '@material-ui/core/colors/green';
10
+ import orange from '@material-ui/core/colors/orange';
11
+ import pink from '@material-ui/core/colors/pink';
12
+ import indigo from '@material-ui/core/colors/indigo';
13
+ import red from '@material-ui/core/colors/red';
14
+ import debug from 'debug';
15
+ import { withStyles as withStyles$1 } from '@material-ui/core/styles/index';
16
+ import Collapse from '@material-ui/core/Collapse/index';
17
+ import { renderMath } from '@pie-lib/math-rendering';
18
+ import Button from '@material-ui/core/Button';
19
+ import require$$3 from '@material-ui/core/SvgIcon';
20
+ import isEmpty from 'lodash/isEmpty';
21
+ import InputLabel from '@material-ui/core/InputLabel';
22
+ import FormControl from '@material-ui/core/FormControl';
23
+
24
+ const defaults = {
25
+ TEXT: 'black',
26
+ DISABLED: 'grey',
27
+ DISABLED_SECONDARY: '#ABABAB',
28
+ CORRECT: green[500],
29
+ CORRECT_SECONDARY: green[50],
30
+ CORRECT_TERTIARY: '#0EA449',
31
+ CORRECT_WITH_ICON: '#087D38',
32
+ INCORRECT: orange[500],
33
+ INCORRECT_SECONDARY: red[50],
34
+ INCORRECT_WITH_ICON: '#BF0D00',
35
+ MISSING: red[700],
36
+ MISSING_WITH_ICON: '#6A78A1',
37
+ PRIMARY: indigo[500],
38
+ PRIMARY_LIGHT: indigo[200],
39
+ PRIMARY_DARK: indigo[800],
40
+ SECONDARY: pink.A400,
41
+ SECONDARY_LIGHT: pink[200],
42
+ SECONDARY_DARK: pink[900],
43
+ TERTIARY: '#146EB3',
44
+ TERTIARY_LIGHT: '#D0E2F0',
45
+ BACKGROUND: 'rgba(255,255,255,0)',
46
+ BACKGROUND_DARK: '#ECEDF1',
47
+ DROPDOWN_BACKGROUND: '#E0E1E6',
48
+ // this is used for inline-dropdown
49
+ // this is only used for multi-trait-rubric, we might want to use BACKGROUND_DARK instead
50
+ SECONDARY_BACKGROUND: 'rgba(241,241,241,1)',
51
+ BORDER: '#9A9A9A',
52
+ BORDER_LIGHT: '#D1D1D1',
53
+ BORDER_DARK: '#646464',
54
+ BORDER_GRAY: '#7E8494',
55
+ BLACK: '#000000',
56
+ WHITE: '#ffffff',
57
+ TRANSPARENT: 'transparent',
58
+ // this is used for multiple-choice accessibility
59
+ FOCUS_CHECKED: '#BBDEFB',
60
+ FOCUS_CHECKED_BORDER: '#1565C0',
61
+ FOCUS_UNCHECKED: '#E0E0E0',
62
+ FOCUS_UNCHECKED_BORDER: '#757575',
63
+ // this is used for select text tokens
64
+ BLUE_GREY100: '#F3F5F7',
65
+ BLUE_GREY300: '#C0C3CF',
66
+ BLUE_GREY600: '#7E8494',
67
+ BLUE_GREY900: '#152452',
68
+ // this is used for charting
69
+ FADED_PRIMARY: '#DCDAFB'
70
+ };
71
+ Object.freeze(defaults);
72
+ const v = prefix => (...args) => {
73
+ const fallback = args.pop();
74
+ return args.reduceRight((acc, v) => {
75
+ return `var(--${prefix}-${v}, ${acc})`;
76
+ }, fallback);
77
+ };
78
+ const pv = v('pie');
79
+ const text = () => pv('text', defaults.TEXT);
80
+ const disabled = () => pv('disabled', defaults.DISABLED);
81
+ const disabledSecondary = () => pv('disabled-secondary', defaults.DISABLED_SECONDARY);
82
+ const correct = () => pv('correct', defaults.CORRECT);
83
+ const correctSecondary = () => pv('correct-secondary', defaults.CORRECT_SECONDARY);
84
+ const correctTertiary = () => pv('correct-tertiary', defaults.CORRECT_TERTIARY);
85
+ const correctWithIcon = () => pv('correct-icon', defaults.CORRECT_WITH_ICON);
86
+ const incorrect = () => pv('incorrect', defaults.INCORRECT);
87
+ const incorrectWithIcon = () => pv('incorrect-icon', defaults.INCORRECT_WITH_ICON);
88
+ const incorrectSecondary = () => pv('incorrect-secondary', defaults.INCORRECT_SECONDARY);
89
+ const missing = () => pv('missing', defaults.MISSING);
90
+ const missingWithIcon = () => pv('missing-icon', defaults.MISSING_WITH_ICON);
91
+ const primary = () => pv('primary', defaults.PRIMARY);
92
+ const primaryLight = () => pv('primary-light', defaults.PRIMARY_LIGHT);
93
+ const primaryDark = () => pv('primary-dark', defaults.PRIMARY_DARK);
94
+ const primaryText = () => pv('primary-text', 'text', defaults.TEXT);
95
+ const fadedPrimary = () => pv('faded-primary', defaults.FADED_PRIMARY);
96
+ const secondary = () => pv('secondary', defaults.SECONDARY);
97
+ const secondaryLight = () => pv('secondary-light', defaults.SECONDARY_LIGHT);
98
+ const secondaryDark = () => pv('secondary-dark', defaults.SECONDARY_DARK);
99
+ const secondaryText = () => pv('secondary-text', 'text', defaults.TEXT);
100
+ const background = () => pv('background', defaults.BACKGROUND);
101
+ const backgroundDark = () => pv('background-dark', defaults.BACKGROUND_DARK);
102
+ const secondaryBackground = () => pv('secondary-background', defaults.SECONDARY_BACKGROUND);
103
+ const dropdownBackground = () => pv('dropdown-background', defaults.DROPDOWN_BACKGROUND);
104
+ const tertiary = () => pv('tertiary', defaults.TERTIARY);
105
+ const tertiaryLight = () => pv('tertiary-light', defaults.TERTIARY_LIGHT);
106
+ const border = () => pv('border', defaults.BORDER);
107
+ const borderLight = () => pv('border-light', defaults.BORDER_LIGHT);
108
+ const borderDark = () => pv('border-dark', defaults.BORDER_DARK);
109
+ const borderGray = () => pv('border-gray', defaults.BORDER_GRAY);
110
+ const black = () => pv('black', defaults.BLACK);
111
+ const white = () => pv('white', defaults.WHITE);
112
+ const transparent = () => defaults.TRANSPARENT;
113
+ const focusChecked = () => pv('focus-checked', defaults.FOCUS_CHECKED);
114
+ const focusCheckedBorder = () => pv('focus-checked-border', defaults.FOCUS_CHECKED_BORDER);
115
+ const focusUnchecked = () => pv('focus-unchecked', defaults.FOCUS_UNCHECKED);
116
+ const focusUncheckedBorder = () => pv('focus-unchecked-border', defaults.FOCUS_UNCHECKED_BORDER);
117
+ const blueGrey100 = () => pv('blue-grey-100', defaults.BLUE_GREY100);
118
+ const blueGrey300 = () => pv('blue-grey-300', defaults.BLUE_GREY300);
119
+ const blueGrey600 = () => pv('blue-grey-600', defaults.BLUE_GREY600);
120
+ const blueGrey900 = () => pv('blue-grey-900', defaults.BLUE_GREY900);
121
+ const visualElementsColors = {
122
+ AXIS_LINE_COLOR: '#5A53C9',
123
+ ROLLOVER_FILL_BAR_COLOR: '#050F2D',
124
+ GRIDLINES_COLOR: '#8E88EA',
125
+ PLOT_FILL_COLOR: '#1463B3'
126
+ };
127
+
128
+ var color = /*#__PURE__*/Object.freeze({
129
+ __proto__: null,
130
+ background: background,
131
+ backgroundDark: backgroundDark,
132
+ black: black,
133
+ blueGrey100: blueGrey100,
134
+ blueGrey300: blueGrey300,
135
+ blueGrey600: blueGrey600,
136
+ blueGrey900: blueGrey900,
137
+ border: border,
138
+ borderDark: borderDark,
139
+ borderGray: borderGray,
140
+ borderLight: borderLight,
141
+ correct: correct,
142
+ correctSecondary: correctSecondary,
143
+ correctTertiary: correctTertiary,
144
+ correctWithIcon: correctWithIcon,
145
+ defaults: defaults,
146
+ disabled: disabled,
147
+ disabledSecondary: disabledSecondary,
148
+ dropdownBackground: dropdownBackground,
149
+ fadedPrimary: fadedPrimary,
150
+ focusChecked: focusChecked,
151
+ focusCheckedBorder: focusCheckedBorder,
152
+ focusUnchecked: focusUnchecked,
153
+ focusUncheckedBorder: focusUncheckedBorder,
154
+ incorrect: incorrect,
155
+ incorrectSecondary: incorrectSecondary,
156
+ incorrectWithIcon: incorrectWithIcon,
157
+ missing: missing,
158
+ missingWithIcon: missingWithIcon,
159
+ primary: primary,
160
+ primaryDark: primaryDark,
161
+ primaryLight: primaryLight,
162
+ primaryText: primaryText,
163
+ secondary: secondary,
164
+ secondaryBackground: secondaryBackground,
165
+ secondaryDark: secondaryDark,
166
+ secondaryLight: secondaryLight,
167
+ secondaryText: secondaryText,
168
+ tertiary: tertiary,
169
+ tertiaryLight: tertiaryLight,
170
+ text: text,
171
+ transparent: transparent,
172
+ v: v,
173
+ visualElementsColors: visualElementsColors,
174
+ white: white
175
+ });
176
+
177
+ /**
178
+ * Lifted from multiple-choice - TODO: create a shared package for it.
179
+ */
180
+ const styleSheet = {
181
+ corespringFeedback: {
182
+ transformOrigin: '0% 0px 0px',
183
+ width: '100%',
184
+ display: 'block',
185
+ overflow: 'hidden',
186
+ '&:.incorrect': {
187
+ color: '#946202'
188
+ }
189
+ },
190
+ content: {
191
+ '-webkit-font-smoothing': 'antialiased',
192
+ backgroundColor: `var(--feedback-bg-color, ${disabled()})`,
193
+ borderRadius: '4px',
194
+ fontFamily: '"Roboto", "Noto", sans-serif',
195
+ lineHeight: '25px',
196
+ margin: '0px',
197
+ padding: '10px',
198
+ verticalAlign: 'middle',
199
+ color: 'var(--feedback-color, white)'
200
+ },
201
+ correct: {
202
+ backgroundColor: `var(--feedback-correct-bg-color, ${correct()})`
203
+ },
204
+ incorrect: {
205
+ backgroundColor: `var(--feedback-incorrect-bg-color, ${incorrect()})`
206
+ },
207
+ feedbackEnter: {
208
+ height: '1px'
209
+ },
210
+ feedbackEnterActive: {
211
+ height: '45px',
212
+ transition: 'height 500ms'
213
+ },
214
+ feedbackLeave: {
215
+ height: '45px'
216
+ },
217
+ feedbackLeaveActive: {
218
+ height: '1px',
219
+ transition: 'height 200ms'
220
+ }
221
+ };
222
+ class Feedback extends React__default.Component {
223
+ render() {
224
+ const {
225
+ correctness,
226
+ feedback,
227
+ classes
228
+ } = this.props;
229
+
230
+ function chooseFeedback(correctness) {
231
+ if (correctness && feedback) {
232
+ return /*#__PURE__*/React__default.createElement(CSSTransition, {
233
+ classNames: {
234
+ enter: classes.feedbackEnter,
235
+ enterActive: classes.feedbackEnterActive,
236
+ leave: classes.feedbackLeave,
237
+ leaveActive: classes.feedbackLeaveActive
238
+ },
239
+ key: "hasFeedback",
240
+ timeout: {
241
+ enter: 500,
242
+ exit: 300
243
+ }
244
+ }, /*#__PURE__*/React__default.createElement("div", {
245
+ className: classes.corespringFeedback
246
+ }, /*#__PURE__*/React__default.createElement("div", {
247
+ className: classNames(classes.content, classes[correctness]),
248
+ dangerouslySetInnerHTML: {
249
+ __html: feedback
250
+ }
251
+ })));
252
+ } else {
253
+ return null;
254
+ }
255
+ }
256
+
257
+ return /*#__PURE__*/React__default.createElement("div", null, /*#__PURE__*/React__default.createElement(TransitionGroup, null, chooseFeedback(correctness)));
258
+ }
259
+
260
+ }
261
+ Feedback.propTypes = {
262
+ correctness: PropTypes.string,
263
+ feedback: PropTypes.string,
264
+ classes: PropTypes.object.isRequired
265
+ };
266
+ var Feedback$1 = withStyles(styleSheet, {
267
+ name: 'Feedback'
268
+ })(Feedback);
269
+
270
+ const log = debug('pie-libs:render-ui:response-indicators');
271
+
272
+ const styles$4 = () => ({
273
+ responseIndicator: {
274
+ cursor: 'pointer'
275
+ },
276
+ paper: {
277
+ padding: '0',
278
+ borderRadius: '4px'
279
+ },
280
+ popover: {
281
+ cursor: 'pointer'
282
+ },
283
+ popperClose: {
284
+ cursor: 'pointer'
285
+ }
286
+ });
287
+
288
+ const BuildIndicator = (Icon, correctness) => {
289
+ class RawIndicator extends React__default.Component {
290
+ constructor(props) {
291
+ super(props);
292
+
293
+ this.handlePopoverOpen = event => {
294
+ log('[handlePopoverOpen]', event.target);
295
+ this.setState({
296
+ anchorEl: event.target
297
+ });
298
+ };
299
+
300
+ this.handlePopoverClose = () => {
301
+ this.setState({
302
+ anchorEl: null
303
+ });
304
+ };
305
+
306
+ this.state = {};
307
+ }
308
+
309
+ render() {
310
+ const {
311
+ feedback,
312
+ classes
313
+ } = this.props;
314
+ const {
315
+ anchorEl
316
+ } = this.state;
317
+ return /*#__PURE__*/React__default.createElement("div", {
318
+ className: feedback && classes.responseIndicator
319
+ }, /*#__PURE__*/React__default.createElement("span", {
320
+ ref: r => this.icon = r,
321
+ onClick: this.handlePopoverOpen
322
+ }, /*#__PURE__*/React__default.createElement(Icon, null)), feedback && /*#__PURE__*/React__default.createElement(Popover, {
323
+ className: classes.popover,
324
+ classes: {
325
+ paper: classes.paper
326
+ },
327
+ open: !!anchorEl,
328
+ anchorEl: anchorEl,
329
+ anchorOrigin: {
330
+ vertical: 'bottom',
331
+ horizontal: 'left'
332
+ },
333
+ transformOrigin: {
334
+ vertical: 'top',
335
+ horizontal: 'left'
336
+ },
337
+ onClose: this.handlePopoverClose
338
+ }, /*#__PURE__*/React__default.createElement(Feedback$1, {
339
+ feedback: feedback,
340
+ correctness: correctness
341
+ })));
342
+ }
343
+
344
+ }
345
+
346
+ RawIndicator.propTypes = {
347
+ feedback: PropTypes.string,
348
+ classes: PropTypes.object.isRequired
349
+ };
350
+ return withStyles(styles$4)(RawIndicator);
351
+ };
352
+
353
+ const Correct = BuildIndicator(icons.Correct, 'correct');
354
+ const Incorrect = BuildIndicator(icons.Incorrect, 'incorrect');
355
+ const PartiallyCorrect = BuildIndicator(icons.PartiallyCorrect, 'partially-correct');
356
+ const NothingSubmitted = BuildIndicator(icons.NothingSubmitted, 'nothing-submitted');
357
+
358
+ var responseIndicators = /*#__PURE__*/Object.freeze({
359
+ __proto__: null,
360
+ Correct: Correct,
361
+ Incorrect: Incorrect,
362
+ NothingSubmitted: NothingSubmitted,
363
+ PartiallyCorrect: PartiallyCorrect
364
+ });
365
+
366
+ class Collapsible extends React__default.Component {
367
+ constructor(...args) {
368
+ super(...args);
369
+ this.state = {
370
+ expanded: false
371
+ };
372
+
373
+ this.toggleExpanded = () => {
374
+ this.setState(state => ({
375
+ expanded: !state.expanded
376
+ }));
377
+ };
378
+ }
379
+
380
+ componentDidMount() {
381
+ renderMath(this.root);
382
+ }
383
+
384
+ componentDidUpdate() {
385
+ renderMath(this.root);
386
+ }
387
+
388
+ render() {
389
+ const {
390
+ classes,
391
+ labels,
392
+ children,
393
+ className
394
+ } = this.props;
395
+ const title = this.state.expanded ? labels.visible || 'Hide' : labels.hidden || 'Show';
396
+ return /*#__PURE__*/React__default.createElement("div", {
397
+ className: className,
398
+ ref: r => this.root = r
399
+ }, /*#__PURE__*/React__default.createElement("div", {
400
+ onClick: this.toggleExpanded
401
+ }, /*#__PURE__*/React__default.createElement("span", {
402
+ className: classes.title
403
+ }, title)), /*#__PURE__*/React__default.createElement(Collapse, {
404
+ in: this.state.expanded,
405
+ timeout: "auto",
406
+ unmountOnExit: true,
407
+ className: classes.collapsible
408
+ }, children));
409
+ }
410
+
411
+ }
412
+ Collapsible.propTypes = {
413
+ classes: PropTypes.object.isRequired,
414
+ className: PropTypes.string,
415
+ children: PropTypes.object,
416
+ labels: PropTypes.shape({
417
+ visible: PropTypes.string,
418
+ hidden: PropTypes.string
419
+ })
420
+ };
421
+ Collapsible.defaultProps = {
422
+ labels: {}
423
+ };
424
+ var index = withStyles$1(theme => ({
425
+ title: {
426
+ color: theme.palette.primary.light,
427
+ borderBottom: `1px dotted ${theme.palette.primary.light}`,
428
+ cursor: 'pointer'
429
+ },
430
+ collapsible: {
431
+ paddingTop: theme.spacing.unit * 2
432
+ }
433
+ }))(Collapsible);
434
+
435
+ function _extends() {
436
+ _extends = Object.assign || function (target) {
437
+ for (var i = 1; i < arguments.length; i++) {
438
+ var source = arguments[i];
439
+
440
+ for (var key in source) {
441
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
442
+ target[key] = source[key];
443
+ }
444
+ }
445
+ }
446
+
447
+ return target;
448
+ };
449
+
450
+ return _extends.apply(this, arguments);
451
+ }
452
+
453
+ function _objectWithoutPropertiesLoose(source, excluded) {
454
+ if (source == null) return {};
455
+ var target = {};
456
+ var sourceKeys = Object.keys(source);
457
+ var key, i;
458
+
459
+ for (i = 0; i < sourceKeys.length; i++) {
460
+ key = sourceKeys[i];
461
+ if (excluded.indexOf(key) >= 0) continue;
462
+ target[key] = source[key];
463
+ }
464
+
465
+ return target;
466
+ }
467
+
468
+ function getDefaultExportFromCjs (x) {
469
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
470
+ }
471
+
472
+ var Restore$1 = {};
473
+
474
+ var interopRequireDefault = {exports: {}};
475
+
476
+ var hasRequiredInteropRequireDefault;
477
+
478
+ function requireInteropRequireDefault () {
479
+ if (hasRequiredInteropRequireDefault) return interopRequireDefault.exports;
480
+ hasRequiredInteropRequireDefault = 1;
481
+ (function (module) {
482
+ function _interopRequireDefault(obj) {
483
+ return obj && obj.__esModule ? obj : {
484
+ "default": obj
485
+ };
486
+ }
487
+
488
+ module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports;
489
+ } (interopRequireDefault));
490
+ return interopRequireDefault.exports;
491
+ }
492
+
493
+ var createSvgIcon = {};
494
+
495
+ var pure = {};
496
+
497
+ var shouldUpdate = {};
498
+
499
+ var inheritsLoose = {exports: {}};
500
+
501
+ var setPrototypeOf = {exports: {}};
502
+
503
+ var hasRequiredSetPrototypeOf;
504
+
505
+ function requireSetPrototypeOf () {
506
+ if (hasRequiredSetPrototypeOf) return setPrototypeOf.exports;
507
+ hasRequiredSetPrototypeOf = 1;
508
+ (function (module) {
509
+ function _setPrototypeOf(o, p) {
510
+ module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
511
+ o.__proto__ = p;
512
+ return o;
513
+ }, module.exports.__esModule = true, module.exports["default"] = module.exports;
514
+ return _setPrototypeOf(o, p);
515
+ }
516
+
517
+ module.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports;
518
+ } (setPrototypeOf));
519
+ return setPrototypeOf.exports;
520
+ }
521
+
522
+ var hasRequiredInheritsLoose;
523
+
524
+ function requireInheritsLoose () {
525
+ if (hasRequiredInheritsLoose) return inheritsLoose.exports;
526
+ hasRequiredInheritsLoose = 1;
527
+ (function (module) {
528
+ var setPrototypeOf = requireSetPrototypeOf();
529
+
530
+ function _inheritsLoose(subClass, superClass) {
531
+ subClass.prototype = Object.create(superClass.prototype);
532
+ subClass.prototype.constructor = subClass;
533
+ setPrototypeOf(subClass, superClass);
534
+ }
535
+
536
+ module.exports = _inheritsLoose, module.exports.__esModule = true, module.exports["default"] = module.exports;
537
+ } (inheritsLoose));
538
+ return inheritsLoose.exports;
539
+ }
540
+
541
+ var setDisplayName = {};
542
+
543
+ var setStatic = {};
544
+
545
+ var hasRequiredSetStatic;
546
+
547
+ function requireSetStatic () {
548
+ if (hasRequiredSetStatic) return setStatic;
549
+ hasRequiredSetStatic = 1;
550
+
551
+ setStatic.__esModule = true;
552
+ setStatic.default = void 0;
553
+
554
+ var setStatic$1 = function setStatic(key, value) {
555
+ return function (BaseComponent) {
556
+ /* eslint-disable no-param-reassign */
557
+ BaseComponent[key] = value;
558
+ /* eslint-enable no-param-reassign */
559
+
560
+ return BaseComponent;
561
+ };
562
+ };
563
+
564
+ var _default = setStatic$1;
565
+ setStatic.default = _default;
566
+ return setStatic;
567
+ }
568
+
569
+ var hasRequiredSetDisplayName;
570
+
571
+ function requireSetDisplayName () {
572
+ if (hasRequiredSetDisplayName) return setDisplayName;
573
+ hasRequiredSetDisplayName = 1;
574
+
575
+ var _interopRequireDefault = requireInteropRequireDefault();
576
+
577
+ setDisplayName.__esModule = true;
578
+ setDisplayName.default = void 0;
579
+
580
+ var _setStatic = _interopRequireDefault(requireSetStatic());
581
+
582
+ var setDisplayName$1 = function setDisplayName(displayName) {
583
+ return (0, _setStatic.default)('displayName', displayName);
584
+ };
585
+
586
+ var _default = setDisplayName$1;
587
+ setDisplayName.default = _default;
588
+ return setDisplayName;
589
+ }
590
+
591
+ var wrapDisplayName = {};
592
+
593
+ var getDisplayName = {};
594
+
595
+ var hasRequiredGetDisplayName;
596
+
597
+ function requireGetDisplayName () {
598
+ if (hasRequiredGetDisplayName) return getDisplayName;
599
+ hasRequiredGetDisplayName = 1;
600
+
601
+ getDisplayName.__esModule = true;
602
+ getDisplayName.default = void 0;
603
+
604
+ var getDisplayName$1 = function getDisplayName(Component) {
605
+ if (typeof Component === 'string') {
606
+ return Component;
607
+ }
608
+
609
+ if (!Component) {
610
+ return undefined;
611
+ }
612
+
613
+ return Component.displayName || Component.name || 'Component';
614
+ };
615
+
616
+ var _default = getDisplayName$1;
617
+ getDisplayName.default = _default;
618
+ return getDisplayName;
619
+ }
620
+
621
+ var hasRequiredWrapDisplayName;
622
+
623
+ function requireWrapDisplayName () {
624
+ if (hasRequiredWrapDisplayName) return wrapDisplayName;
625
+ hasRequiredWrapDisplayName = 1;
626
+
627
+ var _interopRequireDefault = requireInteropRequireDefault();
628
+
629
+ wrapDisplayName.__esModule = true;
630
+ wrapDisplayName.default = void 0;
631
+
632
+ var _getDisplayName = _interopRequireDefault(requireGetDisplayName());
633
+
634
+ var wrapDisplayName$1 = function wrapDisplayName(BaseComponent, hocName) {
635
+ return hocName + "(" + (0, _getDisplayName.default)(BaseComponent) + ")";
636
+ };
637
+
638
+ var _default = wrapDisplayName$1;
639
+ wrapDisplayName.default = _default;
640
+ return wrapDisplayName;
641
+ }
642
+
643
+ var hasRequiredShouldUpdate;
644
+
645
+ function requireShouldUpdate () {
646
+ if (hasRequiredShouldUpdate) return shouldUpdate;
647
+ hasRequiredShouldUpdate = 1;
648
+
649
+ var _interopRequireDefault = requireInteropRequireDefault();
650
+
651
+ shouldUpdate.__esModule = true;
652
+ shouldUpdate.default = void 0;
653
+
654
+ var _inheritsLoose2 = _interopRequireDefault(requireInheritsLoose());
655
+
656
+ var _react = React__default;
657
+
658
+ var _setDisplayName = _interopRequireDefault(requireSetDisplayName());
659
+
660
+ var _wrapDisplayName = _interopRequireDefault(requireWrapDisplayName());
661
+
662
+ var shouldUpdate$1 = function shouldUpdate(test) {
663
+ return function (BaseComponent) {
664
+ var factory = (0, _react.createFactory)(BaseComponent);
665
+
666
+ var ShouldUpdate =
667
+ /*#__PURE__*/
668
+ function (_Component) {
669
+ (0, _inheritsLoose2.default)(ShouldUpdate, _Component);
670
+
671
+ function ShouldUpdate() {
672
+ return _Component.apply(this, arguments) || this;
673
+ }
674
+
675
+ var _proto = ShouldUpdate.prototype;
676
+
677
+ _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {
678
+ return test(this.props, nextProps);
679
+ };
680
+
681
+ _proto.render = function render() {
682
+ return factory(this.props);
683
+ };
684
+
685
+ return ShouldUpdate;
686
+ }(_react.Component);
687
+
688
+ if (process.env.NODE_ENV !== 'production') {
689
+ return (0, _setDisplayName.default)((0, _wrapDisplayName.default)(BaseComponent, 'shouldUpdate'))(ShouldUpdate);
690
+ }
691
+
692
+ return ShouldUpdate;
693
+ };
694
+ };
695
+
696
+ var _default = shouldUpdate$1;
697
+ shouldUpdate.default = _default;
698
+ return shouldUpdate;
699
+ }
700
+
701
+ var shallowEqual = {};
702
+
703
+ /**
704
+ * Copyright (c) 2013-present, Facebook, Inc.
705
+ *
706
+ * This source code is licensed under the MIT license found in the
707
+ * LICENSE file in the root directory of this source tree.
708
+ *
709
+ * @typechecks
710
+ *
711
+ */
712
+
713
+ var shallowEqual_1;
714
+ var hasRequiredShallowEqual$1;
715
+
716
+ function requireShallowEqual$1 () {
717
+ if (hasRequiredShallowEqual$1) return shallowEqual_1;
718
+ hasRequiredShallowEqual$1 = 1;
719
+
720
+ var hasOwnProperty = Object.prototype.hasOwnProperty;
721
+
722
+ /**
723
+ * inlined Object.is polyfill to avoid requiring consumers ship their own
724
+ * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
725
+ */
726
+ function is(x, y) {
727
+ // SameValue algorithm
728
+ if (x === y) {
729
+ // Steps 1-5, 7-10
730
+ // Steps 6.b-6.e: +0 != -0
731
+ // Added the nonzero y check to make Flow happy, but it is redundant
732
+ return x !== 0 || y !== 0 || 1 / x === 1 / y;
733
+ } else {
734
+ // Step 6.a: NaN == NaN
735
+ return x !== x && y !== y;
736
+ }
737
+ }
738
+
739
+ /**
740
+ * Performs equality by iterating through keys on an object and returning false
741
+ * when any key has values which are not strictly equal between the arguments.
742
+ * Returns true when the values of all keys are strictly equal.
743
+ */
744
+ function shallowEqual(objA, objB) {
745
+ if (is(objA, objB)) {
746
+ return true;
747
+ }
748
+
749
+ if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {
750
+ return false;
751
+ }
752
+
753
+ var keysA = Object.keys(objA);
754
+ var keysB = Object.keys(objB);
755
+
756
+ if (keysA.length !== keysB.length) {
757
+ return false;
758
+ }
759
+
760
+ // Test for A's keys different from B.
761
+ for (var i = 0; i < keysA.length; i++) {
762
+ if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {
763
+ return false;
764
+ }
765
+ }
766
+
767
+ return true;
768
+ }
769
+
770
+ shallowEqual_1 = shallowEqual;
771
+ return shallowEqual_1;
772
+ }
773
+
774
+ var hasRequiredShallowEqual;
775
+
776
+ function requireShallowEqual () {
777
+ if (hasRequiredShallowEqual) return shallowEqual;
778
+ hasRequiredShallowEqual = 1;
779
+
780
+ var _interopRequireDefault = requireInteropRequireDefault();
781
+
782
+ shallowEqual.__esModule = true;
783
+ shallowEqual.default = void 0;
784
+
785
+ var _shallowEqual = _interopRequireDefault(requireShallowEqual$1());
786
+
787
+ var _default = _shallowEqual.default;
788
+ shallowEqual.default = _default;
789
+ return shallowEqual;
790
+ }
791
+
792
+ var hasRequiredPure;
793
+
794
+ function requirePure () {
795
+ if (hasRequiredPure) return pure;
796
+ hasRequiredPure = 1;
797
+
798
+ var _interopRequireDefault = requireInteropRequireDefault();
799
+
800
+ pure.__esModule = true;
801
+ pure.default = void 0;
802
+
803
+ var _shouldUpdate = _interopRequireDefault(requireShouldUpdate());
804
+
805
+ var _shallowEqual = _interopRequireDefault(requireShallowEqual());
806
+
807
+ var _setDisplayName = _interopRequireDefault(requireSetDisplayName());
808
+
809
+ var _wrapDisplayName = _interopRequireDefault(requireWrapDisplayName());
810
+
811
+ var pure$1 = function pure(BaseComponent) {
812
+ var hoc = (0, _shouldUpdate.default)(function (props, nextProps) {
813
+ return !(0, _shallowEqual.default)(props, nextProps);
814
+ });
815
+
816
+ if (process.env.NODE_ENV !== 'production') {
817
+ return (0, _setDisplayName.default)((0, _wrapDisplayName.default)(BaseComponent, 'pure'))(hoc(BaseComponent));
818
+ }
819
+
820
+ return hoc(BaseComponent);
821
+ };
822
+
823
+ var _default = pure$1;
824
+ pure.default = _default;
825
+ return pure;
826
+ }
827
+
828
+ var hasRequiredCreateSvgIcon;
829
+
830
+ function requireCreateSvgIcon () {
831
+ if (hasRequiredCreateSvgIcon) return createSvgIcon;
832
+ hasRequiredCreateSvgIcon = 1;
833
+
834
+ var _interopRequireDefault = requireInteropRequireDefault();
835
+
836
+ Object.defineProperty(createSvgIcon, "__esModule", {
837
+ value: true
838
+ });
839
+ createSvgIcon.default = void 0;
840
+
841
+ var _react = _interopRequireDefault(React__default);
842
+
843
+ var _pure = _interopRequireDefault(requirePure());
844
+
845
+ var _SvgIcon = _interopRequireDefault(require$$3);
846
+
847
+ function createSvgIcon$1(path, displayName) {
848
+ var Icon = function Icon(props) {
849
+ return _react.default.createElement(_SvgIcon.default, props, path);
850
+ };
851
+
852
+ Icon.displayName = "".concat(displayName, "Icon");
853
+ Icon = (0, _pure.default)(Icon);
854
+ Icon.muiName = 'SvgIcon';
855
+ return Icon;
856
+ }
857
+ var _default = createSvgIcon$1;
858
+ createSvgIcon.default = _default;
859
+ return createSvgIcon;
860
+ }
861
+
862
+ var hasRequiredRestore;
863
+
864
+ function requireRestore () {
865
+ if (hasRequiredRestore) return Restore$1;
866
+ hasRequiredRestore = 1;
867
+
868
+ var _interopRequireDefault = requireInteropRequireDefault();
869
+
870
+ Object.defineProperty(Restore$1, "__esModule", {
871
+ value: true
872
+ });
873
+ Restore$1.default = void 0;
874
+
875
+ var _react = _interopRequireDefault(React__default);
876
+
877
+ var _createSvgIcon = _interopRequireDefault(/*@__PURE__*/ requireCreateSvgIcon());
878
+
879
+ var _default = (0, _createSvgIcon.default)(_react.default.createElement(_react.default.Fragment, null, _react.default.createElement("path", {
880
+ fill: "none",
881
+ d: "M0 0h24v24H0z"
882
+ }), _react.default.createElement("path", {
883
+ d: "M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9zm-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8H12z"
884
+ })), 'Restore');
885
+
886
+ Restore$1.default = _default;
887
+ return Restore$1;
888
+ }
889
+
890
+ var RestoreExports = /*@__PURE__*/ requireRestore();
891
+ var Restore = /*@__PURE__*/getDefaultExportFromCjs(RestoreExports);
892
+
893
+ var Undo$1 = {};
894
+
895
+ var hasRequiredUndo;
896
+
897
+ function requireUndo () {
898
+ if (hasRequiredUndo) return Undo$1;
899
+ hasRequiredUndo = 1;
900
+
901
+ var _interopRequireDefault = requireInteropRequireDefault();
902
+
903
+ Object.defineProperty(Undo$1, "__esModule", {
904
+ value: true
905
+ });
906
+ Undo$1.default = void 0;
907
+
908
+ var _react = _interopRequireDefault(React__default);
909
+
910
+ var _createSvgIcon = _interopRequireDefault(/*@__PURE__*/ requireCreateSvgIcon());
911
+
912
+ var _default = (0, _createSvgIcon.default)(_react.default.createElement(_react.default.Fragment, null, _react.default.createElement("path", {
913
+ fill: "none",
914
+ d: "M0 0h24v24H0z"
915
+ }), _react.default.createElement("path", {
916
+ d: "M12.5 8c-2.65 0-5.05.99-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"
917
+ })), 'Undo');
918
+
919
+ Undo$1.default = _default;
920
+ return Undo$1;
921
+ }
922
+
923
+ var UndoExports = /*@__PURE__*/ requireUndo();
924
+ var Undo = /*@__PURE__*/getDefaultExportFromCjs(UndoExports);
925
+
926
+ const _excluded$1 = ["classes"];
927
+
928
+ const styles$3 = theme => ({
929
+ wrapper: {
930
+ display: 'flex',
931
+ flexDirection: 'column'
932
+ },
933
+ resetUndoContainer: {
934
+ display: 'flex',
935
+ alignItems: 'center',
936
+ justifyContent: 'center'
937
+ },
938
+ icon: {
939
+ width: '24px',
940
+ height: '24px',
941
+ color: 'gray',
942
+ marginRight: theme.spacing.unit
943
+ },
944
+ buttonContainer: {
945
+ display: 'flex',
946
+ alignItems: 'center',
947
+ marginLeft: theme.spacing.unit * 3,
948
+ marginRight: theme.spacing.unit * 3
949
+ }
950
+ });
951
+ /**
952
+ * HOC that adds undo and reset functionality for session values
953
+ */
954
+
955
+
956
+ const withUndoReset = WrappedComponent => {
957
+ class WithUndoReset extends React.Component {
958
+ constructor(props) {
959
+ super(props);
960
+
961
+ this.onSessionChange = session => {
962
+ this.setState(state => ({
963
+ session,
964
+ changes: [...state.changes, session]
965
+ }), () => this.props.onSessionChange(session));
966
+ };
967
+
968
+ this.onUndo = () => {
969
+ this.setState(state => {
970
+ const newChanges = [...state.changes];
971
+ newChanges.pop();
972
+ return {
973
+ changes: newChanges,
974
+ session: newChanges.length ? newChanges[newChanges.length - 1] : state.sessionInitialValues
975
+ };
976
+ }, () => this.props.onSessionChange(this.state.session));
977
+ };
978
+
979
+ this.onReset = () => {
980
+ this.setState(state => ({
981
+ session: state.sessionInitialValues,
982
+ changes: []
983
+ }), () => this.props.onSessionChange(this.state.sessionInitialValues));
984
+ };
985
+
986
+ this.state = {
987
+ sessionInitialValues: JSON.parse(JSON.stringify(props.session)),
988
+ session: props.session,
989
+ changes: []
990
+ };
991
+ }
992
+
993
+ render() {
994
+ const _this$props = this.props,
995
+ {
996
+ classes
997
+ } = _this$props,
998
+ rest = _objectWithoutPropertiesLoose(_this$props, _excluded$1);
999
+
1000
+ const {
1001
+ changes,
1002
+ session
1003
+ } = this.state;
1004
+ return /*#__PURE__*/React.createElement("div", {
1005
+ className: classes.wrapper
1006
+ }, /*#__PURE__*/React.createElement("div", {
1007
+ className: classes.resetUndoContainer
1008
+ }, /*#__PURE__*/React.createElement(Button, {
1009
+ className: classes.buttonContainer,
1010
+ color: "primary",
1011
+ disabled: changes.length === 0,
1012
+ onClick: this.onUndo
1013
+ }, /*#__PURE__*/React.createElement(Undo, {
1014
+ className: classes.icon
1015
+ }), " Undo"), /*#__PURE__*/React.createElement(Button, {
1016
+ className: classes.buttonContainer,
1017
+ color: "primary",
1018
+ disabled: changes.length === 0,
1019
+ onClick: this.onReset
1020
+ }, /*#__PURE__*/React.createElement(Restore, {
1021
+ className: classes.icon
1022
+ }), " Start Over")), /*#__PURE__*/React.createElement(WrappedComponent, _extends({}, rest, {
1023
+ session: session,
1024
+ onSessionChange: this.onSessionChange
1025
+ })));
1026
+ }
1027
+
1028
+ }
1029
+
1030
+ WithUndoReset.propTypes = {
1031
+ classes: PropTypes.object,
1032
+ session: PropTypes.object,
1033
+ onSessionChange: PropTypes.func
1034
+ };
1035
+ return withStyles(styles$3)(WithUndoReset);
1036
+ };
1037
+
1038
+ class ExtraCSSRulesMixin extends React__default.Component {
1039
+ constructor(props) {
1040
+ super(props);
1041
+
1042
+ this.appendExtraStyles = () => {
1043
+ if (isEmpty(this.props.extraCSSRules) || !this.classesSheet) {
1044
+ return;
1045
+ }
1046
+
1047
+ const headElement = document.head || document.getElementsByTagName('head')[0];
1048
+
1049
+ if (!headElement) {
1050
+ return;
1051
+ }
1052
+
1053
+ if (!this.classesSheet.parentElement) {
1054
+ headElement.appendChild(this.classesSheet);
1055
+ }
1056
+
1057
+ const {
1058
+ extraCSSRules,
1059
+ classes
1060
+ } = this.props;
1061
+ this.classesSheet.innerHTML = `
1062
+ .${classes.extraCSSRules} {
1063
+ ${extraCSSRules.rules}
1064
+ }
1065
+ `;
1066
+ };
1067
+
1068
+ this.classesSheet = document.createElement('style');
1069
+ }
1070
+
1071
+ componentDidMount() {
1072
+ this.appendExtraStyles();
1073
+ }
1074
+
1075
+ }
1076
+
1077
+ ExtraCSSRulesMixin.propTypes = {
1078
+ extraCSSRules: PropTypes.shape({
1079
+ names: PropTypes.arrayOf(PropTypes.string),
1080
+ rules: PropTypes.string
1081
+ })
1082
+ };
1083
+ ExtraCSSRulesMixin.defaultProps = {
1084
+ extraCSSRules: {}
1085
+ };
1086
+
1087
+ const _excluded = ["children", "className", "classes", "fontSizeFactor"],
1088
+ _excluded2 = ["extraCSSRules"];
1089
+
1090
+ class UiLayout extends ExtraCSSRulesMixin {
1091
+ constructor(props) {
1092
+ super(props);
1093
+ this.classesSheet = document.createElement('style');
1094
+ }
1095
+
1096
+ computeStyle(fontSizeFactor) {
1097
+ const getFontSize = element => parseFloat(getComputedStyle(element).fontSize);
1098
+
1099
+ const rootFontSize = getFontSize(document.documentElement);
1100
+ const bodyFontSize = getFontSize(document.body);
1101
+ const effectiveFontSize = Math.max(rootFontSize, bodyFontSize);
1102
+ return fontSizeFactor !== 1 ? {
1103
+ fontSize: `${effectiveFontSize * fontSizeFactor}px`
1104
+ } : null;
1105
+ }
1106
+
1107
+ render() {
1108
+ const _this$props = this.props,
1109
+ {
1110
+ children,
1111
+ className,
1112
+ classes,
1113
+ fontSizeFactor
1114
+ } = _this$props,
1115
+ rest = _objectWithoutPropertiesLoose(_this$props, _excluded);
1116
+
1117
+ const finalClass = classNames(className, classes.extraCSSRules, classes.uiLayoutContainer);
1118
+
1119
+ const restProps = _objectWithoutPropertiesLoose(rest, _excluded2);
1120
+
1121
+ const style = this.computeStyle(fontSizeFactor);
1122
+ return /*#__PURE__*/React__default.createElement("div", _extends({
1123
+ className: finalClass
1124
+ }, restProps, style && {
1125
+ style
1126
+ }), children);
1127
+ }
1128
+
1129
+ }
1130
+
1131
+ UiLayout.propTypes = {
1132
+ classes: PropTypes.object,
1133
+ className: PropTypes.string,
1134
+ children: PropTypes.array,
1135
+ extraCSSRules: PropTypes.shape({
1136
+ names: PropTypes.arrayOf(PropTypes.string),
1137
+ rules: PropTypes.string
1138
+ }),
1139
+ fontSizeFactor: PropTypes.number
1140
+ };
1141
+ UiLayout.defaultProps = {
1142
+ extraCSSRules: {},
1143
+ fontSizeFactor: 1
1144
+ };
1145
+ const styles$2 = {
1146
+ extraCSSRules: {},
1147
+ // need this because some browsers set their own style on table
1148
+ uiLayoutContainer: {
1149
+ '& table, th, td': {
1150
+ fontSize: 'inherit'
1151
+ /* Ensure table elements inherit font size */
1152
+
1153
+ }
1154
+ }
1155
+ };
1156
+ const Styled$1 = withStyles(styles$2)(UiLayout);
1157
+
1158
+ class PreviewLayout extends React__default.Component {
1159
+ render() {
1160
+ const {
1161
+ children,
1162
+ classes,
1163
+ ariaLabel,
1164
+ role,
1165
+ extraCSSRules,
1166
+ fontSizeFactor
1167
+ } = this.props;
1168
+ const accessibility = ariaLabel ? {
1169
+ 'aria-label': ariaLabel,
1170
+ role
1171
+ } : {};
1172
+ return /*#__PURE__*/React__default.createElement(Styled$1, _extends({
1173
+ className: classes.container
1174
+ }, accessibility, {
1175
+ extraCSSRules: extraCSSRules,
1176
+ fontSizeFactor: fontSizeFactor
1177
+ }), children);
1178
+ }
1179
+
1180
+ }
1181
+
1182
+ PreviewLayout.propTypes = {
1183
+ ariaLabel: PropTypes.string,
1184
+ children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,
1185
+ classes: PropTypes.object,
1186
+ role: PropTypes.string,
1187
+ extraCSSRules: PropTypes.shape({
1188
+ names: PropTypes.arrayOf(PropTypes.string),
1189
+ rules: PropTypes.string
1190
+ }),
1191
+ fontSizeFactor: PropTypes.number
1192
+ };
1193
+
1194
+ const styles$1 = () => ({
1195
+ container: {
1196
+ display: 'flex',
1197
+ flexDirection: 'column',
1198
+ position: 'relative'
1199
+ }
1200
+ });
1201
+
1202
+ const theme = createMuiTheme({
1203
+ typography: {
1204
+ useNextVariants: true
1205
+ },
1206
+ palette: {
1207
+ action: {
1208
+ disabled: 'rgba(0, 0, 0, 0.54);'
1209
+ }
1210
+ },
1211
+ overrides: {
1212
+ MuiRadio: {
1213
+ root: {
1214
+ '&$checked': {
1215
+ color: '#3f51b5 !important'
1216
+ }
1217
+ }
1218
+ },
1219
+ MuiCheckbox: {
1220
+ root: {
1221
+ '&$checked': {
1222
+ color: '#3f51b5 !important'
1223
+ }
1224
+ }
1225
+ },
1226
+ MuiTabs: {
1227
+ root: {
1228
+ borderBottom: '1px solid #eee'
1229
+ }
1230
+ },
1231
+ MuiSwitch: {
1232
+ root: {
1233
+ '&$checked': {
1234
+ color: '#3f51b5 !important',
1235
+ '& + $bar': {
1236
+ backgroundColor: '#3f51b5 !important',
1237
+ opacity: 0.5
1238
+ }
1239
+ }
1240
+ }
1241
+ }
1242
+ }
1243
+ });
1244
+ const Styled = withStyles(styles$1)(PreviewLayout);
1245
+
1246
+ const RootElem = props => /*#__PURE__*/React__default.createElement(MuiThemeProvider, {
1247
+ theme: theme
1248
+ }, /*#__PURE__*/React__default.createElement(Styled, props));
1249
+
1250
+ class HtmlAndMath extends React__default.Component {
1251
+ render() {
1252
+ const {
1253
+ tag,
1254
+ className,
1255
+ html
1256
+ } = this.props;
1257
+ const Tag = tag || 'div';
1258
+ return /*#__PURE__*/React__default.createElement(Tag, {
1259
+ ref: r => this.node = r,
1260
+ className: className,
1261
+ dangerouslySetInnerHTML: {
1262
+ __html: html
1263
+ }
1264
+ });
1265
+ }
1266
+
1267
+ }
1268
+ HtmlAndMath.propTypes = {
1269
+ tag: PropTypes.string,
1270
+ className: PropTypes.string,
1271
+ html: PropTypes.string
1272
+ };
1273
+ HtmlAndMath.defaultProps = {
1274
+ tag: 'div',
1275
+ html: ''
1276
+ };
1277
+
1278
+ const RawInputContainer = props => {
1279
+ const {
1280
+ label,
1281
+ className,
1282
+ children,
1283
+ classes
1284
+ } = props;
1285
+ const names = classNames(classes.formControl, className);
1286
+ return /*#__PURE__*/React__default.createElement(FormControl, {
1287
+ className: names
1288
+ }, /*#__PURE__*/React__default.createElement(InputLabel, {
1289
+ className: classes.label,
1290
+ shrink: true
1291
+ }, label), children);
1292
+ };
1293
+
1294
+ RawInputContainer.propTypes = {
1295
+ label: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired,
1296
+ className: PropTypes.string,
1297
+ children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,
1298
+ classes: PropTypes.object.isRequired
1299
+ };
1300
+ var inputContainer = withStyles(theme => ({
1301
+ formControl: {
1302
+ marginLeft: 0,
1303
+ marginRight: 0,
1304
+ paddingBottom: theme.spacing.unit,
1305
+ flex: '1 0 auto',
1306
+ minWidth: theme.spacing.unit * 4
1307
+ },
1308
+ label: {
1309
+ fontSize: 'inherit',
1310
+ whiteSpace: 'nowrap'
1311
+ }
1312
+ }))(RawInputContainer);
1313
+
1314
+ const NEWLINE_BLOCK_REGEX = /\\embed\{newLine\}\[\]/g;
1315
+ const NEWLINE_LATEX = '\\newline ';
1316
+ class PreviewPrompt extends Component {
1317
+ constructor(...args) {
1318
+ super(...args);
1319
+
1320
+ this.parsedText = text => {
1321
+ const {
1322
+ customAudioButton
1323
+ } = this.props;
1324
+ const div = document.createElement('div');
1325
+ div.innerHTML = text;
1326
+ const audio = div.querySelector('audio');
1327
+
1328
+ if (audio) {
1329
+ const source = document.createElement('source');
1330
+ source.setAttribute('type', 'audio/mp3');
1331
+ source.setAttribute('src', audio.getAttribute('src'));
1332
+ audio.removeAttribute('src');
1333
+ audio.setAttribute('id', 'pie-prompt-audio-player');
1334
+ audio.appendChild(source);
1335
+
1336
+ if (customAudioButton) {
1337
+ audio.style.display = 'none';
1338
+ const playButton = document.createElement('div');
1339
+ playButton.id = 'play-audio-button';
1340
+ Object.assign(playButton.style, {
1341
+ cursor: 'pointer',
1342
+ display: 'block',
1343
+ width: '128px',
1344
+ height: '128px',
1345
+ backgroundImage: `url(${customAudioButton.pauseImage})`,
1346
+ backgroundSize: 'cover',
1347
+ borderRadius: '50%',
1348
+ border: '1px solid #326295'
1349
+ });
1350
+ audio.parentNode.insertBefore(playButton, audio);
1351
+ }
1352
+ }
1353
+
1354
+ return div.innerHTML;
1355
+ };
1356
+ }
1357
+
1358
+ addCustomAudioButtonControls() {
1359
+ const {
1360
+ autoplayAudioEnabled,
1361
+ customAudioButton
1362
+ } = this.props;
1363
+ const playButton = document.getElementById('play-audio-button');
1364
+ const audio = document.getElementById('pie-prompt-audio-player');
1365
+
1366
+ if (autoplayAudioEnabled && audio) {
1367
+ audio.play().then(() => {
1368
+ if (playButton && customAudioButton) {
1369
+ audio.addEventListener('ended', handleAudioEnded);
1370
+ }
1371
+ }).catch(error => {
1372
+ console.error('Error playing audio', error);
1373
+ });
1374
+ }
1375
+
1376
+ if (!playButton || !audio || !customAudioButton) return;
1377
+
1378
+ const handlePlayClick = () => {
1379
+ // if already playing, don't play again
1380
+ if (!audio.paused) return;
1381
+ if (playButton.style.backgroundImage.includes(customAudioButton.pauseImage)) return;
1382
+ audio.play();
1383
+ };
1384
+
1385
+ const handleAudioEnded = () => {
1386
+ playButton.style.backgroundImage = `url(${customAudioButton.playImage})`;
1387
+ };
1388
+
1389
+ const handleAudioPlay = () => {
1390
+ Object.assign(playButton.style, {
1391
+ backgroundImage: `url(${customAudioButton.pauseImage})`,
1392
+ border: '1px solid #ccc'
1393
+ });
1394
+ };
1395
+
1396
+ const handleAudioPause = () => {
1397
+ Object.assign(playButton.style, {
1398
+ backgroundImage: `url(${customAudioButton.playImage})`,
1399
+ border: '1px solid #326295'
1400
+ });
1401
+ };
1402
+
1403
+ playButton.addEventListener('click', handlePlayClick);
1404
+ audio.addEventListener('play', handleAudioPlay);
1405
+ audio.addEventListener('pause', handleAudioPause);
1406
+ audio.addEventListener('ended', handleAudioEnded); // store event handler references so they can be removed later
1407
+
1408
+ this._handlePlayClick = handlePlayClick;
1409
+ this._handleAudioPlay = handleAudioPlay;
1410
+ this._handleAudioPause = handleAudioPause;
1411
+ this._handleAudioEnded = handleAudioEnded;
1412
+ }
1413
+
1414
+ removeCustomAudioButtonListeners() {
1415
+ const playButton = document.getElementById('play-audio-button');
1416
+ const audio = document.querySelector('audio');
1417
+ if (!playButton || !audio) return; // remove event listeners using stored references
1418
+
1419
+ playButton.removeEventListener('click', this._handlePlayClick);
1420
+ audio.removeEventListener('play', this._handleAudioPlay);
1421
+ audio.removeEventListener('pause', this._handleAudioPause);
1422
+ audio.removeEventListener('ended', this._handleAudioEnded);
1423
+ }
1424
+
1425
+ componentDidMount() {
1426
+ this.alignImages();
1427
+ this.addCustomAudioButtonControls();
1428
+ }
1429
+
1430
+ componentDidUpdate() {
1431
+ this.alignImages();
1432
+ }
1433
+
1434
+ componentWillUnmount() {
1435
+ this.removeCustomAudioButtonListeners();
1436
+ }
1437
+
1438
+ alignImages() {
1439
+ const previewPrompts = document.querySelectorAll('#preview-prompt');
1440
+ previewPrompts.forEach(previewPrompt => {
1441
+ const images = previewPrompt.getElementsByTagName('img');
1442
+
1443
+ if (images && images.length) {
1444
+ for (let image of images) {
1445
+ // check if alignment property was set
1446
+ if (image.attributes && image.attributes.alignment && image.attributes.alignment.value) {
1447
+ const parentNode = image.parentElement; // check if div is not already added to dom and replace current image with wrapped image
1448
+
1449
+ if (!(parentNode.tagName === 'DIV' && parentNode.style.display === 'flex' && parentNode.style.width === '100%')) {
1450
+ const div = document.createElement('div');
1451
+ div.style.display = 'flex';
1452
+ div.style.width = '100%';
1453
+ const copyImage = image.cloneNode(true);
1454
+ div.appendChild(copyImage);
1455
+ parentNode.replaceChild(div, image);
1456
+ }
1457
+ }
1458
+ }
1459
+ }
1460
+ });
1461
+ }
1462
+
1463
+ render() {
1464
+ const {
1465
+ prompt,
1466
+ classes,
1467
+ tagName,
1468
+ className,
1469
+ onClick,
1470
+ defaultClassName
1471
+ } = this.props;
1472
+ const CustomTag = tagName || 'div'; // legend tag was added once with accessibility tasks, wee need extra style to make it work with images alignment
1473
+
1474
+ const legendClass = tagName === 'legend' ? 'legend' : '';
1475
+ const customClasses = `${classes.promptTable} ${classes[className] || ''} ${defaultClassName || ''} ${classes[legendClass] || ''}`;
1476
+ return /*#__PURE__*/React__default.createElement(CustomTag, {
1477
+ id: 'preview-prompt',
1478
+ onClick: onClick,
1479
+ className: customClasses,
1480
+ dangerouslySetInnerHTML: {
1481
+ __html: this.parsedText(prompt || '').replace(NEWLINE_BLOCK_REGEX, NEWLINE_LATEX)
1482
+ }
1483
+ });
1484
+ }
1485
+
1486
+ }
1487
+ PreviewPrompt.propTypes = {
1488
+ classes: PropTypes.object,
1489
+ prompt: PropTypes.string,
1490
+ tagName: PropTypes.string,
1491
+ className: PropTypes.string,
1492
+ onClick: PropTypes.func,
1493
+ defaultClassName: PropTypes.string,
1494
+ autoplayAudioEnabled: PropTypes.bool,
1495
+ customAudioButton: {
1496
+ playImage: PropTypes.string,
1497
+ pauseImage: PropTypes.string
1498
+ }
1499
+ };
1500
+ PreviewPrompt.defaultProps = {
1501
+ onClick: () => {}
1502
+ };
1503
+
1504
+ const styles = theme => ({
1505
+ prompt: {
1506
+ verticalAlign: 'middle',
1507
+ color: text()
1508
+ },
1509
+ legend: {
1510
+ width: '100%',
1511
+ fontSize: 'inherit !important'
1512
+ },
1513
+ rationale: {
1514
+ paddingLeft: theme.spacing.unit * 4,
1515
+ paddingBottom: theme.spacing.unit
1516
+ },
1517
+ label: {
1518
+ color: `${text()} !important`,
1519
+ //'var(--choice-input-color, black)',
1520
+ display: 'flex',
1521
+ flexDirection: 'column',
1522
+ verticalAlign: 'middle',
1523
+ cursor: 'pointer',
1524
+ '& > p': {
1525
+ margin: '0 0 0 0 !important'
1526
+ }
1527
+ },
1528
+ promptTable: {
1529
+ '&:not(.MathJax) > table': {
1530
+ borderCollapse: 'collapse'
1531
+ },
1532
+ '&:not(.MathJax) > table tr': {
1533
+ '&:nth-child(2n)': {
1534
+ backgroundColor: '#f6f8fa',
1535
+ color: theme.palette.common.black
1536
+ }
1537
+ },
1538
+ // align table content to left as per STAR requirement PD-3687
1539
+ '&:not(.MathJax) table td, &:not(.MathJax) table th': {
1540
+ padding: '.6em 1em',
1541
+ textAlign: 'left'
1542
+ },
1543
+ // added this to fix alignment of text in prompt imported from studio (PD-3423)
1544
+ '&:not(.MathJax) > table td > p.kds-indent': {
1545
+ textAlign: 'initial'
1546
+ }
1547
+ }
1548
+ });
1549
+
1550
+ var previewPrompt = withStyles(styles)(PreviewPrompt);
1551
+
1552
+ const Readable = props => {
1553
+ return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, React__default.Children.map(props.children, child => /*#__PURE__*/React__default.cloneElement(child, {
1554
+ 'data-pie-readable': props.false === undefined
1555
+ })));
1556
+ };
1557
+
1558
+ Readable.propTypes = {
1559
+ children: PropTypes.node,
1560
+ false: PropTypes.bool
1561
+ };
1562
+
1563
+ const Purpose = props => {
1564
+ return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, React__default.Children.map(props.children, child => /*#__PURE__*/React__default.cloneElement(child, {
1565
+ 'data-pie-purpose': props.purpose
1566
+ })));
1567
+ };
1568
+
1569
+ Purpose.propTypes = {
1570
+ children: PropTypes.node,
1571
+ purpose: PropTypes.string
1572
+ };
1573
+
1574
+ let parser$1;
1575
+
1576
+ if (typeof window !== 'undefined') {
1577
+ parser$1 = new DOMParser();
1578
+ }
1579
+
1580
+ const markupToText = s => {
1581
+ const root = parser$1.parseFromString(s, 'text/html');
1582
+ return root.body.textContent;
1583
+ };
1584
+
1585
+ const hasText = s => {
1586
+ if (!s) {
1587
+ return false;
1588
+ }
1589
+
1590
+ const tc = markupToText(s);
1591
+ return !!(tc && tc.trim());
1592
+ };
1593
+
1594
+ let parser;
1595
+
1596
+ if (typeof window !== 'undefined') {
1597
+ parser = new DOMParser();
1598
+ }
1599
+ /*
1600
+ * Check if the string contains at least one media element.
1601
+ */
1602
+
1603
+
1604
+ const hasMedia = s => {
1605
+ if (!s) {
1606
+ return false;
1607
+ }
1608
+
1609
+ const root = parser.parseFromString(s, 'text/html');
1610
+ return !!root.body.querySelector('img') || !!root.body.querySelector('video') || !!root.body.querySelector('audio');
1611
+ };
1612
+
1613
+ var enableAudioAutoplayImage = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCAJYAyADAREAAhEBAxEB/8QAHgABAQABBQEBAQAAAAAAAAAAAAEIAgMGBwkEBQr/xABiEAACAQIDBAMKCAYMCgYLAQAAAQIDEQQFIQYSMUEHCFETFRYiUmFxkdHhCRRjgaGisfAXMjRTcsEjJDY4QmJ1dpKztMQYMzdEVIKyw9PxQ1hmc3SWJzVFRlZXhJOUldJk/8QAGwEBAQADAQEBAAAAAAAAAAAAAAcEBQYCAQP/xABBEQEAAQIDAgkJBgUFAQEBAAAAAQIDBAYRBSESMUFEYXGCscITNDVRcoGRocEUIjJS0eEVI2KSsjNCU6LwFtLx/9oADAMBAAIRAxEAPwD1TAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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';
1614
+
1615
+ export { ExtraCSSRulesMixin as AppendCSSRules, index as Collapsible, enableAudioAutoplayImage as EnableAudioAutoplayImage, Feedback$1 as Feedback, HtmlAndMath, inputContainer as InputContainer, RootElem as PreviewLayout, previewPrompt as PreviewPrompt, Purpose, Readable, Styled$1 as UiLayout, color, hasMedia, hasText, responseIndicators as indicators, withUndoReset };
1616
+ //# sourceMappingURL=index.js.map