@pie-element/extended-text-entry 10.0.4-next.69 → 10.1.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/main.jsx"],"names":["log","style","theme","main","backgroundColor","color","background","text","prompt","width","marginBottom","spacing","unit","fontSize","teacherInstructions","editor","borderRadius","srOnly","position","left","top","height","overflow","Main","props","onChange","model","classes","session","dimensions","disabled","feedback","mathInput","spanishInput","specialInput","animationsDisabled","playersToolbarPosition","spellCheckEnabled","value","maxHeight","toolbarOpts","teacherInstructionsDiv","languageCharactersProps","push","language","ref","containerRef","hidden","visible","collapsible","changeSession","toString","math","customKeys","keypadMode","equationEditor","controlledKeypadMode","video","audio","React","Component","PropTypes","func","isRequired","object","shape","string"],"mappings":"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","sourcesContent":["import React from 'react';\nimport EditableHTML from '@pie-lib/pie-toolbox/editable-html';\nimport PropTypes from 'prop-types';\nimport Typography from '@material-ui/core/Typography';\nimport { withStyles } from '@material-ui/core/styles';\nimport debug from 'debug';\nimport debounce from 'lodash/debounce';\nimport { color, Feedback, Collapsible, PreviewPrompt } from '@pie-lib/pie-toolbox/render-ui';\nimport classnames from 'classnames';\n\nconst log = debug('@pie-ui:extended-text-entry');\n\nconst style = (theme) => ({\n main: {\n backgroundColor: color.background(),\n color: color.text(),\n },\n prompt: {\n width: '100%',\n color: color.text(),\n marginBottom: theme.spacing.unit * 2,\n fontSize: 'inherit',\n },\n teacherInstructions: {\n marginBottom: theme.spacing.unit * 2,\n },\n editor: {\n marginBottom: theme.spacing.unit * 2,\n borderRadius: '4px',\n },\n srOnly: {\n position: 'absolute',\n left: '-10000px',\n top: 'auto',\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n },\n});\n\nexport class Main extends React.Component {\n static propTypes = {\n onChange: PropTypes.func.isRequired,\n model: PropTypes.object,\n classes: PropTypes.object.isRequired,\n session: PropTypes.shape({\n value: PropTypes.string,\n }).isRequired,\n };\n\n changeSession = debounce(this.props.onChange, 1500);\n\n render() {\n const { model, classes, session } = this.props;\n\n const {\n dimensions,\n disabled,\n feedback,\n teacherInstructions,\n mathInput,\n spanishInput,\n specialInput,\n animationsDisabled,\n playersToolbarPosition,\n spellCheckEnabled,\n } = model;\n const { value } = session;\n const { width, height } = dimensions || {};\n const maxHeight = '40vh';\n const toolbarOpts = { position: playersToolbarPosition === 'top' ? 'top' : 'bottom' };\n\n log('[render] disabled? ', disabled);\n\n const teacherInstructionsDiv = (\n <PreviewPrompt defaultClassName=\"teacher-instructions\" prompt={teacherInstructions} />\n );\n\n const languageCharactersProps = [];\n\n if (spanishInput) {\n languageCharactersProps.push({ language: 'spanish' });\n }\n\n if (specialInput) {\n languageCharactersProps.push({ language: 'special' });\n }\n\n return (\n <div\n className={classes.main}\n ref={(ref) => {\n this.containerRef = ref;\n }}\n >\n <h2 className={classes.srOnly}>Constructed Response Question</h2>\n\n {teacherInstructions && (\n <div className={classes.teacherInstructions}>\n {!animationsDisabled ? (\n <Collapsible\n labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}\n className={classes.collapsible}\n >\n {teacherInstructionsDiv}\n </Collapsible>\n ) : (\n teacherInstructionsDiv\n )}\n </div>\n )}\n\n {model.prompt && (\n <Typography component={'span'} className={classes.prompt}>\n <PreviewPrompt defaultClassName=\"prompt\" prompt={model.prompt} />\n </Typography>\n )}\n\n <EditableHTML\n className={classnames(classes.editor, 'response-area-editor')}\n onChange={this.changeSession}\n markup={value || ''}\n width={width && width.toString()}\n minHeight={height && height.toString()}\n maxHeight={maxHeight}\n disabled={disabled}\n highlightShape={true}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n pluginProps={{\n math: {\n disabled: !mathInput,\n customKeys: this.props.model.customKeys,\n keypadMode: this.props.model.equationEditor,\n controlledKeypadMode: false,\n },\n video: {\n disabled: true,\n },\n audio: {\n disabled: true,\n },\n }}\n languageCharactersProps={languageCharactersProps}\n />\n\n {feedback && <Feedback correctness=\"correct\" feedback={feedback} />}\n </div>\n );\n }\n}\n\nexport default withStyles(style)(Main);\n"],"file":"main.js"}
1
+ {"version":3,"sources":["../src/main.jsx"],"names":["log","style","theme","main","backgroundColor","color","background","text","prompt","width","marginBottom","spacing","unit","fontSize","teacherInstructions","editor","borderRadius","srOnly","position","left","top","height","overflow","Main","props","onChange","model","classes","session","dimensions","disabled","feedback","mathInput","spanishInput","specialInput","animationsDisabled","playersToolbarPosition","spellCheckEnabled","value","maxHeight","toolbarOpts","teacherInstructionsDiv","languageCharactersProps","push","language","ref","containerRef","hidden","visible","collapsible","changeSession","toString","math","customKeys","keypadMode","equationEditor","controlledKeypadMode","video","audio","React","Component","PropTypes","func","isRequired","object","shape","string"],"mappings":"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","sourcesContent":["import React from 'react';\nimport {EditableHtml} from '@pie-lib/pie-toolbox/editable-html';\nimport PropTypes from 'prop-types';\nimport Typography from '@material-ui/core/Typography';\nimport { withStyles } from '@material-ui/core/styles';\nimport debug from 'debug';\nimport debounce from 'lodash/debounce';\nimport { color, Feedback, Collapsible, PreviewPrompt } from '@pie-lib/pie-toolbox/render-ui';\nimport classnames from 'classnames';\n\nconst log = debug('@pie-ui:extended-text-entry');\n\nconst style = (theme) => ({\n main: {\n backgroundColor: color.background(),\n color: color.text(),\n },\n prompt: {\n width: '100%',\n color: color.text(),\n marginBottom: theme.spacing.unit * 2,\n fontSize: 'inherit',\n },\n teacherInstructions: {\n marginBottom: theme.spacing.unit * 2,\n },\n editor: {\n marginBottom: theme.spacing.unit * 2,\n borderRadius: '4px',\n },\n srOnly: {\n position: 'absolute',\n left: '-10000px',\n top: 'auto',\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n },\n});\n\nexport class Main extends React.Component {\n static propTypes = {\n onChange: PropTypes.func.isRequired,\n model: PropTypes.object,\n classes: PropTypes.object.isRequired,\n session: PropTypes.shape({\n value: PropTypes.string,\n }).isRequired,\n };\n\n changeSession = debounce(this.props.onChange, 1500);\n\n render() {\n const { model, classes, session } = this.props;\n\n const {\n dimensions,\n disabled,\n feedback,\n teacherInstructions,\n mathInput,\n spanishInput,\n specialInput,\n animationsDisabled,\n playersToolbarPosition,\n spellCheckEnabled,\n } = model;\n const { value } = session;\n const { width, height } = dimensions || {};\n const maxHeight = '40vh';\n const toolbarOpts = { position: playersToolbarPosition === 'top' ? 'top' : 'bottom' };\n\n log('[render] disabled? ', disabled);\n\n const teacherInstructionsDiv = (\n <PreviewPrompt defaultClassName=\"teacher-instructions\" prompt={teacherInstructions} />\n );\n\n const languageCharactersProps = [];\n\n if (spanishInput) {\n languageCharactersProps.push({ language: 'spanish' });\n }\n\n if (specialInput) {\n languageCharactersProps.push({ language: 'special' });\n }\n\n return (\n <div\n className={classes.main}\n ref={(ref) => {\n this.containerRef = ref;\n }}\n >\n <h2 className={classes.srOnly}>Constructed Response Question</h2>\n\n {teacherInstructions && (\n <div className={classes.teacherInstructions}>\n {!animationsDisabled ? (\n <Collapsible\n labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}\n className={classes.collapsible}\n >\n {teacherInstructionsDiv}\n </Collapsible>\n ) : (\n teacherInstructionsDiv\n )}\n </div>\n )}\n\n {model.prompt && (\n <Typography component={'span'} className={classes.prompt}>\n <PreviewPrompt defaultClassName=\"prompt\" prompt={model.prompt} />\n </Typography>\n )}\n\n <EditableHtml\n className={classnames(classes.editor, 'response-area-editor')}\n onChange={this.changeSession}\n markup={value || ''}\n width={width && width.toString()}\n minHeight={height && height.toString()}\n maxHeight={maxHeight}\n disabled={disabled}\n highlightShape={true}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n pluginProps={{\n math: {\n disabled: !mathInput,\n customKeys: this.props.model.customKeys,\n keypadMode: this.props.model.equationEditor,\n controlledKeypadMode: false,\n },\n video: {\n disabled: true,\n },\n audio: {\n disabled: true,\n },\n }}\n languageCharactersProps={languageCharactersProps}\n />\n\n {feedback && <Feedback correctness=\"correct\" feedback={feedback} />}\n </div>\n );\n }\n}\n\nexport default withStyles(style)(Main);\n"],"file":"main.js"}
package/lib/print.js CHANGED
@@ -119,4 +119,4 @@ var ExtendedTextEntryPrint = /*#__PURE__*/function (_HTMLElement) {
119
119
  }( /*#__PURE__*/(0, _wrapNativeSuper2["default"])(HTMLElement));
120
120
 
121
121
  exports["default"] = ExtendedTextEntryPrint;
122
- //# sourceMappingURL=print.js.map
122
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wcmludC5qcyJdLCJuYW1lcyI6WyJsb2ciLCJwcmVwYXJlUHJpbnRNb2RlbCIsIm1vZGVsIiwib3B0cyIsImluc3RyIiwicm9sZSIsInByb21wdCIsInByb21wdEVuYWJsZWQiLCJ1bmRlZmluZWQiLCJ0ZWFjaGVySW5zdHJ1Y3Rpb25zIiwidGVhY2hlckluc3RydWN0aW9uc0VuYWJsZWQiLCJzaG93VGVhY2hlckluc3RydWN0aW9ucyIsIm1vZGUiLCJkZWZhdWx0RGltZW5zaW9ucyIsImhlaWdodCIsIndpZHRoIiwiZGltZW5zaW9ucyIsImRpc2FibGVkIiwiZmVlZGJhY2siLCJhbmltYXRpb25zRGlzYWJsZWQiLCJFeHRlbmRlZFRleHRFbnRyeVByaW50IiwiX29wdGlvbnMiLCJfbW9kZWwiLCJfc2Vzc2lvbiIsIl9yZXJlbmRlciIsInByaW50TW9kZWwiLCJlbGVtZW50IiwiUmVhY3QiLCJjcmVhdGVFbGVtZW50IiwiTWFpbiIsInNlc3Npb24iLCJvbkNoYW5nZSIsIlJlYWN0RE9NIiwicmVuZGVyIiwibGVhZGluZyIsInRyYWlsaW5nIiwibyIsInMiLCJIVE1MRWxlbWVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOzs7Ozs7Ozs7O0FBRUEsSUFBTUEsR0FBRyxHQUFHLHVCQUFNLHVDQUFOLENBQVo7O0FBRUEsSUFBTUMsaUJBQWlCLEdBQUcsU0FBcEJBLGlCQUFvQixDQUFDQyxLQUFELEVBQVFDLElBQVIsRUFBaUI7QUFDekMsTUFBTUMsS0FBSyxHQUFHRCxJQUFJLENBQUNFLElBQUwsS0FBYyxZQUE1QjtBQUVBSCxFQUFBQSxLQUFLLENBQUNJLE1BQU4sR0FBZUosS0FBSyxDQUFDSyxhQUFOLEtBQXdCLEtBQXhCLEdBQWdDTCxLQUFLLENBQUNJLE1BQXRDLEdBQStDRSxTQUE5RDtBQUNBTixFQUFBQSxLQUFLLENBQUNPLG1CQUFOLEdBQ0VMLEtBQUssSUFBSUYsS0FBSyxDQUFDUSwwQkFBTixLQUFxQyxLQUE5QyxHQUFzRFIsS0FBSyxDQUFDTyxtQkFBNUQsR0FBa0ZELFNBRHBGO0FBRUFOLEVBQUFBLEtBQUssQ0FBQ1MsdUJBQU4sR0FBZ0NQLEtBQWhDO0FBQ0FGLEVBQUFBLEtBQUssQ0FBQ1UsSUFBTixHQUFhUixLQUFLLEdBQUcsVUFBSCxHQUFnQkYsS0FBSyxDQUFDVSxJQUF4QztBQUVBLE1BQU1DLGlCQUFpQixHQUFHO0FBQUVDLElBQUFBLE1BQU0sRUFBRSxHQUFWO0FBQWVDLElBQUFBLEtBQUssRUFBRTtBQUF0QixHQUExQjtBQUVBYixFQUFBQSxLQUFLLENBQUNjLFVBQU4sbUNBQ0tILGlCQURMLEdBRUtYLEtBQUssQ0FBQ2MsVUFGWDtBQUtBZCxFQUFBQSxLQUFLLENBQUNlLFFBQU4sR0FBaUIsSUFBakI7QUFDQWYsRUFBQUEsS0FBSyxDQUFDZ0IsUUFBTixHQUFpQlYsU0FBakI7QUFDQU4sRUFBQUEsS0FBSyxDQUFDaUIsa0JBQU4sR0FBMkIsSUFBM0I7QUFFQSxTQUFPakIsS0FBUDtBQUNELENBckJEOztJQXVCcUJrQixzQjs7Ozs7QUFDbkIsb0NBQWM7QUFBQTs7QUFBQTtBQUNaO0FBQ0EsVUFBS0MsUUFBTCxHQUFnQixJQUFoQjtBQUNBLFVBQUtDLE1BQUwsR0FBYyxJQUFkO0FBQ0EsVUFBS0MsUUFBTCxHQUFnQixFQUFoQjtBQUNBLFVBQUtDLFNBQUwsR0FBaUIsMEJBQ2YsWUFBTTtBQUNKLFVBQUksTUFBS0YsTUFBTCxJQUFlLE1BQUtDLFFBQXhCLEVBQWtDO0FBQ2hDLFlBQU1FLFVBQVUsR0FBR3hCLGlCQUFpQixDQUFDLE1BQUtxQixNQUFOLEVBQWMsTUFBS0QsUUFBbkIsQ0FBcEM7O0FBRUEsWUFBTUssT0FBTyxHQUNYLE1BQUtMLFFBQUwsaUJBQ0FNLGtCQUFNQyxhQUFOLENBQW9CQyxnQkFBcEIsRUFBMEI7QUFDeEIzQixVQUFBQSxLQUFLLEVBQUV1QixVQURpQjtBQUV4QkssVUFBQUEsT0FBTyxFQUFFLEVBRmU7QUFHeEJDLFVBQUFBLFFBQVEsRUFBRSxvQkFBTSxDQUFFO0FBSE0sU0FBMUIsQ0FGRjs7QUFRQUMsNkJBQVNDLE1BQVQsQ0FBZ0JQLE9BQWhCLGtEQUErQixZQUFNO0FBQ25DMUIsVUFBQUEsR0FBRyxDQUFDLCtCQUFELENBQUg7QUFDQTtBQUNELFNBSEQ7QUFJRCxPQWZELE1BZU87QUFDTEEsUUFBQUEsR0FBRyxDQUFDLE1BQUQsQ0FBSDtBQUNEO0FBQ0YsS0FwQmMsRUFxQmYsRUFyQmUsRUFzQmY7QUFBRWtDLE1BQUFBLE9BQU8sRUFBRSxLQUFYO0FBQWtCQyxNQUFBQSxRQUFRLEVBQUU7QUFBNUIsS0F0QmUsQ0FBakI7QUFMWTtBQTZCYjs7OztTQUNELGFBQVlDLENBQVosRUFBZTtBQUNiLFdBQUtmLFFBQUwsR0FBZ0JlLENBQWhCO0FBQ0Q7OztTQUVELGFBQVVDLENBQVYsRUFBYTtBQUNYLFdBQUtmLE1BQUwsR0FBY2UsQ0FBZDs7QUFDQSxXQUFLYixTQUFMO0FBQ0Q7OztXQUVELDZCQUFvQixDQUFFOzs7a0RBeEM0QmMsVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCBkZWJvdW5jZSBmcm9tICdsb2Rhc2gvZGVib3VuY2UnO1xuaW1wb3J0IE1haW4gZnJvbSAnLi9tYWluJztcbmltcG9ydCB7IHJlbmRlck1hdGggfSBmcm9tICdAcGllLWxpYi9waWUtdG9vbGJveC9tYXRoLXJlbmRlcmluZyc7XG5cbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5cbmNvbnN0IGxvZyA9IGRlYnVnKCdwaWUtZWxlbWVudDpleHRlbmRlZC10ZXh0LWVudHJ5OnByaW50Jyk7XG5cbmNvbnN0IHByZXBhcmVQcmludE1vZGVsID0gKG1vZGVsLCBvcHRzKSA9PiB7XG4gIGNvbnN0IGluc3RyID0gb3B0cy5yb2xlID09PSAnaW5zdHJ1Y3Rvcic7XG5cbiAgbW9kZWwucHJvbXB0ID0gbW9kZWwucHJvbXB0RW5hYmxlZCAhPT0gZmFsc2UgPyBtb2RlbC5wcm9tcHQgOiB1bmRlZmluZWQ7XG4gIG1vZGVsLnRlYWNoZXJJbnN0cnVjdGlvbnMgPVxuICAgIGluc3RyICYmIG1vZGVsLnRlYWNoZXJJbnN0cnVjdGlvbnNFbmFibGVkICE9PSBmYWxzZSA/IG1vZGVsLnRlYWNoZXJJbnN0cnVjdGlvbnMgOiB1bmRlZmluZWQ7XG4gIG1vZGVsLnNob3dUZWFjaGVySW5zdHJ1Y3Rpb25zID0gaW5zdHI7XG4gIG1vZGVsLm1vZGUgPSBpbnN0ciA/ICdldmFsdWF0ZScgOiBtb2RlbC5tb2RlO1xuXG4gIGNvbnN0IGRlZmF1bHREaW1lbnNpb25zID0geyBoZWlnaHQ6IDEwMCwgd2lkdGg6IDUwMCB9O1xuXG4gIG1vZGVsLmRpbWVuc2lvbnMgPSB7XG4gICAgLi4uZGVmYXVsdERpbWVuc2lvbnMsXG4gICAgLi4ubW9kZWwuZGltZW5zaW9ucyxcbiAgfTtcblxuICBtb2RlbC5kaXNhYmxlZCA9IHRydWU7XG4gIG1vZGVsLmZlZWRiYWNrID0gdW5kZWZpbmVkO1xuICBtb2RlbC5hbmltYXRpb25zRGlzYWJsZWQgPSB0cnVlO1xuXG4gIHJldHVybiBtb2RlbDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEV4dGVuZGVkVGV4dEVudHJ5UHJpbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5fb3B0aW9ucyA9IG51bGw7XG4gICAgdGhpcy5fbW9kZWwgPSBudWxsO1xuICAgIHRoaXMuX3Nlc3Npb24gPSBbXTtcbiAgICB0aGlzLl9yZXJlbmRlciA9IGRlYm91bmNlKFxuICAgICAgKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5fbW9kZWwgJiYgdGhpcy5fc2Vzc2lvbikge1xuICAgICAgICAgIGNvbnN0IHByaW50TW9kZWwgPSBwcmVwYXJlUHJpbnRNb2RlbCh0aGlzLl9tb2RlbCwgdGhpcy5fb3B0aW9ucyk7XG5cbiAgICAgICAgICBjb25zdCBlbGVtZW50ID1cbiAgICAgICAgICAgIHRoaXMuX29wdGlvbnMgJiZcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoTWFpbiwge1xuICAgICAgICAgICAgICBtb2RlbDogcHJpbnRNb2RlbCxcbiAgICAgICAgICAgICAgc2Vzc2lvbjoge30sXG4gICAgICAgICAgICAgIG9uQ2hhbmdlOiAoKSA9PiB7fSxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgUmVhY3RET00ucmVuZGVyKGVsZW1lbnQsIHRoaXMsICgpID0+IHtcbiAgICAgICAgICAgIGxvZygncmVuZGVyIGNvbXBsZXRlIC0gcmVuZGVyIG1hdGgnKTtcbiAgICAgICAgICAgIHJlbmRlck1hdGgodGhpcyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbG9nKCdza2lwJyk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICA1MCxcbiAgICAgIHsgbGVhZGluZzogZmFsc2UsIHRyYWlsaW5nOiB0cnVlIH0sXG4gICAgKTtcbiAgfVxuICBzZXQgb3B0aW9ucyhvKSB7XG4gICAgdGhpcy5fb3B0aW9ucyA9IG87XG4gIH1cblxuICBzZXQgbW9kZWwocykge1xuICAgIHRoaXMuX21vZGVsID0gcztcbiAgICB0aGlzLl9yZXJlbmRlcigpO1xuICB9XG5cbiAgY29ubmVjdGVkQ2FsbGJhY2soKSB7fVxufVxuIl19
package/module/demo.js ADDED
@@ -0,0 +1,37 @@
1
+ import Configure from './configure.js';
2
+ import Element from './element.js';
3
+ import * as controller from './controller.js';
4
+
5
+ var generate = {};
6
+
7
+ generate.model = (id, element) => ({
8
+ id,
9
+ element,
10
+ customKeys: ['\\square'],
11
+ feedback: { type: 'default', default: 'this is default feedback' },
12
+ prompt: 'This is the question prompt',
13
+ promptEnabled: true,
14
+ mathInput: true,
15
+ playersToolbarPosition: 'bottom',
16
+ toolbarEditorPosition: 'bottom',
17
+ spellCheckEnabled: true,
18
+ rubricEnabled: false,
19
+ });
20
+
21
+ const { model } = generate;
22
+ var config = {
23
+ elements: {
24
+ 'extended-text-entry': '../..',
25
+ },
26
+ models: [model('1', 'extended-text-entry')],
27
+ };
28
+
29
+ //Note: demo-el is a custom element loaded in the markup.
30
+ customElements.whenDefined("demo-el").then(() => {
31
+ config.models.forEach((m) => {
32
+ const de = document.createElement("demo-el");
33
+ document.body.appendChild(de);
34
+ de.def = { tagName: m.element, Element, Configure, controller };
35
+ de.model = m;
36
+ });
37
+ });
@@ -0,0 +1,289 @@
1
+ import {_dll_react, _dll_pie_lib__pie_toolbox_editable_html, _dll_prop_types, _dll_material_ui__core, _dll_material_ui__core_styles, _dll_debug, _dll_lodash, _dll_pie_lib__pie_toolbox_render_ui, _dll_classnames, _dll_react_dom, _dll_pie_lib__pie_toolbox_math_rendering} from "../../../@pie-lib/pie-toolbox-module@1.3.3/module/index.js";
2
+ const React$1 = _dll_react;
3
+ const {EditableHtml: EditableHtml} = _dll_pie_lib__pie_toolbox_editable_html;
4
+ const PropTypes = _dll_prop_types;
5
+ const {Typography: Typography} = _dll_material_ui__core;
6
+ const {withStyles: withStyles} = _dll_material_ui__core_styles;
7
+ const debug$1 = _dll_debug;
8
+ const {debounce: debounce} = _dll_lodash;
9
+ const {color: color} = _dll_pie_lib__pie_toolbox_render_ui;
10
+ const {Feedback: Feedback} = _dll_pie_lib__pie_toolbox_render_ui;
11
+ const {Collapsible: Collapsible} = _dll_pie_lib__pie_toolbox_render_ui;
12
+ const {PreviewPrompt: PreviewPrompt} = _dll_pie_lib__pie_toolbox_render_ui;
13
+ const classnames = _dll_classnames;
14
+ const _jsxFileName = "/Users/andreeapescar/WORK/pie/pie-elements/packages/extended-text-entry/src/main.jsx";
15
+ const log$1 = debug$1('@pie-ui:extended-text-entry');
16
+ const style = theme => ({
17
+ main: {
18
+ backgroundColor: color.background(),
19
+ color: color.text()
20
+ },
21
+ prompt: {
22
+ width: '100%',
23
+ color: color.text(),
24
+ marginBottom: theme.spacing.unit * 2,
25
+ fontSize: 'inherit'
26
+ },
27
+ teacherInstructions: {
28
+ marginBottom: theme.spacing.unit * 2
29
+ },
30
+ editor: {
31
+ marginBottom: theme.spacing.unit * 2,
32
+ borderRadius: '4px'
33
+ },
34
+ srOnly: {
35
+ position: 'absolute',
36
+ left: '-10000px',
37
+ top: 'auto',
38
+ width: '1px',
39
+ height: '1px',
40
+ overflow: 'hidden'
41
+ }
42
+ });
43
+ class Main extends React$1.Component {
44
+ constructor(...args) {
45
+ super(...args);
46
+ Main.prototype.__init.call(this);
47
+ }
48
+ static __initStatic() {
49
+ this.propTypes = {
50
+ onChange: PropTypes.func.isRequired,
51
+ model: PropTypes.object,
52
+ classes: PropTypes.object.isRequired,
53
+ session: PropTypes.shape({
54
+ value: PropTypes.string
55
+ }).isRequired
56
+ };
57
+ }
58
+ __init() {
59
+ this.changeSession = debounce(this.props.onChange, 1500);
60
+ }
61
+ render() {
62
+ const {model, classes, session} = this.props;
63
+ const {dimensions, disabled, feedback, teacherInstructions, mathInput, spanishInput, specialInput, animationsDisabled, playersToolbarPosition, spellCheckEnabled} = model;
64
+ const {value} = session;
65
+ const {width, height} = dimensions || ({});
66
+ const maxHeight = '40vh';
67
+ const toolbarOpts = {
68
+ position: playersToolbarPosition === 'top' ? 'top' : 'bottom'
69
+ };
70
+ log$1('[render] disabled? ', disabled);
71
+ const teacherInstructionsDiv = React$1.createElement(PreviewPrompt, {
72
+ defaultClassName: "teacher-instructions",
73
+ prompt: teacherInstructions,
74
+ __self: this,
75
+ __source: {
76
+ fileName: _jsxFileName,
77
+ lineNumber: 76
78
+ }
79
+ });
80
+ const languageCharactersProps = [];
81
+ if (spanishInput) {
82
+ languageCharactersProps.push({
83
+ language: 'spanish'
84
+ });
85
+ }
86
+ if (specialInput) {
87
+ languageCharactersProps.push({
88
+ language: 'special'
89
+ });
90
+ }
91
+ return React$1.createElement('div', {
92
+ className: classes.main,
93
+ ref: ref => {
94
+ this.containerRef = ref;
95
+ },
96
+ __self: this,
97
+ __source: {
98
+ fileName: _jsxFileName,
99
+ lineNumber: 90
100
+ }
101
+ }, React$1.createElement('h2', {
102
+ className: classes.srOnly,
103
+ __self: this,
104
+ __source: {
105
+ fileName: _jsxFileName,
106
+ lineNumber: 96
107
+ }
108
+ }, "Constructed Response Question"), teacherInstructions && React$1.createElement('div', {
109
+ className: classes.teacherInstructions,
110
+ __self: this,
111
+ __source: {
112
+ fileName: _jsxFileName,
113
+ lineNumber: 99
114
+ }
115
+ }, !animationsDisabled ? React$1.createElement(Collapsible, {
116
+ labels: {
117
+ hidden: 'Show Teacher Instructions',
118
+ visible: 'Hide Teacher Instructions'
119
+ },
120
+ className: classes.collapsible,
121
+ __self: this,
122
+ __source: {
123
+ fileName: _jsxFileName,
124
+ lineNumber: 101
125
+ }
126
+ }, teacherInstructionsDiv) : teacherInstructionsDiv), model.prompt && React$1.createElement(Typography, {
127
+ component: 'span',
128
+ className: classes.prompt,
129
+ __self: this,
130
+ __source: {
131
+ fileName: _jsxFileName,
132
+ lineNumber: 114
133
+ }
134
+ }, React$1.createElement(PreviewPrompt, {
135
+ defaultClassName: "prompt",
136
+ prompt: model.prompt,
137
+ __self: this,
138
+ __source: {
139
+ fileName: _jsxFileName,
140
+ lineNumber: 115
141
+ }
142
+ })), React$1.createElement(EditableHtml, {
143
+ className: classnames(classes.editor, 'response-area-editor'),
144
+ onChange: this.changeSession,
145
+ markup: value || '',
146
+ width: width && width.toString(),
147
+ minHeight: height && height.toString(),
148
+ maxHeight: maxHeight,
149
+ disabled: disabled,
150
+ highlightShape: true,
151
+ toolbarOpts: toolbarOpts,
152
+ spellCheck: spellCheckEnabled,
153
+ pluginProps: {
154
+ math: {
155
+ disabled: !mathInput,
156
+ customKeys: this.props.model.customKeys,
157
+ keypadMode: this.props.model.equationEditor,
158
+ controlledKeypadMode: false
159
+ },
160
+ video: {
161
+ disabled: true
162
+ },
163
+ audio: {
164
+ disabled: true
165
+ }
166
+ },
167
+ languageCharactersProps: languageCharactersProps,
168
+ __self: this,
169
+ __source: {
170
+ fileName: _jsxFileName,
171
+ lineNumber: 119
172
+ }
173
+ }), feedback && React$1.createElement(Feedback, {
174
+ correctness: "correct",
175
+ feedback: feedback,
176
+ __self: this,
177
+ __source: {
178
+ fileName: _jsxFileName,
179
+ lineNumber: 147
180
+ }
181
+ }));
182
+ }
183
+ }
184
+ Main.__initStatic();
185
+ var Main$1 = withStyles(style)(Main);
186
+ var lib = {};
187
+ Object.defineProperty(lib, "__esModule", {
188
+ value: true
189
+ });
190
+ class ModelSetEvent extends CustomEvent {
191
+ constructor(component, complete, hasModel) {
192
+ super(ModelSetEvent.TYPE, {
193
+ bubbles: true,
194
+ composed: true,
195
+ detail: {
196
+ complete,
197
+ component,
198
+ hasModel
199
+ }
200
+ });
201
+ this.component = component;
202
+ this.complete = complete;
203
+ }
204
+ }
205
+ ModelSetEvent.TYPE = 'model-set';
206
+ var ModelSetEvent_1 = lib.ModelSetEvent = ModelSetEvent;
207
+ class SessionChangedEvent extends CustomEvent {
208
+ constructor(component, complete) {
209
+ super(SessionChangedEvent.TYPE, {
210
+ bubbles: true,
211
+ composed: true,
212
+ detail: {
213
+ complete,
214
+ component
215
+ }
216
+ });
217
+ this.component = component;
218
+ this.complete = complete;
219
+ }
220
+ }
221
+ SessionChangedEvent.TYPE = 'session-changed';
222
+ var SessionChangedEvent_1 = lib.SessionChangedEvent = SessionChangedEvent;
223
+ const React = _dll_react;
224
+ const ReactDOM = _dll_react_dom;
225
+ const {renderMath: renderMath} = _dll_pie_lib__pie_toolbox_math_rendering;
226
+ const debug = _dll_debug;
227
+ const log = debug('@pie-ui:extended-text-entry');
228
+ const domParser = typeof window !== undefined ? new DOMParser() : {
229
+ parseFromString: v => v
230
+ };
231
+ function textContent(value) {
232
+ if (typeof value !== 'string') {
233
+ return undefined;
234
+ }
235
+ try {
236
+ const document = domParser.parseFromString(value, 'text/html');
237
+ const textContent = document.body.textContent;
238
+ return textContent;
239
+ } catch (err) {
240
+ log('tried to parse as dom and failed', value);
241
+ return value;
242
+ }
243
+ }
244
+ function isComplete(value) {
245
+ const tc = textContent(value);
246
+ const out = tc !== undefined && tc.length > 0;
247
+ return out;
248
+ }
249
+ class RootExtendedTextEntry extends HTMLElement {
250
+ constructor() {
251
+ super();
252
+ this._model = null;
253
+ this._session = null;
254
+ }
255
+ set model(m) {
256
+ this._model = m;
257
+ this.dispatchEvent(new ModelSetEvent_1(this.tagName.toLowerCase(), false, !!this._model));
258
+ this.render();
259
+ }
260
+ set session(s) {
261
+ this._session = s;
262
+ this.render();
263
+ }
264
+ get session() {
265
+ return this._session;
266
+ }
267
+ handleChange(value) {
268
+ this._session.value = value;
269
+ this.dispatchEvent(new SessionChangedEvent_1(this.tagName.toLowerCase(), isComplete(value)));
270
+ }
271
+ connectedCallback() {
272
+ this.setAttribute('aria-label', 'Written Response Question');
273
+ this.setAttribute('role', 'region');
274
+ this.render();
275
+ }
276
+ render() {
277
+ if (this._model && this._session) {
278
+ let elem = React.createElement(Main$1, {
279
+ model: this._model,
280
+ session: this._session,
281
+ onChange: this.handleChange.bind(this)
282
+ });
283
+ ReactDOM.render(elem, this, () => {
284
+ renderMath(this);
285
+ });
286
+ }
287
+ }
288
+ }
289
+ export {RootExtendedTextEntry as default, isComplete, textContent};
@@ -0,0 +1,21 @@
1
+
2
+ <!doctype html>
3
+ <html>
4
+ <head>
5
+ <title>@pie-element/extended-text-entry@10.1.0</title>
6
+ <script
7
+ type="module"
8
+ src="https://cdn.jsdelivr.net/npm/@pslb/demo-el@^1.0.0/dist/demo-el/demo-el.esm.js"></script>
9
+
10
+ <link
11
+ href="https://fonts.googleapis.com/css?family=Roboto&display=swap"
12
+ rel="stylesheet"
13
+ />
14
+ <style>
15
+ html, body {
16
+ font-family: 'Roboto', sans-serif;
17
+ }
18
+ </style>
19
+ <script type="module" src="./demo.js"></script>
20
+ </head>
21
+ </html>
@@ -0,0 +1,10 @@
1
+ {
2
+ "name": "@pie-element/extended-text-entry",
3
+ "version": "10.1.0",
4
+ "modules": [
5
+ {
6
+ "name": "@pie-lib/pie-toolbox-module",
7
+ "version": "1.3.3"
8
+ }
9
+ ]
10
+ }
@@ -0,0 +1,75 @@
1
+ import PrintElement from './print.js';
2
+
3
+ var generate = {};
4
+
5
+ generate.model = (id, element) => ({
6
+ id,
7
+ element,
8
+ customKeys: ['\\square'],
9
+ feedback: { type: 'default', default: 'this is default feedback' },
10
+ prompt: 'This is the question prompt',
11
+ promptEnabled: true,
12
+ mathInput: true,
13
+ playersToolbarPosition: 'bottom',
14
+ toolbarEditorPosition: 'bottom',
15
+ spellCheckEnabled: true,
16
+ rubricEnabled: false,
17
+ });
18
+
19
+ const { model } = generate;
20
+ var config = {
21
+ elements: {
22
+ 'extended-text-entry': '../..',
23
+ },
24
+ models: [model('1', 'extended-text-entry')],
25
+ };
26
+
27
+ // new init - just shows off print!
28
+
29
+ const init = async () => {
30
+ console.log('define the element...');
31
+ await Promise.all(
32
+ config.models.map(async (m) => {
33
+ try {
34
+ const printTag = `${m.element}-print`;
35
+ if (customElements.get(printTag)) {
36
+ return true;
37
+ } else {
38
+ customElements.define(printTag, PrintElement);
39
+ await customElements.whenDefined(printTag);
40
+ return true;
41
+ }
42
+ } catch (e) {
43
+ return false;
44
+ }
45
+ })
46
+ );
47
+
48
+ console.log('now apply the model...');
49
+ config.models.forEach((m) => {
50
+ const printTag = `${m.element}-print`;
51
+ const h3s = document.createElement('h3');
52
+ h3s.textContent = 'student mode';
53
+ document.body.appendChild(h3s);
54
+ const de = document.createElement(printTag);
55
+ document.body.appendChild(de);
56
+ de.options = {};
57
+ de.model = m;
58
+
59
+ const h3 = document.createElement('h3');
60
+ h3.textContent = 'instructor mode';
61
+ document.body.appendChild(h3);
62
+ const instr = document.createElement(printTag);
63
+ document.body.appendChild(instr);
64
+ instr.options = { mode: 'instructor' };
65
+ instr.model = JSON.parse(JSON.stringify(m));
66
+ });
67
+ };
68
+
69
+ init()
70
+ .then(() => {
71
+ console.log('ready');
72
+ })
73
+ .catch((e) => {
74
+ console.error(e);
75
+ });
@@ -0,0 +1,18 @@
1
+
2
+ <!doctype html>
3
+ <html>
4
+ <head>
5
+ <title>@pie-element/extended-text-entry@10.1.0</title>
6
+ <link
7
+ href="https://fonts.googleapis.com/css?family=Roboto&display=swap"
8
+ rel="stylesheet"
9
+ />
10
+ <style>
11
+ html, body {
12
+ font-family: 'Roboto', sans-serif;
13
+ }
14
+ </style>
15
+ <script type="module" src="./print-demo.js"></script>
16
+ </head>
17
+ <body></body>
18
+ </html>