@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.
- package/CHANGELOG.json +1 -0
- package/CHANGELOG.md +528 -0
- package/LICENSE.md +5 -0
- package/README.md +0 -0
- package/configure/CHANGELOG.json +1 -0
- package/configure/CHANGELOG.md +486 -0
- package/configure/lib/defaults.js +158 -0
- package/configure/lib/defaults.js.map +1 -0
- package/configure/lib/design.js +597 -0
- package/configure/lib/design.js.map +1 -0
- package/configure/lib/index.js +227 -0
- package/configure/lib/index.js.map +1 -0
- package/configure/lib/markupUtils.js +51 -0
- package/configure/lib/markupUtils.js.map +1 -0
- package/configure/lib/response.js +442 -0
- package/configure/lib/response.js.map +1 -0
- package/configure/package.json +20 -0
- package/controller/CHANGELOG.json +1 -0
- package/controller/CHANGELOG.md +391 -0
- package/controller/lib/defaults.js +21 -0
- package/controller/lib/defaults.js.map +1 -0
- package/controller/lib/index.js +302 -0
- package/controller/lib/index.js.map +1 -0
- package/controller/package.json +19 -0
- package/docs/config-schema.json +104 -0
- package/docs/config-schema.json.md +85 -0
- package/docs/demo/config.js +8 -0
- package/docs/demo/generate.js +42 -0
- package/docs/demo/index.html +1 -0
- package/docs/demo/session.js +14 -0
- package/docs/pie-schema.json +51 -0
- package/docs/pie-schema.json.md +37 -0
- package/lib/index.js +121 -0
- package/lib/index.js.map +1 -0
- package/lib/main.js +843 -0
- package/lib/main.js.map +1 -0
- package/lib/print.js +130 -0
- package/lib/print.js.map +1 -0
- package/module/configure.js +106458 -0
- package/module/controller.js +23132 -0
- package/module/demo.js +67 -0
- package/module/element.js +127550 -0
- package/module/index.html +21 -0
- package/module/manifest.json +14 -0
- package/module/print-demo.js +105 -0
- package/module/print.html +18 -0
- package/module/print.js +127498 -0
- package/package.json +29 -0
package/lib/main.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/main.jsx"],"names":["registered","REGEX","DEFAULT_KEYPAD_VARIANT","IS_SAFARI","test","navigator","userAgent","generateAdditionalKeys","keyData","map","key","name","latex","write","label","getKeyPadWidth","additionalKeys","equationEditor","Math","floor","length","splitByParts","text","parts","split","filter","part","prepareForStatic","model","state","responses","disabled","markup","printMode","alwaysShowCorrect","showCorrect","Object","keys","reduce","acc","responseKey","answer","splitted","match","Main","getResponseKey","session","answers","blankSpace","repeat","value","props","classes","root","forEach","answerId","el","querySelector","indexEl","MQ","MathQuill","getInterface","textContent","view","parentElement","classList","remove","correct","incorrect","StaticMath","id","setState","activeAnswerBlock","data","type","input","c","toNodeData","clear","Array","isArray","vv","cmd","keystroke","focus","onSessionChange","show","handleAnswerBlockDomUpdate","subfieldValue","callOnSessionChange","changeField","fields","find","k","tf","e","relatedTarget","currentTarget","getParentWithRoleTooltip","element","depth","parent","offsetParent","getAttribute","getDeepChildDataKeypad","child","children","attributes","parentWithTooltipRole","childWithDataKeypad","teacherInstructions","animationsDisabled","teacherInstructionsDiv","collapsible","hidden","visible","rationale","rationaleDiv","correctness","customKeys","feedback","env","mode","emptyResponse","statics","studentPrintMode","inputAndKeypadContainer","responseIsCorrect","MQStatic","mqStatic","subFieldChanged","getFieldName","setInput","onSubFieldFocus","onBlur","expression","showCorrectness","correctAnswerShown","ref","setTooltipRef","tooltip","keypadTooltip","popper","keypadTooltipPopper","responseContainer","width","onClick","printContainer","sessionAnswers","replace","response","sessionAnswerForResponse","window","registerEmbed","htmlString","blockContainer","blockResponse","blockMath","nextProps","nextMarkup","matches","nextMatches","newAnswers","nextMatch","nextState","sameModel","sameState","setTimeout","div","document","firstChild","setAttribute","prompt","role","language","showNote","note","showCorrectAnswerToggle","displayNote","mainContainer","r","main","srOnly","toggle","toggleShowCorrect","renderTeacherInstructions","promptContainer","renderPlayerContent","__html","renderRationale","React","Component","replaceAll","PropTypes","object","isRequired","func","styles","theme","color","backgroundColor","background","display","primaryLight","padding","spacing","unit","border","secondary","fontSize","tooltipPopper","opacity","marginTop","paddingTop","marginBottom","position","title","zIndex","minWidth","maxWidth","margin","top","borderColor","alignItems","flexWrap","lineHeight","left","right","borderTop","letterSpacing","flex","palette","grey","justifyContent","borderRight","pointerEvents","height","overflow"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport isEqual from 'lodash/isEqual';\nimport isEmpty from 'lodash/isEmpty';\nimport { withStyles } from '@material-ui/core/styles';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport { mq, HorizontalKeypad, updateSpans } from '@pie-lib/pie-toolbox/math-input';\nimport { Collapsible, Readable, hasText, PreviewPrompt } from '@pie-lib/pie-toolbox/render-ui';\nimport { renderMath } from '@pie-lib/pie-toolbox/math-rendering-accessible';\nimport MathQuill from '@pie-framework/mathquill';\nimport { color } from '@pie-lib/pie-toolbox/render-ui';\nimport { Customizable } from '@pie-lib/pie-toolbox/mask-markup';\nimport { CorrectAnswerToggle } from '@pie-lib/pie-toolbox/correct-answer-toggle';\n\nlet registered = false;\n\n// Define a regex pattern to match {{number}}\nconst REGEX = /(\\{\\{\\d+\\}\\})/gm;\nconst DEFAULT_KEYPAD_VARIANT = 6;\n\n// !!! If you're using Chrome but have selected the \"iPad\" device in Chrome Developer Tools, the navigator.userAgent string may still report as\n// Safari because Chrome on iOS actually uses the Safari rendering engine under the hood due to Apple's restrictions on third-party browser engines.\n// When you select the \"iPad\" device in Chrome Developer Tools, you're essentially emulating the behavior of Safari on an iPad, including the user agent string.\n// Therefore, even though you're using Chrome, the user agent string will resemble that of Safari on an iPad.\n// Since the regular expression /^((?!chrome|android).)*safari/i checks for the presence of \"safari\" in the user agent string while excluding \"chrome\" and \"android\",\n// it will return true in this case because \"safari\" is present in the user agent string emulated by Chrome when in iPad mode.\nconst IS_SAFARI = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n\nfunction generateAdditionalKeys(keyData = []) {\n return keyData.map((key) => ({\n name: key,\n latex: key,\n write: key,\n label: key,\n }));\n}\n\nfunction getKeyPadWidth(additionalKeys = [], equationEditor) {\n return Math.floor(additionalKeys.length / 5) * 30 + (equationEditor === 'miscellaneous' ? 600 : 500);\n}\n\nfunction splitByParts(text) {\n // Use the regex pattern to split the text\n const parts = text.split(REGEX);\n // Filter out empty strings that might result from splitting\n return parts.filter(part => part);\n}\n\nfunction prepareForStatic(model, state) {\n const { responses, disabled, markup, printMode, alwaysShowCorrect } = model || {};\n\n if (markup) {\n if (state.showCorrect) {\n return Object.keys(responses || {}).reduce((acc, responseKey) => {\n acc[responseKey] = responses?.[responseKey]?.answer;\n\n return acc;\n }, {});\n }\n\n const splitted = splitByParts(markup);\n\n\n return splitted.reduce((acc, split) => {\n if (split.match(REGEX)) {\n const responseKey = Main.getResponseKey(split);\n const answer = state.session.answers[`r${responseKey}`];\n\n if (printMode && !alwaysShowCorrect) {\n const blankSpace = '\\\\ \\\\ '.repeat(30) + '\\\\embed{newLine}[] ';\n\n return {\n ...acc,\n [responseKey]: `\\\\MathQuillMathField[r${responseKey}]{${blankSpace.repeat(3)}}`\n };\n }\n\n if (disabled) {\n return {\n ...acc,\n [responseKey]: `\\\\embed{answerBlock}[r${responseKey}]`\n };\n }\n\n return {\n ...acc,\n [responseKey]: `\\\\MathQuillMathField[r${responseKey}]{${(answer && answer.value) || ''}}`\n };\n\n }\n\n return acc;\n }, {});\n }\n}\n\nexport class Main extends React.Component {\n // removes {{ and }} and returns only key response. Eg: {{0}} => 0\n static getResponseKey = response => (response || '').replaceAll('{{', '').replaceAll('}}', '');\n\n static propTypes = {\n classes: PropTypes.object,\n session: PropTypes.object.isRequired,\n onSessionChange: PropTypes.func,\n model: PropTypes.object.isRequired,\n };\n\n constructor(props) {\n super(props);\n\n const answers = {};\n const { model, session } = props || {};\n const { markup, alwaysShowCorrect } = model || {};\n const { answers: sessionAnswers } = session || {};\n\n if (markup) {\n // build out local state model using responses declared in markup\n (markup || '').replace(REGEX, (response) => {\n const responseKey = Main.getResponseKey(response);\n const sessionAnswerForResponse = sessionAnswers && sessionAnswers[`r${responseKey}`];\n\n answers[`r${responseKey}`] = { value: (sessionAnswerForResponse?.value) || '' };\n });\n }\n\n this.state = {\n session: { ...props.session, answers },\n activeAnswerBlock: '',\n showCorrect: alwaysShowCorrect || false,\n };\n }\n\n UNSAFE_componentWillMount() {\n const { classes } = this.props;\n\n if (typeof window !== 'undefined') {\n let MQ = MathQuill.getInterface(2);\n\n if (!registered) {\n MQ.registerEmbed('answerBlock', (data) => ({\n htmlString: `<div class=\"${classes.blockContainer}\">\n <div class=\"${classes.blockResponse}\" id=\"${data}Index\">R</div>\n <div class=\"${classes.blockMath}\">\n <span id=\"${data}\"></span>\n </div>\n </div>`,\n text: () => 'text',\n latex: () => `\\\\embed{answerBlock}[${data}]`,\n }));\n\n registered = true;\n }\n }\n }\n\n handleAnswerBlockDomUpdate = () => {\n const { model, classes } = this.props;\n const { session, showCorrect } = this.state;\n const answers = session.answers;\n\n if (this.root && model.disabled && !showCorrect) {\n Object.keys(answers).forEach((answerId) => {\n const el = this.root.querySelector(`#${answerId}`);\n const indexEl = this.root.querySelector(`#${answerId}Index`);\n\n if (el) {\n let MQ = MathQuill.getInterface(2);\n const answer = answers[answerId];\n\n el.textContent = (answer && answer.value) || '';\n\n if (model.view) {\n el.parentElement.parentElement.classList.remove(classes.correct);\n el.parentElement.parentElement.classList.remove(classes.incorrect);\n }\n\n MQ.StaticMath(el);\n\n indexEl.textContent = 'R';\n }\n });\n }\n\n renderMath(this.root);\n };\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { markup } = this.props.model;\n const { markup: nextMarkup } = nextProps.model || {};\n\n const matches = markup.match(REGEX);\n const nextMatches = nextMarkup.match(REGEX);\n\n // If markup changed, and we no longer have the same response area, the session needs to be updated\n if (!isEqual(matches, nextMatches)) {\n const newAnswers = {};\n const answers = this.state.session.answers;\n\n (nextMatches || []).forEach(nextMatch => {\n const responseKey = Main.getResponseKey(nextMatch);\n const sessionAnswerForResponse = answers && answers[`r${responseKey}`];\n\n // build out local state model using responses declared in markup\n newAnswers[`r${responseKey}`] = { value: (sessionAnswerForResponse?.value) || '' };\n\n });\n\n this.setState(\n (state) => ({\n session: {\n ...state.session,\n answers: newAnswers,\n },\n }),\n () => {\n this.props.onSessionChange(this.state.session);\n this.handleAnswerBlockDomUpdate();\n },\n );\n }\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n const sameModel = isEqual(this.props.model, nextProps.model);\n const sameState = isEqual(this.state, nextState);\n\n return !sameModel || !sameState;\n }\n\n componentDidMount() {\n this.handleAnswerBlockDomUpdate();\n setTimeout(() => renderMath(this.root), 100);\n }\n\n componentDidUpdate() {\n this.handleAnswerBlockDomUpdate();\n }\n\n onSubFieldFocus = (id) => {\n this.setState({ activeAnswerBlock: id });\n };\n\n toNodeData = (data) => {\n if (!data) {\n return;\n }\n\n const { type, value } = data;\n\n if (type === 'command' || type === 'cursor') return data;\n\n if (type === 'answer') return { type: 'answer', ...data };\n\n if (value === 'clear') return { type: 'clear' };\n\n return { type: 'write', value };\n };\n\n setInput = (input) => {\n this.input = input;\n };\n\n onClick = (data) => {\n const c = this.toNodeData(data);\n\n if (c.type === 'clear') {\n this.input.clear();\n } else if (c.type === 'command') {\n if (Array.isArray(c.value)) {\n c.value.forEach((vv) => {\n this.input.cmd(vv);\n });\n } else {\n this.input.cmd(c.value);\n }\n } else if (c.type === 'cursor') {\n this.input.keystroke(c.value);\n } else {\n this.input.write(c.value);\n }\n\n this.input.focus();\n };\n\n callOnSessionChange = () => {\n const { onSessionChange } = this.props;\n\n if (onSessionChange) {\n onSessionChange(this.state.session);\n }\n };\n\n toggleShowCorrect = (show) => {\n this.setState({ showCorrect: show }, this.handleAnswerBlockDomUpdate);\n };\n\n subFieldChanged = (name, subfieldValue) => {\n updateSpans();\n\n if (name) {\n this.setState(\n (state) => ({\n session: {\n ...state.session,\n answers: {\n ...state.session.answers,\n [name]: { value: subfieldValue },\n },\n },\n }),\n this.callOnSessionChange,\n );\n }\n };\n\n getFieldName = (changeField, fields) => {\n const { answers } = this.state.session;\n\n if (Object.keys(answers || {}).length) {\n const keys = Object.keys(answers);\n\n return keys.find((k) => {\n const tf = fields[k];\n\n return tf && tf.id == changeField.id;\n });\n }\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 // function for tooltip\n setTooltipRef(ref) {\n // Safari Hack: https://stackoverflow.com/a/42764495/5757635\n setTimeout(() => {\n if (ref && IS_SAFARI) {\n const div = document.querySelector('[role=\\'tooltip\\']');\n\n if (div) {\n const el = div.firstChild;\n el.setAttribute('tabindex', '-1');\n }\n }\n }, 1);\n }\n\n renderTeacherInstructions = () => {\n const { model, classes } = this.props;\n const { teacherInstructions, animationsDisabled } = model || {};\n\n const teacherInstructionsDiv = (\n <PreviewPrompt defaultClassName=\"teacher-instructions\" prompt={teacherInstructions}/>\n );\n\n return teacherInstructions && hasText(teacherInstructions) && (\n <div className={classes.collapsible}>\n {!animationsDisabled ? (\n <Collapsible labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}>\n {teacherInstructionsDiv}\n </Collapsible>\n ) : (\n teacherInstructionsDiv\n )}\n </div>\n );\n };\n\n renderRationale = () => {\n const { model, classes } = this.props;\n const { rationale, animationsDisabled } = model || {};\n const rationaleDiv = <PreviewPrompt prompt={rationale}/>;\n\n return rationale && hasText(rationale) && (\n <div className={classes.collapsible}>\n {!animationsDisabled ? (\n <Collapsible\n labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}>{rationaleDiv}</Collapsible>\n ) : (\n rationaleDiv\n )}\n </div>\n );\n }\n\n renderPlayerContent = () => {\n const { model, classes } = this.props;\n const { activeAnswerBlock, showCorrect, session } = this.state;\n const {\n correctness,\n disabled,\n view,\n responses,\n equationEditor,\n customKeys,\n feedback,\n env: { mode } = {},\n printMode,\n alwaysShowCorrect,\n } = model || {};\n\n const emptyResponse = isEmpty(responses);\n const additionalKeys = generateAdditionalKeys(customKeys);\n const statics = prepareForStatic(model, this.state) || '';\n const studentPrintMode = printMode && !alwaysShowCorrect;\n\n return (<div className={classes.inputAndKeypadContainer}>\n <Customizable\n disabled={disabled}\n markup={model.markup}\n // TODO remove the need of value?\n value={{}}\n customMarkMarkupComponent={(id) => {\n const responseIsCorrect = mode === 'evaluate' && feedback[id];\n\n const MQStatic = <mq.Static\n className={classes.static}\n ref={(mqStatic) => {\n this.mqStatic = mqStatic || this.mqStatic;\n }}\n latex={statics[id]}\n onSubFieldChange={this.subFieldChanged}\n getFieldName={this.getFieldName}\n setInput={this.setInput}\n onSubFieldFocus={this.onSubFieldFocus}\n onBlur={this.onBlur}\n />;\n\n return (\n <div\n className={cx(classes.expression, {\n [classes.incorrect]: !emptyResponse && !responseIsCorrect && !showCorrect,\n [classes.correct]: !emptyResponse && (responseIsCorrect || showCorrect),\n [classes.showCorrectness]: !emptyResponse && disabled && correctness && !view,\n [classes.correctAnswerShown]: showCorrect,\n })}\n >\n <Tooltip\n ref={(ref) => this.setTooltipRef(ref)}\n enterTouchDelay={0}\n interactive\n open={activeAnswerBlock === `r${id}`}\n classes={{ tooltip: classes.keypadTooltip, popper: classes.keypadTooltipPopper }}\n title={Object.keys(session.answers).map(\n (answerId) =>\n (answerId === activeAnswerBlock && !(showCorrect || disabled) && (\n <div\n data-keypad={true}\n key={answerId}\n className={classes.responseContainer}\n style={{ width: getKeyPadWidth(additionalKeys, equationEditor) }}\n >\n <HorizontalKeypad\n additionalKeys={additionalKeys}\n mode={equationEditor || DEFAULT_KEYPAD_VARIANT}\n onClick={this.onClick}\n />\n </div>\n )) ||\n null,\n )}\n >\n {studentPrintMode\n ? (<div className={classes.printContainer}>\n {MQStatic}\n </div>)\n : MQStatic}\n </Tooltip>\n </div>\n )\n }}\n />\n </div>);\n }\n\n render() {\n const { model, classes } = this.props;\n const { showCorrect } = this.state;\n const {\n prompt,\n env: { mode, role } = {},\n correctness,\n responses,\n language,\n showNote,\n note,\n } = model || {};\n const emptyResponse = isEmpty(responses);\n const showCorrectAnswerToggle = !emptyResponse && correctness && correctness.correctness !== 'correct';\n const displayNote = (showCorrect || (mode === 'view' && role === 'instructor')) && showNote && note;\n\n return (\n <div className={classes.mainContainer} ref={(r) => (this.root = r || this.root)}>\n <div className={classes.main}>\n {/* what is srOnly ? */}\n {mode === 'gather' && <h2 className={classes.srOnly}>Math Equation Response Question</h2>}\n\n <div className={classes.main}>\n {showCorrectAnswerToggle && (\n <CorrectAnswerToggle\n language={language}\n className={classes.toggle}\n show\n toggled={showCorrect}\n onToggle={this.toggleShowCorrect}\n />\n )}\n </div>\n\n {this.renderTeacherInstructions()}\n\n {prompt && (\n <div className={classes.promptContainer}>\n <PreviewPrompt prompt={prompt}/>\n </div>\n )}\n\n <Readable false>\n {this.renderPlayerContent()}\n </Readable>\n\n {displayNote && (\n <div\n className={cx(classes.note, 'note')}\n dangerouslySetInnerHTML={{ __html: note }}\n />\n )}\n\n {this.renderRationale()}\n </div>\n </div>\n );\n }\n}\n\nconst styles = (theme) => ({\n mainContainer: {\n color: color.text(),\n backgroundColor: color.background(),\n display: 'inline-block',\n },\n tooltip: {\n background: `${color.primaryLight()} !important`,\n color: color.text(),\n padding: theme.spacing.unit * 2,\n border: `1px solid ${color.secondary()}`,\n fontSize: '16px',\n '& :not(.MathJax) > table tr': {\n '&:nth-child(2n)': {\n backgroundColor: 'unset !important',\n },\n },\n },\n tooltipPopper: {\n opacity: 1,\n },\n keypadTooltip: {\n fontSize: 'initial',\n background: 'transparent',\n width: '600px',\n marginTop: 0,\n paddingTop: 0,\n },\n keypadTooltipPopper: {\n background: 'transparent',\n width: '650px',\n opacity: 1,\n },\n promptContainer: {\n marginBottom: theme.spacing.unit * 2,\n },\n main: {\n width: '100%',\n position: 'relative',\n backgroundColor: color.background(),\n color: color.text(),\n },\n title: {\n fontSize: '1.1rem',\n display: 'block',\n marginTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit,\n },\n collapsible: {\n marginBottom: theme.spacing.unit * 2,\n },\n responseContainer: {\n zIndex: 10,\n minWidth: '400px',\n marginTop: theme.spacing.unit * 2,\n },\n expression: {\n maxWidth: 'fit-content',\n '& > .mq-math-mode': {\n '& > .mq-root-block': {\n '& > .mq-editable-field': {\n minWidth: '10px',\n margin: (theme.spacing.unit * 2) / 3,\n padding: theme.spacing.unit / 4,\n },\n },\n '& sup': {\n top: 0,\n },\n },\n },\n static: {\n '& > .mq-root-block': {\n '& > .mq-editable-field': {\n borderColor: color.text(),\n },\n },\n },\n inputAndKeypadContainer: {\n position: 'relative',\n '& > div > div': {\n display: 'flex',\n alignItems: 'baseline',\n flexWrap: 'wrap'\n },\n '& .mq-overarrow-inner': {\n border: 'none !important',\n padding: '0 !important',\n },\n '& .mq-overarrow-inner-right': {\n display: 'none !important',\n },\n '& .mq-overarrow-inner-left': {\n display: 'none !important',\n },\n '& .mq-overarrow.mq-arrow-both': {\n minWidth: '1.23em',\n '& *': {\n lineHeight: '1 !important',\n },\n '&:before': {\n top: '-0.4em',\n left: '-1px',\n },\n '&:after': {\n top: '-2.4em',\n right: '-1px',\n },\n '&.mq-empty:after': {\n top: '-0.45em',\n },\n },\n '& .mq-overarrow.mq-arrow-right': {\n '&:before': {\n top: '-0.4em',\n right: '-1px',\n },\n },\n '& .mq-longdiv-inner': {\n borderTop: '1px solid !important',\n paddingTop: '1.5px !important',\n },\n '& .mq-parallelogram': {\n lineHeight: 0.85,\n },\n },\n showCorrectness: {\n border: '2px solid',\n },\n correctAnswerShown: {\n padding: theme.spacing.unit,\n letterSpacing: '0.5px',\n },\n correct: {\n borderColor: `${color.correct()} !important`,\n },\n incorrect: {\n borderColor: `${color.incorrect()} !important`,\n },\n blockContainer: {\n margin: `${theme.spacing.unit}px !important`,\n display: 'inline-flex',\n border: '2px solid grey !important',\n },\n blockResponse: {\n flex: 2,\n color: 'grey',\n background: theme.palette.grey['A100'],\n fontSize: '0.8rem !important',\n padding: `${theme.spacing.unit / 2}px !important`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRight: `2px solid ${color.disabled()} !important`,\n },\n toggle: {\n color: color.text(),\n marginBottom: theme.spacing.unit * 2,\n },\n blockMath: {\n color: color.text(),\n backgroundColor: color.background(),\n padding: `${theme.spacing.unit / 2}px !important`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flex: 8,\n '& > .mq-math-mode': {\n '& > .mq-hasCursor': {\n '& > .mq-cursor': {\n display: 'none',\n },\n },\n },\n },\n printContainer: {\n marginBottom: theme.spacing.unit,\n pointerEvents: 'none',\n },\n srOnly: {\n position: 'absolute',\n left: '-10000px',\n top: 'auto',\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n },\n note: {\n marginBottom: theme.spacing.unit * 2,\n },\n});\n\nexport default withStyles(styles)(Main);\n"],"file":"main.js"}
|
package/lib/print.js
ADDED
|
@@ -0,0 +1,130 @@
|
|
|
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 _debounce = _interopRequireDefault(require("lodash/debounce"));
|
|
31
|
+
|
|
32
|
+
var _main = _interopRequireDefault(require("./main"));
|
|
33
|
+
|
|
34
|
+
var _mathRenderingAccessible = require("@pie-lib/pie-toolbox/math-rendering-accessible");
|
|
35
|
+
|
|
36
|
+
var _debug = _interopRequireDefault(require("debug"));
|
|
37
|
+
|
|
38
|
+
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); }; }
|
|
39
|
+
|
|
40
|
+
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; } }
|
|
41
|
+
|
|
42
|
+
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; }
|
|
43
|
+
|
|
44
|
+
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; }
|
|
45
|
+
|
|
46
|
+
var log = (0, _debug["default"])('pie-element:math-templated:print');
|
|
47
|
+
/**
|
|
48
|
+
* Live in same package as main element - so we can access some of the shared comps!
|
|
49
|
+
*
|
|
50
|
+
* - update pslb to build print if src/print.js is there
|
|
51
|
+
* - update demo el
|
|
52
|
+
* - get configure/controller building
|
|
53
|
+
*/
|
|
54
|
+
|
|
55
|
+
var preparePrintModel = function preparePrintModel(model, opts) {
|
|
56
|
+
var instr = opts.role === 'instructor';
|
|
57
|
+
model.prompt = model.promptEnabled !== false ? model.prompt : undefined;
|
|
58
|
+
model.teacherInstructions = instr && model.teacherInstructionsEnabled !== false ? model.teacherInstructions : undefined;
|
|
59
|
+
model.rationale = instr && model.rationaleEnabled !== false ? model.rationale : undefined;
|
|
60
|
+
model.showTeacherInstructions = instr;
|
|
61
|
+
model.alwaysShowCorrect = instr;
|
|
62
|
+
model.printMode = true;
|
|
63
|
+
model.feedback = undefined;
|
|
64
|
+
model.markup = model.markup || '{{0}}';
|
|
65
|
+
return _objectSpread(_objectSpread({}, model), {}, {
|
|
66
|
+
disabled: true,
|
|
67
|
+
env: {
|
|
68
|
+
mode: instr ? 'evaluate' : model.mode,
|
|
69
|
+
role: opts.role
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
var MathTemplatedPrint = /*#__PURE__*/function (_HTMLElement) {
|
|
75
|
+
(0, _inherits2["default"])(MathTemplatedPrint, _HTMLElement);
|
|
76
|
+
|
|
77
|
+
var _super = _createSuper(MathTemplatedPrint);
|
|
78
|
+
|
|
79
|
+
function MathTemplatedPrint() {
|
|
80
|
+
var _this;
|
|
81
|
+
|
|
82
|
+
(0, _classCallCheck2["default"])(this, MathTemplatedPrint);
|
|
83
|
+
_this = _super.call(this);
|
|
84
|
+
_this._options = null;
|
|
85
|
+
_this._model = null;
|
|
86
|
+
_this._session = [];
|
|
87
|
+
_this._rerender = (0, _debounce["default"])(function () {
|
|
88
|
+
if (_this._model && _this._session) {
|
|
89
|
+
var printModel = preparePrintModel(_this._model, _this._options);
|
|
90
|
+
|
|
91
|
+
var element = _this._options && /*#__PURE__*/_react["default"].createElement(_main["default"], {
|
|
92
|
+
model: printModel,
|
|
93
|
+
session: {}
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
_reactDom["default"].render(element, (0, _assertThisInitialized2["default"])(_this), function () {
|
|
97
|
+
log('render complete - render math');
|
|
98
|
+
(0, _mathRenderingAccessible.renderMath)((0, _assertThisInitialized2["default"])(_this));
|
|
99
|
+
});
|
|
100
|
+
} else {
|
|
101
|
+
log('skip');
|
|
102
|
+
}
|
|
103
|
+
}, 50, {
|
|
104
|
+
leading: false,
|
|
105
|
+
trailing: true
|
|
106
|
+
});
|
|
107
|
+
return _this;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
(0, _createClass2["default"])(MathTemplatedPrint, [{
|
|
111
|
+
key: "options",
|
|
112
|
+
set: function set(o) {
|
|
113
|
+
this._options = o;
|
|
114
|
+
}
|
|
115
|
+
}, {
|
|
116
|
+
key: "model",
|
|
117
|
+
set: function set(s) {
|
|
118
|
+
this._model = s;
|
|
119
|
+
|
|
120
|
+
this._rerender();
|
|
121
|
+
}
|
|
122
|
+
}, {
|
|
123
|
+
key: "connectedCallback",
|
|
124
|
+
value: function connectedCallback() {}
|
|
125
|
+
}]);
|
|
126
|
+
return MathTemplatedPrint;
|
|
127
|
+
}( /*#__PURE__*/(0, _wrapNativeSuper2["default"])(HTMLElement));
|
|
128
|
+
|
|
129
|
+
exports["default"] = MathTemplatedPrint;
|
|
130
|
+
//# 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","rationale","rationaleEnabled","showTeacherInstructions","alwaysShowCorrect","printMode","feedback","markup","disabled","env","mode","MathTemplatedPrint","_options","_model","_session","_rerender","printModel","element","React","createElement","Main","session","ReactDOM","render","leading","trailing","o","s","HTMLElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;AAEA,IAAMA,GAAG,GAAG,uBAAM,kCAAN,CAAZ;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,KAAD,EAAQC,IAAR,EAAiB;AACzC,MAAMC,KAAK,GAAGD,IAAI,CAACE,IAAL,KAAc,YAA5B;AAEAH,EAAAA,KAAK,CAACI,MAAN,GAAeJ,KAAK,CAACK,aAAN,KAAwB,KAAxB,GAAgCL,KAAK,CAACI,MAAtC,GAA+CE,SAA9D;AACAN,EAAAA,KAAK,CAACO,mBAAN,GACEL,KAAK,IAAIF,KAAK,CAACQ,0BAAN,KAAqC,KAA9C,GAAsDR,KAAK,CAACO,mBAA5D,GAAkFD,SADpF;AAEAN,EAAAA,KAAK,CAACS,SAAN,GAAkBP,KAAK,IAAIF,KAAK,CAACU,gBAAN,KAA2B,KAApC,GAA4CV,KAAK,CAACS,SAAlD,GAA8DH,SAAhF;AACAN,EAAAA,KAAK,CAACW,uBAAN,GAAgCT,KAAhC;AACAF,EAAAA,KAAK,CAACY,iBAAN,GAA0BV,KAA1B;AACAF,EAAAA,KAAK,CAACa,SAAN,GAAkB,IAAlB;AACAb,EAAAA,KAAK,CAACc,QAAN,GAAiBR,SAAjB;AACAN,EAAAA,KAAK,CAACe,MAAN,GAAef,KAAK,CAACe,MAAN,IAAgB,OAA/B;AAEA,yCACKf,KADL;AAEEgB,IAAAA,QAAQ,EAAE,IAFZ;AAGEC,IAAAA,GAAG,EAAE;AAAEC,MAAAA,IAAI,EAAEhB,KAAK,GAAG,UAAH,GAAgBF,KAAK,CAACkB,IAAnC;AAAyCf,MAAAA,IAAI,EAAEF,IAAI,CAACE;AAApD;AAHP;AAKD,CAlBD;;IAoBqBgB,kB;;;;;AACnB,gCAAc;AAAA;;AAAA;AACZ;AACA,UAAKC,QAAL,GAAgB,IAAhB;AACA,UAAKC,MAAL,GAAc,IAAd;AACA,UAAKC,QAAL,GAAgB,EAAhB;AACA,UAAKC,SAAL,GAAiB,0BACf,YAAM;AACJ,UAAI,MAAKF,MAAL,IAAe,MAAKC,QAAxB,EAAkC;AAChC,YAAME,UAAU,GAAGzB,iBAAiB,CAAC,MAAKsB,MAAN,EAAc,MAAKD,QAAnB,CAApC;;AAEA,YAAMK,OAAO,GACX,MAAKL,QAAL,iBACAM,kBAAMC,aAAN,CAAoBC,gBAApB,EAA0B;AACxB5B,UAAAA,KAAK,EAAEwB,UADiB;AAExBK,UAAAA,OAAO,EAAE;AAFe,SAA1B,CAFF;;AAOAC,6BAASC,MAAT,CAAgBN,OAAhB,kDAA+B,YAAM;AACnC3B,UAAAA,GAAG,CAAC,+BAAD,CAAH;AACA;AACD,SAHD;AAID,OAdD,MAcO;AACLA,QAAAA,GAAG,CAAC,MAAD,CAAH;AACD;AACF,KAnBc,EAoBf,EApBe,EAqBf;AAAEkC,MAAAA,OAAO,EAAE,KAAX;AAAkBC,MAAAA,QAAQ,EAAE;AAA5B,KArBe,CAAjB;AALY;AA4Bb;;;;SACD,aAAYC,CAAZ,EAAe;AACb,WAAKd,QAAL,GAAgBc,CAAhB;AACD;;;SAED,aAAUC,CAAV,EAAa;AACX,WAAKd,MAAL,GAAcc,CAAd;;AACA,WAAKZ,SAAL;AACD;;;WAED,6BAAoB,CAAE;;;kDAvCwBa,W","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport debounce from 'lodash/debounce';\nimport Main from './main';\nimport { renderMath } from '@pie-lib/pie-toolbox/math-rendering-accessible';\nimport debug from 'debug';\n\nconst log = debug('pie-element:math-templated: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.rationale = instr && model.rationaleEnabled !== false ? model.rationale : undefined;\n model.showTeacherInstructions = instr;\n model.alwaysShowCorrect = instr;\n model.printMode = true;\n model.feedback = undefined;\n model.markup = model.markup || '{{0}}';\n\n return {\n ...model,\n disabled: true,\n env: { mode: instr ? 'evaluate' : model.mode, role: opts.role },\n };\n};\n\nexport default class MathTemplatedPrint 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"}
|