@pie-element/math-templated 2.11.2-next.7000

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/CHANGELOG.json +1 -0
  2. package/CHANGELOG.md +528 -0
  3. package/LICENSE.md +5 -0
  4. package/README.md +0 -0
  5. package/configure/CHANGELOG.json +1 -0
  6. package/configure/CHANGELOG.md +486 -0
  7. package/configure/lib/defaults.js +158 -0
  8. package/configure/lib/defaults.js.map +1 -0
  9. package/configure/lib/design.js +597 -0
  10. package/configure/lib/design.js.map +1 -0
  11. package/configure/lib/index.js +227 -0
  12. package/configure/lib/index.js.map +1 -0
  13. package/configure/lib/markupUtils.js +51 -0
  14. package/configure/lib/markupUtils.js.map +1 -0
  15. package/configure/lib/response.js +442 -0
  16. package/configure/lib/response.js.map +1 -0
  17. package/configure/package.json +20 -0
  18. package/controller/CHANGELOG.json +1 -0
  19. package/controller/CHANGELOG.md +391 -0
  20. package/controller/lib/defaults.js +21 -0
  21. package/controller/lib/defaults.js.map +1 -0
  22. package/controller/lib/index.js +302 -0
  23. package/controller/lib/index.js.map +1 -0
  24. package/controller/package.json +19 -0
  25. package/docs/config-schema.json +104 -0
  26. package/docs/config-schema.json.md +85 -0
  27. package/docs/demo/config.js +8 -0
  28. package/docs/demo/generate.js +42 -0
  29. package/docs/demo/index.html +1 -0
  30. package/docs/demo/session.js +14 -0
  31. package/docs/pie-schema.json +51 -0
  32. package/docs/pie-schema.json.md +37 -0
  33. package/lib/index.js +121 -0
  34. package/lib/index.js.map +1 -0
  35. package/lib/main.js +843 -0
  36. package/lib/main.js.map +1 -0
  37. package/lib/print.js +130 -0
  38. package/lib/print.js.map +1 -0
  39. package/module/configure.js +106458 -0
  40. package/module/controller.js +23132 -0
  41. package/module/demo.js +67 -0
  42. package/module/element.js +127550 -0
  43. package/module/index.html +21 -0
  44. package/module/manifest.json +14 -0
  45. package/module/print-demo.js +105 -0
  46. package/module/print.html +18 -0
  47. package/module/print.js +127498 -0
  48. package/package.json +29 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/design.jsx"],"names":["Panel","settings","toggle","createElementFromHTML","htmlString","div","document","createElement","innerHTML","trim","Design","key","value","props","onModelChanged","model","updatedModel","response","index","newModel","responses","newVal","answer","id","allowSpaces","markup","newResponses","domMarkup","responseAreas","querySelectorAll","forEach","element","dataset","dataIndex","validation","allowTrailingZeros","ignoreOrder","alternates","processedMarkup","callback","slateMarkup","setState","cachedChoices","undefined","nodes","cachedResponses","state","newChoices","newCachedResponses","node","keyForNode","data","get","Object","assign","hasOwnProperty","trailing","leading","e","relatedTarget","currentTarget","getParentWithRoleTooltip","depth","parent","offsetParent","getAttribute","getDeepChildDataKeypad","child","children","attributes","parentWithTooltipRole","childWithDataKeypad","activeAnswerBlock","classes","configuration","imageSupport","onConfigurationChanged","uploadSoundSupport","baseInputConfiguration","contentDimensions","prompt","rationale","settingsPanelDisabled","teacherInstructions","language","languageChoices","spellCheck","playerSpellCheck","maxImageWidth","maxImageHeight","mathMlOptions","template","editSource","cIgnoreOrder","cAllowTrailingZeros","partialScoring","maxResponseAreas","errors","promptEnabled","rationaleEnabled","spellCheckEnabled","teacherInstructionsEnabled","toolbarEditorPosition","equationEditor","choices","choicesErrors","promptError","rationaleError","responseAreasError","teacherInstructionsError","responsesErrors","panelSettings","label","enabled","options","panelProperties","playerSpellCheckEnabled","defaultImageMaxWidth","defaultImageMaxHeight","toolbarOpts","position","getPluginProps","Settings","Properties","promptHolder","handleChange","inputConfiguration","errorText","title","ALL_PLUGINS","type","respAreaToolbar","error","onHandleAreaChange","onChange","onBlur","selectContainer","select","event","target","keys","map","responseKey","idx","onResponseChange","math","controlledKeypadMode","React","Component","PropTypes","object","isRequired","func","shape","add","theme","width","paddingTop","spacing","unit","marginBottom","color","palette","main","fontSize","marginTop","typography","fontWeight"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Select from '@material-ui/core/Select';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport cloneDeep from 'lodash/cloneDeep';\nimport pick from 'lodash/pick';\nimport throttle from 'lodash/throttle';\nimport {\n InputContainer,\n settings,\n layout,\n} from '@pie-lib/pie-toolbox/config-ui';\nimport {\n ALL_PLUGINS,\n EditableHtml,\n} from '@pie-lib/pie-toolbox/editable-html';\nimport { dropdown } from '@pie-lib/pie-toolbox/code/config-ui/settings';\n\nimport Response from './response';\nimport { processMarkup } from './markupUtils';\n\nconst { Panel, toggle } = settings;\n\nconst createElementFromHTML = (htmlString) => {\n const div = document.createElement('div');\n div.innerHTML = htmlString.trim();\n\n return div;\n};\n\nclass Design extends React.Component {\n static propTypes = {\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n classes: PropTypes.object.isRequired,\n onModelChanged: PropTypes.func.isRequired,\n onConfigurationChanged: PropTypes.func.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n uploadSoundSupport: PropTypes.object,\n };\n\n state = {};\n\n componentDidMount() {\n const { model: { slateMarkup } } = this.props;\n\n this.setState({ markup: slateMarkup });\n\n }\n\n handleChange = (key, value) => {\n const { onModelChanged, model } = this.props;\n const updatedModel = cloneDeep(model);\n updatedModel[key] = value;\n onModelChanged(updatedModel);\n };\n\n onResponseChange = (response, index) => {\n const { model, onModelChanged } = this.props;\n const newModel = { ...model };\n\n newModel.responses[index] = response;\n onModelChanged(newModel);\n };\n\n onChangeResponse = (index, newVal) => {\n const { model, onModelChanged } = this.props;\n const { responses } = model;\n\n if (!responses[index]) {\n responses[index] = [{ answer: newVal || '', id: 'response' + index, allowSpaces: true }];\n } else {\n responses[index][0].answer = newVal || '';\n }\n\n onModelChanged({ ...model, responses });\n };\n\n onResponsesChanged = (responses) => {\n this.props.onModelChanged({ ...this.props.model, responses });\n };\n\n onChange = (markup) => {\n const {\n model: { responses },\n onModelChanged,\n } = this.props;\n const newResponses = {};\n const domMarkup = createElementFromHTML(markup);\n const responseAreas = domMarkup.querySelectorAll('[data-type=\"math_templated\"]');\n\n responseAreas.forEach((element) => {\n const { value, index: dataIndex } = element.dataset;\n\n if (!value) {\n element.dataset.value = `R ${dataIndex}`;\n }\n\n newResponses[dataIndex] = responses[dataIndex] || {\n // TODO: Initialize with customizable defaults\n allowSpaces: true,\n validation: 'symbolic',\n allowTrailingZeros: false,\n ignoreOrder: false,\n answer: '',\n alternates: {},\n };\n\n element.dataset.index = dataIndex;\n });\n\n const processedMarkup = processMarkup(markup);\n\n const callback = () =>\n onModelChanged({\n ...this.props.model,\n slateMarkup: domMarkup.innerHTML,\n responses: newResponses,\n markup: processedMarkup\n });\n\n this.setState({ cachedChoices: undefined }, callback);\n };\n\n onHandleAreaChange = throttle(\n (nodes) => {\n const {\n model: { responses },\n onModelChanged,\n } = this.props;\n const { cachedResponses } = this.state;\n\n if (!nodes) {\n return;\n }\n\n const newChoices = responses ? cloneDeep(responses) : {};\n const newCachedResponses = cachedResponses ? cloneDeep(cachedResponses) : {};\n\n nodes.forEach((node) => {\n const keyForNode = node.data.get('index');\n\n if (!newChoices[keyForNode] && newCachedResponses[keyForNode]) {\n Object.assign(newChoices, pick(newCachedResponses, keyForNode));\n\n if (newCachedResponses.hasOwnProperty(keyForNode)) {\n delete newCachedResponses[keyForNode];\n }\n } else {\n Object.assign(newCachedResponses, pick(newChoices, keyForNode));\n\n if (newChoices.hasOwnProperty(keyForNode)) {\n delete newChoices[keyForNode];\n }\n }\n });\n\n const callback = () => onModelChanged({ ...this.props.model, responses: newChoices });\n\n this.setState({ cachedResponses: newCachedResponses }, callback);\n },\n 500,\n { trailing: false, leading: true },\n );\n\n onBlur = (e) => {\n const { relatedTarget, currentTarget } = e || {};\n\n function getParentWithRoleTooltip(element, depth = 0) {\n // only run this max 16 times\n if (!element || depth >= 16) return null;\n\n const parent = element.offsetParent;\n\n if (!parent) return null;\n\n if (parent.getAttribute('role') === 'tooltip') {\n return parent;\n }\n\n return getParentWithRoleTooltip(parent, depth + 1);\n }\n\n function getDeepChildDataKeypad(element, depth = 0) {\n // only run this max 4 times\n if (!element || depth >= 4) return null;\n\n const child = element?.children?.[0];\n\n if (!child) return null;\n\n if (child.attributes && child.attributes['data-keypad']) {\n return child;\n }\n\n return getDeepChildDataKeypad(child, depth + 1);\n }\n\n const parentWithTooltipRole = getParentWithRoleTooltip(relatedTarget);\n const childWithDataKeypad = parentWithTooltipRole ? getDeepChildDataKeypad(parentWithTooltipRole) : null;\n\n if (!relatedTarget || !currentTarget || !childWithDataKeypad?.attributes['data-keypad']) {\n this.setState({ activeAnswerBlock: '' });\n }\n };\n\n render() {\n const {\n classes,\n configuration,\n imageSupport,\n model,\n onConfigurationChanged,\n onModelChanged,\n uploadSoundSupport,\n } = this.props;\n\n const {\n baseInputConfiguration = {},\n contentDimensions = {},\n prompt = {},\n rationale = {},\n settingsPanelDisabled,\n teacherInstructions = {},\n language = {},\n languageChoices = {},\n spellCheck = {},\n playerSpellCheck = {},\n maxImageWidth = {},\n maxImageHeight = {},\n mathMlOptions = {},\n template = {},\n editSource = {},\n ignoreOrder: cIgnoreOrder = {},\n allowTrailingZeros: cAllowTrailingZeros = {},\n partialScoring = {},\n maxResponseAreas,\n } = configuration || {};\n\n const {\n errors,\n promptEnabled,\n rationaleEnabled,\n spellCheckEnabled,\n teacherInstructionsEnabled,\n toolbarEditorPosition,\n responses,\n equationEditor,\n } = model || {};\n\n const {\n choices: choicesErrors = {},\n prompt: promptError,\n rationale: rationaleError,\n responseAreas: responseAreasError,\n teacherInstructions: teacherInstructionsError,\n responses: responsesErrors,\n } = errors || {};\n\n const panelSettings = {\n 'language.enabled': language.settings && toggle(language.label, true),\n language: language.settings && language.enabled && dropdown(languageChoices.label, languageChoices.options),\n };\n\n const panelProperties = {\n teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),\n rationaleEnabled: rationale.settings && toggle(rationale.label),\n promptEnabled: prompt.settings && toggle(prompt.label),\n spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),\n playerSpellCheckEnabled: playerSpellCheck.settings && toggle(playerSpellCheck.label),\n 'editSource.enabled': editSource?.settings && toggle(editSource.label, true),\n partialScoring: partialScoring.settings && toggle(partialScoring.label),\n };\n\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n\n const toolbarOpts = {\n position: toolbarEditorPosition === 'top' ? 'top' : 'bottom',\n };\n\n const getPluginProps = (props = {}, baseInputConfiguration = {}) => ({\n ...baseInputConfiguration,\n ...props,\n });\n\n return (\n <layout.ConfigLayout\n dimensions={contentDimensions}\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n configuration={configuration}\n onChangeModel={(updatedModel) => onModelChanged(updatedModel)}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n Settings: panelSettings,\n Properties: panelProperties,\n }}\n />\n }\n >\n {teacherInstructionsEnabled && (\n <InputContainer\n label={teacherInstructions.label}\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={model.teacherInstructions || ''}\n onChange={(value) => this.handleChange('teacherInstructions', value)}\n imageSupport={imageSupport}\n nonEmpty={false}\n error={teacherInstructionsError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(\n teacherInstructions?.inputConfiguration,\n baseInputConfiguration\n )}\n spellCheck={spellCheckEnabled}\n maxImageWidth={\n (maxImageWidth && maxImageWidth.teacherInstructions) ||\n defaultImageMaxWidth\n }\n maxImageHeight={\n (maxImageHeight && maxImageHeight.teacherInstructions) ||\n defaultImageMaxHeight\n }\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[\n { language: 'spanish' },\n { language: 'special' },\n ]}\n mathMlOptions={mathMlOptions}\n />\n {teacherInstructionsError && (\n <div className={classes.errorText}>{teacherInstructionsError}</div>\n )}\n </InputContainer>\n )}\n\n {promptEnabled && (\n <InputContainer\n label={prompt.label}\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt}\n onChange={(value) => this.handleChange('prompt', value)}\n imageSupport={imageSupport}\n nonEmpty={false}\n disableUnderline\n error={promptError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(\n teacherInstructions?.inputConfiguration,\n baseInputConfiguration\n )}\n spellCheck={spellCheckEnabled}\n maxImageWidth={defaultImageMaxWidth}\n maxImageHeight={defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[\n { language: 'spanish' },\n { language: 'special' },\n ]}\n mathMlOptions={mathMlOptions}\n />\n {promptError && (\n <div className={classes.errorText}>{promptError}</div>\n )}\n </InputContainer>\n )}\n\n <Typography className={classes.title}>Response Template</Typography>\n\n <EditableHtml\n activePlugins={ALL_PLUGINS}\n toolbarOpts={{ position: 'top' }}\n spellCheck={spellCheckEnabled}\n pluginProps={getPluginProps(\n template?.inputConfiguration,\n baseInputConfiguration\n )}\n responseAreaProps={{\n type: 'math-templated',\n respAreaToolbar: null,\n error: () => choicesErrors,\n onHandleAreaChange: this.onHandleAreaChange,\n maxResponseAreas: maxResponseAreas,\n }}\n className={classes.markup}\n markup={model.slateMarkup}\n onChange={this.onChange}\n imageSupport={imageSupport}\n disableImageAlignmentButtons={true}\n onBlur={this.onBlur}\n disabled={false}\n highlightShape={false}\n error={responseAreasError}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[\n { language: 'spanish' },\n { language: 'special' },\n ]}\n mathMlOptions={mathMlOptions}\n />\n\n <Typography className={classes.title}>Define Response</Typography>\n\n <InputContainer\n label=\"Response Template Equation Editor\"\n className={classes.selectContainer}\n >\n <Select\n className={classes.select}\n onChange={(event) =>\n this.handleChange('equationEditor', event.target.value)\n }\n value={equationEditor}\n >\n <MenuItem value=\"non-negative-integers\">\n Numeric - Non-Negative Integers\n </MenuItem>\n <MenuItem value=\"integers\">Numeric - Integers</MenuItem>\n <MenuItem value=\"decimals\">Numeric - Decimals</MenuItem>\n <MenuItem value=\"fractions\">Numeric - Fractions</MenuItem>\n <MenuItem value={1}>Grade 1 - 2</MenuItem>\n <MenuItem value={3}>Grade 3 - 5</MenuItem>\n <MenuItem value={6}>Grade 6 - 7</MenuItem>\n <MenuItem value={8}>Grade 8 - HS</MenuItem>\n <MenuItem value={'geometry'}>Geometry</MenuItem>\n <MenuItem value={'advanced-algebra'}>\n Advanced Algebra\n </MenuItem>\n <MenuItem value={'statistics'}>Statistics</MenuItem>\n <MenuItem value={'item-authoring'}>Item Authoring</MenuItem>\n </Select>\n </InputContainer>\n\n {Object.keys(responses || {}).map((responseKey, idx) => {\n const response = responses[responseKey];\n\n return (\n <Response\n key={responseKey}\n responseKey={responseKey}\n mode={equationEditor}\n response={response}\n onResponseChange={this.onResponseChange}\n index={idx}\n cIgnoreOrder={cIgnoreOrder}\n cAllowTrailingZeros={cAllowTrailingZeros}\n error={responsesErrors && responsesErrors[idx]}\n />\n );\n })}\n\n {rationaleEnabled && (\n <InputContainer\n label={rationale.label}\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={model.rationale || ''}\n onChange={(value) => this.handleChange('rationale', value)}\n imageSupport={imageSupport}\n nonEmpty={false}\n error={rationaleError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(rationale?.inputConfiguration, {\n ...baseInputConfiguration,\n math: {\n controlledKeypadMode: false,\n },\n })}\n spellCheck={spellCheckEnabled}\n maxImageWidth={\n (maxImageWidth && maxImageWidth.rationale) ||\n defaultImageMaxWidth\n }\n maxImageHeight={\n (maxImageHeight && maxImageHeight.rationale) ||\n defaultImageMaxHeight\n }\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[\n { language: 'spanish' },\n { language: 'special' },\n ]}\n mathMlOptions={mathMlOptions}\n />\n {rationaleError && (\n <div className={classes.errorText}>{rationaleError}</div>\n )}\n </InputContainer>\n )}\n </layout.ConfigLayout>\n );\n }\n}\n\nexport default withStyles((theme) => ({\n promptHolder: {\n width: '100%',\n paddingTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n prompt: {\n width: '100%',\n },\n errorText: {\n color: theme.palette.error.main,\n fontSize: '0.75rem',\n marginTop: theme.spacing.unit,\n },\n markup: {\n width: '100%',\n marginTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 3,\n },\n selectContainer: {\n width: '100%',\n marginTop: theme.spacing.unit * 2,\n },\n select: {\n width: '100%',\n },\n title: {\n fontSize: theme.typography.fontSize * 1.25,\n fontWeight: 'bold',\n }\n}))(Design);\n"],"file":"design.js"}
