@pie-element/multiple-choice 9.18.1-beta.0 → 9.18.1-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/configure/CHANGELOG.md +16 -0
- package/configure/lib/defaults.js +1 -1
- package/configure/lib/defaults.js.map +1 -0
- package/configure/lib/index.js +1 -1
- package/configure/lib/index.js.map +1 -0
- package/configure/lib/main.js +1 -1
- package/configure/lib/main.js.map +1 -0
- package/configure/lib/utils.js +1 -1
- package/configure/lib/utils.js.map +1 -0
- package/configure/package.json +1 -1
- package/controller/CHANGELOG.md +16 -0
- package/controller/lib/defaults.js +1 -1
- package/controller/lib/defaults.js.map +1 -0
- package/controller/lib/index.js +1 -1
- package/controller/lib/index.js.map +1 -0
- package/controller/lib/utils.js +1 -1
- package/controller/lib/utils.js.map +1 -0
- package/controller/package.json +1 -1
- package/lib/choice-input.js +1 -1
- package/lib/choice-input.js.map +1 -0
- package/lib/choice.js +1 -1
- package/lib/choice.js.map +1 -0
- package/lib/feedback-tick.js +1 -1
- package/lib/feedback-tick.js.map +1 -0
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -0
- package/lib/main.js +1 -1
- package/lib/main.js.map +1 -0
- package/lib/multiple-choice.js +1 -1
- package/lib/multiple-choice.js.map +1 -0
- package/lib/print.js +1 -1
- package/lib/print.js.map +1 -0
- package/lib/session-updater.js +1 -1
- package/lib/session-updater.js.map +1 -0
- package/package.json +1 -1
package/lib/choice-input.js
CHANGED
|
@@ -424,4 +424,4 @@ exports.ChoiceInput = ChoiceInput;
|
|
|
424
424
|
var _default = (0, _styles.withStyles)(styleSheet)(ChoiceInput);
|
|
425
425
|
|
|
426
426
|
exports["default"] = _default;
|
|
427
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jaG9pY2UtaW5wdXQuanN4Il0sIm5hbWVzIjpbIkNMQVNTX05BTUUiLCJzdHlsZVNoZWV0IiwidGhlbWUiLCJyb3ciLCJkaXNwbGF5IiwiYWxpZ25JdGVtcyIsImJhY2tncm91bmRDb2xvciIsImNvbG9yIiwiYmFja2dyb3VuZCIsImNoZWNrYm94SG9sZGVyIiwiZmxleCIsInRleHQiLCJmb250U2l6ZSIsImhvcml6b250YWxMYXlvdXQiLCJwYWRkaW5nIiwic3BhY2luZyIsInVuaXQiLCJtYXJnaW4iLCJiZWxvd0xheW91dCIsImJlbG93TGF5b3V0Q2VudGVyIiwianVzdGlmeUNvbnRlbnQiLCJiZWxvd1NlbGVjdGlvbkNvbXBvbmVudCIsIm1hcmdpbkxlZnQiLCJzck9ubHkiLCJwb3NpdGlvbiIsImxlZnQiLCJ0b3AiLCJ3aWR0aCIsImhlaWdodCIsIm92ZXJmbG93IiwiZm9ybVN0eWxlU2hlZXQiLCJsYWJlbCIsImxldHRlclNwYWNpbmciLCJkaXNhYmxlZCIsImN1cnNvciIsIlN0eWxlZEZvcm1Db250cm9sTGFiZWwiLCJuYW1lIiwicHJvcHMiLCJjbGFzc2VzIiwiY29sb3JTdHlsZSIsInZhck5hbWUiLCJmYWxsYmFjayIsImlucHV0U3R5bGVzIiwiY29ycmVjdCIsImluY29ycmVjdCIsInJvb3QiLCJwcmltYXJ5TGlnaHQiLCJjaGVja2VkIiwicHJpbWFyeSIsIm9wYWNpdHkiLCJwb2ludGVyRXZlbnRzIiwiZm9jdXNWaXNpYmxlVW5jaGVja2VkIiwib3V0bGluZSIsImZvY3VzVW5jaGVja2VkQm9yZGVyIiwiZm9jdXNVbmNoZWNrZWQiLCJmb2N1c1Zpc2libGVDaGVja2VkIiwiZm9jdXNDaGVja2VkQm9yZGVyIiwiZm9jdXNDaGVja2VkIiwiU3R5bGVkQ2hlY2tib3giLCJjb3JyZWN0bmVzcyIsIm9uQ2hhbmdlIiwidmFsdWUiLCJpZCIsIm9uS2V5RG93biIsImlucHV0UmVmIiwia2V5IiwiayIsInJlc29sdmVkIiwibWluaVByb3BzIiwiU3R5bGVkUmFkaW8iLCJ0YWdOYW1lIiwiQ2hvaWNlSW5wdXQiLCJldmVudCIsImNob2ljZU1vZGUiLCJpc0Fycm93RG93biIsImlzQXJyb3dVcCIsInByZXZlbnREZWZhdWx0IiwiY3VycmVudEVsIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImNob2ljZUlkIiwiZmllbGRzZXQiLCJjbG9zZXN0IiwiZ3JvdXBDaGVja2JveGVzIiwiQXJyYXkiLCJmcm9tIiwicXVlcnlTZWxlY3RvckFsbCIsImN1cnJlbnRJbmRleCIsImZpbmRJbmRleCIsImVsIiwibmV4dEluZGV4IiwibmV4dEVsIiwiZm9jdXMiLCJvblRvZ2dsZUNob2ljZSIsImJpbmQiLCJnZW5lcmF0ZUNob2ljZUlkIiwiZGVzY0lkIiwiTWF0aCIsInJhbmRvbSIsInRvRml4ZWQiLCJkaXNwbGF5S2V5IiwiZmVlZGJhY2siLCJjbGFzc05hbWUiLCJyYXRpb25hbGUiLCJoaWRlVGljayIsImlzRXZhbHVhdGVNb2RlIiwiY2hvaWNlc0xheW91dCIsImlzU2VsZWN0aW9uQnV0dG9uQmVsb3ciLCJUYWciLCJjbGFzc1N1ZmZpeCIsImhvbGRlckNsYXNzTmFtZXMiLCJjaG9pY2VsYWJlbCIsInNjcmVlblJlYWRlckxhYmVsIiwidGFnUHJvcHMiLCJoYW5kbGVLZXlEb3duIiwiaGFzTWF0aE9ySW1hZ2UiLCJpbmNsdWRlcyIsImNvbnRyb2wiLCJhdXRvRm9jdXNSZWYiLCJ1bmRlZmluZWQiLCJSZWFjdCIsIkNvbXBvbmVudCIsIlByb3BUeXBlcyIsIm9uZU9mIiwic3RyaW5nIiwiYm9vbCIsImlzUmVxdWlyZWQiLCJmdW5jIiwib2JqZWN0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxVQUFVLEdBQUcsMkJBQW5COztBQUVBLElBQU1DLFVBQVUsR0FBRyxTQUFiQSxVQUFhLENBQUND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QUUsSUFEUztBQUVwQnhELEVBQUFBLE9BQU8sRUFBRSxLQUZXO0FBR3BCMEQsRUFBQUEsY0FBYyxFQUFFO0FBSEksQzs7ZUE0SlQsd0JBQVd4RyxVQUFYLEVBQXVCc0UsV0FBdkIsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBGb3JtQ29udHJvbExhYmVsIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0Zvcm1Db250cm9sTGFiZWwnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyB3aXRoU3R5bGVzIH0gZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvc3R5bGVzJztcbmltcG9ydCBDaGVja2JveCBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9DaGVja2JveCc7XG5pbXBvcnQgeyBGZWVkYmFjaywgY29sb3IsIFByZXZpZXdQcm9tcHQgfSBmcm9tICdAcGllLWxpYi9yZW5kZXItdWknO1xuaW1wb3J0IFJhZGlvIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL1JhZGlvJztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuXG5pbXBvcnQgRmVlZGJhY2tUaWNrIGZyb20gJy4vZmVlZGJhY2stdGljayc7XG5cbmNvbnN0IENMQVNTX05BTUUgPSAnbXVsdGlwbGUtY2hvaWNlLWNvbXBvbmVudCc7XG5cbmNvbnN0IHN0eWxlU2hlZXQgPSAodGhlbWUpID0+ICh7XG4gIHJvdzoge1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yLmJhY2tncm91bmQoKSxcbiAgfSxcbiAgY2hlY2tib3hIb2xkZXI6IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgYmFja2dyb3VuZENvbG9yOiBjb2xvci5iYWNrZ3JvdW5kKCksXG4gICAgZmxleDogMSxcbiAgICAnJiBsYWJlbCc6IHtcbiAgICAgIGNvbG9yOiBjb2xvci50ZXh0KCksXG4gICAgICAnJiA+IHNwYW4nOiB7XG4gICAgICAgIGZvbnRTaXplOiAnaW5oZXJpdCcsXG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG4gIGhvcml6b250YWxMYXlvdXQ6IHtcbiAgICBbYCYgLiR7Q0xBU1NfTkFNRX1gXToge1xuICAgICAgLy8gdmlzdWFsbHkgcmVkdWNlIHJpZ2h0IHBhZGRpbmcsIGJ1dCBtYWludGFpbiBhY2Nlc3NpYmlsaXR5IHBhZGRpbmcgZm9yIGNoZWNrYm94IGluZGljYXRvcnMgdG8gYmUgY2lyY2xlc1xuICAgICAgLy8gYWRkIG1hcmdpbiB0byB0aGUgdG9wLCBsZWZ0IGFuZCBib3R0b20gb2YgdGhlIGNoZWNrYm94IHRvIGtlZXAgdGhlIHNhbWUgc3BhY2luZyBhcyBiZWZvcmVcbiAgICAgIHBhZGRpbmc6IHRoZW1lLnNwYWNpbmcudW5pdCxcbiAgICAgIG1hcmdpbjogYCR7dGhlbWUuc3BhY2luZy51bml0IC8gMn1weCAwICR7dGhlbWUuc3BhY2luZy51bml0IC8gMn1weCAke3RoZW1lLnNwYWNpbmcudW5pdCAvIDJ9cHhgLFxuICAgIH0sXG4gIH0sXG4gIGJlbG93TGF5b3V0OiB7XG4gICAgJyYgPiBsYWJlbCc6IHtcbiAgICAgIGFsaWduSXRlbXM6ICdmbGV4LXN0YXJ0JyxcbiAgICB9LFxuICB9LFxuICBiZWxvd0xheW91dENlbnRlcjoge1xuICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAnJiA+IGxhYmVsJzoge1xuICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgfSxcbiAgfSxcbiAgYmVsb3dTZWxlY3Rpb25Db21wb25lbnQ6IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgJyYgPiBzcGFuJzoge1xuICAgICAgLy8gdmlzdWFsbHkgcmVkdWNlIHJpZ2h0IHBhZGRpbmcsIGJ1dCBtYWludGFpbiBhY2Nlc3NpYmlsaXR5IHBhZGRpbmcgZm9yIGNoZWNrYm94IGluZGljYXRvcnMgdG8gYmUgY2lyY2xlc1xuICAgICAgbWFyZ2luTGVmdDogYC0ke3RoZW1lLnNwYWNpbmcudW5pdH1weGAsXG4gICAgfSxcbiAgfSxcbiAgc3JPbmx5OiB7XG4gICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgbGVmdDogJy0xMDAwMHB4JyxcbiAgICB0b3A6ICdhdXRvJyxcbiAgICB3aWR0aDogJzFweCcsXG4gICAgaGVpZ2h0OiAnMXB4JyxcbiAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gIH0sXG59KTtcblxuY29uc3QgZm9ybVN0eWxlU2hlZXQgPSB7XG4gIGxhYmVsOiB7XG4gICAgY29sb3I6IGAke2NvbG9yLnRleHQoKX0gIWltcG9ydGFudGAsIC8vJ3ZhcigtLWNob2ljZS1pbnB1dC1jb2xvciwgYmxhY2spJ1xuICAgIGJhY2tncm91bmRDb2xvcjogY29sb3IuYmFja2dyb3VuZCgpLFxuICAgIGxldHRlclNwYWNpbmc6ICdub3JtYWwnLFxuICB9LFxuICBkaXNhYmxlZDoge1xuICAgIC8vIGFwcGx5IHRvIGFsbCBjaGlsZHJlblxuICAgICcmIConOiB7XG4gICAgICBjdXJzb3I6ICdub3QtYWxsb3dlZCAhaW1wb3J0YW50JyxcbiAgICB9LFxuICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IFN0eWxlZEZvcm1Db250cm9sTGFiZWwgPSB3aXRoU3R5bGVzKGZvcm1TdHlsZVNoZWV0LCB7XG4gIG5hbWU6ICdGb3JtQ29udHJvbExhYmVsJyxcbn0pKChwcm9wcykgPT4gKFxuICA8Rm9ybUNvbnRyb2xMYWJlbCB7Li4ucHJvcHN9IGNsYXNzZXM9e3sgbGFiZWw6IHByb3BzLmNsYXNzZXMubGFiZWwsIGRpc2FibGVkOiBwcm9wcy5jbGFzc2VzLmRpc2FibGVkIH19IC8+XG4pKTtcblxuY29uc3QgY29sb3JTdHlsZSA9ICh2YXJOYW1lLCBmYWxsYmFjaykgPT4gKHtcbiAgW2AmLiR7Q0xBU1NfTkFNRX1gXToge1xuICAgIGNvbG9yOiBgdmFyKC0tY2hvaWNlLWlucHV0LSR7dmFyTmFtZX0sICR7ZmFsbGJhY2t9KSAhaW1wb3J0YW50YCxcbiAgfSxcbn0pO1xuXG5jb25zdCBpbnB1dFN0eWxlcyA9IHtcbiAgJ2NvcnJlY3Qtcm9vdCc6IGNvbG9yU3R5bGUoJ2NvcnJlY3QtY29sb3InLCBjb2xvci50ZXh0KCkpLFxuICAnY29ycmVjdC1jaGVja2VkJzogY29sb3JTdHlsZSgnY29ycmVjdC1zZWxlY3RlZC1jb2xvcicsIGNvbG9yLmNvcnJlY3QoKSksIC8vZ3JlZW5bNTAwXSksXG4gICdjb3JyZWN0LWRpc2FibGVkJzogY29sb3JTdHlsZSgnY29ycmVjdC1kaXNhYmxlZC1jb2xvcicsIGNvbG9yLmRpc2FibGVkKCkpLCAvLydncmV5JyksXG4gICdpbmNvcnJlY3Qtcm9vdCc6IGNvbG9yU3R5bGUoJ2luY29ycmVjdC1jb2xvcicsIGNvbG9yLmluY29ycmVjdCgpKSxcbiAgJ2luY29ycmVjdC1jaGVja2VkJzogY29sb3JTdHlsZSgnaW5jb3JyZWN0LWNoZWNrZWQnLCBjb2xvci5pbmNvcnJlY3QoKSksIC8vb3JhbmdlWzUwMF0pLFxuICAnaW5jb3JyZWN0LWRpc2FibGVkJzogY29sb3JTdHlsZSgnaW5jb3JyZWN0LWRpc2FibGVkLWNvbG9yJywgY29sb3IuZGlzYWJsZWQoKSksXG4gIHJvb3Q6IHtcbiAgICAuLi5jb2xvclN0eWxlKCdjb2xvcicsIGNvbG9yLnRleHQoKSksXG4gICAgJyY6aG92ZXInOiB7IGNvbG9yOiBgJHtjb2xvci5wcmltYXJ5TGlnaHQoKX0gIWltcG9ydGFudGAgfSxcbiAgfSxcbiAgY2hlY2tlZDogY29sb3JTdHlsZSgnc2VsZWN0ZWQtY29sb3InLCBjb2xvci5wcmltYXJ5KCkpLFxuICBkaXNhYmxlZDoge1xuICAgIC4uLmNvbG9yU3R5bGUoJ2Rpc2FibGVkLWNvbG9yJywgY29sb3IudGV4dCgpKSxcbiAgICBvcGFjaXR5OiAwLjYsXG4gICAgY3Vyc29yOiAnbm90LWFsbG93ZWQgIWltcG9ydGFudCcsXG4gICAgcG9pbnRlckV2ZW50czogJ2luaXRpYWwgIWltcG9ydGFudCcsXG4gIH0sXG4gIGZvY3VzVmlzaWJsZVVuY2hlY2tlZDoge1xuICAgIG91dGxpbmU6IGAycHggc29saWQgJHtjb2xvci5mb2N1c1VuY2hlY2tlZEJvcmRlcigpfWAsXG4gICAgYmFja2dyb3VuZENvbG9yOiBjb2xvci5mb2N1c1VuY2hlY2tlZCgpLFxuICB9LFxuICBmb2N1c1Zpc2libGVDaGVja2VkOiB7XG4gICAgb3V0bGluZTogYDJweCBzb2xpZCAke2NvbG9yLmZvY3VzQ2hlY2tlZEJvcmRlcigpfWAsXG4gICAgYmFja2dyb3VuZENvbG9yOiBjb2xvci5mb2N1c0NoZWNrZWQoKSxcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBTdHlsZWRDaGVja2JveCA9IHdpdGhTdHlsZXMoaW5wdXRTdHlsZXMpKChwcm9wcykgPT4ge1xuICBjb25zdCB7IGNvcnJlY3RuZXNzLCBjbGFzc2VzLCBjaGVja2VkLCBvbkNoYW5nZSwgZGlzYWJsZWQsIHZhbHVlLCBpZCwgb25LZXlEb3duLCBpbnB1dFJlZiB9ID0gcHJvcHM7XG4gIGNvbnN0IGtleSA9IChrKSA9PiAoY29ycmVjdG5lc3MgPyBgJHtjb3JyZWN0bmVzc30tJHtrfWAgOiBrKTtcblxuICBjb25zdCByZXNvbHZlZCA9IHtcbiAgICByb290OiBjbGFzc2VzW2tleSgncm9vdCcpXSxcbiAgICBjaGVja2VkOiBjbGFzc2VzW2tleSgnY2hlY2tlZCcpXSxcbiAgICBkaXNhYmxlZDogY2xhc3Nlc1trZXkoJ2Rpc2FibGVkJyldLFxuICB9O1xuXG4gIGNvbnN0IG1pbmlQcm9wcyA9IHsgY2hlY2tlZCwgb25DaGFuZ2UsIGRpc2FibGVkLCB2YWx1ZSB9O1xuXG4gIHJldHVybiAoXG4gICAgPENoZWNrYm94XG4gICAgICBpZD17aWR9XG4gICAgICBpbnB1dFJlZj17aW5wdXRSZWZ9XG4gICAgICBhcmlhLWNoZWNrZWQ9e2NoZWNrZWR9XG4gICAgICBvbktleURvd249e29uS2V5RG93bn1cbiAgICAgIGZvY3VzVmlzaWJsZUNsYXNzTmFtZT17Y2hlY2tlZCA/IGNsYXNzZXMuZm9jdXNWaXNpYmxlQ2hlY2tlZCA6IGNsYXNzZXMuZm9jdXNWaXNpYmxlVW5jaGVja2VkfVxuICAgICAgZGlzYWJsZVJpcHBsZVxuICAgICAgey4uLm1pbmlQcm9wc31cbiAgICAgIGNsYXNzTmFtZT17Q0xBU1NfTkFNRX1cbiAgICAgIGNsYXNzZXM9e3tcbiAgICAgICAgcm9vdDogcmVzb2x2ZWQucm9vdCxcbiAgICAgICAgY2hlY2tlZDogcmVzb2x2ZWQuY2hlY2tlZCxcbiAgICAgICAgZGlzYWJsZWQ6IGAke2NvcnJlY3RuZXNzID8gJycgOiByZXNvbHZlZC5kaXNhYmxlZH1gLFxuICAgICAgfX1cbiAgICAvPlxuICApO1xufSk7XG5cbmV4cG9ydCBjb25zdCBTdHlsZWRSYWRpbyA9IHdpdGhTdHlsZXMoaW5wdXRTdHlsZXMpKChwcm9wcykgPT4ge1xuICBjb25zdCB7IGNvcnJlY3RuZXNzLCBjbGFzc2VzLCBjaGVja2VkLCBvbkNoYW5nZSwgZGlzYWJsZWQsIHZhbHVlLCBpZCwgdGFnTmFtZSwgaW5wdXRSZWYgfSA9IHByb3BzO1xuICBjb25zdCBrZXkgPSAoaykgPT4gKGNvcnJlY3RuZXNzID8gYCR7Y29ycmVjdG5lc3N9LSR7a31gIDogayk7XG5cbiAgY29uc3QgcmVzb2x2ZWQgPSB7XG4gICAgcm9vdDogY2xhc3Nlc1trZXkoJ3Jvb3QnKV0sXG4gICAgY2hlY2tlZDogY2xhc3Nlc1trZXkoJ2NoZWNrZWQnKV0sXG4gICAgZGlzYWJsZWQ6IGNsYXNzZXNba2V5KCdkaXNhYmxlZCcpXSxcbiAgfTtcblxuICBjb25zdCBtaW5pUHJvcHMgPSB7IGNoZWNrZWQsIG9uQ2hhbmdlLCBkaXNhYmxlZCwgdmFsdWUgfTtcblxuICByZXR1cm4gKFxuICAgIDxSYWRpb1xuICAgICAgaWQ9e2lkfVxuICAgICAgaW5wdXRSZWY9e2lucHV0UmVmfVxuICAgICAgYXJpYS1jaGVja2VkPXtjaGVja2VkfVxuICAgICAgZm9jdXNWaXNpYmxlQ2xhc3NOYW1lPXtjaGVja2VkID8gY2xhc3Nlcy5mb2N1c1Zpc2libGVDaGVja2VkIDogY2xhc3Nlcy5mb2N1c1Zpc2libGVVbmNoZWNrZWR9XG4gICAgICBkaXNhYmxlUmlwcGxlXG4gICAgICB7Li4ubWluaVByb3BzfVxuICAgICAgY2xhc3NOYW1lPXtDTEFTU19OQU1FfVxuICAgICAgbmFtZT17dGFnTmFtZX1cbiAgICAgIGNsYXNzZXM9e3tcbiAgICAgICAgcm9vdDogcmVzb2x2ZWQucm9vdCxcbiAgICAgICAgY2hlY2tlZDogcmVzb2x2ZWQuY2hlY2tlZCxcbiAgICAgICAgZGlzYWJsZWQ6IGAke2NvcnJlY3RuZXNzID8gJycgOiByZXNvbHZlZC5kaXNhYmxlZH1gLFxuICAgICAgfX1cbiAgICAvPlxuICApO1xufSk7XG5cbmV4cG9ydCBjbGFzcyBDaG9pY2VJbnB1dCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgY2hvaWNlTW9kZTogUHJvcFR5cGVzLm9uZU9mKFsncmFkaW8nLCAnY2hlY2tib3gnXSksXG4gICAgZGlzcGxheUtleTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBjaGVja2VkOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICAgIGNvcnJlY3RuZXNzOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICAgIGZlZWRiYWNrOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgcmF0aW9uYWxlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIHZhbHVlOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgdGFnTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBoaWRlVGljazogUHJvcFR5cGVzLmJvb2wsXG4gICAgaXNFdmFsdWF0ZU1vZGU6IFByb3BUeXBlcy5ib29sLFxuICAgIGNob2ljZXNMYXlvdXQ6IFByb3BUeXBlcy5vbmVPZihbJ3ZlcnRpY2FsJywgJ2dyaWQnLCAnaG9yaXpvbnRhbCddKSxcbiAgICBpc1NlbGVjdGlvbkJ1dHRvbkJlbG93OiBQcm9wVHlwZXMuYm9vbCxcbiAgfTtcblxuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIHJhdGlvbmFsZTogbnVsbCxcbiAgICBjaGVja2VkOiBmYWxzZSxcbiAgICBpc0V2YWx1YXRlTW9kZTogZmFsc2UsXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5vblRvZ2dsZUNob2ljZSA9IHRoaXMub25Ub2dnbGVDaG9pY2UuYmluZCh0aGlzKTtcbiAgICB0aGlzLmNob2ljZUlkID0gdGhpcy5nZW5lcmF0ZUNob2ljZUlkKCk7XG4gICAgdGhpcy5kZXNjSWQgPSBgJHt0aGlzLmNob2ljZUlkfS1kZXNjYDtcbiAgfVxuXG4gIG9uVG9nZ2xlQ2hvaWNlKGV2ZW50KSB7XG4gICAgdGhpcy5wcm9wcy5vbkNoYW5nZShldmVudCk7XG4gIH1cblxuICBnZW5lcmF0ZUNob2ljZUlkKCkge1xuICAgIHJldHVybiAnY2hvaWNlLScgKyAoTWF0aC5yYW5kb20oKSAqIDEwMDAwKS50b0ZpeGVkKCk7XG4gIH1cblxuICBoYW5kbGVLZXlEb3duID0gKGV2ZW50KSA9PiB7XG4gICAgY29uc3QgeyBjaG9pY2VNb2RlIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgaWYgKGNob2ljZU1vZGUgIT09ICdjaGVja2JveCcpIHJldHVybjtcblxuICAgIGNvbnN0IGlzQXJyb3dEb3duID0gZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJztcbiAgICBjb25zdCBpc0Fycm93VXAgPSBldmVudC5rZXkgPT09ICdBcnJvd1VwJztcblxuICAgIGlmICghaXNBcnJvd0Rvd24gJiYgIWlzQXJyb3dVcCkgcmV0dXJuO1xuXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIGNvbnN0IGN1cnJlbnRFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuY2hvaWNlSWQpO1xuICAgIGlmICghY3VycmVudEVsKSByZXR1cm47XG5cbiAgICBjb25zdCBmaWVsZHNldCA9IGN1cnJlbnRFbC5jbG9zZXN0KCdmaWVsZHNldCcpO1xuICAgIGlmICghZmllbGRzZXQpIHJldHVybjtcblxuICAgIGNvbnN0IGdyb3VwQ2hlY2tib3hlcyA9IEFycmF5LmZyb20oZmllbGRzZXQucXVlcnlTZWxlY3RvckFsbCgnaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdJykpO1xuXG4gICAgY29uc3QgY3VycmVudEluZGV4ID0gZ3JvdXBDaGVja2JveGVzLmZpbmRJbmRleCgoZWwpID0+IGVsID09PSBjdXJyZW50RWwpO1xuICAgIGlmIChjdXJyZW50SW5kZXggPT09IC0xKSByZXR1cm47XG5cbiAgICBjb25zdCBuZXh0SW5kZXggPSBpc0Fycm93RG93biA/IGN1cnJlbnRJbmRleCArIDEgOiBjdXJyZW50SW5kZXggLSAxO1xuICAgIGNvbnN0IG5leHRFbCA9IGdyb3VwQ2hlY2tib3hlc1tuZXh0SW5kZXhdO1xuXG4gICAgaWYgKG5leHRFbCkge1xuICAgICAgbmV4dEVsLmZvY3VzKCk7XG4gICAgfVxuICB9O1xuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7XG4gICAgICBjaG9pY2VNb2RlLFxuICAgICAgZGlzYWJsZWQsXG4gICAgICBkaXNwbGF5S2V5LFxuICAgICAgZmVlZGJhY2ssXG4gICAgICBsYWJlbCxcbiAgICAgIGNvcnJlY3RuZXNzLFxuICAgICAgY2xhc3NlcyxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIHJhdGlvbmFsZSxcbiAgICAgIGhpZGVUaWNrLFxuICAgICAgaXNFdmFsdWF0ZU1vZGUsXG4gICAgICBjaG9pY2VzTGF5b3V0LFxuICAgICAgdmFsdWUsXG4gICAgICBjaGVja2VkLFxuICAgICAgdGFnTmFtZSxcbiAgICAgIGlzU2VsZWN0aW9uQnV0dG9uQmVsb3csXG4gICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICBjb25zdCBUYWcgPSBjaG9pY2VNb2RlID09PSAnY2hlY2tib3gnID8gU3R5bGVkQ2hlY2tib3ggOiBTdHlsZWRSYWRpbztcbiAgICBjb25zdCBjbGFzc1N1ZmZpeCA9IGNob2ljZU1vZGUgPT09ICdjaGVja2JveCcgPyAnY2hlY2tib3gnIDogJ3JhZGlvLWJ1dHRvbic7XG5cbiAgICBjb25zdCBob2xkZXJDbGFzc05hbWVzID0gY2xhc3NOYW1lcyhjbGFzc2VzLmNoZWNrYm94SG9sZGVyLCB7XG4gICAgICBbY2xhc3Nlcy5ob3Jpem9udGFsTGF5b3V0XTogY2hvaWNlc0xheW91dCA9PT0gJ2hvcml6b250YWwnLFxuICAgICAgW2NsYXNzZXMuYmVsb3dMYXlvdXRdOiBpc1NlbGVjdGlvbkJ1dHRvbkJlbG93ICYmIGNob2ljZXNMYXlvdXQgIT09ICdncmlkJyxcbiAgICAgIFtjbGFzc2VzLmJlbG93TGF5b3V0Q2VudGVyXTogaXNTZWxlY3Rpb25CdXR0b25CZWxvdyAmJiBjaG9pY2VzTGF5b3V0ID09PSAnZ3JpZCcsXG4gICAgfSk7XG5cbiAgICBjb25zdCBjaG9pY2VsYWJlbCA9IChcbiAgICAgIDw+XG4gICAgICAgIHtkaXNwbGF5S2V5ICYmICFpc1NlbGVjdGlvbkJ1dHRvbkJlbG93ID8gKFxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Y2xhc3Nlcy5yb3d9PlxuICAgICAgICAgICAge2Rpc3BsYXlLZXl9LnsnXFx1MDBBMCd9XG4gICAgICAgICAgICA8UHJldmlld1Byb21wdCBjbGFzc05hbWU9XCJsYWJlbFwiIHByb21wdD17bGFiZWx9IHRhZ05hbWU9XCJzcGFuXCIgLz5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPFByZXZpZXdQcm9tcHQgY2xhc3NOYW1lPVwibGFiZWxcIiBwcm9tcHQ9e2xhYmVsfSB0YWdOYW1lPVwic3BhblwiIC8+XG4gICAgICAgICl9XG4gICAgICA8Lz5cbiAgICApO1xuXG4gICAgY29uc3Qgc2NyZWVuUmVhZGVyTGFiZWwgPSAoXG4gICAgICA8c3BhbiBpZD17dGhpcy5kZXNjSWR9IGNsYXNzTmFtZT17Y2xhc3Nlcy5zck9ubHl9PlxuICAgICAgICB7Y2hvaWNlTW9kZSA9PT0gJ2NoZWNrYm94JyA/ICdDaGVja2JveCB0byBzZWxlY3QgdGhlIGFuc3dlciBiZWxvdycgOiAnUmFkaW8gYnV0dG9uIHRvIHNlbGVjdCB0aGUgYW5zd2VyIGJlbG93J31cbiAgICAgIDwvc3Bhbj5cbiAgICApO1xuXG4gICAgY29uc3QgdGFnUHJvcHMgPSB7XG4gICAgICBkaXNhYmxlZCxcbiAgICAgIGNoZWNrZWQsXG4gICAgICBjb3JyZWN0bmVzcyxcbiAgICAgIHRhZ05hbWUsXG4gICAgICB2YWx1ZSxcbiAgICAgIGlkOiB0aGlzLmNob2ljZUlkLFxuICAgICAgb25DaGFuZ2U6IHRoaXMub25Ub2dnbGVDaG9pY2UsXG4gICAgICBvbktleURvd246IHRoaXMuaGFuZGxlS2V5RG93bixcbiAgICAgICdhcmlhLWRlc2NyaWJlZGJ5JzogdGhpcy5kZXNjSWQsXG4gICAgfTtcblxuICAgIGNvbnN0IGhhc01hdGhPckltYWdlID1cbiAgICAgIHR5cGVvZiBsYWJlbCA9PT0gJ3N0cmluZycgJiZcbiAgICAgIChsYWJlbC5pbmNsdWRlcygnPG1hdGgnKSB8fFxuICAgICAgICBsYWJlbC5pbmNsdWRlcygnXFxcXCgnKSB8fFxuICAgICAgICBsYWJlbC5pbmNsdWRlcygnXFxcXFsnKSB8fFxuICAgICAgICBsYWJlbC5pbmNsdWRlcygnPGltZycpIHx8XG4gICAgICAgIGxhYmVsLmluY2x1ZGVzKCdkYXRhLWxhdGV4JykgfHxcbiAgICAgICAgbGFiZWwuaW5jbHVkZXMoJ2RhdGEtcmF3JykgfHxcbiAgICAgICAgbGFiZWwuaW5jbHVkZXMoJzxtangtY29udGFpbmVyJykpO1xuXG4gICAgY29uc3QgY29udHJvbCA9IGlzU2VsZWN0aW9uQnV0dG9uQmVsb3cgPyAoXG4gICAgICA8c3BhbiBjbGFzc05hbWU9e2NsYXNzZXMuYmVsb3dTZWxlY3Rpb25Db21wb25lbnR9PlxuICAgICAgICB7aGFzTWF0aE9ySW1hZ2UgJiYgc2NyZWVuUmVhZGVyTGFiZWx9XG4gICAgICAgIDxUYWcgey4uLnRhZ1Byb3BzfSBzdHlsZT17eyBwYWRkaW5nOiAwIH19IC8+XG4gICAgICAgIHtkaXNwbGF5S2V5ID8gYCR7ZGlzcGxheUtleX0uYCA6ICcnfVxuICAgICAgPC9zcGFuPlxuICAgICkgOiAoXG4gICAgICA8PlxuICAgICAgICB7aGFzTWF0aE9ySW1hZ2UgJiYgc2NyZWVuUmVhZGVyTGFiZWx9XG4gICAgICAgIDxUYWcgey4uLnRhZ1Byb3BzfSBpbnB1dFJlZj17dGhpcy5wcm9wcy5hdXRvRm9jdXNSZWZ9IC8+XG4gICAgICA8Lz5cbiAgICApO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc05hbWVzKGNsYXNzTmFtZSwgJ2NvcmVzcHJpbmctJyArIGNsYXNzU3VmZml4LCAnY2hvaWNlLWlucHV0Jyl9PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5yb3d9PlxuICAgICAgICAgIHshaGlkZVRpY2sgJiYgaXNFdmFsdWF0ZU1vZGUgJiYgPEZlZWRiYWNrVGljayBjb3JyZWN0bmVzcz17Y29ycmVjdG5lc3N9IC8+fVxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc05hbWVzKGhvbGRlckNsYXNzTmFtZXMsICdjaGVja2JveC1ob2xkZXInKX0+XG4gICAgICAgICAgICA8U3R5bGVkRm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICBsYWJlbD17Y2hvaWNlbGFiZWx9XG4gICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgaHRtbEZvcj17dGhpcy5jaG9pY2VJZH1cbiAgICAgICAgICAgICAgbGFiZWxQbGFjZW1lbnQ9e2lzU2VsZWN0aW9uQnV0dG9uQmVsb3cgPyAndG9wJyA6IHVuZGVmaW5lZH1cbiAgICAgICAgICAgICAgY29udHJvbD17Y29udHJvbH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7cmF0aW9uYWxlICYmIDxQcmV2aWV3UHJvbXB0IGNsYXNzTmFtZT1cInJhdGlvbmFsZVwiIGRlZmF1bHRDbGFzc05hbWU9XCJyYXRpb25hbGVcIiBwcm9tcHQ9e3JhdGlvbmFsZX0gLz59XG4gICAgICAgIDxGZWVkYmFjayBmZWVkYmFjaz17ZmVlZGJhY2t9IGNvcnJlY3RuZXNzPXtjb3JyZWN0bmVzc30gLz5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgd2l0aFN0eWxlcyhzdHlsZVNoZWV0KShDaG9pY2VJbnB1dCk7XG4iXX0=
|
|
427
|
+
//# sourceMappingURL=choice-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/choice-input.jsx"],"names":["CLASS_NAME","styleSheet","theme","row","display","alignItems","backgroundColor","color","background","checkboxHolder","flex","text","fontSize","horizontalLayout","padding","spacing","unit","margin","belowLayout","belowLayoutCenter","justifyContent","belowSelectionComponent","marginLeft","srOnly","position","left","top","width","height","overflow","formStyleSheet","label","letterSpacing","disabled","cursor","StyledFormControlLabel","name","props","classes","colorStyle","varName","fallback","inputStyles","correct","incorrect","root","primaryLight","checked","primary","opacity","pointerEvents","focusVisibleUnchecked","outline","focusUncheckedBorder","focusUnchecked","focusVisibleChecked","focusCheckedBorder","focusChecked","StyledCheckbox","correctness","onChange","value","id","onKeyDown","inputRef","key","k","resolved","miniProps","StyledRadio","tagName","ChoiceInput","event","choiceMode","isArrowDown","isArrowUp","preventDefault","currentEl","document","getElementById","choiceId","fieldset","closest","groupCheckboxes","Array","from","querySelectorAll","currentIndex","findIndex","el","nextIndex","nextEl","focus","onToggleChoice","bind","generateChoiceId","descId","Math","random","toFixed","displayKey","feedback","className","rationale","hideTick","isEvaluateMode","choicesLayout","isSelectionButtonBelow","Tag","classSuffix","holderClassNames","choicelabel","screenReaderLabel","tagProps","handleKeyDown","hasMathOrImage","includes","control","autoFocusRef","undefined","React","Component","PropTypes","oneOf","string","bool","isRequired","func","object"],"mappings":"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","sourcesContent":["import FormControlLabel from '@material-ui/core/FormControlLabel';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport { Feedback, color, PreviewPrompt } from '@pie-lib/render-ui';\nimport Radio from '@material-ui/core/Radio';\nimport classNames from 'classnames';\n\nimport FeedbackTick from './feedback-tick';\n\nconst CLASS_NAME = 'multiple-choice-component';\n\nconst styleSheet = (theme) => ({\n row: {\n display: 'flex',\n alignItems: 'center',\n backgroundColor: color.background(),\n },\n checkboxHolder: {\n display: 'flex',\n alignItems: 'center',\n backgroundColor: color.background(),\n flex: 1,\n '& label': {\n color: color.text(),\n '& > span': {\n fontSize: 'inherit',\n },\n },\n },\n horizontalLayout: {\n [`& .${CLASS_NAME}`]: {\n // visually reduce right padding, but maintain accessibility padding for checkbox indicators to be circles\n // add margin to the top, left and bottom of the checkbox to keep the same spacing as before\n padding: theme.spacing.unit,\n margin: `${theme.spacing.unit / 2}px 0 ${theme.spacing.unit / 2}px ${theme.spacing.unit / 2}px`,\n },\n },\n belowLayout: {\n '& > label': {\n alignItems: 'flex-start',\n },\n },\n belowLayoutCenter: {\n justifyContent: 'center',\n '& > label': {\n alignItems: 'center',\n },\n },\n belowSelectionComponent: {\n display: 'flex',\n alignItems: 'center',\n '& > span': {\n // visually reduce right padding, but maintain accessibility padding for checkbox indicators to be circles\n marginLeft: `-${theme.spacing.unit}px`,\n },\n },\n srOnly: {\n position: 'absolute',\n left: '-10000px',\n top: 'auto',\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n },\n});\n\nconst formStyleSheet = {\n label: {\n color: `${color.text()} !important`, //'var(--choice-input-color, black)'\n backgroundColor: color.background(),\n letterSpacing: 'normal',\n },\n disabled: {\n // apply to all children\n '& *': {\n cursor: 'not-allowed !important',\n },\n },\n};\n\nexport const StyledFormControlLabel = withStyles(formStyleSheet, {\n name: 'FormControlLabel',\n})((props) => (\n <FormControlLabel {...props} classes={{ label: props.classes.label, disabled: props.classes.disabled }} />\n));\n\nconst colorStyle = (varName, fallback) => ({\n [`&.${CLASS_NAME}`]: {\n color: `var(--choice-input-${varName}, ${fallback}) !important`,\n },\n});\n\nconst inputStyles = {\n 'correct-root': colorStyle('correct-color', color.text()),\n 'correct-checked': colorStyle('correct-selected-color', color.correct()), //green[500]),\n 'correct-disabled': colorStyle('correct-disabled-color', color.disabled()), //'grey'),\n 'incorrect-root': colorStyle('incorrect-color', color.incorrect()),\n 'incorrect-checked': colorStyle('incorrect-checked', color.incorrect()), //orange[500]),\n 'incorrect-disabled': colorStyle('incorrect-disabled-color', color.disabled()),\n root: {\n ...colorStyle('color', color.text()),\n '&:hover': { color: `${color.primaryLight()} !important` },\n },\n checked: colorStyle('selected-color', color.primary()),\n disabled: {\n ...colorStyle('disabled-color', color.text()),\n opacity: 0.6,\n cursor: 'not-allowed !important',\n pointerEvents: 'initial !important',\n },\n focusVisibleUnchecked: {\n outline: `2px solid ${color.focusUncheckedBorder()}`,\n backgroundColor: color.focusUnchecked(),\n },\n focusVisibleChecked: {\n outline: `2px solid ${color.focusCheckedBorder()}`,\n backgroundColor: color.focusChecked(),\n },\n};\n\nexport const StyledCheckbox = withStyles(inputStyles)((props) => {\n const { correctness, classes, checked, onChange, disabled, value, id, onKeyDown, inputRef } = props;\n const key = (k) => (correctness ? `${correctness}-${k}` : k);\n\n const resolved = {\n root: classes[key('root')],\n checked: classes[key('checked')],\n disabled: classes[key('disabled')],\n };\n\n const miniProps = { checked, onChange, disabled, value };\n\n return (\n <Checkbox\n id={id}\n inputRef={inputRef}\n aria-checked={checked}\n onKeyDown={onKeyDown}\n focusVisibleClassName={checked ? classes.focusVisibleChecked : classes.focusVisibleUnchecked}\n disableRipple\n {...miniProps}\n className={CLASS_NAME}\n classes={{\n root: resolved.root,\n checked: resolved.checked,\n disabled: `${correctness ? '' : resolved.disabled}`,\n }}\n />\n );\n});\n\nexport const StyledRadio = withStyles(inputStyles)((props) => {\n const { correctness, classes, checked, onChange, disabled, value, id, tagName, inputRef } = props;\n const key = (k) => (correctness ? `${correctness}-${k}` : k);\n\n const resolved = {\n root: classes[key('root')],\n checked: classes[key('checked')],\n disabled: classes[key('disabled')],\n };\n\n const miniProps = { checked, onChange, disabled, value };\n\n return (\n <Radio\n id={id}\n inputRef={inputRef}\n aria-checked={checked}\n focusVisibleClassName={checked ? classes.focusVisibleChecked : classes.focusVisibleUnchecked}\n disableRipple\n {...miniProps}\n className={CLASS_NAME}\n name={tagName}\n classes={{\n root: resolved.root,\n checked: resolved.checked,\n disabled: `${correctness ? '' : resolved.disabled}`,\n }}\n />\n );\n});\n\nexport class ChoiceInput extends React.Component {\n static propTypes = {\n choiceMode: PropTypes.oneOf(['radio', 'checkbox']),\n displayKey: PropTypes.string,\n checked: PropTypes.bool.isRequired,\n correctness: PropTypes.string,\n disabled: PropTypes.bool.isRequired,\n feedback: PropTypes.string,\n label: PropTypes.string.isRequired,\n rationale: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n value: PropTypes.string.isRequired,\n classes: PropTypes.object,\n className: PropTypes.string,\n tagName: PropTypes.string,\n hideTick: PropTypes.bool,\n isEvaluateMode: PropTypes.bool,\n choicesLayout: PropTypes.oneOf(['vertical', 'grid', 'horizontal']),\n isSelectionButtonBelow: PropTypes.bool,\n };\n\n static defaultProps = {\n rationale: null,\n checked: false,\n isEvaluateMode: false,\n };\n\n constructor(props) {\n super(props);\n this.onToggleChoice = this.onToggleChoice.bind(this);\n this.choiceId = this.generateChoiceId();\n this.descId = `${this.choiceId}-desc`;\n }\n\n onToggleChoice(event) {\n this.props.onChange(event);\n }\n\n generateChoiceId() {\n return 'choice-' + (Math.random() * 10000).toFixed();\n }\n\n handleKeyDown = (event) => {\n const { choiceMode } = this.props;\n\n if (choiceMode !== 'checkbox') return;\n\n const isArrowDown = event.key === 'ArrowDown';\n const isArrowUp = event.key === 'ArrowUp';\n\n if (!isArrowDown && !isArrowUp) return;\n\n event.preventDefault();\n\n const currentEl = document.getElementById(this.choiceId);\n if (!currentEl) return;\n\n const fieldset = currentEl.closest('fieldset');\n if (!fieldset) return;\n\n const groupCheckboxes = Array.from(fieldset.querySelectorAll('input[type=\"checkbox\"]'));\n\n const currentIndex = groupCheckboxes.findIndex((el) => el === currentEl);\n if (currentIndex === -1) return;\n\n const nextIndex = isArrowDown ? currentIndex + 1 : currentIndex - 1;\n const nextEl = groupCheckboxes[nextIndex];\n\n if (nextEl) {\n nextEl.focus();\n }\n };\n\n render() {\n const {\n choiceMode,\n disabled,\n displayKey,\n feedback,\n label,\n correctness,\n classes,\n className,\n rationale,\n hideTick,\n isEvaluateMode,\n choicesLayout,\n value,\n checked,\n tagName,\n isSelectionButtonBelow,\n } = this.props;\n\n const Tag = choiceMode === 'checkbox' ? StyledCheckbox : StyledRadio;\n const classSuffix = choiceMode === 'checkbox' ? 'checkbox' : 'radio-button';\n\n const holderClassNames = classNames(classes.checkboxHolder, {\n [classes.horizontalLayout]: choicesLayout === 'horizontal',\n [classes.belowLayout]: isSelectionButtonBelow && choicesLayout !== 'grid',\n [classes.belowLayoutCenter]: isSelectionButtonBelow && choicesLayout === 'grid',\n });\n\n const choicelabel = (\n <>\n {displayKey && !isSelectionButtonBelow ? (\n <span className={classes.row}>\n {displayKey}.{'\\u00A0'}\n <PreviewPrompt className=\"label\" prompt={label} tagName=\"span\" />\n </span>\n ) : (\n <PreviewPrompt className=\"label\" prompt={label} tagName=\"span\" />\n )}\n </>\n );\n\n const screenReaderLabel = (\n <span id={this.descId} className={classes.srOnly}>\n {choiceMode === 'checkbox' ? 'Checkbox to select the answer below' : 'Radio button to select the answer below'}\n </span>\n );\n\n const tagProps = {\n disabled,\n checked,\n correctness,\n tagName,\n value,\n id: this.choiceId,\n onChange: this.onToggleChoice,\n onKeyDown: this.handleKeyDown,\n 'aria-describedby': this.descId,\n };\n\n const hasMathOrImage =\n typeof label === 'string' &&\n (label.includes('<math') ||\n label.includes('\\\\(') ||\n label.includes('\\\\[') ||\n label.includes('<img') ||\n label.includes('data-latex') ||\n label.includes('data-raw') ||\n label.includes('<mjx-container'));\n\n const control = isSelectionButtonBelow ? (\n <span className={classes.belowSelectionComponent}>\n {hasMathOrImage && screenReaderLabel}\n <Tag {...tagProps} style={{ padding: 0 }} />\n {displayKey ? `${displayKey}.` : ''}\n </span>\n ) : (\n <>\n {hasMathOrImage && screenReaderLabel}\n <Tag {...tagProps} inputRef={this.props.autoFocusRef} />\n </>\n );\n\n return (\n <div className={classNames(className, 'corespring-' + classSuffix, 'choice-input')}>\n <div className={classes.row}>\n {!hideTick && isEvaluateMode && <FeedbackTick correctness={correctness} />}\n <div className={classNames(holderClassNames, 'checkbox-holder')}>\n <StyledFormControlLabel\n label={choicelabel}\n value={value}\n htmlFor={this.choiceId}\n labelPlacement={isSelectionButtonBelow ? 'top' : undefined}\n control={control}\n />\n </div>\n </div>\n {rationale && <PreviewPrompt className=\"rationale\" defaultClassName=\"rationale\" prompt={rationale} />}\n <Feedback feedback={feedback} correctness={correctness} />\n </div>\n );\n }\n}\n\nexport default withStyles(styleSheet)(ChoiceInput);\n"],"file":"choice-input.js"}
|
package/lib/choice.js
CHANGED
|
@@ -175,4 +175,4 @@ var _default = (0, _styles.withStyles)(function (theme) {
|
|
|
175
175
|
})(Choice);
|
|
176
176
|
|
|
177
177
|
exports["default"] = _default;
|
|
178
|
-
//# sourceMappingURL=
|
|
178
|
+
//# sourceMappingURL=choice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/choice.jsx"],"names":["Choice","choice","props","disabled","onChoiceChanged","index","choicesLength","showCorrect","isEvaluateMode","choiceMode","checked","correctness","displayKey","classes","choicesLayout","gridColumns","isSelectionButtonBelow","selectedAnswerBackgroundColor","autoFocusRef","tagName","choiceClass","feedback","choiceProps","onChange","names","noBorder","horizontalLayout","choiceBackground","backgroundColor","React","Component","propTypes","PropTypes","oneOf","object","bool","isRequired","func","number","string","theme","paddingTop","spacing","unit","paddingBottom","paddingLeft","paddingRight","borderBottom","palette","grey","marginRight"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\n\nimport ChoiceInput from './choice-input';\n\nexport class Choice extends React.Component {\n static propTypes = {};\n\n onChange = (choice) => {\n const { disabled, onChoiceChanged } = this.props;\n\n if (!disabled) {\n onChoiceChanged(choice);\n }\n };\n\n render() {\n const {\n choice,\n index,\n choicesLength,\n showCorrect,\n isEvaluateMode,\n choiceMode,\n disabled,\n checked,\n correctness,\n displayKey,\n classes,\n choicesLayout,\n gridColumns,\n isSelectionButtonBelow,\n selectedAnswerBackgroundColor,\n autoFocusRef,\n tagName\n } = this.props;\n const choiceClass = 'choice' + (index === choicesLength - 1 ? ' last' : '');\n\n const feedback = !isEvaluateMode || showCorrect ? '' : choice.feedback;\n\n const choiceProps = {\n ...choice,\n checked,\n choiceMode,\n disabled,\n feedback,\n correctness,\n displayKey,\n index,\n choicesLayout,\n gridColumns,\n onChange: this.onChange,\n isEvaluateMode,\n isSelectionButtonBelow,\n tagName,\n };\n\n const names = classNames(classes.choice, {\n [classes.noBorder]: index === choicesLength - 1 || choicesLayout !== 'vertical',\n [classes.horizontalLayout]: choicesLayout === 'horizontal',\n });\n\n const choiceBackground = selectedAnswerBackgroundColor && checked ? selectedAnswerBackgroundColor : 'initial';\n\n return (\n <div className={choiceClass} key={index} style={{ backgroundColor: choiceBackground }}>\n <ChoiceInput {...choiceProps} className={names} autoFocusRef={autoFocusRef} />\n </div>\n );\n }\n}\n\nChoice.propTypes = {\n choiceMode: PropTypes.oneOf(['radio', 'checkbox']),\n choice: PropTypes.object,\n disabled: PropTypes.bool.isRequired,\n onChoiceChanged: PropTypes.func,\n classes: PropTypes.object.isRequired,\n index: PropTypes.number,\n choicesLength: PropTypes.number,\n showCorrect: PropTypes.bool,\n isEvaluateMode: PropTypes.bool,\n checked: PropTypes.bool,\n correctness: PropTypes.string,\n displayKey: PropTypes.string,\n choicesLayout: PropTypes.oneOf(['vertical', 'grid', 'horizontal']),\n gridColumns: PropTypes.string,\n selectedAnswerBackgroundColor: PropTypes.string,\n tagName: PropTypes.string,\n isSelectionButtonBelow: PropTypes.bool,\n autoFocusRef: PropTypes.object,\n};\n\nexport default withStyles((theme) => ({\n choice: {\n paddingTop: theme.spacing.unit * 2.5,\n paddingBottom: theme.spacing.unit + 2,\n paddingLeft: theme.spacing.unit + 2,\n paddingRight: theme.spacing.unit + 2,\n borderBottom: `1px solid ${theme.palette.grey[300]}`,\n },\n noBorder: {\n borderBottom: 'none',\n },\n horizontalLayout: {\n paddingRight: theme.spacing.unit * 2.5,\n '& label': {\n marginRight: theme.spacing.unit,\n // '& span:first-child': {\n // paddingRight: 0\n // }\n },\n },\n}))(Choice);\n"],"file":"choice.js"}
|
package/lib/feedback-tick.js
CHANGED
|
@@ -171,4 +171,4 @@ var _default = (0, _styles.withStyles)(stylesheet, {
|
|
|
171
171
|
})(FeedbackTick);
|
|
172
172
|
|
|
173
173
|
exports["default"] = _default;
|
|
174
|
-
//# sourceMappingURL=
|
|
174
|
+
//# sourceMappingURL=feedback-tick.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/feedback-tick.jsx"],"names":["stylesheet","incorrect","fill","color","correct","feedbackTick","width","height","position","display","verticalAlign","feedbackTickEnter","opacity","left","feedbackTickEnterActive","transition","feedbackTickLeave","feedbackTickLeaveActive","FeedbackTick","props","incorrectIcon","enableBackground","classes","correctIcon","correctness","icon","enter","enterActive","exit","exitActive","React","Component","PropTypes","object","isRequired","string","name"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { TransitionGroup, CSSTransition } from 'react-transition-group';\nimport { withStyles } from '@material-ui/core/styles';\nimport PropTypes from 'prop-types';\nimport { color } from '@pie-lib/render-ui';\n\nconst stylesheet = {\n incorrect: {\n fill: `var(--feedback-incorrect-bg-color, ${color.incorrect()})`,\n },\n correct: {\n fill: `var(--feedback-correct-bg-color, ${color.correct()})`,\n },\n feedbackTick: {\n width: '33px',\n height: '33px',\n '& svg': {\n position: 'absolute',\n display: 'inline-block',\n width: '33px',\n height: '33px',\n verticalAlign: 'middle',\n '& hide': {\n display: 'none',\n },\n },\n },\n feedbackTickEnter: {\n opacity: '0',\n left: '-50px',\n },\n feedbackTickEnterActive: {\n opacity: '1',\n left: '0px',\n transition: 'left 500ms ease-in 200ms, opacity 500ms linear 200ms',\n },\n feedbackTickLeave: {\n opacity: '1',\n left: '0px',\n },\n feedbackTickLeaveActive: {\n opacity: '0',\n left: '-50px',\n transition: 'left 300ms ease-in, opacity 300ms',\n },\n};\n\nclass FeedbackTick extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n correctness: PropTypes.string,\n };\n constructor(props) {\n super(props);\n this.incorrectIcon = (\n <svg\n key=\"1\"\n preserveAspectRatio=\"xMinYMin meet\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 44 40\"\n style={{ enableBackground: 'new 0 0 44 40' }}\n >\n <g>\n <rect\n x=\"11\"\n y=\"17.3\"\n transform=\"matrix(0.7071 -0.7071 0.7071 0.7071 -7.852 19.2507)\"\n className={this.props.classes.incorrect}\n width=\"16.6\"\n height=\"3.7\"\n />\n <rect\n x=\"17.4\"\n y=\"10.7\"\n transform=\"matrix(0.7071 -0.7071 0.7071 0.7071 -7.8175 19.209)\"\n className={this.props.classes.incorrect}\n width=\"3.7\"\n height=\"16.6\"\n />\n </g>\n </svg>\n );\n\n this.correctIcon = (\n <svg\n key=\"2\"\n preserveAspectRatio=\"xMinYMin meet\"\n version=\"1.1\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 44 40\"\n style={{ enableBackground: 'new 0 0 44 40' }}\n >\n <polygon\n className={this.props.classes.correct}\n points=\"19.1,28.6 11.8,22.3 14.4,19.2 17.9,22.1 23.9,11.4 27.5,13.4\"\n />\n </svg>\n );\n }\n\n render() {\n const { correctness, classes } = this.props;\n\n const icon = (() => {\n if (correctness === 'incorrect') {\n return this.incorrectIcon;\n } else if (correctness === 'correct') {\n return this.correctIcon;\n }\n })();\n\n return (\n <div className={classes.feedbackTick}>\n <TransitionGroup>\n {correctness && (\n <CSSTransition\n classNames={{\n enter: classes.feedbackTickEnter,\n enterActive: classes.feedbackTickEnterActive,\n exit: classes.feedbackTickLeave,\n exitActive: classes.feedbackTickLeaveActive,\n }}\n timeout={{ enter: 700, exit: 300 }}\n >\n {icon}\n </CSSTransition>\n )}\n </TransitionGroup>\n </div>\n );\n }\n}\n\nexport default withStyles(stylesheet, { name: 'FeedbackTick' })(FeedbackTick);\n"],"file":"feedback-tick.js"}
|
package/lib/index.js
CHANGED
|
@@ -371,4 +371,4 @@ var MultipleChoice = /*#__PURE__*/function (_HTMLElement) {
|
|
|
371
371
|
}( /*#__PURE__*/(0, _wrapNativeSuper2["default"])(HTMLElement));
|
|
372
372
|
|
|
373
373
|
exports["default"] = MultipleChoice;
|
|
374
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJsb2ciLCJpc0NvbXBsZXRlIiwic2Vzc2lvbiIsIm1vZGVsIiwiYXVkaW9Db21wbGV0ZSIsImF1dG9wbGF5QXVkaW9FbmFibGVkIiwiY29tcGxldGVBdWRpb0VuYWJsZWQiLCJ2YWx1ZSIsImNob2ljZU1vZGUiLCJtaW5TZWxlY3Rpb25zIiwibWF4U2VsZWN0aW9ucyIsInNlbGVjdGlvbnMiLCJsZW5ndGgiLCJNdWx0aXBsZUNob2ljZSIsIl9tb2RlbCIsIl9zZXNzaW9uIiwiX2JvdW5kSGFuZGxlS2V5RG93biIsImhhbmRsZUtleURvd24iLCJiaW5kIiwiX2tleWJvYXJkRXZlbnRzRW5hYmxlZCIsIl9hdWRpb0luaXRpYWxpemVkIiwiX3JlcmVuZGVyIiwiZWxlbWVudCIsIlJlYWN0IiwiY3JlYXRlRWxlbWVudCIsIk1haW4iLCJvbkNob2ljZUNoYW5nZWQiLCJfb25DaGFuZ2UiLCJvblNob3dDb3JyZWN0VG9nZ2xlIiwic2V0QXR0cmlidXRlIiwic2V0TGFuZ0F0dHJpYnV0ZSIsIlJlYWN0RE9NIiwicmVuZGVyIiwia2V5Ym9hcmRFdmVudHNFbmFibGVkIiwiZW5hYmxlS2V5Ym9hcmRFdmVudHMiLCJsZWFkaW5nIiwidHJhaWxpbmciLCJfZGlzcGF0Y2hSZXNwb25zZUNoYW5nZWQiLCJkaXNwYXRjaEV2ZW50IiwiU2Vzc2lvbkNoYW5nZWRFdmVudCIsInRhZ05hbWUiLCJ0b0xvd2VyQ2FzZSIsIl9kaXNwYXRjaE1vZGVsU2V0IiwiTW9kZWxTZXRFdmVudCIsInVuZGVmaW5lZCIsImxhbmd1YWdlIiwibGFuZyIsInNsaWNlIiwicyIsImRhdGEiLCJpbmZvIiwiZG9jdW1lbnQiLCJpZCIsIk9iamVjdCIsImFzc2lnbiIsInN0eWxlIiwicG9zaXRpb24iLCJ0b3AiLCJ3aWR0aCIsImhlaWdodCIsImRpc3BsYXkiLCJqdXN0aWZ5Q29udGVudCIsImFsaWduSXRlbXMiLCJiYWNrZ3JvdW5kIiwiekluZGV4IiwiY3Vyc29yIiwiaW1nIiwic3JjIiwiRW5hYmxlQXVkaW9BdXRvcGxheUltYWdlIiwiYWx0IiwiYXBwZW5kQ2hpbGQiLCJvYnNlcnZlciIsIk11dGF0aW9uT2JzZXJ2ZXIiLCJtdXRhdGlvbnNMaXN0IiwiZm9yRWFjaCIsIm11dGF0aW9uIiwidHlwZSIsImF1ZGlvIiwicXVlcnlTZWxlY3RvciIsImlzSW5zaWRlUHJvbXB0IiwiY2xvc2VzdCIsIl9jcmVhdGVBdWRpb0luZm9Ub2FzdCIsImNvbnRhaW5lciIsImVuYWJsZUF1ZGlvIiwicGxheSIsInJlbW92ZUNoaWxkIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInNldFRpbWVvdXQiLCJwYXVzZWQiLCJhZGRFdmVudExpc3RlbmVyIiwiaGFuZGxlUGxheWluZyIsImF1ZGlvU3RhcnRUaW1lIiwiRGF0ZSIsImdldFRpbWUiLCJoYW5kbGVFbmRlZCIsImF1ZGlvRW5kVGltZSIsIl9hdWRpbyIsIl9oYW5kbGVQbGF5aW5nIiwiX2hhbmRsZUVuZGVkIiwiX2VuYWJsZUF1ZGlvIiwiZGlzY29ubmVjdCIsIm9ic2VydmUiLCJjaGlsZExpc3QiLCJzdWJ0cmVlIiwid2luZG93IiwiZXZlbnQiLCJrZXlUb0luZGV4Iiwia2V5IiwibnVtT2Zmc2V0IiwibGV0dGVyT2Zmc2V0IiwidGVzdCIsImNoYXJDb2RlQXQiLCJjaG9pY2VJbmRleCIsImNob2ljZXMiLCJjdXJyZW50VmFsdWUiLCJjaG9pY2VJZCIsIm5ld1ZhbHVlIiwic2VsZWN0ZWQiLCJpbmNsdWRlcyIsInNlbGVjdG9yIiwiSFRNTEVsZW1lbnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7O0FBRUEsSUFBTUEsR0FBRyxHQUFHLHVCQUFNLHdCQUFOLENBQVo7O0FBRU8sSUFBTUMsVUFBVSxHQUFHLFNBQWJBLFVBQWEsQ0FBQ0MsT0FBRCxFQUFVQyxLQUFWLEVBQWlCQyxhQUFqQixF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QUwsQ0FBWW1HLE9BQWhCLHlEQUFJLHFCQUFxQnJHLE1BQXpCLENBQWpFLEVBQWtHO0FBQ2hHO0FBQ0Q7O0FBRUQsVUFBTXNHLFlBQVksR0FBRyxLQUFLbkcsUUFBTCxDQUFjUixLQUFkLElBQXVCLEVBQTVDO0FBQ0EsVUFBTTRHLFFBQVEsR0FBRyxLQUFLckcsTUFBTCxDQUFZbUcsT0FBWixDQUFvQkQsV0FBcEIsRUFBaUN6RyxLQUFsRDtBQUVBLFVBQU02RyxRQUFRLEdBQUc7QUFDZjdHLFFBQUFBLEtBQUssRUFBRTRHLFFBRFE7QUFFZkUsUUFBQUEsUUFBUSxFQUFFLENBQUNILFlBQVksQ0FBQ0ksUUFBYixDQUFzQkgsUUFBdEIsQ0FGSTtBQUdmSSxRQUFBQSxRQUFRLEVBQUU7QUFISyxPQUFqQjs7QUFNQSxXQUFLNUYsU0FBTCxDQUFleUYsUUFBZjtBQUNEOzs7a0RBdlF5Q0ksVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBNYWluIGZyb20gJy4vbWFpbic7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQgZGVib3VuY2UgZnJvbSAnbG9kYXNoL2RlYm91bmNlJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgeyBNb2RlbFNldEV2ZW50LCBTZXNzaW9uQ2hhbmdlZEV2ZW50IH0gZnJvbSAnQHBpZS1mcmFtZXdvcmsvcGllLXBsYXllci1ldmVudHMnO1xuaW1wb3J0IHsgcmVuZGVyTWF0aCB9IGZyb20gJ0BwaWUtbGliL21hdGgtcmVuZGVyaW5nJztcbmltcG9ydCB7IEVuYWJsZUF1ZGlvQXV0b3BsYXlJbWFnZSB9IGZyb20gJ0BwaWUtbGliL3JlbmRlci11aSc7XG5pbXBvcnQgeyB1cGRhdGVTZXNzaW9uVmFsdWUsIHVwZGF0ZVNlc3Npb25NZXRhZGF0YSB9IGZyb20gJy4vc2Vzc2lvbi11cGRhdGVyJztcblxuY29uc3QgbG9nID0gZGVidWcoJ3BpZS11aTptdWx0aXBsZS1jaG9pY2UnKTtcblxuZXhwb3J0IGNvbnN0IGlzQ29tcGxldGUgPSAoc2Vzc2lvbiwgbW9kZWwsIGF1ZGlvQ29tcGxldGUpID0+IHtcbiAgY29uc3QgeyBhdXRvcGxheUF1ZGlvRW5hYmxlZCwgY29tcGxldGVBdWRpb0VuYWJsZWQgfSA9IG1vZGVsIHx8IHt9O1xuXG4gIGlmIChhdXRvcGxheUF1ZGlvRW5hYmxlZCAmJiBjb21wbGV0ZUF1ZGlvRW5hYmxlZCAmJiAhYXVkaW9Db21wbGV0ZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghc2Vzc2lvbiB8fCAhc2Vzc2lvbi52YWx1ZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHsgY2hvaWNlTW9kZSwgbWluU2VsZWN0aW9ucyA9IDEsIG1heFNlbGVjdGlvbnMgfSA9IG1vZGVsIHx8IHt9O1xuICBjb25zdCBzZWxlY3Rpb25zID0gc2Vzc2lvbi52YWx1ZS5sZW5ndGggfHwgMDtcblxuICBpZiAoY2hvaWNlTW9kZSA9PT0gJ3JhZGlvJykge1xuICAgIHJldHVybiAhIXNlbGVjdGlvbnM7XG4gIH1cblxuICBpZiAoc2VsZWN0aW9ucyA8IG1pblNlbGVjdGlvbnMgfHwgc2VsZWN0aW9ucyA+IG1heFNlbGVjdGlvbnMpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE11bHRpcGxlQ2hvaWNlIGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX21vZGVsID0gbnVsbDtcbiAgICB0aGlzLl9zZXNzaW9uID0gbnVsbDtcbiAgICB0aGlzLmF1ZGlvQ29tcGxldGUgPSBmYWxzZTtcbiAgICB0aGlzLl9ib3VuZEhhbmRsZUtleURvd24gPSB0aGlzLmhhbmRsZUtleURvd24uYmluZCh0aGlzKTtcbiAgICB0aGlzLl9rZXlib2FyZEV2ZW50c0VuYWJsZWQgPSBmYWxzZTtcbiAgICB0aGlzLl9hdWRpb0luaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgICB0aGlzLl9yZXJlbmRlciA9IGRlYm91bmNlKFxuICAgICAgKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5fbW9kZWwgJiYgdGhpcy5fc2Vzc2lvbikge1xuICAgICAgICAgIHZhciBlbGVtZW50ID0gUmVhY3QuY3JlYXRlRWxlbWVudChNYWluLCB7XG4gICAgICAgICAgICBtb2RlbDogdGhpcy5fbW9kZWwsXG4gICAgICAgICAgICBzZXNzaW9uOiB0aGlzLl9zZXNzaW9uLFxuICAgICAgICAgICAgb25DaG9pY2VDaGFuZ2VkOiB0aGlzLl9vbkNoYW5nZS5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgb25TaG93Q29ycmVjdFRvZ2dsZTogdGhpcy5vblNob3dDb3JyZWN0VG9nZ2xlLmJpbmQodGhpcyksXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICAvL1RPRE86IGFyaWEtbGFiZWwgaXMgc2V0IGluIHRoZSBfcmVyZW5kZXIgYmVjYXVzZSB3ZSBuZWVkIHRvIGNoYW5nZSBpdCB3aGVuIHRoZSBtb2RlbC5jaG9pY2VNb2RlIGlzIHVwZGF0ZWQuIENvbnNpZGVyIHJldmlzaXRpbmcgdGhlIHBsYWNlbWVudCBvZiB0aGUgYXJpYS1sYWJlbCBzZXR0aW5nIGluIHRoZSBfcmVyZW5kZXJcbiAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZShcbiAgICAgICAgICAgICdhcmlhLWxhYmVsJyxcbiAgICAgICAgICAgIHRoaXMuX21vZGVsLmNob2ljZU1vZGUgPT09ICdyYWRpbycgPyAnTXVsdGlwbGUgQ2hvaWNlIFF1ZXN0aW9uJyA6ICdNdWx0aXBsZSBDb3JyZWN0IEFuc3dlciBRdWVzdGlvbicsXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgncm9sZScsICdyZWdpb24nKTtcbiAgICAgICAgICB0aGlzLnNldExhbmdBdHRyaWJ1dGUoKTtcblxuICAgICAgICAgIFJlYWN0RE9NLnJlbmRlcihlbGVtZW50LCB0aGlzLCAoKSA9PiB7XG4gICAgICAgICAgICBsb2coJ3JlbmRlciBjb21wbGV0ZSAtIHJlbmRlciBtYXRoJyk7XG4gICAgICAgICAgICByZW5kZXJNYXRoKHRoaXMpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYgKHRoaXMuX21vZGVsLmtleWJvYXJkRXZlbnRzRW5hYmxlZCA9PT0gdHJ1ZSAmJiAhdGhpcy5fa2V5Ym9hcmRFdmVudHNFbmFibGVkKSB7XG4gICAgICAgICAgICB0aGlzLmVuYWJsZUtleWJvYXJkRXZlbnRzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvZygnc2tpcCcpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgNTAsXG4gICAgICB7IGxlYWRpbmc6IGZhbHNlLCB0cmFpbGluZzogdHJ1ZSB9LFxuICAgICk7XG5cbiAgICB0aGlzLl9kaXNwYXRjaFJlc3BvbnNlQ2hhbmdlZCA9IGRlYm91bmNlKCgpID0+IHtcbiAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgbmV3IFNlc3Npb25DaGFuZ2VkRXZlbnQodGhpcy50YWdOYW1lLnRvTG93ZXJDYXNlKCksIGlzQ29tcGxldGUodGhpcy5fc2Vzc2lvbiwgdGhpcy5fbW9kZWwsIHRoaXMuYXVkaW9Db21wbGV0ZSkpLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX2Rpc3BhdGNoTW9kZWxTZXQgPSBkZWJvdW5jZShcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgIG5ldyBNb2RlbFNldEV2ZW50KFxuICAgICAgICAgICAgdGhpcy50YWdOYW1lLnRvTG93ZXJDYXNlKCksXG4gICAgICAgICAgICBpc0NvbXBsZXRlKHRoaXMuX3Nlc3Npb24sIHRoaXMuX21vZGVsKSxcbiAgICAgICAgICAgIHRoaXMuX21vZGVsICE9PSB1bmRlZmluZWQsXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgICA1MCxcbiAgICAgIHsgbGVhZGluZzogZmFsc2UsIHRyYWlsaW5nOiB0cnVlIH0sXG4gICAgKTtcbiAgfVxuXG4gIG9uU2hvd0NvcnJlY3RUb2dnbGUoKSB7XG4gICAgcmVuZGVyTWF0aCh0aGlzKTtcbiAgfVxuXG4gIHNldExhbmdBdHRyaWJ1dGUoKSB7XG4gICAgY29uc3QgbGFuZ3VhZ2UgPSB0aGlzLl9tb2RlbCAmJiB0eXBlb2YgdGhpcy5fbW9kZWwubGFuZ3VhZ2UgPyB0aGlzLl9tb2RlbC5sYW5ndWFnZSA6ICcnO1xuICAgIGNvbnN0IGxhbmcgPSBsYW5ndWFnZSA/IGxhbmd1YWdlLnNsaWNlKDAsIDIpIDogJ2VuJztcbiAgICB0aGlzLnNldEF0dHJpYnV0ZSgnbGFuZycsIGxhbmcpO1xuICB9XG5cbiAgc2V0IG1vZGVsKHMpIHtcbiAgICB0aGlzLl9tb2RlbCA9IHM7XG4gICAgdGhpcy5fcmVyZW5kZXIoKTtcbiAgICAvLyByZXNldCB0aGUgYXVkaW9Jbml0aWFsaXplZCB0byBmYWxzZSBzaW5jZSB0aGUgbW9kZWwgY2hhbmdlZCwgYW5kIHdlIG1pZ2h0IG5lZWQgdG8gcmVpbml0aWFsaXplIHRoZSBhdWRpb1xuICAgIHRoaXMuX2F1ZGlvSW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICB0aGlzLl9kaXNwYXRjaE1vZGVsU2V0KCk7XG4gIH1cblxuICBnZXQgc2Vzc2lvbigpIHtcbiAgICByZXR1cm4gdGhpcy5fc2Vzc2lvbjtcbiAgfVxuXG4gIHNldCBzZXNzaW9uKHMpIHtcbiAgICB0aGlzLl9zZXNzaW9uID0gcztcbiAgICB0aGlzLl9yZXJlbmRlcigpO1xuICAgIC8vVE9ETzogcmVtb3ZlIHRoaXMgc2Vzc2lvbi1jaGFuZ2VkIHNob3VsZCBvbmx5IGJlIGVtaXQgb24gdXNlciBjaGFuZ2VcbiAgICB0aGlzLl9kaXNwYXRjaFJlc3BvbnNlQ2hhbmdlZCgpO1xuICB9XG5cbiAgX29uQ2hhbmdlKGRhdGEpIHtcbiAgICB1cGRhdGVTZXNzaW9uVmFsdWUodGhpcy5fc2Vzc2lvbiwgdGhpcy5fbW9kZWwuY2hvaWNlTW9kZSwgZGF0YSk7XG4gICAgdGhpcy5fZGlzcGF0Y2hSZXNwb25zZUNoYW5nZWQoKTtcbiAgICB0aGlzLl9yZXJlbmRlcigpO1xuICB9XG5cbiAgX2NyZWF0ZUF1ZGlvSW5mb1RvYXN0KCkge1xuICAgIGNvbnN0IGluZm8gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBpbmZvLmlkID0gJ3BsYXktYXVkaW8taW5mbyc7XG5cbiAgICBPYmplY3QuYXNzaWduKGluZm8uc3R5bGUsIHtcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgdG9wOiAwLFxuICAgICAgd2lkdGg6JzEwMCUnLFxuICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgIGJhY2tncm91bmQ6ICd3aGl0ZScsXG4gICAgICB6SW5kZXg6ICcxMDAwJyxcbiAgICAgIGN1cnNvcjogJ3BvaW50ZXInXG4gICAgfSk7XG5cbiAgICBjb25zdCBpbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKTtcbiAgICBpbWcuc3JjID0gRW5hYmxlQXVkaW9BdXRvcGxheUltYWdlO1xuICAgIGltZy5hbHQgPSAnQ2xpY2sgYW55d2hlcmUgdG8gZW5hYmxlIGF1ZGlvIGF1dG9wbGF5JztcbiAgICBpbWcud2lkdGggPSA1MDA7XG4gICAgaW1nLmhlaWdodCA9IDMwMDtcblxuICAgIGluZm8uYXBwZW5kQ2hpbGQoaW1nKTtcbiAgICByZXR1cm4gaW5mbztcbiAgfVxuXG4gIGNvbm5lY3RlZENhbGxiYWNrKCkge1xuICAgIHRoaXMuX3JlcmVuZGVyKCk7XG5cbiAgICAvLyBPYnNlcnZhdGlvbjogIGF1ZGlvIGluIENocm9tZSB3aWxsIGhhdmUgdGhlIGF1dG9wbGF5IGF0dHJpYnV0ZSxcbiAgICAvLyB3aGlsZSBvdGhlciBicm93c2VycyB3aWxsIG5vdCBoYXZlIHRoZSBhdXRvcGxheSBhdHRyaWJ1dGUgYW5kIHdpbGwgbmVlZCBhIHVzZXIgaW50ZXJhY3Rpb24gdG8gcGxheSB0aGUgYXVkaW9cbiAgICAvLyBUaGlzIHdvcmthcm91bmQgZml4ZXMgdGhlIGlzc3VlIG9mIGF1ZGlvIGJlaW5nIGNhY2hlZCBhbmQgcGxheWVkIG9uIGFueSB1c2VyIGludGVyYWN0aW9uIGluIFNhZmFyaSBhbmQgRmlyZWZveFxuICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9uc0xpc3QsIG9ic2VydmVyKSA9PiB7XG4gICAgICBtdXRhdGlvbnNMaXN0LmZvckVhY2goKG11dGF0aW9uKSA9PiB7XG4gICAgICAgIGlmIChtdXRhdGlvbi50eXBlID09PSAnY2hpbGRMaXN0Jykge1xuICAgICAgICAgIGlmICh0aGlzLl9hdWRpb0luaXRpYWxpemVkKSByZXR1cm47XG5cbiAgICAgICAgICBjb25zdCBhdWRpbyA9IHRoaXMucXVlcnlTZWxlY3RvcignYXVkaW8nKTtcbiAgICAgICAgICBjb25zdCBpc0luc2lkZVByb21wdCA9IGF1ZGlvICYmIGF1ZGlvLmNsb3Nlc3QoJyNwcmV2aWV3LXByb21wdCcpO1xuXG4gICAgICAgICAgaWYgKCF0aGlzLl9tb2RlbCkgcmV0dXJuO1xuICAgICAgICAgIGlmICghdGhpcy5fbW9kZWwuYXV0b3BsYXlBdWRpb0VuYWJsZWQpIHJldHVybjtcbiAgICAgICAgICBpZiAoYXVkaW8gJiYgIWlzSW5zaWRlUHJvbXB0KSByZXR1cm47XG4gICAgICAgICAgaWYgKCFhdWRpbykgcmV0dXJuO1xuXG4gICAgICAgICAgY29uc3QgaW5mbyA9IHRoaXMuX2NyZWF0ZUF1ZGlvSW5mb1RvYXN0KCk7XG4gICAgICAgICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5xdWVyeVNlbGVjdG9yKCcjbWFpbi1jb250YWluZXInKTtcbiAgICAgICAgICBjb25zdCBlbmFibGVBdWRpbyA9ICgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnF1ZXJ5U2VsZWN0b3IoJyNwbGF5LWF1ZGlvLWluZm8nKSkge1xuICAgICAgICAgICAgICBhdWRpby5wbGF5KCk7XG4gICAgICAgICAgICAgIGNvbnRhaW5lci5yZW1vdmVDaGlsZChpbmZvKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBlbmFibGVBdWRpbyk7XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIC8vIGlmIHRoZSBhdWRpbyBpcyBwYXVzZWQsIGl0IG1lYW5zIHRoZSB1c2VyIGhhcyBub3QgaW50ZXJhY3RlZCB3aXRoIHRoZSBwYWdlIHlldCBhbmQgdGhlIGF1ZGlvIHdpbGwgbm90IHBsYXlcbiAgICAgICAgICAvLyBGSVggRk9SIFNBRkFSSTogcGxheSB3aXRoIGEgc2xpZ2h0IGRlbGF5IHRvIGNoZWNrIGlmIGF1dG9wbGF5IHdhcyBibG9ja2VkXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoYXVkaW8ucGF1c2VkICYmICF0aGlzLnF1ZXJ5U2VsZWN0b3IoJyNwbGF5LWF1ZGlvLWluZm8nKSkge1xuICAgICAgICAgICAgICAvLyBhZGQgaW5mbyBtZXNzYWdlIGFzIGEgdG9hc3QgdG8gZW5hYmxlIGF1ZGlvIHBsYXliYWNrXG4gICAgICAgICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChpbmZvKTtcbiAgICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBlbmFibGVBdWRpbyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGVuYWJsZUF1ZGlvKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LCA1MDApO1xuXG4gICAgICAgICAgLy8gd2UgbmVlZCB0byBsaXN0ZW4gZm9yIHRoZSBwbGF5aW5nIGV2ZW50IHRvIHJlbW92ZSB0aGUgdG9hc3QgaW4gY2FzZSB0aGUgYXVkaW8gcGxheXMgYmVjYXVzZSBvZiByZS1yZW5kZXJpbmdcbiAgICAgICAgICBjb25zdCBoYW5kbGVQbGF5aW5nID0gKCkgPT4ge1xuICAgICAgICAgICAgdXBkYXRlU2Vzc2lvbk1ldGFkYXRhKHRoaXMuX3Nlc3Npb24sIHsgYXVkaW9TdGFydFRpbWU6IG5ldyBEYXRlKCkuZ2V0VGltZSgpIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBpbmZvID0gdGhpcy5xdWVyeVNlbGVjdG9yKCcjcGxheS1hdWRpby1pbmZvJyk7XG4gICAgICAgICAgICBpZiAoaW5mbykge1xuICAgICAgICAgICAgICBjb250YWluZXIucmVtb3ZlQ2hpbGQoaW5mbyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGF1ZGlvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BsYXlpbmcnLCBoYW5kbGVQbGF5aW5nKTtcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgYXVkaW8uYWRkRXZlbnRMaXN0ZW5lcigncGxheWluZycsIGhhbmRsZVBsYXlpbmcpO1xuXG4gICAgICAgICAgLy8gd2UgbmVlZCB0byBsaXN0ZW4gZm9yIHRoZSBlbmRlZCBldmVudCB0byB1cGRhdGUgdGhlIGlzQ29tcGxldGUgc3RhdGVcbiAgICAgICAgICBjb25zdCBoYW5kbGVFbmRlZCA9ICgpID0+IHtcbiAgICAgICAgICAgIHVwZGF0ZVNlc3Npb25NZXRhZGF0YSh0aGlzLl9zZXNzaW9uLCB7IGF1ZGlvRW5kVGltZTogbmV3IERhdGUoKS5nZXRUaW1lKCkgfSk7XG4gICAgICAgICAgICB0aGlzLmF1ZGlvQ29tcGxldGUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fZGlzcGF0Y2hSZXNwb25zZUNoYW5nZWQoKTtcbiAgICAgICAgICAgIGF1ZGlvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2VuZGVkJywgaGFuZGxlRW5kZWQpO1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICBhdWRpby5hZGRFdmVudExpc3RlbmVyKCdlbmRlZCcsIGhhbmRsZUVuZGVkKTtcblxuICAgICAgICAgIC8vIHN0b3JlIHJlZmVyZW5jZXMgdG8gcmVtb3ZlIGxhdGVyXG4gICAgICAgICAgdGhpcy5fYXVkaW8gPSBhdWRpbztcbiAgICAgICAgICB0aGlzLl9oYW5kbGVQbGF5aW5nID0gaGFuZGxlUGxheWluZztcbiAgICAgICAgICB0aGlzLl9oYW5kbGVFbmRlZCA9IGhhbmRsZUVuZGVkO1xuICAgICAgICAgIHRoaXMuX2VuYWJsZUF1ZGlvID0gZW5hYmxlQXVkaW87XG4gICAgICAgICAgLy8gc2V0IHRvIHRydWUgdG8gcHJldmVudCBtdWx0aXBsZSBpbml0aWFsaXphdGlvbnNcbiAgICAgICAgICB0aGlzLl9hdWRpb0luaXRpYWxpemVkID0gdHJ1ZTtcblxuICAgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBvYnNlcnZlci5vYnNlcnZlKHRoaXMsIHsgY2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOiB0cnVlIH0pO1xuICB9XG5cbiAgZW5hYmxlS2V5Ym9hcmRFdmVudHMoKSB7XG4gICAgaWYgKCF0aGlzLl9rZXlib2FyZEV2ZW50c0VuYWJsZWQpIHtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5fYm91bmRIYW5kbGVLZXlEb3duKTtcbiAgICAgIHRoaXMuX2tleWJvYXJkRXZlbnRzRW5hYmxlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgZGlzY29ubmVjdGVkQ2FsbGJhY2soKSB7XG4gICAgaWYgKHRoaXMuX2tleWJvYXJkRXZlbnRzRW5hYmxlZCkge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLl9ib3VuZEhhbmRsZUtleURvd24pO1xuICAgICAgdGhpcy5fa2V5Ym9hcmRFdmVudHNFbmFibGVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLl9lbmFibGVBdWRpbyk7XG5cbiAgICBpZiAodGhpcy5fYXVkaW8pIHtcbiAgICAgIHRoaXMuX2F1ZGlvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BsYXlpbmcnLCB0aGlzLl9oYW5kbGVQbGF5aW5nKTtcbiAgICAgIHRoaXMuX2F1ZGlvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2VuZGVkJywgdGhpcy5faGFuZGxlRW5kZWQpO1xuICAgICAgdGhpcy5fYXVkaW8gPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIGdsb2JhbCBrZXlib2FyZCBldmVudHMgZm9yIHNlbGVjdGluZyBvciB0b2dnbGluZyBtdWx0aXBsZS1jaG9pY2UgYW5zd2Vycy5cbiAgICogTWFwcyBrZXlzICgxLTksIDAsIGEtaiwgQS1KKSB0byBjaG9pY2VzIGFuZCB1cGRhdGVzIHRoZSBzZXNzaW9uIHN0YXRlIGFjY29yZGluZ2x5LlxuICAgKiBFbnN1cmVzIHZhbGlkIGtleSBwcmVzc2VzIHRvZ2dsZSBvciBzZWxlY3QgdGhlIGFwcHJvcHJpYXRlIGNob2ljZSBiYXNlZCBvbiB0aGUgbW9kZWwuXG4gICAqL1xuICBoYW5kbGVLZXlEb3duKGV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLl9tb2RlbCB8fCAhdGhpcy5fc2Vzc2lvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGtleVRvSW5kZXggPSAoa2V5KSA9PiB7XG4gICAgICBjb25zdCBudW1PZmZzZXQgPSBrZXkgPj0gJzEnICYmIGtleSA8PSAnOScgPyBrZXkgLSAnMScgOiBrZXkgPT09ICcwJyA/IDkgOiAtMTtcbiAgICAgIGNvbnN0IGxldHRlck9mZnNldCA9IC9eW2EtakEtSl0kLy50ZXN0KGtleSkgPyBrZXkudG9Mb3dlckNhc2UoKS5jaGFyQ29kZUF0KDApIC0gJ2EnLmNoYXJDb2RlQXQoMCkgOiAtMTtcbiAgICAgIHJldHVybiBudW1PZmZzZXQgPj0gMCA/IG51bU9mZnNldCA6IGxldHRlck9mZnNldDtcbiAgICB9O1xuXG4gICAgY29uc3QgY2hvaWNlSW5kZXggPSBrZXlUb0luZGV4KGV2ZW50LmtleSk7XG5cbiAgICBpZiAoY2hvaWNlSW5kZXggPT09IHVuZGVmaW5lZCB8fCBjaG9pY2VJbmRleCA8PSAtMSB8fCBjaG9pY2VJbmRleCA+PSB0aGlzLl9tb2RlbC5jaG9pY2VzPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLl9zZXNzaW9uLnZhbHVlIHx8IFtdO1xuICAgIGNvbnN0IGNob2ljZUlkID0gdGhpcy5fbW9kZWwuY2hvaWNlc1tjaG9pY2VJbmRleF0udmFsdWU7XG5cbiAgICBjb25zdCBuZXdWYWx1ZSA9IHtcbiAgICAgIHZhbHVlOiBjaG9pY2VJZCxcbiAgICAgIHNlbGVjdGVkOiAhY3VycmVudFZhbHVlLmluY2x1ZGVzKGNob2ljZUlkKSxcbiAgICAgIHNlbGVjdG9yOiAnS2V5Ym9hcmQnLFxuICAgIH07XG5cbiAgICB0aGlzLl9vbkNoYW5nZShuZXdWYWx1ZSk7XG4gIH1cbn1cbiJdfQ==
|
|
374
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.js"],"names":["log","isComplete","session","model","audioComplete","autoplayAudioEnabled","completeAudioEnabled","value","choiceMode","minSelections","maxSelections","selections","length","MultipleChoice","_model","_session","_boundHandleKeyDown","handleKeyDown","bind","_keyboardEventsEnabled","_audioInitialized","_rerender","element","React","createElement","Main","onChoiceChanged","_onChange","onShowCorrectToggle","setAttribute","setLangAttribute","ReactDOM","render","keyboardEventsEnabled","enableKeyboardEvents","leading","trailing","_dispatchResponseChanged","dispatchEvent","SessionChangedEvent","tagName","toLowerCase","_dispatchModelSet","ModelSetEvent","undefined","language","lang","slice","s","data","info","document","id","Object","assign","style","position","top","width","height","display","justifyContent","alignItems","background","zIndex","cursor","img","src","EnableAudioAutoplayImage","alt","appendChild","observer","MutationObserver","mutationsList","forEach","mutation","type","audio","querySelector","isInsidePrompt","closest","_createAudioInfoToast","container","enableAudio","play","removeChild","removeEventListener","setTimeout","paused","addEventListener","handlePlaying","audioStartTime","Date","getTime","handleEnded","audioEndTime","_audio","_handlePlaying","_handleEnded","_enableAudio","disconnect","observe","childList","subtree","window","event","keyToIndex","key","numOffset","letterOffset","test","charCodeAt","choiceIndex","choices","currentValue","choiceId","newValue","selected","includes","selector","HTMLElement"],"mappings":"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","sourcesContent":["import Main from './main';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport debounce from 'lodash/debounce';\nimport debug from 'debug';\nimport { ModelSetEvent, SessionChangedEvent } from '@pie-framework/pie-player-events';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { EnableAudioAutoplayImage } from '@pie-lib/render-ui';\nimport { updateSessionValue, updateSessionMetadata } from './session-updater';\n\nconst log = debug('pie-ui:multiple-choice');\n\nexport const isComplete = (session, model, audioComplete) => {\n const { autoplayAudioEnabled, completeAudioEnabled } = model || {};\n\n if (autoplayAudioEnabled && completeAudioEnabled && !audioComplete) {\n return false;\n }\n\n if (!session || !session.value) {\n return false;\n }\n\n const { choiceMode, minSelections = 1, maxSelections } = model || {};\n const selections = session.value.length || 0;\n\n if (choiceMode === 'radio') {\n return !!selections;\n }\n\n if (selections < minSelections || selections > maxSelections) {\n return false;\n }\n\n return true;\n};\n\nexport default class MultipleChoice extends HTMLElement {\n constructor() {\n super();\n this._model = null;\n this._session = null;\n this.audioComplete = false;\n this._boundHandleKeyDown = this.handleKeyDown.bind(this);\n this._keyboardEventsEnabled = false;\n this._audioInitialized = false;\n\n this._rerender = debounce(\n () => {\n if (this._model && this._session) {\n var element = React.createElement(Main, {\n model: this._model,\n session: this._session,\n onChoiceChanged: this._onChange.bind(this),\n onShowCorrectToggle: this.onShowCorrectToggle.bind(this),\n });\n\n //TODO: aria-label is set in the _rerender because we need to change it when the model.choiceMode is updated. Consider revisiting the placement of the aria-label setting in the _rerender\n this.setAttribute(\n 'aria-label',\n this._model.choiceMode === 'radio' ? 'Multiple Choice Question' : 'Multiple Correct Answer Question',\n );\n this.setAttribute('role', 'region');\n this.setLangAttribute();\n\n ReactDOM.render(element, this, () => {\n log('render complete - render math');\n renderMath(this);\n });\n\n if (this._model.keyboardEventsEnabled === true && !this._keyboardEventsEnabled) {\n this.enableKeyboardEvents();\n }\n } else {\n log('skip');\n }\n },\n 50,\n { leading: false, trailing: true },\n );\n\n this._dispatchResponseChanged = debounce(() => {\n this.dispatchEvent(\n new SessionChangedEvent(this.tagName.toLowerCase(), isComplete(this._session, this._model, this.audioComplete)),\n );\n });\n\n this._dispatchModelSet = debounce(\n () => {\n this.dispatchEvent(\n new ModelSetEvent(\n this.tagName.toLowerCase(),\n isComplete(this._session, this._model),\n this._model !== undefined,\n ),\n );\n },\n 50,\n { leading: false, trailing: true },\n );\n }\n\n onShowCorrectToggle() {\n renderMath(this);\n }\n\n setLangAttribute() {\n const language = this._model && typeof this._model.language ? this._model.language : '';\n const lang = language ? language.slice(0, 2) : 'en';\n this.setAttribute('lang', lang);\n }\n\n set model(s) {\n this._model = s;\n this._rerender();\n // reset the audioInitialized to false since the model changed, and we might need to reinitialize the audio\n this._audioInitialized = false;\n this._dispatchModelSet();\n }\n\n get session() {\n return this._session;\n }\n\n set session(s) {\n this._session = s;\n this._rerender();\n //TODO: remove this session-changed should only be emit on user change\n this._dispatchResponseChanged();\n }\n\n _onChange(data) {\n updateSessionValue(this._session, this._model.choiceMode, data);\n this._dispatchResponseChanged();\n this._rerender();\n }\n\n _createAudioInfoToast() {\n const info = document.createElement('div');\n info.id = 'play-audio-info';\n\n Object.assign(info.style, {\n position: 'absolute',\n top: 0,\n width:'100%',\n height: '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n background: 'white',\n zIndex: '1000',\n cursor: 'pointer'\n });\n\n const img = document.createElement('img');\n img.src = EnableAudioAutoplayImage;\n img.alt = 'Click anywhere to enable audio autoplay';\n img.width = 500;\n img.height = 300;\n\n info.appendChild(img);\n return info;\n }\n\n connectedCallback() {\n this._rerender();\n\n // Observation: audio in Chrome will have the autoplay attribute,\n // while other browsers will not have the autoplay attribute and will need a user interaction to play the audio\n // This workaround fixes the issue of audio being cached and played on any user interaction in Safari and Firefox\n const observer = new MutationObserver((mutationsList, observer) => {\n mutationsList.forEach((mutation) => {\n if (mutation.type === 'childList') {\n if (this._audioInitialized) return;\n\n const audio = this.querySelector('audio');\n const isInsidePrompt = audio && audio.closest('#preview-prompt');\n\n if (!this._model) return;\n if (!this._model.autoplayAudioEnabled) return;\n if (audio && !isInsidePrompt) return;\n if (!audio) return;\n\n const info = this._createAudioInfoToast();\n const container = this.querySelector('#main-container');\n const enableAudio = () => {\n if (this.querySelector('#play-audio-info')) {\n audio.play();\n container.removeChild(info);\n }\n\n document.removeEventListener('click', enableAudio);\n };\n\n // if the audio is paused, it means the user has not interacted with the page yet and the audio will not play\n // FIX FOR SAFARI: play with a slight delay to check if autoplay was blocked\n setTimeout(() => {\n if (audio.paused && !this.querySelector('#play-audio-info')) {\n // add info message as a toast to enable audio playback\n container.appendChild(info);\n document.addEventListener('click', enableAudio);\n } else {\n document.removeEventListener('click', enableAudio);\n }\n }, 500);\n\n // we need to listen for the playing event to remove the toast in case the audio plays because of re-rendering\n const handlePlaying = () => {\n updateSessionMetadata(this._session, { audioStartTime: new Date().getTime() });\n\n const info = this.querySelector('#play-audio-info');\n if (info) {\n container.removeChild(info);\n }\n\n audio.removeEventListener('playing', handlePlaying);\n };\n\n audio.addEventListener('playing', handlePlaying);\n\n // we need to listen for the ended event to update the isComplete state\n const handleEnded = () => {\n updateSessionMetadata(this._session, { audioEndTime: new Date().getTime() });\n this.audioComplete = true;\n this._dispatchResponseChanged();\n audio.removeEventListener('ended', handleEnded);\n };\n\n audio.addEventListener('ended', handleEnded);\n\n // store references to remove later\n this._audio = audio;\n this._handlePlaying = handlePlaying;\n this._handleEnded = handleEnded;\n this._enableAudio = enableAudio;\n // set to true to prevent multiple initializations\n this._audioInitialized = true;\n\n observer.disconnect();\n }\n });\n });\n\n observer.observe(this, { childList: true, subtree: true });\n }\n\n enableKeyboardEvents() {\n if (!this._keyboardEventsEnabled) {\n window.addEventListener('keydown', this._boundHandleKeyDown);\n this._keyboardEventsEnabled = true;\n }\n }\n\n disconnectedCallback() {\n if (this._keyboardEventsEnabled) {\n window.removeEventListener('keydown', this._boundHandleKeyDown);\n this._keyboardEventsEnabled = false;\n }\n\n document.removeEventListener('click', this._enableAudio);\n\n if (this._audio) {\n this._audio.removeEventListener('playing', this._handlePlaying);\n this._audio.removeEventListener('ended', this._handleEnded);\n this._audio = null;\n }\n }\n\n /**\n * Handles global keyboard events for selecting or toggling multiple-choice answers.\n * Maps keys (1-9, 0, a-j, A-J) to choices and updates the session state accordingly.\n * Ensures valid key presses toggle or select the appropriate choice based on the model.\n */\n handleKeyDown(event) {\n if (!this._model || !this._session) {\n return;\n }\n\n const keyToIndex = (key) => {\n const numOffset = key >= '1' && key <= '9' ? key - '1' : key === '0' ? 9 : -1;\n const letterOffset = /^[a-jA-J]$/.test(key) ? key.toLowerCase().charCodeAt(0) - 'a'.charCodeAt(0) : -1;\n return numOffset >= 0 ? numOffset : letterOffset;\n };\n\n const choiceIndex = keyToIndex(event.key);\n\n if (choiceIndex === undefined || choiceIndex <= -1 || choiceIndex >= this._model.choices?.length) {\n return;\n }\n\n const currentValue = this._session.value || [];\n const choiceId = this._model.choices[choiceIndex].value;\n\n const newValue = {\n value: choiceId,\n selected: !currentValue.includes(choiceId),\n selector: 'Keyboard',\n };\n\n this._onChange(newValue);\n }\n}\n"],"file":"index.js"}
|
package/lib/main.js
CHANGED
|
@@ -105,4 +105,4 @@ var Root = function Root(props) {
|
|
|
105
105
|
|
|
106
106
|
var _default = Root;
|
|
107
107
|
exports["default"] = _default;
|
|
108
|
-
//# sourceMappingURL=
|
|
108
|
+
//# sourceMappingURL=main.js.map
|
package/lib/main.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/main.jsx"],"names":["styles","Main","props","model","onChoiceChanged","session","onShowCorrectToggle","extraCSSRules","fontSizeFactor","React","Component","PropTypes","object","func","classes","isRequired","shape","names","arrayOf","string","rules","Styled","name","theme","typography","useNextVariants","Root"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;;;;;AAEA,IAAMA,MAAM,GAAG,SAATA,MAAS;AAAA,SAAO,EAAP;AAAA,CAAf;;IAEMC,I;;;;;AAiBJ,gBAAYC,KAAZ,EAAmB;AAAA;AAAA,6BACXA,KADW;AAElB;;;;WAED,kBAAS;AACP,wBAAiE,KAAKA,KAAtE;AAAA,UAAQC,KAAR,eAAQA,KAAR;AAAA,UAAeC,eAAf,eAAeA,eAAf;AAAA,UAAgCC,OAAhC,eAAgCA,OAAhC;AAAA,UAAyCC,mBAAzC,eAAyCA,mBAAzC;AACA,UAAQC,aAAR,GAA0CJ,KAA1C,CAAQI,aAAR;AAAA,UAAuBC,cAAvB,GAA0CL,KAA1C,CAAuBK,cAAvB,CAFO,CAIP;;AACA,0BACE,gCAAC,uBAAD;AAAe,QAAA,aAAa,EAAED,aAA9B;AAA6C,QAAA,cAAc,EAAEC;AAA7D,sBACE,gCAAC,0BAAD,gCACML,KADN;AAEE,QAAA,OAAO,EAAEE,OAFX;AAGE,QAAA,eAAe,EAAED,eAHnB;AAIE,QAAA,mBAAmB,EAAEE;AAJvB,SADF,CADF;AAUD;;;EApCgBG,kBAAMC,S;;iCAAnBT,I,eACe;AACjBE,EAAAA,KAAK,EAAEQ,sBAAUC,MADA;AAEjBP,EAAAA,OAAO,EAAEM,sBAAUC,MAFF;AAGjBR,EAAAA,eAAe,EAAEO,sBAAUE,IAHV;AAIjBC,EAAAA,OAAO,EAAEH,sBAAUC,MAAV,CAAiBG,UAJT;AAKjBT,EAAAA,mBAAmB,EAAEK,sBAAUE,IALd;AAMjBN,EAAAA,aAAa,EAAEI,sBAAUK,KAAV,CAAgB;AAC7BC,IAAAA,KAAK,EAAEN,sBAAUO,OAAV,CAAkBP,sBAAUQ,MAA5B,CADsB;AAE7BC,IAAAA,KAAK,EAAET,sBAAUQ;AAFY,GAAhB;AANE,C;iCADflB,I,kBAakB;AACpBE,EAAAA,KAAK,EAAE,EADa;AAEpBE,EAAAA,OAAO,EAAE;AAFW,C;AA0BxB,IAAMgB,MAAM,GAAG,wBAAWrB,MAAX,EAAmB;AAAEsB,EAAAA,IAAI,EAAE;AAAR,CAAnB,EAAqCrB,IAArC,CAAf;AAEA,IAAMsB,KAAK,GAAG,4BAAe;AAC3BC,EAAAA,UAAU,EAAE;AACVC,IAAAA,eAAe,EAAE;AADP;AADe,CAAf,CAAd;;AAMA,IAAMC,IAAI,GAAG,SAAPA,IAAO,CAACxB,KAAD;AAAA,sBACX,gCAAC,wBAAD;AAAkB,IAAA,KAAK,EAAEqB;AAAzB,kBACE,gCAAC,MAAD,EAAYrB,KAAZ,CADF,CADW;AAAA,CAAb;;eAMewB,I","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { createMuiTheme, MuiThemeProvider } from '@material-ui/core/styles';\nimport { PreviewLayout } from '@pie-lib/render-ui';\nimport MultipleChoice from './multiple-choice';\n\nconst styles = () => ({});\n\nclass Main extends React.Component {\n static propTypes = {\n model: PropTypes.object,\n session: PropTypes.object,\n onChoiceChanged: PropTypes.func,\n classes: PropTypes.object.isRequired,\n onShowCorrectToggle: PropTypes.func,\n extraCSSRules: PropTypes.shape({\n names: PropTypes.arrayOf(PropTypes.string),\n rules: PropTypes.string,\n }),\n };\n\n static defaultProps = {\n model: {},\n session: {},\n };\n constructor(props) {\n super(props);\n }\n\n render() {\n const { model, onChoiceChanged, session, onShowCorrectToggle } = this.props;\n const { extraCSSRules, fontSizeFactor } = model;\n\n // model.partLabel is a property used for ebsr\n return (\n <PreviewLayout extraCSSRules={extraCSSRules} fontSizeFactor={fontSizeFactor}>\n <MultipleChoice\n {...model}\n session={session}\n onChoiceChanged={onChoiceChanged}\n onShowCorrectToggle={onShowCorrectToggle}\n />\n </PreviewLayout>\n );\n }\n}\n\nconst Styled = withStyles(styles, { name: 'Main' })(Main);\n\nconst theme = createMuiTheme({\n typography: {\n useNextVariants: true,\n },\n});\n\nconst Root = (props) => (\n <MuiThemeProvider theme={theme}>\n <Styled {...props} />\n </MuiThemeProvider>\n);\n\nexport default Root;\n"],"file":"main.js"}
|
package/lib/multiple-choice.js
CHANGED
|
@@ -448,4 +448,4 @@ MultipleChoice.defaultProps = {
|
|
|
448
448
|
var _default = (0, _styles.withStyles)(styles)(MultipleChoice);
|
|
449
449
|
|
|
450
450
|
exports["default"] = _default;
|
|
451
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tdWx0aXBsZS1jaG9pY2UuanN4Il0sIm5hbWVzIjpbInRyYW5zbGF0b3IiLCJUcmFuc2xhdG9yIiwic3R5bGVzIiwidGhlbWUiLCJtYWluIiwiY29sb3IiLCJ0ZXh0IiwiYmFja2dyb3VuZENvbG9yIiwiYmFja2dyb3VuZCIsInBvc2l0aW9uIiwiYm9yZGVyIiwicGFydExhYmVsIiwiZGlzcGxheSIsImZvbnRTaXplIiwibWFyZ2luIiwiZm9udFdlaWdodCIsInBhZGRpbmdCb3R0b20iLCJzcGFjaW5nIiwidW5pdCIsInRlYWNoZXJJbnN0cnVjdGlvbnMiLCJtYXJnaW5Cb3R0b20iLCJob3Jpem9udGFsTGF5b3V0IiwiZmxleERpcmVjdGlvbiIsImZsZXhXcmFwIiwiZ3JpZExheW91dCIsImZpZWxkc2V0IiwicGFkZGluZyIsIm1pbldpZHRoIiwic3JPbmx5IiwibGVmdCIsInRvcCIsIndpZHRoIiwiaGVpZ2h0Iiwib3ZlcmZsb3ciLCJlcnJvclRleHQiLCJ0eXBvZ3JhcGh5IiwicGFsZXR0ZSIsImVycm9yIiwicGFkZGluZ1RvcCIsIk11bHRpcGxlQ2hvaWNlIiwicHJvcHMiLCJldmVudCIsInRhcmdldCIsInZhbHVlIiwiY2hlY2tlZCIsIm1heFNlbGVjdGlvbnMiLCJvbkNob2ljZUNoYW5nZWQiLCJzZXNzaW9uIiwibGVuZ3RoIiwic2V0U3RhdGUiLCJtYXhTZWxlY3Rpb25zRXJyb3JTdGF0ZSIsInNlbGVjdGVkIiwic2VsZWN0b3IiLCJtb2RlIiwic2hvd0NvcnJlY3QiLCJzdGF0ZSIsIm9uU2hvd0NvcnJlY3RUb2dnbGUiLCJjaG9pY2UiLCJpc0NvcnJlY3QiLCJjb3JyZWN0IiwiaXNDaGVja2VkIiwiaXNTZWxlY3RlZCIsInVuZGVmaW5lZCIsImUiLCJjdXJyZW50VGFyZ2V0IiwiYWN0aXZlRWwiLCJkb2N1bWVudCIsImFjdGl2ZUVsZW1lbnQiLCJjb250YWlucyIsInJlbGF0ZWRUYXJnZXQiLCJjb21wYXJlRG9jdW1lbnRQb3NpdGlvbiIsIk5vZGUiLCJET0NVTUVOVF9QT1NJVElPTl9QUkVDRURJTkciLCJmaXJzdElucHV0UmVmIiwiY3VycmVudCIsImZvY3VzIiwiYWx3YXlzU2hvd0NvcnJlY3QiLCJvblRvZ2dsZSIsImJpbmQiLCJSZWFjdCIsImNyZWF0ZVJlZiIsInNlc3Npb25WYWx1ZSIsImluZGV4T2YiLCJuZXh0UHJvcHMiLCJjb3JyZWN0UmVzcG9uc2UiLCJpbmRleCIsImtleU1vZGUiLCJTdHJpbmciLCJmcm9tQ2hhckNvZGUiLCJ0b1VwcGVyQ2FzZSIsImNob2ljZU1vZGUiLCJjbGFzc2VzIiwiZGlzYWJsZWQiLCJjbGFzc05hbWUiLCJjaG9pY2VzIiwiZ3JpZENvbHVtbnMiLCJwcm9tcHQiLCJyZXNwb25zZUNvcnJlY3QiLCJhbmltYXRpb25zRGlzYWJsZWQiLCJsYW5ndWFnZSIsImlzU2VsZWN0aW9uQnV0dG9uQmVsb3ciLCJtaW5TZWxlY3Rpb25zIiwiYXV0b3BsYXlBdWRpb0VuYWJsZWQiLCJjdXN0b21BdWRpb0J1dHRvbiIsImlzRXZhbHVhdGVNb2RlIiwic2hvd0NvcnJlY3RBbnN3ZXJUb2dnbGUiLCJjb2x1bW5zU3R5bGUiLCJncmlkVGVtcGxhdGVDb2x1bW5zIiwic2VsZWN0aW9ucyIsInRlYWNoZXJJbnN0cnVjdGlvbnNEaXYiLCJnZXRNdWx0aXBsZUNob2ljZU1pblNlbGVjdGlvbkVycm9yTWVzc2FnZSIsInQiLCJsbmciLCJyZW5kZXJIZWFkaW5nIiwiaGlkZGVuIiwidmlzaWJsZSIsImhhbmRsZUdyb3VwRm9jdXMiLCJjaG9pY2VzTGF5b3V0IiwibWFwIiwic2VsZWN0ZWRBbnN3ZXJCYWNrZ3JvdW5kQ29sb3IiLCJoYW5kbGVDaGFuZ2UiLCJoaWRlVGljayIsImdldENoZWNrZWQiLCJnZXRDb3JyZWN0bmVzcyIsImluZGV4VG9TeW1ib2wiLCJDb21wb25lbnQiLCJQcm9wVHlwZXMiLCJzdHJpbmciLCJvbmVPZiIsImFycmF5Iiwib2JqZWN0IiwiYm9vbCIsImZ1bmMiLCJpc1JlcXVpcmVkIiwibnVtYmVy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QWIsRUFBcUIsWUFBckIsQ0FBaEIsQ0FmRTtBQWdCakJqQyxFQUFBQSxXQUFXLEVBQUUrQixzQkFBVUMsTUFoQk47QUFpQmpCbkQsRUFBQUEsaUJBQWlCLEVBQUVrRCxzQkFBVUssSUFqQlo7QUFrQmpCakMsRUFBQUEsa0JBQWtCLEVBQUU0QixzQkFBVUssSUFsQmI7QUFtQmpCaEMsRUFBQUEsUUFBUSxFQUFFMkIsc0JBQVVDLE1BbkJIO0FBb0JqQlIsRUFBQUEsNkJBQTZCLEVBQUVPLHNCQUFVQyxNQXBCeEI7QUFxQmpCdkUsRUFBQUEsbUJBQW1CLEVBQUVzRSxzQkFBVU0sSUFyQmQ7QUFzQmpCaEMsRUFBQUEsc0JBQXNCLEVBQUUwQixzQkFBVUssSUF0QmpCO0FBdUJqQjlCLEVBQUFBLGFBQWEsRUFBRXlCLHNCQUFVUSxNQXZCUjtBQXdCakJ6RixFQUFBQSxhQUFhLEVBQUVpRixzQkFBVVEsTUF4QlI7QUF5QmpCaEMsRUFBQUEsb0JBQW9CLEVBQUV3QixzQkFBVUssSUF6QmY7QUEwQmpCNUIsRUFBQUEsaUJBQWlCLEVBQUU7QUFDakJnQyxJQUFBQSxTQUFTLEVBQUVULHNCQUFVQyxNQURKO0FBRWpCUyxJQUFBQSxVQUFVLEVBQUVWLHNCQUFVQztBQUZMO0FBMUJGLEM7QUFzVXJCeEYsY0FBYyxDQUFDa0csWUFBZixHQUE4QjtBQUM1QjFGLEVBQUFBLE9BQU8sRUFBRTtBQUNQSixJQUFBQSxLQUFLLEVBQUU7QUFEQTtBQURtQixDQUE5Qjs7ZUFNZSx3QkFBV3pDLE1BQVgsRUFBbUJxQyxjQUFuQixDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgQ29ycmVjdEFuc3dlclRvZ2dsZSBmcm9tICdAcGllLWxpYi9jb3JyZWN0LWFuc3dlci10b2dnbGUnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyB3aXRoU3R5bGVzIH0gZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvc3R5bGVzJztcbmltcG9ydCB7IGNvbG9yLCBDb2xsYXBzaWJsZSwgUHJldmlld1Byb21wdCB9IGZyb20gJ0BwaWUtbGliL3JlbmRlci11aSc7XG5pbXBvcnQgVHJhbnNsYXRvciBmcm9tICdAcGllLWxpYi90cmFuc2xhdG9yJztcblxuaW1wb3J0IFN0eWxlZENob2ljZSBmcm9tICcuL2Nob2ljZSc7XG5cbi8vIE11bHRpcGxlQ2hvaWNlXG5cbmNvbnN0IHsgdHJhbnNsYXRvciB9ID0gVHJhbnNsYXRvcjtcblxuY29uc3Qgc3R5bGVzID0gKHRoZW1lKSA9PiAoe1xuICBtYWluOiB7XG4gICAgY29sb3I6IGNvbG9yLnRleHQoKSxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yLmJhY2tncm91bmQoKSxcbiAgICAnJiAqJzoge1xuICAgICAgJy13ZWJraXQtZm9udC1zbW9vdGhpbmcnOiAnYW50aWFsaWFzZWQnLFxuICAgIH0sXG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgLy8gcmVtb3ZlIGJvcmRlciBmcm9tIGxlZ2VuZCB0YWdzIGluc2lkZSBtYWluIHRvIG92ZXJyaWRlIHRoZSBPVCBkZWZhdWx0IHN0eWxlc1xuICAgICcmIGxlZ2VuZCc6IHtcbiAgICAgIGJvcmRlcjogJ25vbmUgIWltcG9ydGFudCcsXG4gICAgfSxcbiAgfSxcbiAgcGFydExhYmVsOiB7XG4gICAgZGlzcGxheTogJ2Jsb2NrJyxcbiAgICBmb250U2l6ZTogJ2luaGVyaXQnLFxuICAgIG1hcmdpbjogJzAnLFxuICAgIGZvbnRXZWlnaHQ6ICdub3JtYWwnLFxuICAgIHBhZGRpbmdCb3R0b206IHRoZW1lLnNwYWNpbmcudW5pdCAqIDIsXG4gIH0sXG4gIHRlYWNoZXJJbnN0cnVjdGlvbnM6IHtcbiAgICBtYXJnaW5Cb3R0b206IHRoZW1lLnNwYWNpbmcudW5pdCAqIDIsXG4gIH0sXG4gIGhvcml6b250YWxMYXlvdXQ6IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZmxleERpcmVjdGlvbjogJ3JvdycsXG4gICAgZmxleFdyYXA6ICd3cmFwJyxcbiAgfSxcbiAgZ3JpZExheW91dDoge1xuICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgfSxcbiAgZmllbGRzZXQ6IHtcbiAgICBib3JkZXI6ICcwcHgnLFxuICAgIHBhZGRpbmc6ICcwLjAxZW0gMCAwIDAnLFxuICAgIG1hcmdpbjogJzBweCcsXG4gICAgbWluV2lkdGg6ICcwcHgnLFxuICB9LFxuICBzck9ubHk6IHtcbiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICBsZWZ0OiAnLTEwMDAwcHgnLFxuICAgIHRvcDogJ2F1dG8nLFxuICAgIHdpZHRoOiAnMXB4JyxcbiAgICBoZWlnaHQ6ICcxcHgnLFxuICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgfSxcbiAgZXJyb3JUZXh0OiB7XG4gICAgZm9udFNpemU6IHRoZW1lLnR5cG9ncmFwaHkuZm9udFNpemUgLSAyLFxuICAgIGNvbG9yOiB0aGVtZS5wYWxldHRlLmVycm9yLm1haW4sXG4gICAgcGFkZGluZ1RvcDogdGhlbWUuc3BhY2luZy51bml0LFxuICB9LFxufSk7XG5cbmV4cG9ydCBjbGFzcyBNdWx0aXBsZUNob2ljZSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIG1vZGU6IFByb3BUeXBlcy5vbmVPZihbJ2dhdGhlcicsICd2aWV3JywgJ2V2YWx1YXRlJ10pLFxuICAgIGNob2ljZU1vZGU6IFByb3BUeXBlcy5vbmVPZihbJ3JhZGlvJywgJ2NoZWNrYm94J10pLFxuICAgIGtleU1vZGU6IFByb3BUeXBlcy5vbmVPZihbJ251bWJlcnMnLCAnbGV0dGVycycsICdub25lJ10pLFxuICAgIGNob2ljZXM6IFByb3BUeXBlcy5hcnJheSxcbiAgICBwYXJ0TGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgcHJvbXB0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHRlYWNoZXJJbnN0cnVjdGlvbnM6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgc2Vzc2lvbjogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgb25DaG9pY2VDaGFuZ2VkOiBQcm9wVHlwZXMuZnVuYyxcbiAgICByZXNwb25zZUNvcnJlY3Q6IFByb3BUeXBlcy5ib29sLFxuICAgIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBjb3JyZWN0UmVzcG9uc2U6IFByb3BUeXBlcy5hcnJheSxcbiAgICBjaG9pY2VzTGF5b3V0OiBQcm9wVHlwZXMub25lT2YoWyd2ZXJ0aWNhbCcsICdncmlkJywgJ2hvcml6b250YWwnXSksXG4gICAgZ3JpZENvbHVtbnM6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgYWx3YXlzU2hvd0NvcnJlY3Q6IFByb3BUeXBlcy5ib29sLFxuICAgIGFuaW1hdGlvbnNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgbGFuZ3VhZ2U6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgc2VsZWN0ZWRBbnN3ZXJCYWNrZ3JvdW5kQ29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgb25TaG93Q29ycmVjdFRvZ2dsZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgaXNTZWxlY3Rpb25CdXR0b25CZWxvdzogUHJvcFR5cGVzLmJvb2wsXG4gICAgbWluU2VsZWN0aW9uczogUHJvcFR5cGVzLm51bWJlcixcbiAgICBtYXhTZWxlY3Rpb25zOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIGF1dG9wbGF5QXVkaW9FbmFibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBjdXN0b21BdWRpb0J1dHRvbjoge1xuICAgICAgcGxheUltYWdlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgcGF1c2VJbWFnZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICB9LFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIHNob3dDb3JyZWN0OiB0aGlzLnByb3BzLmFsd2F5c1Nob3dDb3JyZWN0IHx8IGZhbHNlLFxuICAgICAgbWF4U2VsZWN0aW9uc0Vycm9yU3RhdGU6IGZhbHNlLFxuICAgIH07XG5cbiAgICB0aGlzLm9uVG9nZ2xlID0gdGhpcy5vblRvZ2dsZS5iaW5kKHRoaXMpO1xuICAgIHRoaXMuZmlyc3RJbnB1dFJlZiA9IFJlYWN0LmNyZWF0ZVJlZigpO1xuICB9XG5cbiAgaXNTZWxlY3RlZCh2YWx1ZSkge1xuICAgIGNvbnN0IHNlc3Npb25WYWx1ZSA9IHRoaXMucHJvcHMuc2Vzc2lvbiAmJiB0aGlzLnByb3BzLnNlc3Npb24udmFsdWU7XG5cbiAgICByZXR1cm4gc2Vzc2lvblZhbHVlICYmIHNlc3Npb25WYWx1ZS5pbmRleE9mICYmIHNlc3Npb25WYWx1ZS5pbmRleE9mKHZhbHVlKSA+PSAwO1xuICB9XG5cbiAgLy8gaGFuZGxlQ2hhbmdlIHdhcyBhZGRlZCBmb3IgYWNjZXNzaWJpbGl0eS4gUGxlYXNlIHNlZSBjb21tZW50cyBhbmQgdmlkZW9zIGZyb20gUEQtMjQ0MS5cbiAgaGFuZGxlQ2hhbmdlID0gKGV2ZW50KSA9PiB7XG4gICAgY29uc3QgeyB2YWx1ZSwgY2hlY2tlZCB9ID0gZXZlbnQudGFyZ2V0O1xuICAgIGNvbnN0IHsgbWF4U2VsZWN0aW9ucywgb25DaG9pY2VDaGFuZ2VkLCBzZXNzaW9uIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgaWYgKHNlc3Npb24udmFsdWUgJiYgc2Vzc2lvbi52YWx1ZS5sZW5ndGggPj0gbWF4U2VsZWN0aW9ucykge1xuICAgICAgLy8gc2hvdy9oaWRlIG1heCBzZWxlY3Rpb25zIGVycm9yIHdoZW4gdXNlciBzZWxlY3QvZGVzZWxlY3QgYW4gYW5zd2VyXG4gICAgICB0aGlzLnNldFN0YXRlKHsgbWF4U2VsZWN0aW9uc0Vycm9yU3RhdGU6IGNoZWNrZWQgfSk7XG5cbiAgICAgIGlmIChjaGVja2VkKSB7XG4gICAgICAgIC8vIHByZXZlbnQgc2VsZWN0aW5nIG1vcmUgYW5zd2Vyc1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgb25DaG9pY2VDaGFuZ2VkKHsgdmFsdWUsIHNlbGVjdGVkOiBjaGVja2VkLCBzZWxlY3RvcjogJ01vdXNlJyB9KTtcbiAgfTtcblxuICBvblRvZ2dsZSA9ICgpID0+IHtcbiAgICBpZiAodGhpcy5wcm9wcy5tb2RlID09PSAnZXZhbHVhdGUnKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgc2hvd0NvcnJlY3Q6ICF0aGlzLnN0YXRlLnNob3dDb3JyZWN0IH0sICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMucHJvcHMub25TaG93Q29ycmVjdFRvZ2dsZSkge1xuICAgICAgICAgIHRoaXMucHJvcHMub25TaG93Q29ycmVjdFRvZ2dsZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobmV4dFByb3BzKSB7XG4gICAgaWYgKCFuZXh0UHJvcHMuY29ycmVjdFJlc3BvbnNlICYmIHRoaXMuc3RhdGUuc2hvd0NvcnJlY3QgIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgc2hvd0NvcnJlY3Q6IGZhbHNlIH0sICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMucHJvcHMub25TaG93Q29ycmVjdFRvZ2dsZSkge1xuICAgICAgICAgIHRoaXMucHJvcHMub25TaG93Q29ycmVjdFRvZ2dsZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAobmV4dFByb3BzLmFsd2F5c1Nob3dDb3JyZWN0ICYmIHRoaXMuc3RhdGUuc2hvd0NvcnJlY3QgIT09IHRydWUpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBzaG93Q29ycmVjdDogdHJ1ZSB9LCAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnByb3BzLm9uU2hvd0NvcnJlY3RUb2dnbGUpIHtcbiAgICAgICAgICB0aGlzLnByb3BzLm9uU2hvd0NvcnJlY3RUb2dnbGUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgaW5kZXhUb1N5bWJvbChpbmRleCkge1xuICAgIGlmICh0aGlzLnByb3BzLmtleU1vZGUgPT09ICdudW1iZXJzJykge1xuICAgICAgcmV0dXJuIGAke2luZGV4ICsgMX1gO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnByb3BzLmtleU1vZGUgPT09ICdsZXR0ZXJzJykge1xuICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoOTcgKyBpbmRleCkudG9VcHBlckNhc2UoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBnZXRDb3JyZWN0bmVzcyA9IChjaG9pY2UgPSB7fSkgPT4ge1xuICAgIGNvbnN0IGlzQ29ycmVjdCA9IGNob2ljZS5jb3JyZWN0O1xuICAgIGNvbnN0IGlzQ2hlY2tlZCA9IHRoaXMuaXNTZWxlY3RlZChjaG9pY2UudmFsdWUpO1xuXG4gICAgaWYgKHRoaXMuc3RhdGUuc2hvd0NvcnJlY3QpIHtcbiAgICAgIHJldHVybiBpc0NvcnJlY3QgPyAnY29ycmVjdCcgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKGlzQ29ycmVjdCkge1xuICAgICAgaWYgKGlzQ2hlY2tlZCkge1xuICAgICAgICAvLyBBIGNvcnJlY3QgYW5zd2VyIGlzIHNlbGVjdGVkOiBtYXJrZWQgd2l0aCBhIGdyZWVuIGNoZWNrbWFya1xuICAgICAgICByZXR1cm4gJ2NvcnJlY3QnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQSBjb3JyZWN0IGFuc3dlciBpcyBOT1Qgc2VsZWN0ZWQ6IG1hcmtlZCB3aXRoIGFuIG9yYW5nZSBYXG4gICAgICAgIHJldHVybiAnaW5jb3JyZWN0JztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGlzQ2hlY2tlZCkge1xuICAgICAgICAvLyBBbiBpbmNvcnJlY3QgYW5zd2VyIGlzIHNlbGVjdGVkOiBtYXJrZWQgd2l0aCBhbiBvcmFuZ2UgWFxuICAgICAgICByZXR1cm4gJ2luY29ycmVjdCc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBBbiBpbmNvcnJlY3QgYW5zd2VyIGlzIE5PVCBzZWxlY3RlZDogbm90IG1hcmtlZFxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBnZXRDaGVja2VkKGNob2ljZSkge1xuICAgIGlmICh0aGlzLnN0YXRlLnNob3dDb3JyZWN0KSB7XG4gICAgICByZXR1cm4gY2hvaWNlLmNvcnJlY3QgfHwgZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaXNTZWxlY3RlZChjaG9pY2UudmFsdWUpO1xuICB9XG5cbiAgLy8gcmVuZGVySGVhZGluZyBmdW5jdGlvbiB3YXMgYWRkZWQgZm9yIGFjY2Vzc2liaWxpdHkuXG4gIHJlbmRlckhlYWRpbmcoKSB7XG4gICAgY29uc3QgeyBtb2RlLCBjaG9pY2VNb2RlLCBjbGFzc2VzIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgaWYgKG1vZGUgIT09ICdnYXRoZXInKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gY2hvaWNlTW9kZSA9PT0gJ3JhZGlvJyA/IChcbiAgICAgIDxoMyBjbGFzc05hbWU9e2NsYXNzZXMuc3JPbmx5fT5NdWx0aXBsZSBDaG9pY2UgUXVlc3Rpb248L2gzPlxuICAgICkgOiAoXG4gICAgICA8aDMgY2xhc3NOYW1lPXtjbGFzc2VzLnNyT25seX0+TXVsdGlwbGUgU2VsZWN0IFF1ZXN0aW9uPC9oMz5cbiAgICApO1xuICB9XG5cbiAgaGFuZGxlR3JvdXBGb2N1cyA9IChlKSA9PiB7XG4gICAgY29uc3QgZmllbGRzZXQgPSBlLmN1cnJlbnRUYXJnZXQ7XG4gICAgY29uc3QgYWN0aXZlRWwgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuXG4gICAgaWYgKGZpZWxkc2V0LmNvbnRhaW5zKGFjdGl2ZUVsKSAmJiBhY3RpdmVFbCAhPT0gZmllbGRzZXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBPbmx5IGZvY3VzIHRoZSBmaXJzdCBpbnB1dCBpZiB1c2VyIGlzIHRhYmJpbmcgZm9yd2FyZFxuICAgIGlmICghZS5yZWxhdGVkVGFyZ2V0IHx8IGZpZWxkc2V0LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGUucmVsYXRlZFRhcmdldCkgJiBOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX1BSRUNFRElORykge1xuICAgICAgaWYgKHRoaXMuZmlyc3RJbnB1dFJlZj8uY3VycmVudCkge1xuICAgICAgICB0aGlzLmZpcnN0SW5wdXRSZWYuY3VycmVudC5mb2N1cygpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge1xuICAgICAgbW9kZSxcbiAgICAgIGRpc2FibGVkLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY2hvaWNlcyA9IFtdLFxuICAgICAgY2hvaWNlTW9kZSxcbiAgICAgIGdyaWRDb2x1bW5zLFxuICAgICAgcGFydExhYmVsLFxuICAgICAgcHJvbXB0LFxuICAgICAgcmVzcG9uc2VDb3JyZWN0LFxuICAgICAgdGVhY2hlckluc3RydWN0aW9ucyxcbiAgICAgIGNsYXNzZXMsXG4gICAgICBhbHdheXNTaG93Q29ycmVjdCxcbiAgICAgIGFuaW1hdGlvbnNEaXNhYmxlZCxcbiAgICAgIGxhbmd1YWdlLFxuICAgICAgaXNTZWxlY3Rpb25CdXR0b25CZWxvdyxcbiAgICAgIG1pblNlbGVjdGlvbnMsXG4gICAgICBtYXhTZWxlY3Rpb25zLFxuICAgICAgYXV0b3BsYXlBdWRpb0VuYWJsZWQsXG4gICAgICBzZXNzaW9uLFxuICAgICAgY3VzdG9tQXVkaW9CdXR0b24sXG4gICAgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgeyBzaG93Q29ycmVjdCwgbWF4U2VsZWN0aW9uc0Vycm9yU3RhdGUgfSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3QgaXNFdmFsdWF0ZU1vZGUgPSBtb2RlID09PSAnZXZhbHVhdGUnO1xuICAgIGNvbnN0IHNob3dDb3JyZWN0QW5zd2VyVG9nZ2xlID0gaXNFdmFsdWF0ZU1vZGUgJiYgIXJlc3BvbnNlQ29ycmVjdDtcbiAgICBjb25zdCBjb2x1bW5zU3R5bGUgPSBncmlkQ29sdW1ucyA+IDEgPyB7IGdyaWRUZW1wbGF0ZUNvbHVtbnM6IGByZXBlYXQoJHtncmlkQ29sdW1uc30sIDFmcilgIH0gOiB1bmRlZmluZWQ7XG4gICAgY29uc3Qgc2VsZWN0aW9ucyA9IChzZXNzaW9uLnZhbHVlICYmIHNlc3Npb24udmFsdWUubGVuZ3RoKSB8fCAwO1xuXG4gICAgY29uc3QgdGVhY2hlckluc3RydWN0aW9uc0RpdiA9IChcbiAgICAgIDxQcmV2aWV3UHJvbXB0XG4gICAgICAgIHRhZ05hbWU9XCJkaXZcIlxuICAgICAgICBjbGFzc05hbWU9XCJwcm9tcHRcIlxuICAgICAgICBkZWZhdWx0Q2xhc3NOYW1lPVwidGVhY2hlci1pbnN0cnVjdGlvbnNcIlxuICAgICAgICBwcm9tcHQ9e3RlYWNoZXJJbnN0cnVjdGlvbnN9XG4gICAgICAvPlxuICAgICk7XG5cbiAgICBjb25zdCBnZXRNdWx0aXBsZUNob2ljZU1pblNlbGVjdGlvbkVycm9yTWVzc2FnZSA9ICgpID0+IHtcbiAgICAgIGlmIChtaW5TZWxlY3Rpb25zICYmIG1heFNlbGVjdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIG1pblNlbGVjdGlvbnMgPT09IG1heFNlbGVjdGlvbnNcbiAgICAgICAgICA/IHRyYW5zbGF0b3IudCgndHJhbnNsYXRpb246bXVsdGlwbGVDaG9pY2U6bWlubWF4U2VsZWN0aW9uc19lcXVhbCcsIHsgbG5nOiBsYW5ndWFnZSwgbWluU2VsZWN0aW9ucyB9KVxuICAgICAgICAgIDogdHJhbnNsYXRvci50KCd0cmFuc2xhdGlvbjptdWx0aXBsZUNob2ljZTptaW5tYXhTZWxlY3Rpb25zX3JhbmdlJywge1xuICAgICAgICAgICAgICBsbmc6IGxhbmd1YWdlLFxuICAgICAgICAgICAgICBtaW5TZWxlY3Rpb25zLFxuICAgICAgICAgICAgICBtYXhTZWxlY3Rpb25zLFxuICAgICAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtaW5TZWxlY3Rpb25zKSB7XG4gICAgICAgIHJldHVybiB0cmFuc2xhdG9yLnQoJ3RyYW5zbGF0aW9uOm11bHRpcGxlQ2hvaWNlOm1pblNlbGVjdGlvbnMnLCB7IGxuZzogbGFuZ3VhZ2UsIG1pblNlbGVjdGlvbnMgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAnJztcbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgaWQ9eydtYWluLWNvbnRhaW5lcid9IGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhjbGFzc2VzLm1haW4sIGNsYXNzTmFtZSwgJ211bHRpcGxlLWNob2ljZScpfT5cbiAgICAgICAge3BhcnRMYWJlbCAmJiA8aDIgY2xhc3NOYW1lPXtjbGFzc2VzLnBhcnRMYWJlbH0+e3BhcnRMYWJlbH08L2gyPn1cblxuICAgICAgICB7dGhpcy5yZW5kZXJIZWFkaW5nKCl9XG5cbiAgICAgICAge3RlYWNoZXJJbnN0cnVjdGlvbnMgJiYgKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLnRlYWNoZXJJbnN0cnVjdGlvbnN9PlxuICAgICAgICAgICAgeyFhbmltYXRpb25zRGlzYWJsZWQgPyAoXG4gICAgICAgICAgICAgIDxDb2xsYXBzaWJsZVxuICAgICAgICAgICAgICAgIGxhYmVscz17e1xuICAgICAgICAgICAgICAgICAgaGlkZGVuOiAnU2hvdyBUZWFjaGVyIEluc3RydWN0aW9ucycsXG4gICAgICAgICAgICAgICAgICB2aXNpYmxlOiAnSGlkZSBUZWFjaGVyIEluc3RydWN0aW9ucycsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt0ZWFjaGVySW5zdHJ1Y3Rpb25zRGl2fVxuICAgICAgICAgICAgICA8L0NvbGxhcHNpYmxlPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgdGVhY2hlckluc3RydWN0aW9uc0RpdlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cblxuICAgICAgICA8ZmllbGRzZXRcbiAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMuZmllbGRzZXR9XG4gICAgICAgICAgb25Gb2N1cz17dGhpcy5oYW5kbGVHcm91cEZvY3VzfVxuICAgICAgICAgIHJvbGU9e2Nob2ljZU1vZGUgPT09ICdyYWRpbycgPyAncmFkaW9ncm91cCcgOiAnZ3JvdXAnfVxuICAgICAgICA+XG4gICAgICAgICAgPFByZXZpZXdQcm9tcHRcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInByb21wdFwiXG4gICAgICAgICAgICBkZWZhdWx0Q2xhc3NOYW1lPVwicHJvbXB0XCJcbiAgICAgICAgICAgIHByb21wdD17cHJvbXB0fVxuICAgICAgICAgICAgdGFnTmFtZT17J2xlZ2VuZCd9XG4gICAgICAgICAgICBhdXRvcGxheUF1ZGlvRW5hYmxlZD17YXV0b3BsYXlBdWRpb0VuYWJsZWR9XG4gICAgICAgICAgICBjdXN0b21BdWRpb0J1dHRvbj17Y3VzdG9tQXVkaW9CdXR0b259XG4gICAgICAgICAgLz5cblxuICAgICAgICAgIHshYWx3YXlzU2hvd0NvcnJlY3QgJiYgKFxuICAgICAgICAgICAgPENvcnJlY3RBbnN3ZXJUb2dnbGVcbiAgICAgICAgICAgICAgc2hvdz17c2hvd0NvcnJlY3RBbnN3ZXJUb2dnbGV9XG4gICAgICAgICAgICAgIHRvZ2dsZWQ9e3Nob3dDb3JyZWN0fVxuICAgICAgICAgICAgICBvblRvZ2dsZT17dGhpcy5vblRvZ2dsZS5iaW5kKHRoaXMpfVxuICAgICAgICAgICAgICBsYW5ndWFnZT17bGFuZ3VhZ2V9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoe1xuICAgICAgICAgICAgICBbY2xhc3Nlcy5ncmlkTGF5b3V0XTogdGhpcy5wcm9wcy5jaG9pY2VzTGF5b3V0ID09PSAnZ3JpZCcsXG4gICAgICAgICAgICAgIFtjbGFzc2VzLmhvcml6b250YWxMYXlvdXRdOiB0aGlzLnByb3BzLmNob2ljZXNMYXlvdXQgPT09ICdob3Jpem9udGFsJyxcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgc3R5bGU9e2NvbHVtbnNTdHlsZX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7Y2hvaWNlcy5tYXAoKGNob2ljZSwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgPFN0eWxlZENob2ljZVxuICAgICAgICAgICAgICAgIGF1dG9Gb2N1c1JlZj17aW5kZXggPT09IDAgPyB0aGlzLmZpcnN0SW5wdXRSZWYgOiBudWxsfVxuICAgICAgICAgICAgICAgIGNob2ljZXNMYXlvdXQ9e3RoaXMucHJvcHMuY2hvaWNlc0xheW91dH1cbiAgICAgICAgICAgICAgICBzZWxlY3RlZEFuc3dlckJhY2tncm91bmRDb2xvcj17dGhpcy5wcm9wcy5zZWxlY3RlZEFuc3dlckJhY2tncm91bmRDb2xvcn1cbiAgICAgICAgICAgICAgICBncmlkQ29sdW1ucz17Z3JpZENvbHVtbnN9XG4gICAgICAgICAgICAgICAga2V5PXtgY2hvaWNlLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgICBjaG9pY2U9e2Nob2ljZX1cbiAgICAgICAgICAgICAgICBpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgICAgY2hvaWNlc0xlbmd0aD17Y2hvaWNlcy5sZW5ndGh9XG4gICAgICAgICAgICAgICAgc2hvd0NvcnJlY3Q9e3Nob3dDb3JyZWN0fVxuICAgICAgICAgICAgICAgIGlzRXZhbHVhdGVNb2RlPXtpc0V2YWx1YXRlTW9kZX1cbiAgICAgICAgICAgICAgICBjaG9pY2VNb2RlPXtjaG9pY2VNb2RlfVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICB0YWdOYW1lPXtwYXJ0TGFiZWwgPyBgZ3JvdXAtJHtwYXJ0TGFiZWx9YCA6ICdncm91cCd9XG4gICAgICAgICAgICAgICAgb25DaG9pY2VDaGFuZ2VkPXt0aGlzLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgICAgICBoaWRlVGljaz17Y2hvaWNlLmhpZGVUaWNrfVxuICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3RoaXMuZ2V0Q2hlY2tlZChjaG9pY2UpfVxuICAgICAgICAgICAgICAgIGNvcnJlY3RuZXNzPXtpc0V2YWx1YXRlTW9kZSA/IHRoaXMuZ2V0Q29ycmVjdG5lc3MoY2hvaWNlKSA6IHVuZGVmaW5lZH1cbiAgICAgICAgICAgICAgICBkaXNwbGF5S2V5PXt0aGlzLmluZGV4VG9TeW1ib2woaW5kZXgpfVxuICAgICAgICAgICAgICAgIGlzU2VsZWN0aW9uQnV0dG9uQmVsb3c9e2lzU2VsZWN0aW9uQnV0dG9uQmVsb3d9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9maWVsZHNldD5cblxuICAgICAgICB7Y2hvaWNlTW9kZSA9PT0gJ2NoZWNrYm94JyAmJiBzZWxlY3Rpb25zIDwgbWluU2VsZWN0aW9ucyAmJiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMuZXJyb3JUZXh0fT57Z2V0TXVsdGlwbGVDaG9pY2VNaW5TZWxlY3Rpb25FcnJvck1lc3NhZ2UoKX08L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgICAge2Nob2ljZU1vZGUgPT09ICdjaGVja2JveCcgJiYgbWF4U2VsZWN0aW9uc0Vycm9yU3RhdGUgJiYgKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLmVycm9yVGV4dH0+XG4gICAgICAgICAgICB7dHJhbnNsYXRvci50KGB0cmFuc2xhdGlvbjptdWx0aXBsZUNob2ljZTptYXhTZWxlY3Rpb25zXyR7bWF4U2VsZWN0aW9ucyA9PT0gMSA/ICdvbmUnIDogJ290aGVyJ31gLCB7XG4gICAgICAgICAgICAgIGxuZzogbGFuZ3VhZ2UsXG4gICAgICAgICAgICAgIG1heFNlbGVjdGlvbnMsXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbn1cblxuTXVsdGlwbGVDaG9pY2UuZGVmYXVsdFByb3BzID0ge1xuICBzZXNzaW9uOiB7XG4gICAgdmFsdWU6IFtdLFxuICB9LFxufTtcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFN0eWxlcyhzdHlsZXMpKE11bHRpcGxlQ2hvaWNlKTtcbiJdfQ==
|
|
451
|
+
//# sourceMappingURL=multiple-choice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/multiple-choice.jsx"],"names":["translator","Translator","styles","theme","main","color","text","backgroundColor","background","position","border","partLabel","display","fontSize","margin","fontWeight","paddingBottom","spacing","unit","teacherInstructions","marginBottom","horizontalLayout","flexDirection","flexWrap","gridLayout","fieldset","padding","minWidth","srOnly","left","top","width","height","overflow","errorText","typography","palette","error","paddingTop","MultipleChoice","props","event","target","value","checked","maxSelections","onChoiceChanged","session","length","setState","maxSelectionsErrorState","selected","selector","mode","showCorrect","state","onShowCorrectToggle","choice","isCorrect","correct","isChecked","isSelected","undefined","e","currentTarget","activeEl","document","activeElement","contains","relatedTarget","compareDocumentPosition","Node","DOCUMENT_POSITION_PRECEDING","firstInputRef","current","focus","alwaysShowCorrect","onToggle","bind","React","createRef","sessionValue","indexOf","nextProps","correctResponse","index","keyMode","String","fromCharCode","toUpperCase","choiceMode","classes","disabled","className","choices","gridColumns","prompt","responseCorrect","animationsDisabled","language","isSelectionButtonBelow","minSelections","autoplayAudioEnabled","customAudioButton","isEvaluateMode","showCorrectAnswerToggle","columnsStyle","gridTemplateColumns","selections","teacherInstructionsDiv","getMultipleChoiceMinSelectionErrorMessage","t","lng","renderHeading","hidden","visible","handleGroupFocus","choicesLayout","map","selectedAnswerBackgroundColor","handleChange","hideTick","getChecked","getCorrectness","indexToSymbol","Component","PropTypes","string","oneOf","array","object","bool","func","isRequired","number","playImage","pauseImage","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport classNames from 'classnames';\nimport { withStyles } from '@material-ui/core/styles';\nimport { color, Collapsible, PreviewPrompt } from '@pie-lib/render-ui';\nimport Translator from '@pie-lib/translator';\n\nimport StyledChoice from './choice';\n\n// MultipleChoice\n\nconst { translator } = Translator;\n\nconst styles = (theme) => ({\n main: {\n color: color.text(),\n backgroundColor: color.background(),\n '& *': {\n '-webkit-font-smoothing': 'antialiased',\n },\n position: 'relative',\n // remove border from legend tags inside main to override the OT default styles\n '& legend': {\n border: 'none !important',\n },\n },\n partLabel: {\n display: 'block',\n fontSize: 'inherit',\n margin: '0',\n fontWeight: 'normal',\n paddingBottom: theme.spacing.unit * 2,\n },\n teacherInstructions: {\n marginBottom: theme.spacing.unit * 2,\n },\n horizontalLayout: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n },\n gridLayout: {\n display: 'grid',\n },\n fieldset: {\n border: '0px',\n padding: '0.01em 0 0 0',\n margin: '0px',\n minWidth: '0px',\n },\n srOnly: {\n position: 'absolute',\n left: '-10000px',\n top: 'auto',\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit,\n },\n});\n\nexport class MultipleChoice extends React.Component {\n static propTypes = {\n className: PropTypes.string,\n mode: PropTypes.oneOf(['gather', 'view', 'evaluate']),\n choiceMode: PropTypes.oneOf(['radio', 'checkbox']),\n keyMode: PropTypes.oneOf(['numbers', 'letters', 'none']),\n choices: PropTypes.array,\n partLabel: PropTypes.string,\n prompt: PropTypes.string,\n teacherInstructions: PropTypes.string,\n session: PropTypes.object,\n disabled: PropTypes.bool,\n onChoiceChanged: PropTypes.func,\n responseCorrect: PropTypes.bool,\n classes: PropTypes.object.isRequired,\n correctResponse: PropTypes.array,\n choicesLayout: PropTypes.oneOf(['vertical', 'grid', 'horizontal']),\n gridColumns: PropTypes.string,\n alwaysShowCorrect: PropTypes.bool,\n animationsDisabled: PropTypes.bool,\n language: PropTypes.string,\n selectedAnswerBackgroundColor: PropTypes.string,\n onShowCorrectToggle: PropTypes.func,\n isSelectionButtonBelow: PropTypes.bool,\n minSelections: PropTypes.number,\n maxSelections: PropTypes.number,\n autoplayAudioEnabled: PropTypes.bool,\n customAudioButton: {\n playImage: PropTypes.string,\n pauseImage: PropTypes.string,\n },\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n showCorrect: this.props.alwaysShowCorrect || false,\n maxSelectionsErrorState: false,\n };\n\n this.onToggle = this.onToggle.bind(this);\n this.firstInputRef = React.createRef();\n }\n\n isSelected(value) {\n const sessionValue = this.props.session && this.props.session.value;\n\n return sessionValue && sessionValue.indexOf && sessionValue.indexOf(value) >= 0;\n }\n\n // handleChange was added for accessibility. Please see comments and videos from PD-2441.\n handleChange = (event) => {\n const { value, checked } = event.target;\n const { maxSelections, onChoiceChanged, session } = this.props;\n\n if (session.value && session.value.length >= maxSelections) {\n // show/hide max selections error when user select/deselect an answer\n this.setState({ maxSelectionsErrorState: checked });\n\n if (checked) {\n // prevent selecting more answers\n return;\n }\n }\n\n onChoiceChanged({ value, selected: checked, selector: 'Mouse' });\n };\n\n onToggle = () => {\n if (this.props.mode === 'evaluate') {\n this.setState({ showCorrect: !this.state.showCorrect }, () => {\n if (this.props.onShowCorrectToggle) {\n this.props.onShowCorrectToggle();\n }\n });\n }\n };\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (!nextProps.correctResponse && this.state.showCorrect !== false) {\n this.setState({ showCorrect: false }, () => {\n if (this.props.onShowCorrectToggle) {\n this.props.onShowCorrectToggle();\n }\n });\n }\n\n if (nextProps.alwaysShowCorrect && this.state.showCorrect !== true) {\n this.setState({ showCorrect: true }, () => {\n if (this.props.onShowCorrectToggle) {\n this.props.onShowCorrectToggle();\n }\n });\n }\n }\n\n indexToSymbol(index) {\n if (this.props.keyMode === 'numbers') {\n return `${index + 1}`;\n }\n\n if (this.props.keyMode === 'letters') {\n return String.fromCharCode(97 + index).toUpperCase();\n }\n\n return '';\n }\n\n getCorrectness = (choice = {}) => {\n const isCorrect = choice.correct;\n const isChecked = this.isSelected(choice.value);\n\n if (this.state.showCorrect) {\n return isCorrect ? 'correct' : undefined;\n }\n\n if (isCorrect) {\n if (isChecked) {\n // A correct answer is selected: marked with a green checkmark\n return 'correct';\n } else {\n // A correct answer is NOT selected: marked with an orange X\n return 'incorrect';\n }\n } else {\n if (isChecked) {\n // An incorrect answer is selected: marked with an orange X\n return 'incorrect';\n } else {\n // An incorrect answer is NOT selected: not marked\n return undefined;\n }\n }\n };\n\n getChecked(choice) {\n if (this.state.showCorrect) {\n return choice.correct || false;\n }\n\n return this.isSelected(choice.value);\n }\n\n // renderHeading function was added for accessibility.\n renderHeading() {\n const { mode, choiceMode, classes } = this.props;\n\n if (mode !== 'gather') {\n return null;\n }\n\n return choiceMode === 'radio' ? (\n <h3 className={classes.srOnly}>Multiple Choice Question</h3>\n ) : (\n <h3 className={classes.srOnly}>Multiple Select Question</h3>\n );\n }\n\n handleGroupFocus = (e) => {\n const fieldset = e.currentTarget;\n const activeEl = document.activeElement;\n\n if (fieldset.contains(activeEl) && activeEl !== fieldset) {\n return;\n }\n\n // Only focus the first input if user is tabbing forward\n if (!e.relatedTarget || fieldset.compareDocumentPosition(e.relatedTarget) & Node.DOCUMENT_POSITION_PRECEDING) {\n if (this.firstInputRef?.current) {\n this.firstInputRef.current.focus();\n }\n }\n };\n\n render() {\n const {\n mode,\n disabled,\n className,\n choices = [],\n choiceMode,\n gridColumns,\n partLabel,\n prompt,\n responseCorrect,\n teacherInstructions,\n classes,\n alwaysShowCorrect,\n animationsDisabled,\n language,\n isSelectionButtonBelow,\n minSelections,\n maxSelections,\n autoplayAudioEnabled,\n session,\n customAudioButton,\n } = this.props;\n const { showCorrect, maxSelectionsErrorState } = this.state;\n const isEvaluateMode = mode === 'evaluate';\n const showCorrectAnswerToggle = isEvaluateMode && !responseCorrect;\n const columnsStyle = gridColumns > 1 ? { gridTemplateColumns: `repeat(${gridColumns}, 1fr)` } : undefined;\n const selections = (session.value && session.value.length) || 0;\n\n const teacherInstructionsDiv = (\n <PreviewPrompt\n tagName=\"div\"\n className=\"prompt\"\n defaultClassName=\"teacher-instructions\"\n prompt={teacherInstructions}\n />\n );\n\n const getMultipleChoiceMinSelectionErrorMessage = () => {\n if (minSelections && maxSelections) {\n return minSelections === maxSelections\n ? translator.t('translation:multipleChoice:minmaxSelections_equal', { lng: language, minSelections })\n : translator.t('translation:multipleChoice:minmaxSelections_range', {\n lng: language,\n minSelections,\n maxSelections,\n });\n }\n\n if (minSelections) {\n return translator.t('translation:multipleChoice:minSelections', { lng: language, minSelections });\n }\n\n return '';\n };\n\n return (\n <div id={'main-container'} className={classNames(classes.main, className, 'multiple-choice')}>\n {partLabel && <h2 className={classes.partLabel}>{partLabel}</h2>}\n\n {this.renderHeading()}\n\n {teacherInstructions && (\n <div className={classes.teacherInstructions}>\n {!animationsDisabled ? (\n <Collapsible\n labels={{\n hidden: 'Show Teacher Instructions',\n visible: 'Hide Teacher Instructions',\n }}\n >\n {teacherInstructionsDiv}\n </Collapsible>\n ) : (\n teacherInstructionsDiv\n )}\n </div>\n )}\n\n <fieldset\n tabIndex={0}\n className={classes.fieldset}\n onFocus={this.handleGroupFocus}\n role={choiceMode === 'radio' ? 'radiogroup' : 'group'}\n >\n <PreviewPrompt\n className=\"prompt\"\n defaultClassName=\"prompt\"\n prompt={prompt}\n tagName={'legend'}\n autoplayAudioEnabled={autoplayAudioEnabled}\n customAudioButton={customAudioButton}\n />\n\n {!alwaysShowCorrect && (\n <CorrectAnswerToggle\n show={showCorrectAnswerToggle}\n toggled={showCorrect}\n onToggle={this.onToggle.bind(this)}\n language={language}\n />\n )}\n\n <div\n className={classNames({\n [classes.gridLayout]: this.props.choicesLayout === 'grid',\n [classes.horizontalLayout]: this.props.choicesLayout === 'horizontal',\n })}\n style={columnsStyle}\n >\n {choices.map((choice, index) => (\n <StyledChoice\n autoFocusRef={index === 0 ? this.firstInputRef : null}\n choicesLayout={this.props.choicesLayout}\n selectedAnswerBackgroundColor={this.props.selectedAnswerBackgroundColor}\n gridColumns={gridColumns}\n key={`choice-${index}`}\n choice={choice}\n index={index}\n choicesLength={choices.length}\n showCorrect={showCorrect}\n isEvaluateMode={isEvaluateMode}\n choiceMode={choiceMode}\n disabled={disabled}\n tagName={partLabel ? `group-${partLabel}` : 'group'}\n onChoiceChanged={this.handleChange}\n hideTick={choice.hideTick}\n checked={this.getChecked(choice)}\n correctness={isEvaluateMode ? this.getCorrectness(choice) : undefined}\n displayKey={this.indexToSymbol(index)}\n isSelectionButtonBelow={isSelectionButtonBelow}\n />\n ))}\n </div>\n </fieldset>\n\n {choiceMode === 'checkbox' && selections < minSelections && (\n <div className={classes.errorText}>{getMultipleChoiceMinSelectionErrorMessage()}</div>\n )}\n {choiceMode === 'checkbox' && maxSelectionsErrorState && (\n <div className={classes.errorText}>\n {translator.t(`translation:multipleChoice:maxSelections_${maxSelections === 1 ? 'one' : 'other'}`, {\n lng: language,\n maxSelections,\n })}\n </div>\n )}\n </div>\n );\n }\n}\n\nMultipleChoice.defaultProps = {\n session: {\n value: [],\n },\n};\n\nexport default withStyles(styles)(MultipleChoice);\n"],"file":"multiple-choice.js"}
|
package/lib/print.js
CHANGED
|
@@ -126,4 +126,4 @@ var MultipleChoicePrint = /*#__PURE__*/function (_HTMLElement) {
|
|
|
126
126
|
}( /*#__PURE__*/(0, _wrapNativeSuper2["default"])(HTMLElement));
|
|
127
127
|
|
|
128
128
|
exports["default"] = MultipleChoicePrint;
|
|
129
|
-
//# sourceMappingURL=
|
|
129
|
+
//# sourceMappingURL=print.js.map
|
package/lib/print.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/print.js"],"names":["log","preparePrintModel","model","opts","instr","role","prompt","promptEnabled","undefined","teacherInstructions","teacherInstructionsEnabled","showTeacherInstructions","alwaysShowCorrect","mode","disabled","animationsDisabled","lockChoiceOrder","choicesLayout","choices","map","c","rationale","rationaleEnabled","hideTick","feedback","keyMode","choicePrefix","MultipleChoicePrint","_options","_model","_session","_rerender","printModel","element","React","createElement","Main","session","ReactDOM","render","leading","trailing","o","s","HTMLElement"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport debounce from 'lodash/debounce';\nimport cloneDeep from 'lodash/cloneDeep';\nimport Main from './main';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport debug from 'debug';\n\nconst log = debug('pie-element:multiple-choice:print');\n\n/**\n * Live in same package as main element - so we can access some of the shared comps!\n *\n * - update pslb to build print if src/print.js is there\n * - update demo el\n * - get configure/controller building\n */\n\nconst preparePrintModel = (model, opts) => {\n const instr = opts.role === 'instructor';\n\n model.prompt = model.promptEnabled !== false ? model.prompt : undefined;\n model.teacherInstructions =\n instr && model.teacherInstructionsEnabled !== false ? model.teacherInstructions : undefined;\n model.showTeacherInstructions = instr;\n model.alwaysShowCorrect = instr;\n model.mode = instr ? 'evaluate' : model.mode;\n\n model.disabled = true;\n model.animationsDisabled = true;\n model.lockChoiceOrder = true;\n model.choicesLayout = model.choicesLayout || 'vertical';\n\n const choices = cloneDeep(model.choices);\n\n model.choices = choices.map((c) => {\n c.rationale = instr && model.rationaleEnabled !== false ? c.rationale : undefined;\n c.hideTick = instr;\n c.feedback = undefined;\n return c;\n });\n\n model.keyMode = model.choicePrefix || 'letters';\n\n return model;\n};\n\nexport default class MultipleChoicePrint extends HTMLElement {\n constructor() {\n super();\n this._options = null;\n this._model = null;\n this._session = [];\n this._rerender = debounce(\n () => {\n if (this._model && this._session) {\n const printModel = preparePrintModel(this._model, this._options);\n\n const element =\n this._options &&\n React.createElement(Main, {\n model: printModel,\n session: {},\n });\n\n ReactDOM.render(element, this, () => {\n log('render complete - render math');\n renderMath(this);\n });\n } else {\n log('skip');\n }\n },\n 50,\n { leading: false, trailing: true },\n );\n }\n set options(o) {\n this._options = o;\n }\n\n set model(s) {\n this._model = s;\n this._rerender();\n }\n\n connectedCallback() {}\n}\n"],"file":"print.js"}
|