@@ -0,0 +1,227 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+
12
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
+
14
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
15
+
16
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
+
18
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
19
+
20
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
21
+
22
+ var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
23
+
24
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
25
+
26
+ var _react = _interopRequireDefault(require("react"));
27
+
28
+ var _reactDom = _interopRequireDefault(require("react-dom"));
29
+
30
+ var _debug = _interopRequireDefault(require("debug"));
31
+
32
+ var _defaults = _interopRequireDefault(require("lodash/defaults"));
33
+
34
+ var _isArray = _interopRequireDefault(require("lodash/isArray"));
35
+
36
+ var _pieConfigureEvents = require("@pie-framework/pie-configure-events");
37
+
38
+ var _design = _interopRequireDefault(require("./design"));
39
+
40
+ var _defaults2 = _interopRequireDefault(require("./defaults"));
41
+
42
+ var _markupUtils = require("./markupUtils");
43
+
44
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
45
+
46
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
47
+
48
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
49
+
50
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
51
+
52
+ var log = (0, _debug["default"])('math-templated:configure');
53
+
54
+ var MathTemplateConfigure = /*#__PURE__*/function (_HTMLElement) {
55
+ (0, _inherits2["default"])(MathTemplateConfigure, _HTMLElement);
56
+
57
+ var _super = _createSuper(MathTemplateConfigure);
58
+
59
+ function MathTemplateConfigure() {
60
+ var _this;
61
+
62
+ (0, _classCallCheck2["default"])(this, MathTemplateConfigure);
63
+ _this = _super.call(this);
64
+ _this._model = MathTemplateConfigure.prepareModel();
65
+ _this._configuration = _defaults2["default"].configuration;
66
+ _this.onModelChanged = _this.onModelChanged.bind((0, _assertThisInitialized2["default"])(_this));
67
+ _this.onConfigurationChanged = _this.onConfigurationChanged.bind((0, _assertThisInitialized2["default"])(_this));
68
+ return _this;
69
+ }
70
+
71
+ (0, _createClass2["default"])(MathTemplateConfigure, [{
72
+ key: "model",
73
+ set: function set(s) {
74
+ this._model = MathTemplateConfigure.prepareModel(s);
75
+
76
+ this._render();
77
+ }
78
+ }, {
79
+ key: "configuration",
80
+ set: function set(c) {
81
+ var _c$language,
82
+ _this2 = this;
83
+
84
+ this._configuration = (0, _defaults["default"])(c, _defaults2["default"].configuration); // if language:enabled is true, then the corresponding default item model should include a language value;
85
+ // if it is false, then the language field should be omitted from the item model.
86
+ // if a default item model includes a language value (e.g., en_US) and the corresponding authoring view settings have language:settings = true,
87
+ // then (a) language:enabled should also be true, and (b) that default language value should be represented in languageChoices[] (as a key).
88
+
89
+ if ((_c$language = c.language) !== null && _c$language !== void 0 && _c$language.enabled) {
90
+ var _c$languageChoices, _c$languageChoices$op;
91
+
92
+ if ((_c$languageChoices = c.languageChoices) !== null && _c$languageChoices !== void 0 && (_c$languageChoices$op = _c$languageChoices.options) !== null && _c$languageChoices$op !== void 0 && _c$languageChoices$op.length) {
93
+ this._model.language = c.languageChoices.options[0].value;
94
+ }
95
+ } else if (c.language.settings && this._model.language) {
96
+ this._configuration.language.enabled = true;
97
+
98
+ if (!this._configuration.languageChoices.options || !this._configuration.languageChoices.options.length) {
99
+ this._configuration.languageChoices.options = [];
100
+ } // check if the language is already included in the languageChoices.options array
101
+ // and if not, then add it.
102
+
103
+
104
+ if (!this._configuration.languageChoices.options.find(function (option) {
105
+ return option.value === _this2._model.language;
106
+ })) {
107
+ this._configuration.languageChoices.options.push({
108
+ value: this._model.language,
109
+ label: this._model.language
110
+ });
111
+ }
112
+ } else {
113
+ delete this._model.language;
114
+ }
115
+
116
+ this._render();
117
+ }
118
+ }, {
119
+ key: "disableSidePanel",
120
+ set: function set(s) {
121
+ this._disableSidePanel = s;
122
+
123
+ this._render();
124
+ }
125
+ }, {
126
+ key: "dispatchModelUpdated",
127
+ value: function dispatchModelUpdated(reset) {
128
+ var resetValue = !!reset;
129
+ this.dispatchEvent(new _pieConfigureEvents.ModelUpdatedEvent(this._model, resetValue));
130
+ }
131
+ }, {
132
+ key: "onModelChanged",
133
+ value: function onModelChanged(m, reset) {
134
+ this._model = MathTemplateConfigure.prepareModel(m);
135
+
136
+ this._render();
137
+
138
+ this.dispatchModelUpdated(reset);
139
+ }
140
+ }, {
141
+ key: "onConfigurationChanged",
142
+ value: function onConfigurationChanged(c) {
143
+ this._configuration = c;
144
+
145
+ this._render();
146
+ }
147
+ /** @param {done, progress, file} handler */
148
+
149
+ }, {
150
+ key: "insertImage",
151
+ value: function insertImage(handler) {
152
+ this.dispatchEvent(new _pieConfigureEvents.InsertImageEvent(handler));
153
+ }
154
+ }, {
155
+ key: "onDeleteImage",
156
+ value: function onDeleteImage(src, done) {
157
+ this.dispatchEvent(new _pieConfigureEvents.DeleteImageEvent(src, done));
158
+ }
159
+ }, {
160
+ key: "insertSound",
161
+ value: function insertSound(handler) {
162
+ this.dispatchEvent(new _pieConfigureEvents.InsertSoundEvent(handler));
163
+ }
164
+ }, {
165
+ key: "onDeleteSound",
166
+ value: function onDeleteSound(src, done) {
167
+ this.dispatchEvent(new _pieConfigureEvents.DeleteSoundEvent(src, done));
168
+ }
169
+ }, {
170
+ key: "_render",
171
+ value: function _render() {
172
+ log('_render');
173
+
174
+ var element = /*#__PURE__*/_react["default"].createElement(_design["default"], {
175
+ model: this._model,
176
+ configuration: this._configuration,
177
+ onModelChanged: this.onModelChanged,
178
+ onConfigurationChanged: this.onConfigurationChanged,
179
+ disableSidePanel: this._disableSidePanel,
180
+ imageSupport: {
181
+ add: this.insertImage.bind(this),
182
+ "delete": this.onDeleteImage.bind(this)
183
+ },
184
+ uploadSoundSupport: {
185
+ add: this.insertSound.bind(this),
186
+ "delete": this.onDeleteSound.bind(this)
187
+ }
188
+ });
189
+
190
+ _reactDom["default"].render(element, this);
191
+ }
192
+ }]);
193
+ return MathTemplateConfigure;
194
+ }( /*#__PURE__*/(0, _wrapNativeSuper2["default"])(HTMLElement));
195
+
196
+ exports["default"] = MathTemplateConfigure;
197
+ (0, _defineProperty2["default"])(MathTemplateConfigure, "prepareModel", function () {
198
+ var model = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
199
+
200
+ var joinedObj = _objectSpread(_objectSpread({}, _defaults2["default"].model), model);
201
+
202
+ var slateMarkup = joinedObj.slateMarkup || (0, _markupUtils.createSlateMarkup)(joinedObj.markup, joinedObj.responses);
203
+ var processedMarkup = (0, _markupUtils.processMarkup)(slateMarkup); // this was added to treat an exception, when the model has responses without the "answer" property
204
+
205
+ if (joinedObj.responses) {
206
+ Object.keys(joinedObj.responses).forEach(function (key) {
207
+ if ((0, _isArray["default"])(joinedObj.responses[key])) {
208
+ joinedObj.responses[key] = (joinedObj.responses[key] || []).map(function (item, index) {
209
+ if (!item.answer) {
210
+ log('Choice does not contain "answer" property, which is required.', item);
211
+ return _objectSpread({
212
+ answer: "".concat(index)
213
+ }, item);
214
+ }
215
+
216
+ return item;
217
+ });
218
+ }
219
+ });
220
+ }
221
+
222
+ return _objectSpread(_objectSpread({}, joinedObj), {}, {
223
+ slateMarkup: slateMarkup,
224
+ markup: processedMarkup
225
+ });
226
+ });
227
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.js"],"names":["log","MathTemplateConfigure","_model","prepareModel","_configuration","sensibleDefaults","configuration","onModelChanged","bind","onConfigurationChanged","s","_render","c","language","enabled","languageChoices","options","length","value","settings","find","option","push","label","_disableSidePanel","reset","resetValue","dispatchEvent","ModelUpdatedEvent","m","dispatchModelUpdated","handler","InsertImageEvent","src","done","DeleteImageEvent","InsertSoundEvent","DeleteSoundEvent","element","React","createElement","Main","model","disableSidePanel","imageSupport","add","insertImage","onDeleteImage","uploadSoundSupport","insertSound","onDeleteSound","ReactDOM","render","HTMLElement","joinedObj","slateMarkup","markup","responses","processedMarkup","Object","keys","forEach","key","map","item","index","answer"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport debug from 'debug';\nimport defaults from 'lodash/defaults';\nimport isArray from 'lodash/isArray';\nimport {\n ModelUpdatedEvent,\n DeleteImageEvent,\n InsertImageEvent,\n InsertSoundEvent,\n DeleteSoundEvent,\n} from '@pie-framework/pie-configure-events';\n\nimport Main from './design';\n\nimport sensibleDefaults from './defaults';\nimport { processMarkup, createSlateMarkup } from './markupUtils';\n\nconst log = debug('math-templated:configure');\n\nexport default class MathTemplateConfigure extends HTMLElement {\n static prepareModel = (model = {}) => {\n const joinedObj = {\n ...sensibleDefaults.model,\n ...model,\n };\n const slateMarkup = joinedObj.slateMarkup || createSlateMarkup(joinedObj.markup, joinedObj.responses);\n const processedMarkup = processMarkup(slateMarkup);\n\n // this was added to treat an exception, when the model has responses without the \"answer\" property\n if (joinedObj.responses) {\n Object.keys(joinedObj.responses).forEach((key) => {\n if (isArray(joinedObj.responses[key])) {\n joinedObj.responses[key] = (joinedObj.responses[key] || []).map((item, index) => {\n if (!item.answer) {\n log('Choice does not contain \"answer\" property, which is required.', item);\n return { answer: `${index}`, ...item };\n }\n\n return item;\n });\n }\n });\n }\n\n return {\n ...joinedObj,\n slateMarkup,\n markup: processedMarkup,\n };\n };\n\n constructor() {\n super();\n this._model = MathTemplateConfigure.prepareModel();\n this._configuration = sensibleDefaults.configuration;\n this.onModelChanged = this.onModelChanged.bind(this);\n this.onConfigurationChanged = this.onConfigurationChanged.bind(this);\n }\n\n set model(s) {\n this._model = MathTemplateConfigure.prepareModel(s);\n this._render();\n }\n\n set configuration(c) {\n this._configuration = defaults(c, sensibleDefaults.configuration);\n\n // if language:enabled is true, then the corresponding default item model should include a language value;\n // if it is false, then the language field should be omitted from the item model.\n // if a default item model includes a language value (e.g., en_US) and the corresponding authoring view settings have language:settings = true,\n // then (a) language:enabled should also be true, and (b) that default language value should be represented in languageChoices[] (as a key).\n if (c.language?.enabled) {\n if (c.languageChoices?.options?.length) {\n this._model.language = c.languageChoices.options[0].value;\n }\n } else if (c.language.settings && this._model.language) {\n this._configuration.language.enabled = true;\n\n if (!this._configuration.languageChoices.options || !this._configuration.languageChoices.options.length) {\n this._configuration.languageChoices.options = [];\n }\n\n // check if the language is already included in the languageChoices.options array\n // and if not, then add it.\n if (!this._configuration.languageChoices.options.find(option => option.value === this._model.language)) {\n this._configuration.languageChoices.options.push({\n value: this._model.language,\n label: this._model.language,\n });\n }\n } else {\n delete this._model.language;\n }\n\n this._render();\n }\n\n set disableSidePanel(s) {\n this._disableSidePanel = s;\n this._render();\n }\n\n dispatchModelUpdated(reset) {\n const resetValue = !!reset;\n\n this.dispatchEvent(new ModelUpdatedEvent(this._model, resetValue));\n }\n\n onModelChanged(m, reset) {\n this._model = MathTemplateConfigure.prepareModel(m);\n this._render();\n this.dispatchModelUpdated(reset);\n }\n\n onConfigurationChanged(c) {\n this._configuration = c;\n this._render();\n }\n\n /** @param {done, progress, file} handler */\n insertImage(handler) {\n this.dispatchEvent(new InsertImageEvent(handler));\n }\n\n onDeleteImage(src, done) {\n this.dispatchEvent(new DeleteImageEvent(src, done));\n }\n\n insertSound(handler) {\n this.dispatchEvent(new InsertSoundEvent(handler));\n }\n\n onDeleteSound(src, done) {\n this.dispatchEvent(new DeleteSoundEvent(src, done));\n }\n\n _render() {\n log('_render');\n\n let element = React.createElement(Main, {\n model: this._model,\n configuration: this._configuration,\n onModelChanged: this.onModelChanged,\n onConfigurationChanged: this.onConfigurationChanged,\n disableSidePanel: this._disableSidePanel,\n imageSupport: {\n add: this.insertImage.bind(this),\n delete: this.onDeleteImage.bind(this),\n },\n uploadSoundSupport: {\n add: this.insertSound.bind(this),\n delete: this.onDeleteSound.bind(this),\n },\n });\n\n ReactDOM.render(element, this);\n }\n}\n"],"file":"index.js"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.removeUnwantedCharacters = exports.processMarkup = exports.createSlateMarkup = void 0;
7
+ // do not remove \t from \times, \triangle, \tan, \theta or \therefore
8
+ var tSymbols = 'imes|riangle|an|heta|herefore'; // do not remove \n from \nthroot, \nparallel, \ncong, \napprox, \neq, \ne or \nsim
9
+
10
+ var nSymbols = 'throot|parallel|cong|approx|eq|e|sim'; // match all \t and \n that are not part of math symbols that starts with \t or \n
11
+
12
+ var matchTabAndNewLine = new RegExp("(\\t(?!".concat(tSymbols, "))|(\\n(?!").concat(nSymbols, "))|(\\\\t(?!").concat(tSymbols, "))|(\\\\n(?!").concat(nSymbols, "))"), 'g');
13
+
14
+ var removeUnwantedCharacters = function removeUnwantedCharacters(markup) {
15
+ return markup.replace(matchTabAndNewLine, '').replace(/\\"/g, '"').replace(/\\\//g, '/');
16
+ };
17
+
18
+ exports.removeUnwantedCharacters = removeUnwantedCharacters;
19
+
20
+ var createElementFromHTML = function createElementFromHTML() {
21
+ var htmlString = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
22
+ var div = document.createElement('div');
23
+ div.innerHTML = htmlString.trim();
24
+ return div;
25
+ };
26
+
27
+ var processMarkup = function processMarkup(markup) {
28
+ var newMarkup = removeUnwantedCharacters(markup || '');
29
+ var slateMarkup = createElementFromHTML(newMarkup || '');
30
+ slateMarkup.querySelectorAll('[data-type="math_templated"]').forEach(function (s) {
31
+ return s.replaceWith("{{".concat(s.dataset.index, "}}"));
32
+ });
33
+ return slateMarkup.innerHTML;
34
+ };
35
+
36
+ exports.processMarkup = processMarkup;
37
+ var REGEX = /\{\{(\d+)\}\}/g;
38
+
39
+ var createSlateMarkup = function createSlateMarkup(markup) {
40
+ if (!markup) {
41
+ return '';
42
+ }
43
+
44
+ var newMarkup = removeUnwantedCharacters(markup);
45
+ return newMarkup.replace(REGEX, function (match, g) {
46
+ return "<span data-type=\"math_templated\" data-index=\"".concat(g, "\" data-value=\"R ").concat(g, "\"></span>");
47
+ });
48
+ };
49
+
50
+ exports.createSlateMarkup = createSlateMarkup;
51
+ //# sourceMappingURL=markupUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/markupUtils.js"],"names":["tSymbols","nSymbols","matchTabAndNewLine","RegExp","removeUnwantedCharacters","markup","replace","createElementFromHTML","htmlString","div","document","createElement","innerHTML","trim","processMarkup","newMarkup","slateMarkup","querySelectorAll","forEach","s","replaceWith","dataset","index","REGEX","createSlateMarkup","match","g"],"mappings":";;;;;;AAAA;AACA,IAAMA,QAAQ,GAAG,+BAAjB,C,CACA;;AACA,IAAMC,QAAQ,GAAG,sCAAjB,C,CACA;;AACA,IAAMC,kBAAkB,GAAG,IAAIC,MAAJ,kBACfH,QADe,uBACMC,QADN,yBAC6BD,QAD7B,yBACoDC,QADpD,SAEzB,GAFyB,CAA3B;;AAKO,IAAMG,wBAAwB,GAAG,SAA3BA,wBAA2B,CAACC,MAAD;AAAA,SACtCA,MAAM,CAACC,OAAP,CAAeJ,kBAAf,EAAmC,EAAnC,EAAuCI,OAAvC,CAA+C,MAA/C,EAAuD,GAAvD,EAA4DA,OAA5D,CAAoE,OAApE,EAA6E,GAA7E,CADsC;AAAA,CAAjC;;;;AAGP,IAAMC,qBAAqB,GAAG,SAAxBA,qBAAwB,GAAqB;AAAA,MAApBC,UAAoB,uEAAP,EAAO;AACjD,MAAMC,GAAG,GAAGC,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAAZ;AAEAF,EAAAA,GAAG,CAACG,SAAJ,GAAgBJ,UAAU,CAACK,IAAX,EAAhB;AAEA,SAAOJ,GAAP;AACD,CAND;;AAQO,IAAMK,aAAa,GAAG,SAAhBA,aAAgB,CAACT,MAAD,EAAY;AACvC,MAAMU,SAAS,GAAGX,wBAAwB,CAACC,MAAM,IAAI,EAAX,CAA1C;AACA,MAAMW,WAAW,GAAGT,qBAAqB,CAACQ,SAAS,IAAI,EAAd,CAAzC;AAEAC,EAAAA,WAAW,CAACC,gBAAZ,CAA6B,8BAA7B,EACGC,OADH,CACW,UAACC,CAAD;AAAA,WAAOA,CAAC,CAACC,WAAF,aAAmBD,CAAC,CAACE,OAAF,CAAUC,KAA7B,QAAP;AAAA,GADX;AAGA,SAAON,WAAW,CAACJ,SAAnB;AACD,CARM;;;AAUP,IAAMW,KAAK,GAAG,gBAAd;;AAEO,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAACnB,MAAD,EAAY;AAC3C,MAAI,CAACA,MAAL,EAAa;AACX,WAAO,EAAP;AACD;;AAED,MAAMU,SAAS,GAAGX,wBAAwB,CAACC,MAAD,CAA1C;AAEA,SAAOU,SAAS,CAACT,OAAV,CAAkBiB,KAAlB,EAAyB,UAACE,KAAD,EAAQC,CAAR,EAAc;AAC5C,qEAAuDA,CAAvD,+BAA2EA,CAA3E;AACD,GAFM,CAAP;AAGD,CAVM","sourcesContent":["// do not remove \\t from \\times, \\triangle, \\tan, \\theta or \\therefore\nconst tSymbols = 'imes|riangle|an|heta|herefore';\n// do not remove \\n from \\nthroot, \\nparallel, \\ncong, \\napprox, \\neq, \\ne or \\nsim\nconst nSymbols = 'throot|parallel|cong|approx|eq|e|sim';\n// match all \\t and \\n that are not part of math symbols that starts with \\t or \\n\nconst matchTabAndNewLine = new RegExp(\n `(\\\\t(?!${tSymbols}))|(\\\\n(?!${nSymbols}))|(\\\\\\\\t(?!${tSymbols}))|(\\\\\\\\n(?!${nSymbols}))`,\n 'g'\n);\n\nexport const removeUnwantedCharacters = (markup) =>\n markup.replace(matchTabAndNewLine, '').replace(/\\\\\"/g, '\"').replace(/\\\\\\//g, '/');\n\nconst createElementFromHTML = (htmlString = '') => {\n const div = document.createElement('div');\n\n div.innerHTML = htmlString.trim();\n\n return div;\n};\n\nexport const processMarkup = (markup) => {\n const newMarkup = removeUnwantedCharacters(markup || '');\n const slateMarkup = createElementFromHTML(newMarkup || '');\n\n slateMarkup.querySelectorAll('[data-type=\"math_templated\"]')\n .forEach((s) => s.replaceWith(`{{${s.dataset.index}}}`));\n\n return slateMarkup.innerHTML;\n};\n\nconst REGEX = /\\{\\{(\\d+)\\}\\}/g;\n\nexport const createSlateMarkup = (markup) => {\n if (!markup) {\n return '';\n }\n\n const newMarkup = removeUnwantedCharacters(markup);\n\n return newMarkup.replace(REGEX, (match, g) => {\n return `<span data-type=\"math_templated\" data-index=\"${g}\" data-value=\"R ${g}\"></span>`;\n });\n};\n"],"file":"markupUtils.js"}