@pie-element/math-inline 11.1.2-next.3 → 11.2.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,22 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [11.2.0-next.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-inline@11.1.2-next.4...@pie-element/math-inline@11.2.0-next.0) (2026-03-18)
7
+
8
+ ### Bug Fixes
9
+
10
+ - tests ([f46f1f9](https://github.com/pie-framework/pie-elements/commit/f46f1f9845ef96bbf7fefbc4f9ffafc48a19f5f6))
11
+
12
+ ### Features
13
+
14
+ - **math-inline:** add scoring trace in outcome function PD-5467 ([1eeafce](https://github.com/pie-framework/pie-elements/commit/1eeafcecc12adb0e2d1f6415a0daf7178e3799c0))
15
+
16
+ ## [11.1.2-next.4](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-inline@11.1.2-next.3...@pie-element/math-inline@11.1.2-next.4) (2026-03-12)
17
+
18
+ ### Bug Fixes
19
+
20
+ - bump libs, update mathquill, switch interface PD-5791 ([686a7c0](https://github.com/pie-framework/pie-elements/commit/686a7c0d41ff82f5ddad7cecd93cc0c18324a81b))
21
+
6
22
  ## [11.1.2-next.3](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-inline@11.1.2-next.2...@pie-element/math-inline@11.1.2-next.3) (2026-03-06)
7
23
 
8
24
  **Note:** Version bump only for package @pie-element/math-inline
@@ -3,6 +3,12 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [10.1.2-next.4](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-inline-configure@10.1.2-next.3...@pie-element/math-inline-configure@10.1.2-next.4) (2026-03-12)
7
+
8
+ ### Bug Fixes
9
+
10
+ - bump libs, update mathquill, switch interface PD-5791 ([686a7c0](https://github.com/pie-framework/pie-elements/commit/686a7c0d41ff82f5ddad7cecd93cc0c18324a81b))
11
+
6
12
  ## [10.1.2-next.3](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-inline-configure@10.1.2-next.2...@pie-element/math-inline-configure@10.1.2-next.3) (2026-03-06)
7
13
 
8
14
  **Note:** Version bump only for package @pie-element/math-inline-configure
@@ -216,7 +216,7 @@ class GeneralConfigBlock extends React.Component {
216
216
  const indexEl = this.root.querySelector(`#${responseId}Index`);
217
217
  if (el) {
218
218
  // const MathQuill = require('@pie-framework/mathquill');
219
- let MQ = _mathquill.default.getInterface(2);
219
+ let MQ = _mathquill.default.getInterface(3);
220
220
  // We no longer have individual answers, so we cannot set text content of blocks
221
221
  // el.textContent = response.answer;
222
222
  MQ.StaticMath(el);
@@ -285,7 +285,7 @@ class GeneralConfigBlock extends React.Component {
285
285
  UNSAFE_componentWillMount() {
286
286
  if (typeof window !== 'undefined') {
287
287
  // const MathQuill = require('@pie-framework/mathquill');
288
- let MQ = _mathquill.default.getInterface(2);
288
+ let MQ = _mathquill.default.getInterface(3);
289
289
  if (!registered) {
290
290
  MQ.registerEmbed('answerBlock', data => {
291
291
  const classNames = getBlockClassNames();
@@ -1 +1 @@
1
- {"version":3,"file":"general-config-block.js","names":["React","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_classnames","_editableHtmlTipTap","_configUi","_styles","_InputLabel","_Select","_MenuItem","_response","_mathToolbar","_lodashEs","_utils","_mathquill","_Info","_Tooltip","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","registered","getBlockClassNames","blockContainer","blockContainerGeneric","blockResponse","blockResponseGeneric","Container","styled","display","flexDirection","TemplateTitle","InputLabel","fontSize","Title","FlexContainer","alignItems","justifyContent","SelectContainer","InputContainer","theme","flex","width","marginTop","spacing","marginBottom","ResponseTemplate","StyledTooltip","Tooltip","typography","whiteSpace","ErrorText","color","palette","error","main","paddingTop","PromptHolder","AdvancedResponse","document","styleId","getElementById","style","createElement","id","textContent","head","appendChild","REGEX","TEMPORARY_RESPONSE_FIELD","ANSWER_BLOCK_REGEX","NEWLINE_BLOCK","NEWLINE_LATEX","prepareForStatic","expression","answerBlocks","replace","prepareForModel","GeneralConfigBlock","Component","constructor","props","_defineProperty2","name","evtOrValue","model","onChange","newModel","target","value","setState","showKeypad","responseAreas","isEqual","state","root","keys","length","forEach","responseId","idx","el","querySelector","indexEl","MQ","MathQuill","getInterface","StaticMath","responseIdCounter","newCounter","responses","find","response","validation","answer","alternates","concat","index","UNSAFE_componentWillMount","window","registerEmbed","data","classNames","genericAnswerBlock","cx","htmlString","text","latex","componentDidMount","handleAnswerBlockDomUpdate","componentDidUpdate","render","imageSupport","uploadSoundSupport","configuration","promptEnabled","rationaleEnabled","toolbarOpts","prompt","equationEditor","promptEquationEditor","responseType","rationale","spellCheckEnabled","errors","baseInputConfiguration","cRationale","cPrompt","ignoreOrder","cIgnoreOrder","allowTrailingZeros","cAllowTrailingZeros","maxResponseAreas","maxImageWidth","maxImageHeight","mathMlOptions","validationMessage","generateValidationMessage","promptError","rationaleError","responsesErrors","responseAreasError","defaultImageMaxWidth","defaultImageMaxHeight","editor","responsesToUse","ResponseTypes","advanced","slice","validationTooltip","disableFocusListener","disableTouchListener","placement","title","marginLeft","ref","label","onFocus","onPromptFocus","markup","nonEmpty","pluginProps","getPluginProps","inputConfiguration","spellCheck","languageCharactersProps","language","key","MenuProps","transitionDuration","enter","exit","MathToolbar","allowAnswerBlock","keypadMode","controlledKeypad","onDone","simple","map","mode","defaultResponse","onResponseChange","math","controlledKeypadMode","PropTypes","object","isRequired","func","bool","_default","exports"],"sources":["../src/general-config-block.jsx"],"sourcesContent":["import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport EditableHtml from '@pie-lib/editable-html-tip-tap';\nimport { InputContainer } from '@pie-lib/config-ui';\nimport { styled } from '@mui/material/styles';\nimport InputLabel from '@mui/material/InputLabel';\nimport Select from '@mui/material/Select';\nimport MenuItem from '@mui/material/MenuItem';\nimport Response from './response';\nimport { MathToolbar } from '@pie-lib/math-toolbar';\nimport { isEqual } from 'lodash-es';\nimport { ResponseTypes, generateValidationMessage, getPluginProps } from './utils';\nimport MathQuill from '@pie-framework/mathquill';\nimport Info from '@mui/icons-material/Info';\nimport Tooltip from '@mui/material/Tooltip';\n\nlet registered = false;\n\n// Helper function to get class names for HTML string generation\nconst getBlockClassNames = () => {\n // These will be generated by styled components, but we need them as strings for HTML\n // We'll use a simple approach: generate unique class names\n return {\n blockContainer: 'block-container',\n blockContainerGeneric: 'block-container-generic',\n blockResponse: 'block-response',\n blockResponseGeneric: 'block-response-generic',\n };\n};\n\nconst Container = styled('div')({\n display: 'flex',\n flexDirection: 'column',\n});\n\nconst TemplateTitle = styled(InputLabel)({\n fontSize: '0.85rem',\n});\n\nconst Title = styled('div')({\n fontSize: '1.1rem',\n});\n\nconst FlexContainer = styled('div')({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n});\n\nconst SelectContainer = styled(InputContainer)(({ theme }) => ({\n flex: 'initial',\n width: '40%',\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n '& > *:not(label)': {\n marginTop: theme.spacing(1),\n },\n}));\n\nconst ResponseTemplate = styled('div')({\n display: 'flex',\n flexDirection: 'column',\n});\n\nconst StyledTooltip = styled(Tooltip)(({ theme }) => ({\n '& .MuiTooltip-tooltip': {\n fontSize: theme.typography.fontSize - 2,\n whiteSpace: 'pre-wrap',\n },\n}));\n\nconst ErrorText = styled('div')(({ theme }) => ({\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing(1),\n}));\n\nconst PromptHolder = styled(InputContainer)(({ theme }) => ({\n width: '100%',\n paddingTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n}));\n\nconst AdvancedResponse = styled('div')(({ theme }) => ({\n marginBottom: theme.spacing(2.5),\n}));\n\n// CSS for block classes used in HTML string generation\n// These need to be injected as global styles since they're used in dynamically generated HTML\nif (typeof document !== 'undefined') {\n const styleId = 'math-inline-block-styles';\n if (!document.getElementById(styleId)) {\n const style = document.createElement('style');\n style.id = styleId;\n style.textContent = `\n .block-container {\n margin: 8px;\n display: inline-flex;\n border: 2px solid grey;\n }\n .block-container-generic {\n margin: 4px;\n }\n .block-response {\n flex: 2;\n color: grey;\n background: #f5f5f5;\n font-size: 0.8rem;\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-right: 2px solid grey;\n }\n .block-response-generic {\n border-right: 0;\n }\n .response-editor {\n display: flex;\n justify-content: center;\n width: 100%;\n max-width: inherit;\n height: auto;\n min-height: 130px;\n text-align: left;\n padding: 8px;\n }\n `;\n document.head.appendChild(style);\n }\n}\n\nconst REGEX = /{{response}}/gm;\nconst TEMPORARY_RESPONSE_FIELD = /\\\\%response\\\\%/gm;\nconst ANSWER_BLOCK_REGEX = /\\\\embed\\{answerBlock\\}\\[r\\d*\\]/g;\nconst NEWLINE_BLOCK = /\\\\embed\\{newLine\\}\\[\\]/g;\nconst NEWLINE_LATEX = /\\\\newline/g;\n\nfunction prepareForStatic(expression) {\n if (expression) {\n let answerBlocks = 1; // assume one at least\n\n return expression\n .replace(REGEX, () => `\\\\embed{answerBlock}[r${answerBlocks++}]`)\n .replace(NEWLINE_LATEX, '\\\\embed{newLine}[]');\n }\n}\n\nfunction prepareForModel(expression) {\n if (expression) {\n return expression\n .replace(ANSWER_BLOCK_REGEX, () => '{{response}}')\n .replace(TEMPORARY_RESPONSE_FIELD, () => '{{response}}')\n .replace(NEWLINE_BLOCK, () => '\\\\newline');\n }\n}\n\nclass GeneralConfigBlock extends React.Component {\n static propTypes = {\n model: PropTypes.object.isRequired,\n imageSupport: PropTypes.object,\n uploadSoundSupport: PropTypes.object,\n configuration: PropTypes.object,\n onChange: PropTypes.func.isRequired,\n promptEnabled: PropTypes.bool,\n rationaleEnabled: PropTypes.bool,\n toolbarOpts: PropTypes.object,\n };\n\n constructor(props) {\n super(props);\n\n const responseAreas = {};\n\n if (props.model && props.model.expression) {\n let answerBlocks = 1; // assume one at least\n // build out local state model using responses declared in expression\n\n props.model.expression.replace(REGEX, () => {\n responseAreas[`r${answerBlocks++}`] = {\n value: '',\n };\n });\n }\n\n this.state = {\n showKeypad: false,\n responseAreas,\n responseIdCounter: Object.keys(responseAreas).length,\n };\n }\n\n onChange = (name) => (evtOrValue) => {\n const { model, onChange } = this.props;\n const newModel = { ...model };\n\n if (typeof evtOrValue === 'object') {\n newModel[name] = evtOrValue.target.value;\n } else {\n newModel[name] = evtOrValue;\n }\n\n if (name === 'expression') {\n newModel[name] = prepareForModel(evtOrValue);\n }\n\n onChange(newModel);\n };\n\n onDone = () => {\n this.setState({ showKeypad: false });\n };\n\n onFocus = () => {\n this.setState({ showKeypad: true });\n };\n\n onPromptFocus = () => {\n this.setState({ showKeypad: false });\n };\n\n UNSAFE_componentWillMount() {\n if (typeof window !== 'undefined') {\n // const MathQuill = require('@pie-framework/mathquill');\n let MQ = MathQuill.getInterface(2);\n\n if (!registered) {\n MQ.registerEmbed('answerBlock', (data) => {\n const classNames = getBlockClassNames();\n const genericAnswerBlock = `<div class=\"${cx(classNames.blockContainer, classNames.blockContainerGeneric)}\">\n <div class=\"${cx(classNames.blockResponse, classNames.blockResponseGeneric)}\" id=\"${data}Index\">Response</div>\n </div>`;\n\n return {\n htmlString: genericAnswerBlock,\n text: () => 'text',\n latex: () => `\\\\embed{answerBlock}[${data}]`,\n };\n });\n\n registered = true;\n }\n }\n }\n\n componentDidMount() {\n this.handleAnswerBlockDomUpdate();\n }\n\n componentDidUpdate() {\n this.handleAnswerBlockDomUpdate();\n }\n\n handleAnswerBlockDomUpdate = () => {\n const { model } = this.props;\n\n const responseAreas = {};\n\n if (model && model.expression) {\n let answerBlocks = 1; // assume one at least\n // build out local state model using responses declared in expression\n\n model.expression.replace(REGEX, () => {\n responseAreas[`r${answerBlocks++}`] = {\n value: '',\n };\n });\n }\n\n if (!isEqual(responseAreas, this.state.responseAreas)) {\n this.setState(\n {\n responseAreas,\n },\n () => {\n if (this.root && Object.keys(responseAreas).length) {\n Object.keys(responseAreas).forEach((responseId, idx) => {\n const el = this.root.querySelector(`#${responseId}`);\n const indexEl = this.root.querySelector(`#${responseId}Index`);\n\n if (el) {\n // const MathQuill = require('@pie-framework/mathquill');\n let MQ = MathQuill.getInterface(2);\n // We no longer have individual answers, so we cannot set text content of blocks\n // el.textContent = response.answer;\n MQ.StaticMath(el);\n indexEl.textContent = `R${idx + 1}`;\n }\n });\n }\n },\n );\n }\n };\n\n onAddResponse = () => {\n const { model, onChange } = this.props;\n const { responseIdCounter } = this.state;\n const newModel = { ...model };\n\n let newCounter = responseIdCounter;\n\n while (model.responses.find((response) => response.id === newCounter)) {\n newCounter++;\n }\n\n const response = {\n id: newCounter,\n validation: 'literal',\n answer: '',\n alternates: {},\n };\n\n newModel.responses = newModel.responses.concat(response);\n onChange(newModel);\n\n this.setState({\n responseIdCounter: response.id,\n });\n };\n\n onResponseChange = (response, index) => {\n const { model, onChange } = this.props;\n const newModel = { ...model };\n\n newModel.responses[index] = response;\n onChange(newModel);\n };\n\n render() {\n const {\n model,\n imageSupport,\n uploadSoundSupport,\n configuration,\n promptEnabled,\n rationaleEnabled,\n toolbarOpts,\n } = this.props;\n const { showKeypad } = this.state;\n const {\n prompt,\n expression,\n equationEditor,\n promptEquationEditor = '8',\n responses,\n responseType,\n rationale,\n spellCheckEnabled,\n errors = {},\n } = model;\n const {\n baseInputConfiguration = {},\n rationale: cRationale = {},\n prompt: cPrompt = {},\n ignoreOrder: cIgnoreOrder = {},\n allowTrailingZeros: cAllowTrailingZeros = {},\n maxResponseAreas,\n maxImageWidth = {},\n maxImageHeight = {},\n mathMlOptions = {},\n } = configuration || {};\n const validationMessage = generateValidationMessage(configuration, model);\n const { prompt: promptError, rationale: rationaleError, responsesErrors, responseAreasError } = errors;\n\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n\n const classNames = {\n editor: 'response-editor',\n };\n\n const responsesToUse = responseType === ResponseTypes.advanced ? responses : responses.slice(0, 1);\n\n const validationTooltip = (\n <StyledTooltip\n disableFocusListener\n disableTouchListener\n placement={'right'}\n title={validationMessage}\n >\n <Info fontSize={'small'} color={'primary'} style={{ marginLeft: '5px' }} />\n </StyledTooltip>\n );\n\n return (\n <Container ref={(r) => (this.root = r || this.root)}>\n {promptEnabled && (\n <PromptHolder label={cPrompt.label}>\n <EditableHtml\n onFocus={this.onPromptFocus}\n markup={prompt || ''}\n onChange={this.onChange('prompt')}\n imageSupport={imageSupport}\n nonEmpty={false}\n error={promptError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(cPrompt?.inputConfiguration, baseInputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={defaultImageMaxWidth}\n maxImageHeight={defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {promptError && <ErrorText>{promptError}</ErrorText>}\n </PromptHolder>\n )}\n\n {responseType === ResponseTypes.advanced && (\n <AdvancedResponse>\n <FlexContainer style={{ justifyContent: 'flex-start' }}>\n <Title>Define Response</Title>\n {validationTooltip}\n </FlexContainer>\n\n <SelectContainer\n key=\"templateEditorType\"\n label=\"Response Template Equation Editor\"\n >\n <Select\n onChange={this.onChange('promptEquationEditor')}\n value={promptEquationEditor}\n MenuProps={{transitionDuration: { enter: 225, exit: 195 } }}\n >\n <MenuItem value=\"non-negative-integers\">Numeric - Non-Negative Integers</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'}>Advanced Algebra</MenuItem>\n <MenuItem value={'statistics'}>Statistics</MenuItem>\n <MenuItem value={'item-authoring'}>Item Authoring</MenuItem>\n </Select>\n </SelectContainer>\n\n <ResponseTemplate key=\"templateHolder\">\n <TemplateTitle>RESPONSE TEMPLATE</TemplateTitle>\n <MathToolbar\n classNames={classNames}\n allowAnswerBlock\n keypadMode={promptEquationEditor}\n controlledKeypad\n showKeypad={showKeypad}\n latex={prepareForStatic(expression) || ''}\n onChange={this.onChange('expression')}\n onFocus={this.onFocus}\n onDone={this.onDone}\n maxResponseAreas={maxResponseAreas}\n error={responseAreasError}\n />\n </ResponseTemplate>\n\n {responseAreasError && <ErrorText>{responseAreasError}</ErrorText>}\n </AdvancedResponse>\n )}\n\n <FlexContainer style={{ justifyContent: 'flex-start' }}>\n <Title>Define Correct Response</Title>\n {responseType === ResponseTypes.simple ? validationTooltip : null}\n </FlexContainer>\n\n <SelectContainer label=\"Equation Editor\">\n <Select onChange={this.onChange('equationEditor')} value={equationEditor} MenuProps={{transitionDuration: { enter: 225, exit: 195 } }}>\n <MenuItem value=\"non-negative-integers\">Numeric - Non-Negative Integers</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'}>Advanced Algebra</MenuItem>\n <MenuItem value={'statistics'}>Statistics</MenuItem>\n <MenuItem value={'item-authoring'}>Item Authoring</MenuItem>\n </Select>\n </SelectContainer>\n\n {responsesToUse.map((response, idx) => (\n <Response\n key={response.id}\n mode={equationEditor}\n response={response}\n defaultResponse={responseType === ResponseTypes.simple}\n onResponseChange={this.onResponseChange}\n index={idx}\n cIgnoreOrder={cIgnoreOrder}\n cAllowTrailingZeros={cAllowTrailingZeros}\n error={responsesErrors && responsesErrors[idx]}\n />\n ))}\n\n {rationaleEnabled && (\n <PromptHolder label={cRationale.label}>\n <EditableHtml\n markup={rationale || ''}\n onChange={this.onChange('rationale')}\n imageSupport={imageSupport}\n nonEmpty={false}\n error={rationaleError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(cRationale?.inputConfiguration, {\n ...baseInputConfiguration,\n math: {\n controlledKeypadMode: false,\n },\n })}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.rationale) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rationale) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {rationaleError && <ErrorText>{rationaleError}</ErrorText>}\n </PromptHolder>\n )}\n </Container>\n );\n }\n}\n\nexport default GeneralConfigBlock;\n"],"mappings":";;;;;;;;AAAA,IAAAA,KAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,WAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,mBAAA,GAAAF,sBAAA,CAAAF,OAAA;AACA,IAAAK,SAAA,GAAAL,OAAA;AACA,IAAAM,OAAA,GAAAN,OAAA;AACA,IAAAO,WAAA,GAAAL,sBAAA,CAAAF,OAAA;AACA,IAAAQ,OAAA,GAAAN,sBAAA,CAAAF,OAAA;AACA,IAAAS,SAAA,GAAAP,sBAAA,CAAAF,OAAA;AACA,IAAAU,SAAA,GAAAR,sBAAA,CAAAF,OAAA;AACA,IAAAW,YAAA,GAAAX,OAAA;AACA,IAAAY,SAAA,GAAAZ,OAAA;AACA,IAAAa,MAAA,GAAAb,OAAA;AACA,IAAAc,UAAA,GAAAZ,sBAAA,CAAAF,OAAA;AACA,IAAAe,KAAA,GAAAb,sBAAA,CAAAF,OAAA;AACA,IAAAgB,QAAA,GAAAd,sBAAA,CAAAF,OAAA;AAA4C,SAAAD,wBAAAkB,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAApB,uBAAA,YAAAA,CAAAkB,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAE5C,IAAIkB,UAAU,GAAG,KAAK;;AAEtB;AACA,MAAMC,kBAAkB,GAAGA,CAAA,KAAM;EAC/B;EACA;EACA,OAAO;IACLC,cAAc,EAAE,iBAAiB;IACjCC,qBAAqB,EAAE,yBAAyB;IAChDC,aAAa,EAAE,gBAAgB;IAC/BC,oBAAoB,EAAE;EACxB,CAAC;AACH,CAAC;AAED,MAAMC,SAAS,GAAG,IAAAC,cAAM,EAAC,KAAK,CAAC,CAAC;EAC9BC,OAAO,EAAE,MAAM;EACfC,aAAa,EAAE;AACjB,CAAC,CAAC;AAEF,MAAMC,aAAa,GAAG,IAAAH,cAAM,EAACI,mBAAU,CAAC,CAAC;EACvCC,QAAQ,EAAE;AACZ,CAAC,CAAC;AAEF,MAAMC,KAAK,GAAG,IAAAN,cAAM,EAAC,KAAK,CAAC,CAAC;EAC1BK,QAAQ,EAAE;AACZ,CAAC,CAAC;AAEF,MAAME,aAAa,GAAG,IAAAP,cAAM,EAAC,KAAK,CAAC,CAAC;EAClCC,OAAO,EAAE,MAAM;EACfO,UAAU,EAAE,QAAQ;EACpBC,cAAc,EAAE;AAClB,CAAC,CAAC;AAEF,MAAMC,eAAe,GAAG,IAAAV,cAAM,EAACW,wBAAc,CAAC,CAAC,CAAC;EAAEC;AAAM,CAAC,MAAM;EAC7DC,IAAI,EAAE,SAAS;EACfC,KAAK,EAAE,KAAK;EACZC,SAAS,EAAEH,KAAK,CAACI,OAAO,CAAC,CAAC,CAAC;EAC3BC,YAAY,EAAEL,KAAK,CAACI,OAAO,CAAC,CAAC,CAAC;EAC9B,kBAAkB,EAAE;IAClBD,SAAS,EAAEH,KAAK,CAACI,OAAO,CAAC,CAAC;EAC5B;AACF,CAAC,CAAC,CAAC;AAEH,MAAME,gBAAgB,GAAG,IAAAlB,cAAM,EAAC,KAAK,CAAC,CAAC;EACrCC,OAAO,EAAE,MAAM;EACfC,aAAa,EAAE;AACjB,CAAC,CAAC;AAEF,MAAMiB,aAAa,GAAG,IAAAnB,cAAM,EAACoB,gBAAO,CAAC,CAAC,CAAC;EAAER;AAAM,CAAC,MAAM;EACpD,uBAAuB,EAAE;IACvBP,QAAQ,EAAEO,KAAK,CAACS,UAAU,CAAChB,QAAQ,GAAG,CAAC;IACvCiB,UAAU,EAAE;EACd;AACF,CAAC,CAAC,CAAC;AAEH,MAAMC,SAAS,GAAG,IAAAvB,cAAM,EAAC,KAAK,CAAC,CAAC,CAAC;EAAEY;AAAM,CAAC,MAAM;EAC9CP,QAAQ,EAAEO,KAAK,CAACS,UAAU,CAAChB,QAAQ,GAAG,CAAC;EACvCmB,KAAK,EAAEZ,KAAK,CAACa,OAAO,CAACC,KAAK,CAACC,IAAI;EAC/BC,UAAU,EAAEhB,KAAK,CAACI,OAAO,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEH,MAAMa,YAAY,GAAG,IAAA7B,cAAM,EAACW,wBAAc,CAAC,CAAC,CAAC;EAAEC;AAAM,CAAC,MAAM;EAC1DE,KAAK,EAAE,MAAM;EACbc,UAAU,EAAEhB,KAAK,CAACI,OAAO,CAAC,CAAC,CAAC;EAC5BC,YAAY,EAAEL,KAAK,CAACI,OAAO,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC;AAEH,MAAMc,gBAAgB,GAAG,IAAA9B,cAAM,EAAC,KAAK,CAAC,CAAC,CAAC;EAAEY;AAAM,CAAC,MAAM;EACrDK,YAAY,EAAEL,KAAK,CAACI,OAAO,CAAC,GAAG;AACjC,CAAC,CAAC,CAAC;;AAEH;AACA;AACA,IAAI,OAAOe,QAAQ,KAAK,WAAW,EAAE;EACnC,MAAMC,OAAO,GAAG,0BAA0B;EAC1C,IAAI,CAACD,QAAQ,CAACE,cAAc,CAACD,OAAO,CAAC,EAAE;IACrC,MAAME,KAAK,GAAGH,QAAQ,CAACI,aAAa,CAAC,OAAO,CAAC;IAC7CD,KAAK,CAACE,EAAE,GAAGJ,OAAO;IAClBE,KAAK,CAACG,WAAW,GAAG;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;IACDN,QAAQ,CAACO,IAAI,CAACC,WAAW,CAACL,KAAK,CAAC;EAClC;AACF;AAEA,MAAMM,KAAK,GAAG,gBAAgB;AAC9B,MAAMC,wBAAwB,GAAG,kBAAkB;AACnD,MAAMC,kBAAkB,GAAG,iCAAiC;AAC5D,MAAMC,aAAa,GAAG,yBAAyB;AAC/C,MAAMC,aAAa,GAAG,YAAY;AAElC,SAASC,gBAAgBA,CAACC,UAAU,EAAE;EACpC,IAAIA,UAAU,EAAE;IACd,IAAIC,YAAY,GAAG,CAAC,CAAC,CAAC;;IAEtB,OAAOD,UAAU,CACdE,OAAO,CAACR,KAAK,EAAE,MAAM,yBAAyBO,YAAY,EAAE,GAAG,CAAC,CAChEC,OAAO,CAACJ,aAAa,EAAE,oBAAoB,CAAC;EACjD;AACF;AAEA,SAASK,eAAeA,CAACH,UAAU,EAAE;EACnC,IAAIA,UAAU,EAAE;IACd,OAAOA,UAAU,CACdE,OAAO,CAACN,kBAAkB,EAAE,MAAM,cAAc,CAAC,CACjDM,OAAO,CAACP,wBAAwB,EAAE,MAAM,cAAc,CAAC,CACvDO,OAAO,CAACL,aAAa,EAAE,MAAM,WAAW,CAAC;EAC9C;AACF;AAEA,MAAMO,kBAAkB,SAAS/F,KAAK,CAACgG,SAAS,CAAC;EAY/CC,WAAWA,CAACC,KAAK,EAAE;IACjB,KAAK,CAACA,KAAK,CAAC;IAAC,IAAAC,gBAAA,CAAAtE,OAAA,oBAsBHuE,IAAI,IAAMC,UAAU,IAAK;MACnC,MAAM;QAAEC,KAAK;QAAEC;MAAS,CAAC,GAAG,IAAI,CAACL,KAAK;MACtC,MAAMM,QAAQ,GAAG;QAAE,GAAGF;MAAM,CAAC;MAE7B,IAAI,OAAOD,UAAU,KAAK,QAAQ,EAAE;QAClCG,QAAQ,CAACJ,IAAI,CAAC,GAAGC,UAAU,CAACI,MAAM,CAACC,KAAK;MAC1C,CAAC,MAAM;QACLF,QAAQ,CAACJ,IAAI,CAAC,GAAGC,UAAU;MAC7B;MAEA,IAAID,IAAI,KAAK,YAAY,EAAE;QACzBI,QAAQ,CAACJ,IAAI,CAAC,GAAGN,eAAe,CAACO,UAAU,CAAC;MAC9C;MAEAE,QAAQ,CAACC,QAAQ,CAAC;IACpB,CAAC;IAAA,IAAAL,gBAAA,CAAAtE,OAAA,kBAEQ,MAAM;MACb,IAAI,CAAC8E,QAAQ,CAAC;QAAEC,UAAU,EAAE;MAAM,CAAC,CAAC;IACtC,CAAC;IAAA,IAAAT,gBAAA,CAAAtE,OAAA,mBAES,MAAM;MACd,IAAI,CAAC8E,QAAQ,CAAC;QAAEC,UAAU,EAAE;MAAK,CAAC,CAAC;IACrC,CAAC;IAAA,IAAAT,gBAAA,CAAAtE,OAAA,yBAEe,MAAM;MACpB,IAAI,CAAC8E,QAAQ,CAAC;QAAEC,UAAU,EAAE;MAAM,CAAC,CAAC;IACtC,CAAC;IAAA,IAAAT,gBAAA,CAAAtE,OAAA,sCAkC4B,MAAM;MACjC,MAAM;QAAEyE;MAAM,CAAC,GAAG,IAAI,CAACJ,KAAK;MAE5B,MAAMW,aAAa,GAAG,CAAC,CAAC;MAExB,IAAIP,KAAK,IAAIA,KAAK,CAACX,UAAU,EAAE;QAC7B,IAAIC,YAAY,GAAG,CAAC,CAAC,CAAC;QACtB;;QAEAU,KAAK,CAACX,UAAU,CAACE,OAAO,CAACR,KAAK,EAAE,MAAM;UACpCwB,aAAa,CAAC,IAAIjB,YAAY,EAAE,EAAE,CAAC,GAAG;YACpCc,KAAK,EAAE;UACT,CAAC;QACH,CAAC,CAAC;MACJ;MAEA,IAAI,CAAC,IAAAI,iBAAO,EAACD,aAAa,EAAE,IAAI,CAACE,KAAK,CAACF,aAAa,CAAC,EAAE;QACrD,IAAI,CAACF,QAAQ,CACX;UACEE;QACF,CAAC,EACD,MAAM;UACJ,IAAI,IAAI,CAACG,IAAI,IAAI7E,MAAM,CAAC8E,IAAI,CAACJ,aAAa,CAAC,CAACK,MAAM,EAAE;YAClD/E,MAAM,CAAC8E,IAAI,CAACJ,aAAa,CAAC,CAACM,OAAO,CAAC,CAACC,UAAU,EAAEC,GAAG,KAAK;cACtD,MAAMC,EAAE,GAAG,IAAI,CAACN,IAAI,CAACO,aAAa,CAAC,IAAIH,UAAU,EAAE,CAAC;cACpD,MAAMI,OAAO,GAAG,IAAI,CAACR,IAAI,CAACO,aAAa,CAAC,IAAIH,UAAU,OAAO,CAAC;cAE9D,IAAIE,EAAE,EAAE;gBACN;gBACA,IAAIG,EAAE,GAAGC,kBAAS,CAACC,YAAY,CAAC,CAAC,CAAC;gBAClC;gBACA;gBACAF,EAAE,CAACG,UAAU,CAACN,EAAE,CAAC;gBACjBE,OAAO,CAACtC,WAAW,GAAG,IAAImC,GAAG,GAAG,CAAC,EAAE;cACrC;YACF,CAAC,CAAC;UACJ;QACF,CACF,CAAC;MACH;IACF,CAAC;IAAA,IAAAlB,gBAAA,CAAAtE,OAAA,yBAEe,MAAM;MACpB,MAAM;QAAEyE,KAAK;QAAEC;MAAS,CAAC,GAAG,IAAI,CAACL,KAAK;MACtC,MAAM;QAAE2B;MAAkB,CAAC,GAAG,IAAI,CAACd,KAAK;MACxC,MAAMP,QAAQ,GAAG;QAAE,GAAGF;MAAM,CAAC;MAE7B,IAAIwB,UAAU,GAAGD,iBAAiB;MAElC,OAAOvB,KAAK,CAACyB,SAAS,CAACC,IAAI,CAAEC,QAAQ,IAAKA,QAAQ,CAAChD,EAAE,KAAK6C,UAAU,CAAC,EAAE;QACrEA,UAAU,EAAE;MACd;MAEA,MAAMG,QAAQ,GAAG;QACfhD,EAAE,EAAE6C,UAAU;QACdI,UAAU,EAAE,SAAS;QACrBC,MAAM,EAAE,EAAE;QACVC,UAAU,EAAE,CAAC;MACf,CAAC;MAED5B,QAAQ,CAACuB,SAAS,GAAGvB,QAAQ,CAACuB,SAAS,CAACM,MAAM,CAACJ,QAAQ,CAAC;MACxD1B,QAAQ,CAACC,QAAQ,CAAC;MAElB,IAAI,CAACG,QAAQ,CAAC;QACZkB,iBAAiB,EAAEI,QAAQ,CAAChD;MAC9B,CAAC,CAAC;IACJ,CAAC;IAAA,IAAAkB,gBAAA,CAAAtE,OAAA,4BAEkB,CAACoG,QAAQ,EAAEK,KAAK,KAAK;MACtC,MAAM;QAAEhC,KAAK;QAAEC;MAAS,CAAC,GAAG,IAAI,CAACL,KAAK;MACtC,MAAMM,QAAQ,GAAG;QAAE,GAAGF;MAAM,CAAC;MAE7BE,QAAQ,CAACuB,SAAS,CAACO,KAAK,CAAC,GAAGL,QAAQ;MACpC1B,QAAQ,CAACC,QAAQ,CAAC;IACpB,CAAC;IA3JC,MAAMK,cAAa,GAAG,CAAC,CAAC;IAExB,IAAIX,KAAK,CAACI,KAAK,IAAIJ,KAAK,CAACI,KAAK,CAACX,UAAU,EAAE;MACzC,IAAIC,YAAY,GAAG,CAAC,CAAC,CAAC;MACtB;;MAEAM,KAAK,CAACI,KAAK,CAACX,UAAU,CAACE,OAAO,CAACR,KAAK,EAAE,MAAM;QAC1CwB,cAAa,CAAC,IAAIjB,YAAY,EAAE,EAAE,CAAC,GAAG;UACpCc,KAAK,EAAE;QACT,CAAC;MACH,CAAC,CAAC;IACJ;IAEA,IAAI,CAACK,KAAK,GAAG;MACXH,UAAU,EAAE,KAAK;MACjBC,aAAa,EAAbA,cAAa;MACbgB,iBAAiB,EAAE1F,MAAM,CAAC8E,IAAI,CAACJ,cAAa,CAAC,CAACK;IAChD,CAAC;EACH;EA+BAqB,yBAAyBA,CAAA,EAAG;IAC1B,IAAI,OAAOC,MAAM,KAAK,WAAW,EAAE;MACjC;MACA,IAAIf,EAAE,GAAGC,kBAAS,CAACC,YAAY,CAAC,CAAC,CAAC;MAElC,IAAI,CAACrF,UAAU,EAAE;QACfmF,EAAE,CAACgB,aAAa,CAAC,aAAa,EAAGC,IAAI,IAAK;UACxC,MAAMC,UAAU,GAAGpG,kBAAkB,CAAC,CAAC;UACvC,MAAMqG,kBAAkB,GAAG,eAAe,IAAAC,mBAAE,EAACF,UAAU,CAACnG,cAAc,EAAEmG,UAAU,CAAClG,qBAAqB,CAAC;AACnH,8BAA8B,IAAAoG,mBAAE,EAACF,UAAU,CAACjG,aAAa,EAAEiG,UAAU,CAAChG,oBAAoB,CAAC,SAAS+F,IAAI;AACxG,qBAAqB;UAEX,OAAO;YACLI,UAAU,EAAEF,kBAAkB;YAC9BG,IAAI,EAAEA,CAAA,KAAM,MAAM;YAClBC,KAAK,EAAEA,CAAA,KAAM,wBAAwBN,IAAI;UAC3C,CAAC;QACH,CAAC,CAAC;QAEFpG,UAAU,GAAG,IAAI;MACnB;IACF;EACF;EAEA2G,iBAAiBA,CAAA,EAAG;IAClB,IAAI,CAACC,0BAA0B,CAAC,CAAC;EACnC;EAEAC,kBAAkBA,CAAA,EAAG;IACnB,IAAI,CAACD,0BAA0B,CAAC,CAAC;EACnC;EA8EAE,MAAMA,CAAA,EAAG;IACP,MAAM;MACJ9C,KAAK;MACL+C,YAAY;MACZC,kBAAkB;MAClBC,aAAa;MACbC,aAAa;MACbC,gBAAgB;MAChBC;IACF,CAAC,GAAG,IAAI,CAACxD,KAAK;IACd,MAAM;MAAEU;IAAW,CAAC,GAAG,IAAI,CAACG,KAAK;IACjC,MAAM;MACJ4C,MAAM;MACNhE,UAAU;MACViE,cAAc;MACdC,oBAAoB,GAAG,GAAG;MAC1B9B,SAAS;MACT+B,YAAY;MACZC,SAAS;MACTC,iBAAiB;MACjBC,MAAM,GAAG,CAAC;IACZ,CAAC,GAAG3D,KAAK;IACT,MAAM;MACJ4D,sBAAsB,GAAG,CAAC,CAAC;MAC3BH,SAAS,EAAEI,UAAU,GAAG,CAAC,CAAC;MAC1BR,MAAM,EAAES,OAAO,GAAG,CAAC,CAAC;MACpBC,WAAW,EAAEC,YAAY,GAAG,CAAC,CAAC;MAC9BC,kBAAkB,EAAEC,mBAAmB,GAAG,CAAC,CAAC;MAC5CC,gBAAgB;MAChBC,aAAa,GAAG,CAAC,CAAC;MAClBC,cAAc,GAAG,CAAC,CAAC;MACnBC,aAAa,GAAG,CAAC;IACnB,CAAC,GAAGrB,aAAa,IAAI,CAAC,CAAC;IACvB,MAAMsB,iBAAiB,GAAG,IAAAC,gCAAyB,EAACvB,aAAa,EAAEjD,KAAK,CAAC;IACzE,MAAM;MAAEqD,MAAM,EAAEoB,WAAW;MAAEhB,SAAS,EAAEiB,cAAc;MAAEC,eAAe;MAAEC;IAAmB,CAAC,GAAGjB,MAAM;IAEtG,MAAMkB,oBAAoB,GAAGT,aAAa,IAAIA,aAAa,CAACf,MAAM;IAClE,MAAMyB,qBAAqB,GAAGT,cAAc,IAAIA,cAAc,CAAChB,MAAM;IAErE,MAAMhB,UAAU,GAAG;MACjB0C,MAAM,EAAE;IACV,CAAC;IAED,MAAMC,cAAc,GAAGxB,YAAY,KAAKyB,oBAAa,CAACC,QAAQ,GAAGzD,SAAS,GAAGA,SAAS,CAAC0D,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IAElG,MAAMC,iBAAiB,gBACrB1L,KAAA,CAAAgF,aAAA,CAAChB,aAAa;MACZ2H,oBAAoB;MACpBC,oBAAoB;MACpBC,SAAS,EAAE,OAAQ;MACnBC,KAAK,EAAEjB;IAAkB,gBAEzB7K,KAAA,CAAAgF,aAAA,CAAC/D,KAAA,CAAAY,OAAI;MAACqB,QAAQ,EAAE,OAAQ;MAACmB,KAAK,EAAE,SAAU;MAACU,KAAK,EAAE;QAAEgH,UAAU,EAAE;MAAM;IAAE,CAAE,CAC7D,CAChB;IAED,oBACE/L,KAAA,CAAAgF,aAAA,CAACpC,SAAS;MAACoJ,GAAG,EAAG1K,CAAC,IAAM,IAAI,CAAC0F,IAAI,GAAG1F,CAAC,IAAI,IAAI,CAAC0F;IAAM,GACjDwC,aAAa,iBACZxJ,KAAA,CAAAgF,aAAA,CAACN,YAAY;MAACuH,KAAK,EAAE7B,OAAO,CAAC6B;IAAM,gBACjCjM,KAAA,CAAAgF,aAAA,CAAC1E,mBAAA,CAAAuB,OAAY;MACXqK,OAAO,EAAE,IAAI,CAACC,aAAc;MAC5BC,MAAM,EAAEzC,MAAM,IAAI,EAAG;MACrBpD,QAAQ,EAAE,IAAI,CAACA,QAAQ,CAAC,QAAQ,CAAE;MAClC8C,YAAY,EAAEA,YAAa;MAC3BgD,QAAQ,EAAE,KAAM;MAChB9H,KAAK,EAAEwG,WAAY;MACnBrB,WAAW,EAAEA,WAAY;MACzB4C,WAAW,EAAE,IAAAC,qBAAc,EAACnC,OAAO,EAAEoC,kBAAkB,EAAEtC,sBAAsB,CAAE;MACjFuC,UAAU,EAAEzC,iBAAkB;MAC9BU,aAAa,EAAES,oBAAqB;MACpCR,cAAc,EAAES,qBAAsB;MACtC9B,kBAAkB,EAAEA,kBAAmB;MACvCoD,uBAAuB,EAAE,CAAC;QAAEC,QAAQ,EAAE;MAAU,CAAC,EAAE;QAAEA,QAAQ,EAAE;MAAU,CAAC,CAAE;MAC5E/B,aAAa,EAAEA;IAAc,CAC9B,CAAC,EACDG,WAAW,iBAAI/K,KAAA,CAAAgF,aAAA,CAACZ,SAAS,QAAE2G,WAAuB,CACvC,CACf,EAEAjB,YAAY,KAAKyB,oBAAa,CAACC,QAAQ,iBACtCxL,KAAA,CAAAgF,aAAA,CAACL,gBAAgB,qBACf3E,KAAA,CAAAgF,aAAA,CAAC5B,aAAa;MAAC2B,KAAK,EAAE;QAAEzB,cAAc,EAAE;MAAa;IAAE,gBACrDtD,KAAA,CAAAgF,aAAA,CAAC7B,KAAK,QAAC,iBAAsB,CAAC,EAC7BuI,iBACY,CAAC,eAEhB1L,KAAA,CAAAgF,aAAA,CAACzB,eAAe;MACdqJ,GAAG,EAAC,oBAAoB;MACxBX,KAAK,EAAC;IAAmC,gBAEzCjM,KAAA,CAAAgF,aAAA,CAACtE,OAAA,CAAAmB,OAAM;MACL0E,QAAQ,EAAE,IAAI,CAACA,QAAQ,CAAC,sBAAsB,CAAE;MAChDG,KAAK,EAAEmD,oBAAqB;MAC5BgD,SAAS,EAAE;QAACC,kBAAkB,EAAE;UAAEC,KAAK,EAAE,GAAG;UAAEC,IAAI,EAAE;QAAI;MAAE;IAAE,gBAE5DhN,KAAA,CAAAgF,aAAA,CAACrE,SAAA,CAAAkB,OAAQ;MAAC6E,KAAK,EAAC;IAAuB,GAAC,iCAAyC,CAAC,eAClF1G,KAAA,CAAAgF,aAAA,CAACrE,SAAA,CAAAkB,OAAQ;MAAC6E,KAAK,EAAC;IAAU,GAAC,oBAA4B,CAAC,eACxD1G,KAAA,CAAAgF,aAAA,CAACrE,SAAA,CAAAkB,OAAQ;MAAC6E,KAAK,EAAC;IAAU,GAAC,oBAA4B,CAAC,eACxD1G,KAAA,CAAAgF,aAAA,CAACrE,SAAA,CAAAkB,OAAQ;MAAC6E,KAAK,EAAC;IAAW,GAAC,qBAA6B,CAAC,eAC1D1G,KAAA,CAAAgF,aAAA,CAACrE,SAAA,CAAAkB,OAAQ;MAAC6E,KAAK,EAAE;IAAE,GAAC,aAAqB,CAAC,eAC1C1G,KAAA,CAAAgF,aAAA,CAACrE,SAAA,CAAAkB,OAAQ;MAAC6E,KAAK,EAAE;IAAE,GAAC,aAAqB,CAAC,eAC1C1G,KAAA,CAAAgF,aAAA,CAACrE,SAAA,CAAAkB,OAAQ;MAAC6E,KAAK,EAAE;IAAE,GAAC,aAAqB,CAAC,eAC1C1G,KAAA,CAAAgF,aAAA,CAACrE,SAAA,CAAAkB,OAAQ;MAAC6E,KAAK,EAAE;IAAE,GAAC,cAAsB,CAAC,eAC3C1G,KAAA,CAAAgF,aAAA,CAACrE,SAAA,CAAAkB,OAAQ;MAAC6E,KAAK,EAAE;IAAW,GAAC,UAAkB,CAAC,eAChD1G,KAAA,CAAAgF,aAAA,CAACrE,SAAA,CAAAkB,OAAQ;MAAC6E,KAAK,EAAE;IAAmB,GAAC,kBAA0B,CAAC,eAChE1G,KAAA,CAAAgF,aAAA,CAACrE,SAAA,CAAAkB,OAAQ;MAAC6E,KAAK,EAAE;IAAa,GAAC,YAAoB,CAAC,eACpD1G,KAAA,CAAAgF,aAAA,CAACrE,SAAA,CAAAkB,OAAQ;MAAC6E,KAAK,EAAE;IAAiB,GAAC,gBAAwB,CACrD,CACO,CAAC,eAElB1G,KAAA,CAAAgF,aAAA,CAACjB,gBAAgB;MAAC6I,GAAG,EAAC;IAAgB,gBACpC5M,KAAA,CAAAgF,aAAA,CAAChC,aAAa,QAAC,mBAAgC,CAAC,eAChDhD,KAAA,CAAAgF,aAAA,CAACnE,YAAA,CAAAoM,WAAW;MACVtE,UAAU,EAAEA,UAAW;MACvBuE,gBAAgB;MAChBC,UAAU,EAAEtD,oBAAqB;MACjCuD,gBAAgB;MAChBxG,UAAU,EAAEA,UAAW;MACvBoC,KAAK,EAAEtD,gBAAgB,CAACC,UAAU,CAAC,IAAI,EAAG;MAC1CY,QAAQ,EAAE,IAAI,CAACA,QAAQ,CAAC,YAAY,CAAE;MACtC2F,OAAO,EAAE,IAAI,CAACA,OAAQ;MACtBmB,MAAM,EAAE,IAAI,CAACA,MAAO;MACpB5C,gBAAgB,EAAEA,gBAAiB;MACnClG,KAAK,EAAE2G;IAAmB,CAC3B,CACe,CAAC,EAElBA,kBAAkB,iBAAIlL,KAAA,CAAAgF,aAAA,CAACZ,SAAS,QAAE8G,kBAA8B,CACjD,CACnB,eAEDlL,KAAA,CAAAgF,aAAA,CAAC5B,aAAa;MAAC2B,KAAK,EAAE;QAAEzB,cAAc,EAAE;MAAa;IAAE,gBACrDtD,KAAA,CAAAgF,aAAA,CAAC7B,KAAK,QAAC,yBAA8B,CAAC,EACrC2G,YAAY,KAAKyB,oBAAa,CAAC+B,MAAM,GAAG5B,iBAAiB,GAAG,IAChD,CAAC,eAEhB1L,KAAA,CAAAgF,aAAA,CAACzB,eAAe;MAAC0I,KAAK,EAAC;IAAiB,gBACtCjM,KAAA,CAAAgF,aAAA,CAACtE,OAAA,CAAAmB,OAAM;MAAC0E,QAAQ,EAAE,IAAI,CAACA,QAAQ,CAAC,gBAAgB,CAAE;MAACG,KAAK,EAAEkD,cAAe;MAACiD,SAAS,EAAE;QAACC,kBAAkB,EAAE;UAAEC,KAAK,EAAE,GAAG;UAAEC,IAAI,EAAE;QAAI;MAAE;IAAE,gBACpIhN,KAAA,CAAAgF,aAAA,CAACrE,SAAA,CAAAkB,OAAQ;MAAC6E,KAAK,EAAC;IAAuB,GAAC,iCAAyC,CAAC,eAClF1G,KAAA,CAAAgF,aAAA,CAACrE,SAAA,CAAAkB,OAAQ;MAAC6E,KAAK,EAAC;IAAU,GAAC,oBAA4B,CAAC,eACxD1G,KAAA,CAAAgF,aAAA,CAACrE,SAAA,CAAAkB,OAAQ;MAAC6E,KAAK,EAAC;IAAU,GAAC,oBAA4B,CAAC,eACxD1G,KAAA,CAAAgF,aAAA,CAACrE,SAAA,CAAAkB,OAAQ;MAAC6E,KAAK,EAAC;IAAW,GAAC,qBAA6B,CAAC,eAC1D1G,KAAA,CAAAgF,aAAA,CAACrE,SAAA,CAAAkB,OAAQ;MAAC6E,KAAK,EAAE;IAAE,GAAC,aAAqB,CAAC,eAC1C1G,KAAA,CAAAgF,aAAA,CAACrE,SAAA,CAAAkB,OAAQ;MAAC6E,KAAK,EAAE;IAAE,GAAC,aAAqB,CAAC,eAC1C1G,KAAA,CAAAgF,aAAA,CAACrE,SAAA,CAAAkB,OAAQ;MAAC6E,KAAK,EAAE;IAAE,GAAC,aAAqB,CAAC,eAC1C1G,KAAA,CAAAgF,aAAA,CAACrE,SAAA,CAAAkB,OAAQ;MAAC6E,KAAK,EAAE;IAAE,GAAC,cAAsB,CAAC,eAC3C1G,KAAA,CAAAgF,aAAA,CAACrE,SAAA,CAAAkB,OAAQ;MAAC6E,KAAK,EAAE;IAAW,GAAC,UAAkB,CAAC,eAChD1G,KAAA,CAAAgF,aAAA,CAACrE,SAAA,CAAAkB,OAAQ;MAAC6E,KAAK,EAAE;IAAmB,GAAC,kBAA0B,CAAC,eAChE1G,KAAA,CAAAgF,aAAA,CAACrE,SAAA,CAAAkB,OAAQ;MAAC6E,KAAK,EAAE;IAAa,GAAC,YAAoB,CAAC,eACpD1G,KAAA,CAAAgF,aAAA,CAACrE,SAAA,CAAAkB,OAAQ;MAAC6E,KAAK,EAAE;IAAiB,GAAC,gBAAwB,CACrD,CACO,CAAC,EAEjB4E,cAAc,CAACiC,GAAG,CAAC,CAACtF,QAAQ,EAAEZ,GAAG,kBAChCrH,KAAA,CAAAgF,aAAA,CAACpE,SAAA,CAAAiB,OAAQ;MACP+K,GAAG,EAAE3E,QAAQ,CAAChD,EAAG;MACjBuI,IAAI,EAAE5D,cAAe;MACrB3B,QAAQ,EAAEA,QAAS;MACnBwF,eAAe,EAAE3D,YAAY,KAAKyB,oBAAa,CAAC+B,MAAO;MACvDI,gBAAgB,EAAE,IAAI,CAACA,gBAAiB;MACxCpF,KAAK,EAAEjB,GAAI;MACXiD,YAAY,EAAEA,YAAa;MAC3BE,mBAAmB,EAAEA,mBAAoB;MACzCjG,KAAK,EAAE0G,eAAe,IAAIA,eAAe,CAAC5D,GAAG;IAAE,CAChD,CACF,CAAC,EAEDoC,gBAAgB,iBACfzJ,KAAA,CAAAgF,aAAA,CAACN,YAAY;MAACuH,KAAK,EAAE9B,UAAU,CAAC8B;IAAM,gBACpCjM,KAAA,CAAAgF,aAAA,CAAC1E,mBAAA,CAAAuB,OAAY;MACXuK,MAAM,EAAErC,SAAS,IAAI,EAAG;MACxBxD,QAAQ,EAAE,IAAI,CAACA,QAAQ,CAAC,WAAW,CAAE;MACrC8C,YAAY,EAAEA,YAAa;MAC3BgD,QAAQ,EAAE,KAAM;MAChB9H,KAAK,EAAEyG,cAAe;MACtBtB,WAAW,EAAEA,WAAY;MACzB4C,WAAW,EAAE,IAAAC,qBAAc,EAACpC,UAAU,EAAEqC,kBAAkB,EAAE;QAC1D,GAAGtC,sBAAsB;QACzByD,IAAI,EAAE;UACJC,oBAAoB,EAAE;QACxB;MACF,CAAC,CAAE;MACHnB,UAAU,EAAEzC,iBAAkB;MAC9BU,aAAa,EAAGA,aAAa,IAAIA,aAAa,CAACX,SAAS,IAAKoB,oBAAqB;MAClFR,cAAc,EAAGA,cAAc,IAAIA,cAAc,CAACZ,SAAS,IAAKqB,qBAAsB;MACtF9B,kBAAkB,EAAEA,kBAAmB;MACvCoD,uBAAuB,EAAE,CAAC;QAAEC,QAAQ,EAAE;MAAU,CAAC,EAAE;QAAEA,QAAQ,EAAE;MAAU,CAAC,CAAE;MAC5E/B,aAAa,EAAEA;IAAc,CAC9B,CAAC,EACDI,cAAc,iBAAIhL,KAAA,CAAAgF,aAAA,CAACZ,SAAS,QAAE4G,cAA0B,CAC7C,CAEP,CAAC;EAEhB;AACF;AAAC,IAAA7E,gBAAA,CAAAtE,OAAA,EAhXKkE,kBAAkB,eACH;EACjBO,KAAK,EAAEuH,kBAAS,CAACC,MAAM,CAACC,UAAU;EAClC1E,YAAY,EAAEwE,kBAAS,CAACC,MAAM;EAC9BxE,kBAAkB,EAAEuE,kBAAS,CAACC,MAAM;EACpCvE,aAAa,EAAEsE,kBAAS,CAACC,MAAM;EAC/BvH,QAAQ,EAAEsH,kBAAS,CAACG,IAAI,CAACD,UAAU;EACnCvE,aAAa,EAAEqE,kBAAS,CAACI,IAAI;EAC7BxE,gBAAgB,EAAEoE,kBAAS,CAACI,IAAI;EAChCvE,WAAW,EAAEmE,kBAAS,CAACC;AACzB,CAAC;AAAA,IAAAI,QAAA,GAAAC,OAAA,CAAAtM,OAAA,GAwWYkE,kBAAkB","ignoreList":[]}
1
+ {"version":3,"file":"general-config-block.js","names":["React","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_classnames","_editableHtmlTipTap","_configUi","_styles","_InputLabel","_Select","_MenuItem","_response","_mathToolbar","_lodashEs","_utils","_mathquill","_Info","_Tooltip","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","registered","getBlockClassNames","blockContainer","blockContainerGeneric","blockResponse","blockResponseGeneric","Container","styled","display","flexDirection","TemplateTitle","InputLabel","fontSize","Title","FlexContainer","alignItems","justifyContent","SelectContainer","InputContainer","theme","flex","width","marginTop","spacing","marginBottom","ResponseTemplate","StyledTooltip","Tooltip","typography","whiteSpace","ErrorText","color","palette","error","main","paddingTop","PromptHolder","AdvancedResponse","document","styleId","getElementById","style","createElement","id","textContent","head","appendChild","REGEX","TEMPORARY_RESPONSE_FIELD","ANSWER_BLOCK_REGEX","NEWLINE_BLOCK","NEWLINE_LATEX","prepareForStatic","expression","answerBlocks","replace","prepareForModel","GeneralConfigBlock","Component","constructor","props","_defineProperty2","name","evtOrValue","model","onChange","newModel","target","value","setState","showKeypad","responseAreas","isEqual","state","root","keys","length","forEach","responseId","idx","el","querySelector","indexEl","MQ","MathQuill","getInterface","StaticMath","responseIdCounter","newCounter","responses","find","response","validation","answer","alternates","concat","index","UNSAFE_componentWillMount","window","registerEmbed","data","classNames","genericAnswerBlock","cx","htmlString","text","latex","componentDidMount","handleAnswerBlockDomUpdate","componentDidUpdate","render","imageSupport","uploadSoundSupport","configuration","promptEnabled","rationaleEnabled","toolbarOpts","prompt","equationEditor","promptEquationEditor","responseType","rationale","spellCheckEnabled","errors","baseInputConfiguration","cRationale","cPrompt","ignoreOrder","cIgnoreOrder","allowTrailingZeros","cAllowTrailingZeros","maxResponseAreas","maxImageWidth","maxImageHeight","mathMlOptions","validationMessage","generateValidationMessage","promptError","rationaleError","responsesErrors","responseAreasError","defaultImageMaxWidth","defaultImageMaxHeight","editor","responsesToUse","ResponseTypes","advanced","slice","validationTooltip","disableFocusListener","disableTouchListener","placement","title","marginLeft","ref","label","onFocus","onPromptFocus","markup","nonEmpty","pluginProps","getPluginProps","inputConfiguration","spellCheck","languageCharactersProps","language","key","MenuProps","transitionDuration","enter","exit","MathToolbar","allowAnswerBlock","keypadMode","controlledKeypad","onDone","simple","map","mode","defaultResponse","onResponseChange","math","controlledKeypadMode","PropTypes","object","isRequired","func","bool","_default","exports"],"sources":["../src/general-config-block.jsx"],"sourcesContent":["import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport EditableHtml from '@pie-lib/editable-html-tip-tap';\nimport { InputContainer } from '@pie-lib/config-ui';\nimport { styled } from '@mui/material/styles';\nimport InputLabel from '@mui/material/InputLabel';\nimport Select from '@mui/material/Select';\nimport MenuItem from '@mui/material/MenuItem';\nimport Response from './response';\nimport { MathToolbar } from '@pie-lib/math-toolbar';\nimport { isEqual } from 'lodash-es';\nimport { ResponseTypes, generateValidationMessage, getPluginProps } from './utils';\nimport MathQuill from '@pie-framework/mathquill';\nimport Info from '@mui/icons-material/Info';\nimport Tooltip from '@mui/material/Tooltip';\n\nlet registered = false;\n\n// Helper function to get class names for HTML string generation\nconst getBlockClassNames = () => {\n // These will be generated by styled components, but we need them as strings for HTML\n // We'll use a simple approach: generate unique class names\n return {\n blockContainer: 'block-container',\n blockContainerGeneric: 'block-container-generic',\n blockResponse: 'block-response',\n blockResponseGeneric: 'block-response-generic',\n };\n};\n\nconst Container = styled('div')({\n display: 'flex',\n flexDirection: 'column',\n});\n\nconst TemplateTitle = styled(InputLabel)({\n fontSize: '0.85rem',\n});\n\nconst Title = styled('div')({\n fontSize: '1.1rem',\n});\n\nconst FlexContainer = styled('div')({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n});\n\nconst SelectContainer = styled(InputContainer)(({ theme }) => ({\n flex: 'initial',\n width: '40%',\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n '& > *:not(label)': {\n marginTop: theme.spacing(1),\n },\n}));\n\nconst ResponseTemplate = styled('div')({\n display: 'flex',\n flexDirection: 'column',\n});\n\nconst StyledTooltip = styled(Tooltip)(({ theme }) => ({\n '& .MuiTooltip-tooltip': {\n fontSize: theme.typography.fontSize - 2,\n whiteSpace: 'pre-wrap',\n },\n}));\n\nconst ErrorText = styled('div')(({ theme }) => ({\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing(1),\n}));\n\nconst PromptHolder = styled(InputContainer)(({ theme }) => ({\n width: '100%',\n paddingTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n}));\n\nconst AdvancedResponse = styled('div')(({ theme }) => ({\n marginBottom: theme.spacing(2.5),\n}));\n\n// CSS for block classes used in HTML string generation\n// These need to be injected as global styles since they're used in dynamically generated HTML\nif (typeof document !== 'undefined') {\n const styleId = 'math-inline-block-styles';\n if (!document.getElementById(styleId)) {\n const style = document.createElement('style');\n style.id = styleId;\n style.textContent = `\n .block-container {\n margin: 8px;\n display: inline-flex;\n border: 2px solid grey;\n }\n .block-container-generic {\n margin: 4px;\n }\n .block-response {\n flex: 2;\n color: grey;\n background: #f5f5f5;\n font-size: 0.8rem;\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-right: 2px solid grey;\n }\n .block-response-generic {\n border-right: 0;\n }\n .response-editor {\n display: flex;\n justify-content: center;\n width: 100%;\n max-width: inherit;\n height: auto;\n min-height: 130px;\n text-align: left;\n padding: 8px;\n }\n `;\n document.head.appendChild(style);\n }\n}\n\nconst REGEX = /{{response}}/gm;\nconst TEMPORARY_RESPONSE_FIELD = /\\\\%response\\\\%/gm;\nconst ANSWER_BLOCK_REGEX = /\\\\embed\\{answerBlock\\}\\[r\\d*\\]/g;\nconst NEWLINE_BLOCK = /\\\\embed\\{newLine\\}\\[\\]/g;\nconst NEWLINE_LATEX = /\\\\newline/g;\n\nfunction prepareForStatic(expression) {\n if (expression) {\n let answerBlocks = 1; // assume one at least\n\n return expression\n .replace(REGEX, () => `\\\\embed{answerBlock}[r${answerBlocks++}]`)\n .replace(NEWLINE_LATEX, '\\\\embed{newLine}[]');\n }\n}\n\nfunction prepareForModel(expression) {\n if (expression) {\n return expression\n .replace(ANSWER_BLOCK_REGEX, () => '{{response}}')\n .replace(TEMPORARY_RESPONSE_FIELD, () => '{{response}}')\n .replace(NEWLINE_BLOCK, () => '\\\\newline');\n }\n}\n\nclass GeneralConfigBlock extends React.Component {\n static propTypes = {\n model: PropTypes.object.isRequired,\n imageSupport: PropTypes.object,\n uploadSoundSupport: PropTypes.object,\n configuration: PropTypes.object,\n onChange: PropTypes.func.isRequired,\n promptEnabled: PropTypes.bool,\n rationaleEnabled: PropTypes.bool,\n toolbarOpts: PropTypes.object,\n };\n\n constructor(props) {\n super(props);\n\n const responseAreas = {};\n\n if (props.model && props.model.expression) {\n let answerBlocks = 1; // assume one at least\n // build out local state model using responses declared in expression\n\n props.model.expression.replace(REGEX, () => {\n responseAreas[`r${answerBlocks++}`] = {\n value: '',\n };\n });\n }\n\n this.state = {\n showKeypad: false,\n responseAreas,\n responseIdCounter: Object.keys(responseAreas).length,\n };\n }\n\n onChange = (name) => (evtOrValue) => {\n const { model, onChange } = this.props;\n const newModel = { ...model };\n\n if (typeof evtOrValue === 'object') {\n newModel[name] = evtOrValue.target.value;\n } else {\n newModel[name] = evtOrValue;\n }\n\n if (name === 'expression') {\n newModel[name] = prepareForModel(evtOrValue);\n }\n\n onChange(newModel);\n };\n\n onDone = () => {\n this.setState({ showKeypad: false });\n };\n\n onFocus = () => {\n this.setState({ showKeypad: true });\n };\n\n onPromptFocus = () => {\n this.setState({ showKeypad: false });\n };\n\n UNSAFE_componentWillMount() {\n if (typeof window !== 'undefined') {\n // const MathQuill = require('@pie-framework/mathquill');\n let MQ = MathQuill.getInterface(3);\n\n if (!registered) {\n MQ.registerEmbed('answerBlock', (data) => {\n const classNames = getBlockClassNames();\n const genericAnswerBlock = `<div class=\"${cx(classNames.blockContainer, classNames.blockContainerGeneric)}\">\n <div class=\"${cx(classNames.blockResponse, classNames.blockResponseGeneric)}\" id=\"${data}Index\">Response</div>\n </div>`;\n\n return {\n htmlString: genericAnswerBlock,\n text: () => 'text',\n latex: () => `\\\\embed{answerBlock}[${data}]`,\n };\n });\n\n registered = true;\n }\n }\n }\n\n componentDidMount() {\n this.handleAnswerBlockDomUpdate();\n }\n\n componentDidUpdate() {\n this.handleAnswerBlockDomUpdate();\n }\n\n handleAnswerBlockDomUpdate = () => {\n const { model } = this.props;\n\n const responseAreas = {};\n\n if (model && model.expression) {\n let answerBlocks = 1; // assume one at least\n // build out local state model using responses declared in expression\n\n model.expression.replace(REGEX, () => {\n responseAreas[`r${answerBlocks++}`] = {\n value: '',\n };\n });\n }\n\n if (!isEqual(responseAreas, this.state.responseAreas)) {\n this.setState(\n {\n responseAreas,\n },\n () => {\n if (this.root && Object.keys(responseAreas).length) {\n Object.keys(responseAreas).forEach((responseId, idx) => {\n const el = this.root.querySelector(`#${responseId}`);\n const indexEl = this.root.querySelector(`#${responseId}Index`);\n\n if (el) {\n // const MathQuill = require('@pie-framework/mathquill');\n let MQ = MathQuill.getInterface(3);\n // We no longer have individual answers, so we cannot set text content of blocks\n // el.textContent = response.answer;\n MQ.StaticMath(el);\n indexEl.textContent = `R${idx + 1}`;\n }\n });\n }\n },\n );\n }\n };\n\n onAddResponse = () => {\n const { model, onChange } = this.props;\n const { responseIdCounter } = this.state;\n const newModel = { ...model };\n\n let newCounter = responseIdCounter;\n\n while (model.responses.find((response) => response.id === newCounter)) {\n newCounter++;\n }\n\n const response = {\n id: newCounter,\n validation: 'literal',\n answer: '',\n alternates: {},\n };\n\n newModel.responses = newModel.responses.concat(response);\n onChange(newModel);\n\n this.setState({\n responseIdCounter: response.id,\n });\n };\n\n onResponseChange = (response, index) => {\n const { model, onChange } = this.props;\n const newModel = { ...model };\n\n newModel.responses[index] = response;\n onChange(newModel);\n };\n\n render() {\n const {\n model,\n imageSupport,\n uploadSoundSupport,\n configuration,\n promptEnabled,\n rationaleEnabled,\n toolbarOpts,\n } = this.props;\n const { showKeypad } = this.state;\n const {\n prompt,\n expression,\n equationEditor,\n promptEquationEditor = '8',\n responses,\n responseType,\n rationale,\n spellCheckEnabled,\n errors = {},\n } = model;\n const {\n baseInputConfiguration = {},\n rationale: cRationale = {},\n prompt: cPrompt = {},\n ignoreOrder: cIgnoreOrder = {},\n allowTrailingZeros: cAllowTrailingZeros = {},\n maxResponseAreas,\n maxImageWidth = {},\n maxImageHeight = {},\n mathMlOptions = {},\n } = configuration || {};\n const validationMessage = generateValidationMessage(configuration, model);\n const { prompt: promptError, rationale: rationaleError, responsesErrors, responseAreasError } = errors;\n\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n\n const classNames = {\n editor: 'response-editor',\n };\n\n const responsesToUse = responseType === ResponseTypes.advanced ? responses : responses.slice(0, 1);\n\n const validationTooltip = (\n <StyledTooltip\n disableFocusListener\n disableTouchListener\n placement={'right'}\n title={validationMessage}\n >\n <Info fontSize={'small'} color={'primary'} style={{ marginLeft: '5px' }} />\n </StyledTooltip>\n );\n\n return (\n <Container ref={(r) => (this.root = r || this.root)}>\n {promptEnabled && (\n <PromptHolder label={cPrompt.label}>\n <EditableHtml\n onFocus={this.onPromptFocus}\n markup={prompt || ''}\n onChange={this.onChange('prompt')}\n imageSupport={imageSupport}\n nonEmpty={false}\n error={promptError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(cPrompt?.inputConfiguration, baseInputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={defaultImageMaxWidth}\n maxImageHeight={defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {promptError && <ErrorText>{promptError}</ErrorText>}\n </PromptHolder>\n )}\n\n {responseType === ResponseTypes.advanced && (\n <AdvancedResponse>\n <FlexContainer style={{ justifyContent: 'flex-start' }}>\n <Title>Define Response</Title>\n {validationTooltip}\n </FlexContainer>\n\n <SelectContainer\n key=\"templateEditorType\"\n label=\"Response Template Equation Editor\"\n >\n <Select\n onChange={this.onChange('promptEquationEditor')}\n value={promptEquationEditor}\n MenuProps={{transitionDuration: { enter: 225, exit: 195 } }}\n >\n <MenuItem value=\"non-negative-integers\">Numeric - Non-Negative Integers</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'}>Advanced Algebra</MenuItem>\n <MenuItem value={'statistics'}>Statistics</MenuItem>\n <MenuItem value={'item-authoring'}>Item Authoring</MenuItem>\n </Select>\n </SelectContainer>\n\n <ResponseTemplate key=\"templateHolder\">\n <TemplateTitle>RESPONSE TEMPLATE</TemplateTitle>\n <MathToolbar\n classNames={classNames}\n allowAnswerBlock\n keypadMode={promptEquationEditor}\n controlledKeypad\n showKeypad={showKeypad}\n latex={prepareForStatic(expression) || ''}\n onChange={this.onChange('expression')}\n onFocus={this.onFocus}\n onDone={this.onDone}\n maxResponseAreas={maxResponseAreas}\n error={responseAreasError}\n />\n </ResponseTemplate>\n\n {responseAreasError && <ErrorText>{responseAreasError}</ErrorText>}\n </AdvancedResponse>\n )}\n\n <FlexContainer style={{ justifyContent: 'flex-start' }}>\n <Title>Define Correct Response</Title>\n {responseType === ResponseTypes.simple ? validationTooltip : null}\n </FlexContainer>\n\n <SelectContainer label=\"Equation Editor\">\n <Select onChange={this.onChange('equationEditor')} value={equationEditor} MenuProps={{transitionDuration: { enter: 225, exit: 195 } }}>\n <MenuItem value=\"non-negative-integers\">Numeric - Non-Negative Integers</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'}>Advanced Algebra</MenuItem>\n <MenuItem value={'statistics'}>Statistics</MenuItem>\n <MenuItem value={'item-authoring'}>Item Authoring</MenuItem>\n </Select>\n </SelectContainer>\n\n {responsesToUse.map((response, idx) => (\n <Response\n key={response.id}\n mode={equationEditor}\n response={response}\n defaultResponse={responseType === ResponseTypes.simple}\n onResponseChange={this.onResponseChange}\n index={idx}\n cIgnoreOrder={cIgnoreOrder}\n cAllowTrailingZeros={cAllowTrailingZeros}\n error={responsesErrors && responsesErrors[idx]}\n />\n ))}\n\n {rationaleEnabled && (\n <PromptHolder label={cRationale.label}>\n <EditableHtml\n markup={rationale || ''}\n onChange={this.onChange('rationale')}\n imageSupport={imageSupport}\n nonEmpty={false}\n error={rationaleError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(cRationale?.inputConfiguration, {\n ...baseInputConfiguration,\n math: {\n controlledKeypadMode: false,\n },\n })}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.rationale) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rationale) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {rationaleError && <ErrorText>{rationaleError}</ErrorText>}\n </PromptHolder>\n )}\n </Container>\n );\n }\n}\n\nexport default GeneralConfigBlock;\n"],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@pie-element/math-inline-configure",
3
3
  "private": true,
4
- "version": "10.1.2-next.3",
4
+ "version": "10.1.2-next.4",
5
5
  "description": "",
6
6
  "main": "lib/index.js",
7
7
  "module": "src/index.js",
@@ -11,12 +11,12 @@
11
11
  "@emotion/style": "^0.8.0",
12
12
  "@mui/icons-material": "^7.3.4",
13
13
  "@mui/material": "^7.3.4",
14
- "@pie-framework/mathquill": "^1.1.3",
14
+ "@pie-framework/mathquill": "1.2.1-beta.0",
15
15
  "@pie-framework/pie-configure-events": "^1.3.0",
16
- "@pie-lib/config-ui": "12.2.0-next.13",
17
- "@pie-lib/editable-html-tip-tap": "1.2.0-next.13",
16
+ "@pie-lib/config-ui": "12.2.0-next.17",
17
+ "@pie-lib/editable-html-tip-tap": "1.2.0-next.16",
18
18
  "@pie-lib/math-rendering": "4.2.0-next.3",
19
- "@pie-lib/math-toolbar": "2.2.0-next.6",
19
+ "@pie-lib/math-toolbar": "2.2.0-next.9",
20
20
  "@pie-lib/render-ui": "5.2.0-next.4",
21
21
  "@pie-lib/test-utils": "1.2.0-next.3",
22
22
  "classnames": "^2.2.5",
@@ -3,6 +3,16 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [9.2.0-next.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-inline-controller@9.1.1-next.1...@pie-element/math-inline-controller@9.2.0-next.0) (2026-03-18)
7
+
8
+ ### Bug Fixes
9
+
10
+ - tests ([f46f1f9](https://github.com/pie-framework/pie-elements/commit/f46f1f9845ef96bbf7fefbc4f9ffafc48a19f5f6))
11
+
12
+ ### Features
13
+
14
+ - **math-inline:** add scoring trace in outcome function PD-5467 ([1eeafce](https://github.com/pie-framework/pie-elements/commit/1eeafcecc12adb0e2d1f6415a0daf7178e3799c0))
15
+
6
16
  ## [9.1.1-next.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-inline-controller@9.1.0-next.2...@pie-element/math-inline-controller@9.1.1-next.1) (2026-02-26)
7
17
 
8
18
  **Note:** Version bump only for package @pie-element/math-inline-controller
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.createCorrectResponseSession = void 0;
8
8
  exports.createDefaultModel = createDefaultModel;
9
- exports.validate = exports.outcome = exports.normalize = exports.model = void 0;
9
+ exports.validate = exports.outcome = exports.normalize = exports.model = exports.getLogTrace = void 0;
10
10
  var _debug = _interopRequireDefault(require("debug"));
11
11
  var _lodashEs = require("lodash-es");
12
12
  var _feedback = require("@pie-lib/feedback");
@@ -86,23 +86,79 @@ function createDefaultModel(model = {}) {
86
86
  });
87
87
  });
88
88
  }
89
+
90
+ /**
91
+ * Generates detailed trace log for math-inline scoring evaluation
92
+ * @param {Object} question
93
+ * @param {Object} session
94
+ * @param {Object} env
95
+ * @returns {Array<string>} traceLog
96
+ */
97
+ const getLogTrace = (question, session, env) => {
98
+ const traceLog = [];
99
+ if (!session || !session.response && !session.completeAnswer) {
100
+ traceLog.push('Student did not enter a response.');
101
+ return traceLog;
102
+ }
103
+ const responseType = question?.responseType;
104
+ const isAdvanced = responseType === _utils.ResponseTypes.advanced;
105
+ const studentAnswer = isAdvanced ? session.completeAnswer : session.response;
106
+ const cleanStudentAnswer = studentAnswer ? studentAnswer.replace(/\\/g, '') : '';
107
+ if (!cleanStudentAnswer) {
108
+ traceLog.push('Student entered a response, but then it was removed.');
109
+ return traceLog;
110
+ }
111
+ traceLog.push(`Student entered response: ${cleanStudentAnswer}.`);
112
+ traceLog.push(`Response type: ${isAdvanced ? 'advanced' : 'simple'}.`);
113
+ const responses = question.responses || [];
114
+ const responsesToCheck = isAdvanced ? responses : responses.slice(0, 1);
115
+ responsesToCheck.forEach((response, index) => {
116
+ const validation = response.validation || question.validationDefault;
117
+ traceLog.push(`Response ${index + 1} validation mode: ${validation}.`);
118
+ if (validation === 'literal') {
119
+ const allowTrailingZeros = response.allowTrailingZeros || false;
120
+ const ignoreOrder = response.ignoreOrder || false;
121
+ traceLog.push(`Allow trailing zeros: ${allowTrailingZeros ? 'enabled' : 'disabled'}.`);
122
+ traceLog.push(`Ignore order: ${ignoreOrder ? 'enabled' : 'disabled'}.`);
123
+ }
124
+ const acceptedValues = [response.answer].concat(Object.keys(response.alternates || {}).map(alternateId => response.alternates[alternateId]));
125
+ if (acceptedValues.length > 1) {
126
+ traceLog.push(`Accepted answers: ${acceptedValues.length} (including alternates).`);
127
+ }
128
+ });
129
+ const correctness = getCorrectness(question, env, session, true);
130
+ if (correctness.correctness === 'correct') {
131
+ traceLog.push('Student answer matches one of the accepted responses.');
132
+ } else if (correctness.correctness === 'incorrect') {
133
+ traceLog.push('Student answer does not match any of the accepted responses.');
134
+ } else {
135
+ traceLog.push('Student answer could not be evaluated.');
136
+ }
137
+ traceLog.push(`Response evaluated as ${correctness.correctness}.`);
138
+ traceLog.push(`Final score: ${correctness.score}.`);
139
+ return traceLog;
140
+ };
141
+ exports.getLogTrace = getLogTrace;
89
142
  const outcome = (question, session, env) => {
90
143
  return new Promise(resolve => {
91
144
  if (env.mode !== 'evaluate') {
92
145
  resolve({
93
146
  score: undefined,
94
- completed: undefined
147
+ completed: undefined,
148
+ logTrace: []
95
149
  });
96
150
  } else {
97
151
  if (!session || (0, _lodashEs.isEmpty)(session)) {
98
152
  resolve({
99
153
  score: 0,
100
- empty: true
154
+ empty: true,
155
+ logTrace: ['Student did not enter a response.']
101
156
  });
102
157
  } else {
103
158
  const correctness = getCorrectness(question, env, session, true);
104
159
  resolve({
105
- score: correctness.score
160
+ score: correctness.score,
161
+ logTrace: getLogTrace(question, session, env)
106
162
  });
107
163
  }
108
164
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_debug","_interopRequireDefault","require","_lodashEs","_feedback","_utils","_translator","_defaults","mv","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","translator","Translator","log","debug","getResponseCorrectness","model","answerItem","isOutcome","correctResponses","responses","isAdvanced","responseType","ResponseTypes","advanced","correctness","score","correct","isAnswerCorrect","getIsAnswerCorrect","slice","correctnessObject","correctResponseItems","answerCorrect","forEach","correctResponse","opts","mode","validation","defaults","validationDefault","literal","allowTrailingZeros","ignoreOrder","acceptedValues","answer","concat","keys","alternates","map","alternateId","length","latexEqual","getCorrectness","question","env","session","completeAnswer","response","undefined","createDefaultModel","Promise","resolve","config","outcome","completed","isEmpty","empty","exports","normalize","allowTrailingZerosDefault","ignoreOrderDefault","normalizedQuestion","extraCSSRules","language","simple","feedback","feedbackEnabled","getActualFeedbackForCorrectness","out","disabled","view","note","lng","showNote","some","role","rationale","rationaleEnabled","teacherInstructions","teacherInstructionsEnabled","prompt","promptEnabled","escape","string","replace","simpleSessionResponse","id","removeTrailingEscape","str","endsWith","advancedSessionResponse","answers","expression","RESPONSE_TOKEN","split","to","tt","join","m","match","RegExp","count","console","shift","value","trim","error","toString","createCorrectResponseSession","toLowerCase","getInnerText","html","replaceAll","getContent","validate","maxResponseAreas","responsesErrors","errors","field","required","index","reversedAlternates","entries","reverse","alternatesErrors","responseError","key","identicalAnswer","val","nbOfResponseAreas","responseAreasError"],"sources":["../src/index.js"],"sourcesContent":["import debug from 'debug';\nimport { isEmpty } from 'lodash-es';\nimport { getActualFeedbackForCorrectness } from '@pie-lib/feedback';\n\nimport { ResponseTypes } from './utils';\nimport Translator from '@pie-lib/translator';\n\nconst { translator } = Translator;\nimport defaults from './defaults';\n\nimport * as mv from '@pie-framework/math-validation';\n\nconst log = debug('@pie-element:math-inline:controller');\n\nconst getResponseCorrectness = (model, answerItem, isOutcome) => {\n const correctResponses = model.responses;\n const isAdvanced = model.responseType === ResponseTypes.advanced;\n\n if (!answerItem) {\n return {\n correctness: 'unanswered',\n score: isOutcome ? 0 : '0%',\n correct: false,\n };\n }\n\n const isAnswerCorrect = getIsAnswerCorrect(isAdvanced ? correctResponses : correctResponses.slice(0, 1), answerItem);\n\n const correctnessObject = {\n correctness: 'incorrect',\n score: isOutcome ? 0 : '0%',\n correct: false,\n };\n\n if (isAnswerCorrect) {\n correctnessObject.correctness = 'correct';\n correctnessObject.score = isOutcome ? 1 : '100%';\n correctnessObject.correct = true;\n }\n\n return correctnessObject;\n};\n\nfunction getIsAnswerCorrect(correctResponseItems, answerItem) {\n let answerCorrect = false;\n\n (correctResponseItems || []).forEach((correctResponse) => {\n if (answerCorrect) return;\n\n const opts = {\n mode: correctResponse.validation || defaults.validationDefault,\n };\n\n if (opts.mode === 'literal') {\n opts.literal = {\n allowTrailingZeros: correctResponse.allowTrailingZeros || false,\n ignoreOrder: correctResponse.ignoreOrder || false,\n };\n }\n\n const acceptedValues = [correctResponse.answer].concat(\n Object.keys(correctResponse.alternates || {}).map((alternateId) => correctResponse.alternates[alternateId]),\n );\n\n for (let i = 0; i < acceptedValues.length; i++) {\n try {\n if (mv.latexEqual(answerItem, acceptedValues[i], opts)) {\n answerCorrect = true;\n break;\n }\n } catch (e) {\n log('Parse failure when evaluating math', acceptedValues[i], answerItem, e);\n continue;\n }\n }\n });\n\n return answerCorrect;\n}\n\nconst getCorrectness = (question, env, session, isOutcome) => {\n if (env.mode === 'evaluate') {\n return getResponseCorrectness(\n question,\n question.responseType === ResponseTypes.advanced\n ? (session && session.completeAnswer) || ''\n : session && session.response,\n isOutcome,\n );\n }\n\n return undefined;\n};\n\nexport function createDefaultModel(model = {}) {\n return new Promise((resolve) => {\n resolve({\n config: {\n ...defaults,\n ...model,\n },\n });\n });\n}\n\nexport const outcome = (question, session, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate') {\n resolve({ score: undefined, completed: undefined });\n } else {\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n } else {\n const correctness = getCorrectness(question, env, session, true);\n\n resolve({ score: correctness.score });\n }\n }\n });\n};\n\nexport const normalize = (question) => {\n // making sure that defaults are set\n if (!isEmpty(question.responses)) {\n question.responses = question.responses.map((correctResponse) => ({\n ...correctResponse,\n validation: correctResponse.validation || question.validationDefault,\n allowTrailingZeros: correctResponse.allowTrailingZeros || question.allowTrailingZerosDefault,\n ignoreOrder: correctResponse.ignoreOrder || question.ignoreOrderDefault,\n }));\n }\n\n return { ...defaults, ...question };\n};\n\nexport const model = (question, session, env) =>\n new Promise((resolve) => {\n const normalizedQuestion = normalize(question);\n const correctness = getCorrectness(normalizedQuestion, env, session);\n const { extraCSSRules, responses, language, ...config } = normalizedQuestion;\n\n config.responses = config.responseType === ResponseTypes.simple ? responses.slice(0, 1) : responses;\n\n const feedback =\n env.mode === 'evaluate' && normalizedQuestion.feedbackEnabled\n ? getActualFeedbackForCorrectness(correctness?.correctness, normalizedQuestion.feedback)\n : undefined;\n\n const out = {\n extraCSSRules,\n config,\n correctness,\n feedback,\n disabled: env.mode !== 'gather',\n view: env.mode === 'view',\n };\n\n const note = normalizedQuestion.note || translator.t('mathInline.primaryCorrectWithAlternates', { lng: language });\n const showNote =\n config?.responses?.length > 1 ||\n (config?.responses || []).some(\n (response) => response.validation === 'symbolic' || Object.keys(response.alternates || {}).length > 0,\n );\n\n if (env.mode === 'evaluate') {\n out.correctResponse = {};\n out.config.showNote = showNote;\n out.config.note = note;\n } else {\n out.config.responses = [];\n out.config.showNote = false;\n }\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n out.rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;\n out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n } else {\n out.rationale = null;\n out.teacherInstructions = null;\n out.config.rationale = null;\n out.config.teacherInstructions = null;\n }\n\n out.config.env = env;\n out.config.prompt = normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : null;\n out.language = language;\n\n log('out: ', out);\n resolve(out);\n });\n\nconst escape = (string) => string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // $& means the whole matched string\n\nconst simpleSessionResponse = (question) =>\n new Promise((resolve) => {\n const { responses, id } = question;\n const { answer } = responses && responses.length ? responses[0] : {};\n\n resolve({\n id,\n response: answer || '',\n completeAnswer: answer || '',\n });\n });\n\n// use this for items like E672793\nconst removeTrailingEscape = (str) => (str.endsWith('\\\\') ? str.slice(0, -1) : str);\n\nconst advancedSessionResponse = (question) =>\n new Promise((resolve) => {\n const { responses, id } = question;\n const { answer } = responses && responses.length ? responses[0] : {};\n\n if (!answer) {\n resolve({\n id,\n answers: {},\n completeAnswer: '',\n });\n\n return;\n }\n\n try {\n const e = question.expression;\n const RESPONSE_TOKEN = /\\\\{\\\\{\\s*response\\s*\\\\}\\\\}/g;\n\n const o = escape(e).split(RESPONSE_TOKEN);\n const to = o.map((t) => (t === '' ? t : t.replace(/\\s+/g, () => '\\\\s*')));\n const tt = to.join('(.*)');\n\n const m = answer.match(new RegExp(tt));\n\n const count = o.length - 1;\n\n if (!m) {\n resolve({\n id,\n answers: {},\n completeAnswer: answer,\n });\n\n // eslint-disable-next-line no-console\n console.log(`can not find match: ${o} in ${answer}`);\n\n return;\n }\n\n m.shift();\n\n const answers = {};\n\n for (var i = 0; i < count; i++) {\n answers[`r${i + 1}`] = { value: removeTrailingEscape(m[i].trim()) };\n }\n\n resolve({\n id,\n answers,\n completeAnswer: answer,\n });\n } catch (e) {\n resolve({\n id,\n answers: {},\n completeAnswer: answer,\n });\n // eslint-disable-next-line no-console\n console.error(e.toString());\n }\n });\n\nexport const createCorrectResponseSession = (question, env) => {\n if (env.mode === 'evaluate' || env.role !== 'instructor') {\n // eslint-disable-next-line no-console\n console.error('can not create correct response session if mode is evaluate or role is not instructor');\n\n return Promise.resolve(null);\n }\n\n if ((question.responseType || '').toLowerCase() === 'simple') {\n return simpleSessionResponse(question, env);\n } else {\n return advancedSessionResponse(question, env);\n }\n};\n\n// remove all html tags\nconst getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\n\n// remove all html tags except img, iframe and source tag for audio\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const { expression = '', responses, responseType } = model;\n const { maxResponseAreas } = config;\n const responsesErrors = {};\n const errors = {};\n\n ['teacherInstructions', 'prompt', 'rationale'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n (responses || []).forEach((response, index) => {\n const { answer } = response;\n const reversedAlternates = [...Object.entries(response.alternates || {})].reverse();\n const alternatesErrors = {};\n const responseError = {};\n\n if (answer === '') {\n responseError.answer = 'Content should not be empty.';\n }\n\n reversedAlternates.forEach(([key, value], index) => {\n if (value === '') {\n alternatesErrors[key] = 'Content should not be empty.';\n } else {\n const identicalAnswer =\n answer === value || reversedAlternates.slice(index + 1).some(([, val]) => val === value);\n\n if (identicalAnswer) {\n alternatesErrors[key] = 'Content should be unique.';\n }\n }\n });\n\n if (!isEmpty(responseError) || !isEmpty(alternatesErrors)) {\n responsesErrors[index] = { ...responseError, ...alternatesErrors };\n }\n });\n\n if (responseType === 'Advanced Multi') {\n const nbOfResponseAreas = (expression.match(/\\{\\{response\\}\\}/g) || []).length;\n\n if (nbOfResponseAreas > maxResponseAreas) {\n errors.responseAreasError = `No more than ${maxResponseAreas} response areas should be defined.`;\n } else if (nbOfResponseAreas < 1) {\n errors.responseAreasError = 'There should be at least 1 response area defined.';\n }\n }\n\n if (!isEmpty(responsesErrors)) {\n errors.responsesErrors = responsesErrors;\n }\n\n return errors;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_debug","_interopRequireDefault","require","_lodashEs","_feedback","_utils","_translator","_defaults","mv","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","translator","Translator","log","debug","getResponseCorrectness","model","answerItem","isOutcome","correctResponses","responses","isAdvanced","responseType","ResponseTypes","advanced","correctness","score","correct","isAnswerCorrect","getIsAnswerCorrect","slice","correctnessObject","correctResponseItems","answerCorrect","forEach","correctResponse","opts","mode","validation","defaults","validationDefault","literal","allowTrailingZeros","ignoreOrder","acceptedValues","answer","concat","keys","alternates","map","alternateId","length","latexEqual","getCorrectness","question","env","session","completeAnswer","response","undefined","createDefaultModel","Promise","resolve","config","getLogTrace","traceLog","push","studentAnswer","cleanStudentAnswer","replace","responsesToCheck","index","exports","outcome","completed","logTrace","isEmpty","empty","normalize","allowTrailingZerosDefault","ignoreOrderDefault","normalizedQuestion","extraCSSRules","language","simple","feedback","feedbackEnabled","getActualFeedbackForCorrectness","out","disabled","view","note","lng","showNote","some","role","rationale","rationaleEnabled","teacherInstructions","teacherInstructionsEnabled","prompt","promptEnabled","escape","string","simpleSessionResponse","id","removeTrailingEscape","str","endsWith","advancedSessionResponse","answers","expression","RESPONSE_TOKEN","split","to","tt","join","m","match","RegExp","count","console","shift","value","trim","error","toString","createCorrectResponseSession","toLowerCase","getInnerText","html","replaceAll","getContent","validate","maxResponseAreas","responsesErrors","errors","field","required","reversedAlternates","entries","reverse","alternatesErrors","responseError","key","identicalAnswer","val","nbOfResponseAreas","responseAreasError"],"sources":["../src/index.js"],"sourcesContent":["import debug from 'debug';\nimport { isEmpty } from 'lodash-es';\nimport { getActualFeedbackForCorrectness } from '@pie-lib/feedback';\n\nimport { ResponseTypes } from './utils';\nimport Translator from '@pie-lib/translator';\n\nconst { translator } = Translator;\nimport defaults from './defaults';\n\nimport * as mv from '@pie-framework/math-validation';\n\nconst log = debug('@pie-element:math-inline:controller');\n\nconst getResponseCorrectness = (model, answerItem, isOutcome) => {\n const correctResponses = model.responses;\n const isAdvanced = model.responseType === ResponseTypes.advanced;\n\n if (!answerItem) {\n return {\n correctness: 'unanswered',\n score: isOutcome ? 0 : '0%',\n correct: false,\n };\n }\n\n const isAnswerCorrect = getIsAnswerCorrect(isAdvanced ? correctResponses : correctResponses.slice(0, 1), answerItem);\n\n const correctnessObject = {\n correctness: 'incorrect',\n score: isOutcome ? 0 : '0%',\n correct: false,\n };\n\n if (isAnswerCorrect) {\n correctnessObject.correctness = 'correct';\n correctnessObject.score = isOutcome ? 1 : '100%';\n correctnessObject.correct = true;\n }\n\n return correctnessObject;\n};\n\nfunction getIsAnswerCorrect(correctResponseItems, answerItem) {\n let answerCorrect = false;\n\n (correctResponseItems || []).forEach((correctResponse) => {\n if (answerCorrect) return;\n\n const opts = {\n mode: correctResponse.validation || defaults.validationDefault,\n };\n\n if (opts.mode === 'literal') {\n opts.literal = {\n allowTrailingZeros: correctResponse.allowTrailingZeros || false,\n ignoreOrder: correctResponse.ignoreOrder || false,\n };\n }\n\n const acceptedValues = [correctResponse.answer].concat(\n Object.keys(correctResponse.alternates || {}).map((alternateId) => correctResponse.alternates[alternateId]),\n );\n\n for (let i = 0; i < acceptedValues.length; i++) {\n try {\n if (mv.latexEqual(answerItem, acceptedValues[i], opts)) {\n answerCorrect = true;\n break;\n }\n } catch (e) {\n log('Parse failure when evaluating math', acceptedValues[i], answerItem, e);\n continue;\n }\n }\n });\n\n return answerCorrect;\n}\n\nconst getCorrectness = (question, env, session, isOutcome) => {\n if (env.mode === 'evaluate') {\n return getResponseCorrectness(\n question,\n question.responseType === ResponseTypes.advanced\n ? (session && session.completeAnswer) || ''\n : session && session.response,\n isOutcome,\n );\n }\n\n return undefined;\n};\n\nexport function createDefaultModel(model = {}) {\n return new Promise((resolve) => {\n resolve({\n config: {\n ...defaults,\n ...model,\n },\n });\n });\n}\n\n/**\n * Generates detailed trace log for math-inline scoring evaluation\n * @param {Object} question\n * @param {Object} session\n * @param {Object} env\n * @returns {Array<string>} traceLog\n */\nexport const getLogTrace = (question, session, env) => {\n const traceLog = [];\n\n if (!session || (!session.response && !session.completeAnswer)) {\n traceLog.push('Student did not enter a response.');\n return traceLog;\n }\n\n const responseType = question?.responseType;\n const isAdvanced = responseType === ResponseTypes.advanced;\n const studentAnswer = isAdvanced ? session.completeAnswer : session.response;\n\n const cleanStudentAnswer = studentAnswer ? studentAnswer.replace(/\\\\/g, '') : '';\n\n if (!cleanStudentAnswer) {\n traceLog.push('Student entered a response, but then it was removed.');\n return traceLog;\n }\n\n traceLog.push(`Student entered response: ${cleanStudentAnswer}.`);\n traceLog.push(`Response type: ${isAdvanced ? 'advanced' : 'simple'}.`);\n\n const responses = question.responses || [];\n const responsesToCheck = isAdvanced ? responses : responses.slice(0, 1);\n \n responsesToCheck.forEach((response, index) => {\n const validation = response.validation || question.validationDefault;\n traceLog.push(`Response ${index + 1} validation mode: ${validation}.`);\n \n if (validation === 'literal') {\n const allowTrailingZeros = response.allowTrailingZeros || false;\n const ignoreOrder = response.ignoreOrder || false;\n\n traceLog.push(`Allow trailing zeros: ${allowTrailingZeros ? 'enabled' : 'disabled'}.`);\n traceLog.push(`Ignore order: ${ignoreOrder ? 'enabled' : 'disabled'}.`);\n }\n \n const acceptedValues = [response.answer].concat(\n Object.keys(response.alternates || {}).map((alternateId) => response.alternates[alternateId])\n );\n \n if (acceptedValues.length > 1) {\n traceLog.push(`Accepted answers: ${acceptedValues.length} (including alternates).`);\n }\n });\n\n const correctness = getCorrectness(question, env, session, true);\n\n if (correctness.correctness === 'correct') {\n traceLog.push('Student answer matches one of the accepted responses.');\n } else if (correctness.correctness === 'incorrect') {\n traceLog.push('Student answer does not match any of the accepted responses.');\n } else {\n traceLog.push('Student answer could not be evaluated.');\n }\n\n traceLog.push(`Response evaluated as ${correctness.correctness}.`);\n traceLog.push(`Final score: ${correctness.score}.`);\n\n return traceLog;\n};\n\nexport const outcome = (question, session, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate') {\n resolve({ score: undefined, completed: undefined, logTrace: [] });\n } else {\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true, logTrace: ['Student did not enter a response.'] });\n } else {\n const correctness = getCorrectness(question, env, session, true);\n\n resolve({ score: correctness.score, logTrace: getLogTrace(question, session, env) });\n }\n }\n });\n};\n\nexport const normalize = (question) => {\n // making sure that defaults are set\n if (!isEmpty(question.responses)) {\n question.responses = question.responses.map((correctResponse) => ({\n ...correctResponse,\n validation: correctResponse.validation || question.validationDefault,\n allowTrailingZeros: correctResponse.allowTrailingZeros || question.allowTrailingZerosDefault,\n ignoreOrder: correctResponse.ignoreOrder || question.ignoreOrderDefault,\n }));\n }\n\n return { ...defaults, ...question };\n};\n\nexport const model = (question, session, env) =>\n new Promise((resolve) => {\n const normalizedQuestion = normalize(question);\n const correctness = getCorrectness(normalizedQuestion, env, session);\n const { extraCSSRules, responses, language, ...config } = normalizedQuestion;\n\n config.responses = config.responseType === ResponseTypes.simple ? responses.slice(0, 1) : responses;\n\n const feedback =\n env.mode === 'evaluate' && normalizedQuestion.feedbackEnabled\n ? getActualFeedbackForCorrectness(correctness?.correctness, normalizedQuestion.feedback)\n : undefined;\n\n const out = {\n extraCSSRules,\n config,\n correctness,\n feedback,\n disabled: env.mode !== 'gather',\n view: env.mode === 'view',\n };\n\n const note = normalizedQuestion.note || translator.t('mathInline.primaryCorrectWithAlternates', { lng: language });\n const showNote =\n config?.responses?.length > 1 ||\n (config?.responses || []).some(\n (response) => response.validation === 'symbolic' || Object.keys(response.alternates || {}).length > 0,\n );\n\n if (env.mode === 'evaluate') {\n out.correctResponse = {};\n out.config.showNote = showNote;\n out.config.note = note;\n } else {\n out.config.responses = [];\n out.config.showNote = false;\n }\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n out.rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;\n out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n } else {\n out.rationale = null;\n out.teacherInstructions = null;\n out.config.rationale = null;\n out.config.teacherInstructions = null;\n }\n\n out.config.env = env;\n out.config.prompt = normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : null;\n out.language = language;\n\n log('out: ', out);\n resolve(out);\n });\n\nconst escape = (string) => string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // $& means the whole matched string\n\nconst simpleSessionResponse = (question) =>\n new Promise((resolve) => {\n const { responses, id } = question;\n const { answer } = responses && responses.length ? responses[0] : {};\n\n resolve({\n id,\n response: answer || '',\n completeAnswer: answer || '',\n });\n });\n\n// use this for items like E672793\nconst removeTrailingEscape = (str) => (str.endsWith('\\\\') ? str.slice(0, -1) : str);\n\nconst advancedSessionResponse = (question) =>\n new Promise((resolve) => {\n const { responses, id } = question;\n const { answer } = responses && responses.length ? responses[0] : {};\n\n if (!answer) {\n resolve({\n id,\n answers: {},\n completeAnswer: '',\n });\n\n return;\n }\n\n try {\n const e = question.expression;\n const RESPONSE_TOKEN = /\\\\{\\\\{\\s*response\\s*\\\\}\\\\}/g;\n\n const o = escape(e).split(RESPONSE_TOKEN);\n const to = o.map((t) => (t === '' ? t : t.replace(/\\s+/g, () => '\\\\s*')));\n const tt = to.join('(.*)');\n\n const m = answer.match(new RegExp(tt));\n\n const count = o.length - 1;\n\n if (!m) {\n resolve({\n id,\n answers: {},\n completeAnswer: answer,\n });\n\n // eslint-disable-next-line no-console\n console.log(`can not find match: ${o} in ${answer}`);\n\n return;\n }\n\n m.shift();\n\n const answers = {};\n\n for (var i = 0; i < count; i++) {\n answers[`r${i + 1}`] = { value: removeTrailingEscape(m[i].trim()) };\n }\n\n resolve({\n id,\n answers,\n completeAnswer: answer,\n });\n } catch (e) {\n resolve({\n id,\n answers: {},\n completeAnswer: answer,\n });\n // eslint-disable-next-line no-console\n console.error(e.toString());\n }\n });\n\nexport const createCorrectResponseSession = (question, env) => {\n if (env.mode === 'evaluate' || env.role !== 'instructor') {\n // eslint-disable-next-line no-console\n console.error('can not create correct response session if mode is evaluate or role is not instructor');\n\n return Promise.resolve(null);\n }\n\n if ((question.responseType || '').toLowerCase() === 'simple') {\n return simpleSessionResponse(question, env);\n } else {\n return advancedSessionResponse(question, env);\n }\n};\n\n// remove all html tags\nconst getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\n\n// remove all html tags except img, iframe and source tag for audio\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const { expression = '', responses, responseType } = model;\n const { maxResponseAreas } = config;\n const responsesErrors = {};\n const errors = {};\n\n ['teacherInstructions', 'prompt', 'rationale'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n (responses || []).forEach((response, index) => {\n const { answer } = response;\n const reversedAlternates = [...Object.entries(response.alternates || {})].reverse();\n const alternatesErrors = {};\n const responseError = {};\n\n if (answer === '') {\n responseError.answer = 'Content should not be empty.';\n }\n\n reversedAlternates.forEach(([key, value], index) => {\n if (value === '') {\n alternatesErrors[key] = 'Content should not be empty.';\n } else {\n const identicalAnswer =\n answer === value || reversedAlternates.slice(index + 1).some(([, val]) => val === value);\n\n if (identicalAnswer) {\n alternatesErrors[key] = 'Content should be unique.';\n }\n }\n });\n\n if (!isEmpty(responseError) || !isEmpty(alternatesErrors)) {\n responsesErrors[index] = { ...responseError, ...alternatesErrors };\n }\n });\n\n if (responseType === 'Advanced Multi') {\n const nbOfResponseAreas = (expression.match(/\\{\\{response\\}\\}/g) || []).length;\n\n if (nbOfResponseAreas > maxResponseAreas) {\n errors.responseAreasError = `No more than ${maxResponseAreas} response areas should be defined.`;\n } else if (nbOfResponseAreas < 1) {\n errors.responseAreasError = 'There should be at least 1 response area defined.';\n }\n }\n\n if (!isEmpty(responsesErrors)) {\n errors.responsesErrors = responsesErrors;\n }\n\n return errors;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@pie-element/math-inline-controller",
3
3
  "private": true,
4
- "version": "9.1.1-next.1",
4
+ "version": "9.2.0-next.0",
5
5
  "description": "",
6
6
  "main": "lib/index.js",
7
7
  "module": "src/index.js",
package/lib/main.js CHANGED
@@ -122,7 +122,7 @@ class Main extends _react.default.Component {
122
122
  // const correct = model.correctness && model.correctness.correct;
123
123
 
124
124
  if (el) {
125
- let MQ = _mathquill.default.getInterface(2);
125
+ let MQ = _mathquill.default.getInterface(3);
126
126
  const answer = answers[answerId];
127
127
  el.textContent = answer && answer.value || '';
128
128
  if (!model.view) {
@@ -400,7 +400,7 @@ class Main extends _react.default.Component {
400
400
  }
401
401
  UNSAFE_componentWillMount() {
402
402
  if (typeof window !== 'undefined') {
403
- let MQ = _mathquill.default.getInterface(2);
403
+ let MQ = _mathquill.default.getInterface(3);
404
404
  if (!registered) {
405
405
  MQ.registerEmbed('answerBlock', data => {
406
406
  const classNames = getBlockClassNames();
package/lib/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","names":["_react","_interopRequireDefault","require","_propTypes","_correctAnswerToggle","_mathInput","_renderUi","_mathRendering","_styles","_Tooltip","_utils","_lodashEs","_simpleQuestionBlock","_mathquill","_translator","_reactDom","translator","Translator","registered","NEWLINE_LATEX","REGEX","DEFAULT_KEYPAD_VARIANT","IS_SAFARI","test","navigator","userAgent","generateAdditionalKeys","keyData","map","key","name","latex","write","label","isChildOfCurrentPieElement","child","parent","node","parentNode","getKeyPadWidth","additionalKeys","equationEditor","Math","floor","length","prepareForStatic","model","state","config","disabled","expression","responses","printMode","alwaysShowCorrect","modelExpression","showCorrect","answer","answerBlocks","replace","session","answers","blankSpace","repeat","value","parseAnswers","Main","React","Component","constructor","props","_defineProperty2","default","root","Object","keys","forEach","answerId","el","querySelector","indexEl","MQ","MathQuill","getInterface","textContent","view","parentElement","classList","remove","StaticMath","renderMath","selectableElements","querySelectorAll","elem","setAttribute","textareaElements","index","instructionsId","closest","instructionsElement","document","createElement","id","className","insertBefore","setTimeout","keypadElement","firstButton","focus","event","isTrigerredFromActualPieElement","target","isAnswerInputFocused","mqStatic","inputRef","current","contains","activeElement","getAttribute","type","isClickOrTouchEvent","activeAnswerBlock","cleanupKeyDownListener","setState","onSubFieldFocus","focusFirstKeypadElement","handleEvent","handleKeyDown","addEventListener","removeEventListener","response","callOnSessionChange","data","input","c","toNodeData","clear","Array","isArray","vv","cmd","keystroke","onSessionChange","show","handleAnswerBlockDomUpdate","subfieldValue","updateSpans","completeAnswer","mathField","changeField","fields","find","k","tf","e","relatedTarget","currentTarget","isKeypadOpen","getParentWithRoleTooltip","element","depth","offsetParent","getDeepChildDataKeypad","children","attributes","parentWithTooltipRole","childWithDataKeypad","tooltipContainerRef","createRef","UNSAFE_componentWillMount","window","registerEmbed","classNames","getBlockClassNames","htmlString","blockContainer","blockResponse","blockMath","text","countResponseOccurrences","pattern","matches","match","UNSAFE_componentWillReceiveProps","nextProps","nextConfig","nextSession","isEqual","note","language","t","lng","env","mode","updateAria","newAnswers","shouldComponentUpdate","nextState","sameModel","sameState","componentDidMount","componentDidUpdate","prevProps","prevState","prevResponseType","responseType","currentResponseType","componentWillUnmount","setTooltipRef","ref","div","firstChild","render","correctness","extraCSSRules","teacherInstructions","rationale","feedback","animationsDisabled","showNote","prompt","customKeys","role","displayNote","emptyResponse","isEmpty","showCorrectAnswerToggle","tooltipModeEnabled","correct","staticLatex","viewMode","studentPrintMode","showRationale","hasText","hasMedia","showTeacherInstructions","printView","PrintContainer","mq","Static","onSubFieldChange","subFieldChanged","getFieldName","setInput","onBlur","midContent","MainContent","SrOnly","StyledCollapsible","labels","hidden","visible","dangerouslySetInnerHTML","__html","PromptContainer","PreviewPrompt","Readable","false","InputAndKeypadContainer","tabIndex","ResponseTypes","simple","onSimpleResponseChange","showKeypad","advanced","Expression","isIncorrect","isCorrect","showCorrectness","correctAnswerShown","printCorrect","enterTouchDelay","interactive","open","slotProps","popper","container","undefined","placement","sx","backgroundColor","width","opacity","display","modifiers","options","offset","enabled","boundary","padding","adaptive","gpuAcceleration","tooltip","fontSize","marginTop","paddingTop","boxShadow","title","ResponseContainer","style","HorizontalKeypad","onClick","Note","Collapsible","StyledUiLayout","r","domNode","ReactDOM","findDOMNode","StyledTooltip","theme","background","color","primaryLight","spacing","border","secondary","StyledCorrectAnswerToggle","toggled","onToggle","toggleShowCorrect","Feedback","exports","PropTypes","object","isRequired","func","styleId","getElementById","head","appendChild","styled","UiLayout","Tooltip","marginBottom","position","paddingBottom","zIndex","minWidth","shouldForwardProp","prop","includes","borderColor","incorrect","maxWidth","letterSpacing","paddingRight","paddingLeft","top","lineHeight","left","right","borderTop","pointerEvents","height","overflow","CorrectAnswerToggle","_default"],"sources":["../src/main.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport { mq, HorizontalKeypad, updateSpans } from '@pie-lib/math-input';\nimport { Feedback, Collapsible, Readable, hasText, hasMedia, PreviewPrompt, UiLayout } from '@pie-lib/render-ui';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { styled } from '@mui/material/styles';\nimport Tooltip from '@mui/material/Tooltip';\nimport { ResponseTypes } from './utils';\nimport { isEmpty, isEqual } from 'lodash-es';\nimport SimpleQuestionBlock from './simple-question-block';\nimport MathQuill from '@pie-framework/mathquill';\nimport { color } from '@pie-lib/render-ui';\nimport Translator from '@pie-lib/translator';\nimport ReactDOM from 'react-dom';\nconst { translator } = Translator;\nlet registered = false;\n\nconst NEWLINE_LATEX = /\\\\newline/g;\nconst REGEX = /{{response}}/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 isChildOfCurrentPieElement(child, parent) {\n let node = child;\n while (node !== null) {\n if (parent && node === parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\n\nfunction getKeyPadWidth(additionalKeys = [], equationEditor) {\n return Math.floor(additionalKeys.length / 5) * 30 + (equationEditor === 'miscellaneous' ? 600 : 500);\n}\n\nfunction prepareForStatic(model, state) {\n const { config, disabled } = model || {};\n const { expression, responses, printMode, alwaysShowCorrect } = config || {};\n\n if (config && expression) {\n const modelExpression = expression;\n\n if (state.showCorrect) {\n return responses && responses.length && responses[0].answer;\n }\n\n let answerBlocks = 1; // assume one at least\n // build out local state model using responses declared in expression\n\n return (modelExpression || '')\n .replace(REGEX, function () {\n const answer = state.session.answers[`r${answerBlocks}`];\n\n if (printMode && !alwaysShowCorrect) {\n const blankSpace = '\\\\ \\\\ '.repeat(30) + '\\\\newline ';\n\n return `\\\\MathQuillMathField[r${answerBlocks++}]{${blankSpace.repeat(3)}}`;\n }\n\n if (disabled) {\n return `\\\\embed{answerBlock}[r${answerBlocks++}]`;\n }\n\n return `\\\\MathQuillMathField[r${answerBlocks++}]{${(answer && answer.value) || ''}}`;\n })\n .replace(NEWLINE_LATEX, '\\\\embed{newLine}[]');\n }\n}\n\nfunction parseAnswers(session, model) {\n const answers = {};\n\n if (model.config && model.config.expression) {\n let answerBlocks = 1; // assume one at least\n // build out local state model using responses declared in expression\n\n (model.config.expression || '').replace(REGEX, () => {\n answers[`r${answerBlocks}`] = {\n value:\n (session &&\n session.answers &&\n session.answers[`r${answerBlocks}`] &&\n session.answers[`r${answerBlocks}`].value) ||\n '',\n };\n\n answerBlocks += 1;\n });\n }\n return answers;\n}\n\nexport class Main extends React.Component {\n static propTypes = {\n session: PropTypes.object.isRequired,\n onSessionChange: PropTypes.func,\n model: PropTypes.object.isRequired,\n };\n\n constructor(props) {\n super(props);\n const { model, session } = props;\n const answers = parseAnswers(session, model);\n\n this.state = {\n session: { ...props.session, answers },\n activeAnswerBlock: '',\n showCorrect: this.props.model.config.alwaysShowCorrect || false,\n tooltipContainerRef: React.createRef(),\n };\n }\n\n UNSAFE_componentWillMount() {\n if (typeof window !== 'undefined') {\n let MQ = MathQuill.getInterface(2);\n\n if (!registered) {\n MQ.registerEmbed('answerBlock', (data) => {\n const classNames = getBlockClassNames();\n return {\n htmlString: `<div class=\"${classNames.blockContainer}\">\n <div class=\"${classNames.blockResponse}\" id=\"${data}Index\">R</div>\n <div class=\"${classNames.blockMath}\">\n <span id=\"${data}\"></span>\n </div>\n </div>`,\n text: () => 'text',\n latex: () => `\\\\embed{answerBlock}[${data}]`,\n };\n });\n\n registered = true;\n }\n }\n }\n\n handleAnswerBlockDomUpdate = () => {\n const { model } = 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 // const correct = model.correctness && model.correctness.correct;\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 // for now, we're not going to be showing individual response correctness\n // TODO re-attach the classes once we are\n // el.parentElement.parentElement.classList.add(\n // correct ? 'correct' : 'incorrect'\n // );\n } else {\n el.parentElement.parentElement.classList.remove('correct');\n el.parentElement.parentElement.classList.remove('incorrect');\n }\n\n MQ.StaticMath(el);\n\n // For now, we're not going to be indexing response blocks\n // TODO go back to indexing once we support individual response correctness\n // indexEl.textContent = `R${idx + 1}`;\n indexEl.textContent = 'R';\n }\n });\n }\n\n renderMath(this.root);\n };\n\n countResponseOccurrences(expression) {\n const pattern = /\\{\\{response\\}\\}/g;\n const matches = expression?.match(pattern);\n\n return matches ? matches.length : 0;\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { config } = this.props.model;\n const { config: nextConfig = {} } = nextProps.model || {};\n\n const { session } = this.props;\n const { session: nextSession = {} } = nextProps || {};\n\n // in case session props changed in parent, we need to catch this and update local state\n // example: when env is changing in pieoneer\n if (session && nextSession && !isEqual(session.answers, nextSession.answers)) {\n this.setState({\n session: { ...nextSession, answers: parseAnswers(nextSession, this.props.model) },\n });\n }\n\n // check if the note is the default one for prev language and change to the default one for new language\n // this check is necessary in order to diferanciate between default and authour defined note\n // and only change between languages for default ones\n if (\n config.note &&\n config.language &&\n config.language !== nextConfig.language &&\n config.note === translator.t('mathInline.primaryCorrectWithAlternates', { lng: config.language })\n ) {\n config.note = translator.t('mathInline.primaryCorrectWithAlternates', { lng: nextConfig.language });\n }\n\n if ((config.env && config.env.mode !== 'evaluate') || (nextConfig.env && nextConfig.env.mode !== 'evaluate')) {\n this.setState({ ...this.state.session, showCorrect: false });\n }\n\n if (nextConfig.alwaysShowCorrect) {\n this.setState({ showCorrect: true });\n }\n\n if (this.countResponseOccurrences(config.expression) < this.countResponseOccurrences(nextConfig.expression)) {\n setTimeout(() => this.updateAria(), 100);\n }\n\n if (\n (config && config.responses && config.responses.length !== nextConfig.responses.length) ||\n (!config && nextConfig && nextConfig.responses) ||\n (config && nextConfig && config.expression !== nextConfig.expression)\n ) {\n const newAnswers = {};\n const answers = this.state.session.answers;\n\n let answerBlocks = 1; // assume one at least\n\n // build out local state model using responses declared in expression\n (nextConfig.expression || '').replace(REGEX, () => {\n newAnswers[`r${answerBlocks}`] = {\n value: (answers && answers[`r${answerBlocks}`] && answers[`r${answerBlocks}`].value) || '',\n };\n answerBlocks++;\n });\n\n this.setState(\n (state) => ({\n session: {\n ...state.session,\n completeAnswer: this.mqStatic && this.mqStatic.mathField.latex(),\n answers: newAnswers,\n },\n }),\n this.handleAnswerBlockDomUpdate,\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 this.updateAria();\n setTimeout(() => renderMath(this.root), 100);\n }\n\n componentDidUpdate(prevProps, prevState) {\n this.handleAnswerBlockDomUpdate();\n\n const prevResponseType = prevProps.model?.config?.responseType;\n const currentResponseType = this.props.model?.config?.responseType;\n\n if (prevResponseType !== currentResponseType) {\n this.updateAria();\n }\n }\n\n updateAria = () => {\n if (this.root) {\n // Update aria-hidden for .mq-selectable elements\n const selectableElements = this.root.querySelectorAll('.mq-selectable');\n selectableElements.forEach((elem) => elem.setAttribute('aria-hidden', 'true'));\n\n // Update aria-label for textarea elements and add aria-describedby\n const textareaElements = this.root.querySelectorAll('textarea');\n textareaElements.forEach((elem, index) => {\n elem.setAttribute('aria-label', 'Enter answer.');\n\n // Create a unique id for each instructions element\n const instructionsId = `instructions-${index}`;\n\n // Find the parent element that contains the textarea\n const parent = elem.closest('.mq-textarea');\n\n if (parent) {\n // Create or find the instructions element within the parent\n let instructionsElement = parent.querySelector(`#${instructionsId}`);\n\n if (!instructionsElement) {\n instructionsElement = document.createElement('span');\n instructionsElement.id = instructionsId;\n instructionsElement.className = 'sr-only';\n instructionsElement.textContent =\n 'This field supports both keypad and keyboard input. Use the keyboard to access and interact with the on-screen math keypad, which accepts LaTeX markup. Use the down arrow key to open the keypad and navigate its buttons. Use the escape key to close the keypad and return to the input field.';\n parent.insertBefore(instructionsElement, elem);\n }\n\n elem.setAttribute('aria-describedby', instructionsId);\n }\n });\n }\n };\n\n focusFirstKeypadElement = () => {\n setTimeout(() => {\n const keypadElement = document.querySelector('[data-keypad]');\n\n if (keypadElement) {\n const firstButton = keypadElement.querySelector(\"button, [role='button']\");\n\n if (firstButton) {\n firstButton.focus();\n }\n }\n }, 0);\n };\n\n handleKeyDown = (event, id) => {\n const isTrigerredFromActualPieElement = isChildOfCurrentPieElement(event.target, this.root);\n const isAnswerInputFocused =\n this.mqStatic && this.mqStatic.inputRef?.current\n ? this.mqStatic.inputRef?.current.contains(document.activeElement)\n : document.activeElement?.getAttribute('aria-label') === 'Enter answer.';\n const { key, type } = event;\n const isClickOrTouchEvent = type === 'click' || type === 'touchstart';\n\n if (isAnswerInputFocused && (key === 'ArrowDown' || isClickOrTouchEvent)) {\n if (this.state.activeAnswerBlock !== id && isTrigerredFromActualPieElement) {\n this.cleanupKeyDownListener();\n this.setState({ activeAnswerBlock: id }, () => {\n this.onSubFieldFocus(id);\n if (key === 'ArrowDown') {\n this.focusFirstKeypadElement();\n }\n });\n }\n } else if (event.key === 'Escape') {\n this.setState({ activeAnswerBlock: '' });\n }\n };\n\n onSubFieldFocus = (id) => {\n if (!this.handleEvent) {\n this.handleEvent = (event) => {\n this.handleKeyDown(event, id);\n };\n\n document.addEventListener('keydown', this.handleEvent);\n document.addEventListener('click', this.handleEvent);\n document.addEventListener('touchstart', this.handleEvent);\n }\n };\n\n cleanupKeyDownListener = () => {\n if (this.handleEvent) {\n document.removeEventListener('keydown', this.handleEvent);\n document.removeEventListener('click', this.handleEvent);\n document.removeEventListener('touchstart', this.handleEvent);\n this.handleEvent = null;\n }\n };\n\n componentWillUnmount() {\n if (this.cleanupKeyDownListener) {\n this.cleanupKeyDownListener();\n }\n }\n\n onDone = () => {};\n\n onSimpleResponseChange = (response) => {\n this.setState((state) => ({ session: { ...state.session, response } }), this.callOnSessionChange);\n };\n\n toNodeData = (data) => {\n if (!data) {\n return;\n }\n\n const { type, value } = data;\n\n if (type === 'command' || type === 'cursor') {\n return data;\n } else if (type === 'answer') {\n return { type: 'answer', ...data };\n } else if (value === 'clear') {\n return { type: 'clear' };\n } else {\n return { type: 'write', value };\n }\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 completeAnswer: this.mqStatic && this.mqStatic.mathField.latex(),\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 // our keypad is in tooltip\n // in this way we see if event was triggered from the keypad\n const isKeypadOpen = currentTarget && currentTarget.closest('[role=tooltip]');\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 // if event was trigered from the keypad, avoid closing the keypad\n if (!isKeypadOpen) {\n this.setState({ activeAnswerBlock: '' });\n }\n }\n // else {\n // // Just for debugging purpose:\n // console.log('\\n\\nNew childWithDataKeypad', childWithDataKeypad);\n //\n // if (IS_SAFARI) {\n // // (IS_SAFARI && !relatedTarget?.offsetParent?.children[0]?.children[0]?.attributes?.['data-keypad'])\n // console.log('What was being used', relatedTarget?.offsetParent?.children[0]?.children[0]);\n // } else {\n // // (!IS_SAFARI && !relatedTarget?.offsetParent?.children[0]?.attributes?.['data-keypad']) ||\n // console.log('What was being used', relatedTarget?.offsetParent?.children[0]);\n // }\n // }\n };\n\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 render() {\n const { model } = this.props;\n const { activeAnswerBlock, showCorrect, session, tooltipContainerRef } = this.state;\n const {\n config,\n correctness,\n disabled,\n extraCSSRules,\n view,\n teacherInstructions,\n rationale,\n feedback,\n animationsDisabled,\n printMode,\n alwaysShowCorrect,\n language,\n } = model || {};\n\n if (!config) {\n return null;\n }\n\n const {\n showNote,\n note,\n prompt,\n responses,\n responseType,\n equationEditor,\n customKeys,\n id,\n env: { mode, role } = {},\n } = config || {};\n const displayNote = (showCorrect || (mode === 'view' && role === 'instructor')) && showNote && note;\n const emptyResponse = isEmpty(responses);\n const showCorrectAnswerToggle = !emptyResponse && correctness && correctness.correctness !== 'correct';\n const tooltipModeEnabled = disabled && correctness;\n const additionalKeys = generateAdditionalKeys(customKeys);\n const correct = correctness && correctness.correct;\n const staticLatex = prepareForStatic(model, this.state) || '';\n const viewMode = disabled && !correctness;\n const studentPrintMode = printMode && !alwaysShowCorrect;\n const showRationale = rationale && (hasText(rationale) || hasMedia(rationale));\n const showTeacherInstructions =\n teacherInstructions && (hasText(teacherInstructions) || hasMedia(teacherInstructions));\n\n const printView = (\n <PrintContainer>\n <mq.Static\n className=\"static-math\"\n ref={(mqStatic) => {\n if (mqStatic) this.mqStatic = mqStatic;\n }}\n latex={staticLatex}\n onSubFieldChange={this.subFieldChanged}\n getFieldName={this.getFieldName}\n setInput={this.setInput}\n onSubFieldFocus={this.onSubFieldFocus}\n onBlur={this.onBlur}\n />\n </PrintContainer>\n );\n\n const midContent = (\n <MainContent>\n {mode === 'gather' && <SrOnly>Math Equation Response Question</SrOnly>}\n\n {viewMode &&\n showTeacherInstructions &&\n (!animationsDisabled ? (\n <StyledCollapsible labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}>\n <div dangerouslySetInnerHTML={{ __html: teacherInstructions }} />\n </StyledCollapsible>\n ) : (\n <div dangerouslySetInnerHTML={{ __html: teacherInstructions }} />\n ))}\n\n {prompt && (\n <PromptContainer>\n <PreviewPrompt prompt={prompt} />\n </PromptContainer>\n )}\n\n {studentPrintMode ? (\n printView\n ) : (\n <Readable false>\n <InputAndKeypadContainer tabIndex={0}>\n {responseType === ResponseTypes.simple && (\n <SimpleQuestionBlock\n onSimpleResponseChange={this.onSimpleResponseChange}\n showCorrect={showCorrect}\n emptyResponse={emptyResponse}\n model={model}\n session={session}\n onSubFieldFocus={this.onSubFieldFocus}\n showKeypad={!!activeAnswerBlock}\n />\n )}\n\n {responseType === ResponseTypes.advanced && (\n <Expression\n ref={tooltipContainerRef}\n isIncorrect={!emptyResponse && !correct && !showCorrect}\n isCorrect={!emptyResponse && (correct || showCorrect)}\n showCorrectness={!emptyResponse && disabled && correctness && !view}\n correctAnswerShown={showCorrect}\n printCorrect={printMode && alwaysShowCorrect}\n >\n <Tooltip\n ref={(ref) => this.setTooltipRef(ref)}\n enterTouchDelay={0}\n interactive\n open={!!activeAnswerBlock}\n slotProps={{\n popper: {\n container: tooltipContainerRef?.current || undefined,\n placement: 'bottom-start',\n sx: {\n backgroundColor: 'transparent',\n width: '650px',\n opacity: 1,\n '& .MuiTooltip-arrow': {\n display: 'none',\n },\n },\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, 8],\n },\n },\n {\n name: 'preventOverflow',\n enabled: true,\n options: {\n boundary: 'viewport',\n padding: 8,\n },\n },\n {\n name: 'computeStyles',\n options: {\n adaptive: true,\n gpuAcceleration: true,\n },\n },\n {\n name: 'flip',\n enabled: false,\n },\n ],\n },\n tooltip: {\n sx: {\n fontSize: 'initial',\n backgroundColor: 'transparent',\n width: '600px',\n marginTop: 0,\n paddingTop: 0,\n boxShadow: 'none',\n },\n },\n }}\n title={Object.keys(session.answers).map(\n (answerId) =>\n (answerId === activeAnswerBlock && !(showCorrect || disabled) && (\n <ResponseContainer\n data-keypad={true}\n key={answerId}\n style={{\n // marginTop: this.mqStatic && this.mqStatic.input.offsetHeight - 20,\n width: getKeyPadWidth(additionalKeys, equationEditor),\n }}\n >\n <HorizontalKeypad\n additionalKeys={additionalKeys}\n mode={equationEditor || DEFAULT_KEYPAD_VARIANT}\n onClick={this.onClick}\n />\n </ResponseContainer>\n )) ||\n null,\n )}\n >\n <div>\n <mq.Static\n className=\"static-math\"\n ref={(mqStatic) => {\n if (mqStatic) this.mqStatic = mqStatic;\n }}\n latex={staticLatex}\n onSubFieldChange={this.subFieldChanged}\n getFieldName={this.getFieldName}\n setInput={this.setInput}\n onSubFieldFocus={this.onSubFieldFocus}\n onBlur={this.onBlur}\n />\n </div>\n </Tooltip>\n </Expression>\n )}\n </InputAndKeypadContainer>\n </Readable>\n )}\n\n {viewMode && displayNote && <Note dangerouslySetInnerHTML={{ __html: `<strong>Note:</strong> ${note}` }} />}\n\n {viewMode &&\n showRationale &&\n (!animationsDisabled ? (\n <Collapsible labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}>\n <div dangerouslySetInnerHTML={{ __html: rationale }} />\n </Collapsible>\n ) : (\n <div dangerouslySetInnerHTML={{ __html: rationale }} />\n ))}\n </MainContent>\n );\n\n if (tooltipModeEnabled && (showCorrectAnswerToggle || showTeacherInstructions || showRationale || feedback)) {\n return (\n <StyledUiLayout\n extraCSSRules={extraCSSRules}\n ref={(r) => {\n // eslint-disable-next-line react/no-find-dom-node\n const domNode = ReactDOM.findDOMNode(r);\n\n this.root = domNode || this.root;\n }}\n >\n <StyledTooltip\n interactive\n enterTouchDelay={0}\n placement=\"bottom-start\"\n slotProps={{\n tooltip: {\n sx: (theme) => ({\n background: `${color.primaryLight()} !important`,\n color: color.text(),\n padding: theme.spacing(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 },\n popper: {\n sx: {\n opacity: 1,\n },\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, 2],\n },\n },\n ],\n },\n }}\n title={\n <div>\n <MainContent>\n {showCorrectAnswerToggle && (\n <StyledCorrectAnswerToggle\n language={language}\n show\n toggled={showCorrect}\n onToggle={this.toggleShowCorrect}\n />\n )}\n </MainContent>\n\n {showTeacherInstructions && (\n <StyledCollapsible\n key=\"collapsible-teacher-instructions\"\n labels={{\n hidden: 'Show Teacher Instructions',\n visible: 'Hide Teacher Instructions',\n }}\n >\n <PreviewPrompt prompt={teacherInstructions} />\n </StyledCollapsible>\n )}\n {displayNote && hasText(note) && (\n <StyledCollapsible\n key=\"collapsible-note\"\n labels={{\n hidden: translator.t('common:showNote', { lng: language }),\n visible: translator.t('common:hideNote', { lng: language }),\n }}\n >\n <PreviewPrompt prompt={note} />\n </StyledCollapsible>\n )}\n\n {showRationale && (\n <StyledCollapsible\n key=\"collapsible-rationale\"\n labels={{\n hidden: 'Show Rationale',\n visible: 'Hide Rationale',\n }}\n >\n <PreviewPrompt prompt={rationale} />\n </StyledCollapsible>\n )}\n\n {feedback && <Feedback correctness={correctness.correctness} feedback={feedback} />}\n </div>\n }\n >\n {midContent}\n </StyledTooltip>\n </StyledUiLayout>\n );\n }\n\n return (\n <StyledUiLayout\n id={id}\n extraCSSRules={extraCSSRules}\n ref={(r) => {\n // eslint-disable-next-line react/no-find-dom-node\n const domNode = ReactDOM.findDOMNode(r);\n\n this.root = domNode || this.root;\n }}\n >\n {midContent}\n </StyledUiLayout>\n );\n }\n}\n\n// Helper function to get class names for HTML string generation\nconst getBlockClassNames = () => {\n return {\n blockContainer: 'block-container',\n blockResponse: 'block-response',\n blockMath: 'block-math',\n };\n};\n\n// CSS for block classes used in HTML string generation\nif (typeof document !== 'undefined') {\n const styleId = 'math-inline-block-styles';\n if (!document.getElementById(styleId)) {\n const style = document.createElement('style');\n style.id = styleId;\n style.textContent = `\n .block-container {\n margin: 8px !important;\n display: inline-flex;\n border: 2px solid grey !important;\n }\n .block-response {\n color: grey;\n background: #f5f5f5;\n font-size: 0.8rem !important;\n padding: 4px !important;\n display: flex;\n align-items: center;\n justify-content: center;\n border-right: 2px solid #bdbdbd !important;\n flex-shrink: 0;\n flex-grow: 0;\n flex-basis: auto;\n }\n .block-math {\n color: ${color.text()};\n background-color: ${color.background()};\n padding: 4px !important;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-grow: 1;\n }\n .block-math > .mq-math-mode > .mq-hasCursor > .mq-cursor {\n display: none;\n }\n .sr-only {\n position: absolute;\n left: -10000px;\n top: auto;\n width: 1px;\n height: 1px;\n overflow: hidden;\n }\n .static-math > .mq-root-block > .mq-editable-field {\n border-color: ${color.text()};\n }\n `;\n document.head.appendChild(style);\n }\n}\n\nconst StyledUiLayout = styled(UiLayout)(() => ({\n color: color.text(),\n backgroundColor: color.background(),\n display: 'inline-block',\n}));\n\nconst StyledTooltip = styled(Tooltip)({\n // Styles applied via slotProps.sx below\n});\n\nconst PromptContainer = styled('div')(({ theme }) => ({\n marginBottom: theme.spacing(2),\n}));\n\nconst MainContent = styled('div')({\n width: '100%',\n position: 'relative',\n backgroundColor: color.background(),\n color: color.text(),\n});\n\nconst Note = styled('div')(({ theme }) => ({\n paddingBottom: theme.spacing(2),\n}));\n\nconst StyledCollapsible = styled(Collapsible)(({ theme }) => ({\n marginBottom: theme.spacing(2),\n}));\n\nconst ResponseContainer = styled('div')(({ theme }) => ({\n zIndex: 10,\n minWidth: '400px',\n marginTop: theme.spacing(2),\n}));\n\nconst Expression = styled('div', {\n shouldForwardProp: (prop) =>\n !['isIncorrect', 'isCorrect', 'showCorrectness', 'correctAnswerShown', 'printCorrect'].includes(prop),\n})(({ theme, isIncorrect, isCorrect, showCorrectness, correctAnswerShown, printCorrect }) => {\n const borderColor = isIncorrect ? color.incorrect() : isCorrect ? color.correct() : undefined;\n\n return {\n maxWidth: 'fit-content',\n padding: theme.spacing(0.25),\n ...(showCorrectness && {\n border: borderColor ? `2px solid ${borderColor} !important` : '2px solid',\n }),\n ...(!showCorrectness &&\n borderColor && {\n borderColor: `${borderColor} !important`,\n }),\n ...(correctAnswerShown && {\n padding: theme.spacing(1),\n letterSpacing: '0.5px',\n }),\n ...(printCorrect && {\n border: `2px solid ${color.correct()} !important`,\n }),\n '& > .mq-math-mode': {\n '& > .mq-root-block': {\n paddingRight: '0 !important',\n paddingLeft: '0 !important',\n '& > .mq-editable-field': {\n minWidth: '10px',\n padding: theme.spacing(0.25),\n },\n },\n '& sup': {\n top: 0,\n },\n },\n };\n});\n\nconst InputAndKeypadContainer = styled('div')({\n position: 'relative',\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\nconst PrintContainer = styled('div')(({ theme }) => ({\n marginBottom: theme.spacing(1),\n pointerEvents: 'none',\n}));\n\nconst SrOnly = styled('h2')({\n position: 'absolute',\n left: '-10000px',\n top: 'auto',\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n});\n\nconst StyledCorrectAnswerToggle = styled(CorrectAnswerToggle)(({ theme }) => ({\n color: color.text(),\n marginBottom: theme.spacing(2),\n}));\n\nexport default Main;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"main.js","names":["_react","_interopRequireDefault","require","_propTypes","_correctAnswerToggle","_mathInput","_renderUi","_mathRendering","_styles","_Tooltip","_utils","_lodashEs","_simpleQuestionBlock","_mathquill","_translator","_reactDom","translator","Translator","registered","NEWLINE_LATEX","REGEX","DEFAULT_KEYPAD_VARIANT","IS_SAFARI","test","navigator","userAgent","generateAdditionalKeys","keyData","map","key","name","latex","write","label","isChildOfCurrentPieElement","child","parent","node","parentNode","getKeyPadWidth","additionalKeys","equationEditor","Math","floor","length","prepareForStatic","model","state","config","disabled","expression","responses","printMode","alwaysShowCorrect","modelExpression","showCorrect","answer","answerBlocks","replace","session","answers","blankSpace","repeat","value","parseAnswers","Main","React","Component","constructor","props","_defineProperty2","default","root","Object","keys","forEach","answerId","el","querySelector","indexEl","MQ","MathQuill","getInterface","textContent","view","parentElement","classList","remove","StaticMath","renderMath","selectableElements","querySelectorAll","elem","setAttribute","textareaElements","index","instructionsId","closest","instructionsElement","document","createElement","id","className","insertBefore","setTimeout","keypadElement","firstButton","focus","event","isTrigerredFromActualPieElement","target","isAnswerInputFocused","mqStatic","inputRef","current","contains","activeElement","getAttribute","type","isClickOrTouchEvent","activeAnswerBlock","cleanupKeyDownListener","setState","onSubFieldFocus","focusFirstKeypadElement","handleEvent","handleKeyDown","addEventListener","removeEventListener","response","callOnSessionChange","data","input","c","toNodeData","clear","Array","isArray","vv","cmd","keystroke","onSessionChange","show","handleAnswerBlockDomUpdate","subfieldValue","updateSpans","completeAnswer","mathField","changeField","fields","find","k","tf","e","relatedTarget","currentTarget","isKeypadOpen","getParentWithRoleTooltip","element","depth","offsetParent","getDeepChildDataKeypad","children","attributes","parentWithTooltipRole","childWithDataKeypad","tooltipContainerRef","createRef","UNSAFE_componentWillMount","window","registerEmbed","classNames","getBlockClassNames","htmlString","blockContainer","blockResponse","blockMath","text","countResponseOccurrences","pattern","matches","match","UNSAFE_componentWillReceiveProps","nextProps","nextConfig","nextSession","isEqual","note","language","t","lng","env","mode","updateAria","newAnswers","shouldComponentUpdate","nextState","sameModel","sameState","componentDidMount","componentDidUpdate","prevProps","prevState","prevResponseType","responseType","currentResponseType","componentWillUnmount","setTooltipRef","ref","div","firstChild","render","correctness","extraCSSRules","teacherInstructions","rationale","feedback","animationsDisabled","showNote","prompt","customKeys","role","displayNote","emptyResponse","isEmpty","showCorrectAnswerToggle","tooltipModeEnabled","correct","staticLatex","viewMode","studentPrintMode","showRationale","hasText","hasMedia","showTeacherInstructions","printView","PrintContainer","mq","Static","onSubFieldChange","subFieldChanged","getFieldName","setInput","onBlur","midContent","MainContent","SrOnly","StyledCollapsible","labels","hidden","visible","dangerouslySetInnerHTML","__html","PromptContainer","PreviewPrompt","Readable","false","InputAndKeypadContainer","tabIndex","ResponseTypes","simple","onSimpleResponseChange","showKeypad","advanced","Expression","isIncorrect","isCorrect","showCorrectness","correctAnswerShown","printCorrect","enterTouchDelay","interactive","open","slotProps","popper","container","undefined","placement","sx","backgroundColor","width","opacity","display","modifiers","options","offset","enabled","boundary","padding","adaptive","gpuAcceleration","tooltip","fontSize","marginTop","paddingTop","boxShadow","title","ResponseContainer","style","HorizontalKeypad","onClick","Note","Collapsible","StyledUiLayout","r","domNode","ReactDOM","findDOMNode","StyledTooltip","theme","background","color","primaryLight","spacing","border","secondary","StyledCorrectAnswerToggle","toggled","onToggle","toggleShowCorrect","Feedback","exports","PropTypes","object","isRequired","func","styleId","getElementById","head","appendChild","styled","UiLayout","Tooltip","marginBottom","position","paddingBottom","zIndex","minWidth","shouldForwardProp","prop","includes","borderColor","incorrect","maxWidth","letterSpacing","paddingRight","paddingLeft","top","lineHeight","left","right","borderTop","pointerEvents","height","overflow","CorrectAnswerToggle","_default"],"sources":["../src/main.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport { mq, HorizontalKeypad, updateSpans } from '@pie-lib/math-input';\nimport { Feedback, Collapsible, Readable, hasText, hasMedia, PreviewPrompt, UiLayout } from '@pie-lib/render-ui';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { styled } from '@mui/material/styles';\nimport Tooltip from '@mui/material/Tooltip';\nimport { ResponseTypes } from './utils';\nimport { isEmpty, isEqual } from 'lodash-es';\nimport SimpleQuestionBlock from './simple-question-block';\nimport MathQuill from '@pie-framework/mathquill';\nimport { color } from '@pie-lib/render-ui';\nimport Translator from '@pie-lib/translator';\nimport ReactDOM from 'react-dom';\nconst { translator } = Translator;\nlet registered = false;\n\nconst NEWLINE_LATEX = /\\\\newline/g;\nconst REGEX = /{{response}}/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 isChildOfCurrentPieElement(child, parent) {\n let node = child;\n while (node !== null) {\n if (parent && node === parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\n\nfunction getKeyPadWidth(additionalKeys = [], equationEditor) {\n return Math.floor(additionalKeys.length / 5) * 30 + (equationEditor === 'miscellaneous' ? 600 : 500);\n}\n\nfunction prepareForStatic(model, state) {\n const { config, disabled } = model || {};\n const { expression, responses, printMode, alwaysShowCorrect } = config || {};\n\n if (config && expression) {\n const modelExpression = expression;\n\n if (state.showCorrect) {\n return responses && responses.length && responses[0].answer;\n }\n\n let answerBlocks = 1; // assume one at least\n // build out local state model using responses declared in expression\n\n return (modelExpression || '')\n .replace(REGEX, function () {\n const answer = state.session.answers[`r${answerBlocks}`];\n\n if (printMode && !alwaysShowCorrect) {\n const blankSpace = '\\\\ \\\\ '.repeat(30) + '\\\\newline ';\n\n return `\\\\MathQuillMathField[r${answerBlocks++}]{${blankSpace.repeat(3)}}`;\n }\n\n if (disabled) {\n return `\\\\embed{answerBlock}[r${answerBlocks++}]`;\n }\n\n return `\\\\MathQuillMathField[r${answerBlocks++}]{${(answer && answer.value) || ''}}`;\n })\n .replace(NEWLINE_LATEX, '\\\\embed{newLine}[]');\n }\n}\n\nfunction parseAnswers(session, model) {\n const answers = {};\n\n if (model.config && model.config.expression) {\n let answerBlocks = 1; // assume one at least\n // build out local state model using responses declared in expression\n\n (model.config.expression || '').replace(REGEX, () => {\n answers[`r${answerBlocks}`] = {\n value:\n (session &&\n session.answers &&\n session.answers[`r${answerBlocks}`] &&\n session.answers[`r${answerBlocks}`].value) ||\n '',\n };\n\n answerBlocks += 1;\n });\n }\n return answers;\n}\n\nexport class Main extends React.Component {\n static propTypes = {\n session: PropTypes.object.isRequired,\n onSessionChange: PropTypes.func,\n model: PropTypes.object.isRequired,\n };\n\n constructor(props) {\n super(props);\n const { model, session } = props;\n const answers = parseAnswers(session, model);\n\n this.state = {\n session: { ...props.session, answers },\n activeAnswerBlock: '',\n showCorrect: this.props.model.config.alwaysShowCorrect || false,\n tooltipContainerRef: React.createRef(),\n };\n }\n\n UNSAFE_componentWillMount() {\n if (typeof window !== 'undefined') {\n let MQ = MathQuill.getInterface(3);\n\n if (!registered) {\n MQ.registerEmbed('answerBlock', (data) => {\n const classNames = getBlockClassNames();\n return {\n htmlString: `<div class=\"${classNames.blockContainer}\">\n <div class=\"${classNames.blockResponse}\" id=\"${data}Index\">R</div>\n <div class=\"${classNames.blockMath}\">\n <span id=\"${data}\"></span>\n </div>\n </div>`,\n text: () => 'text',\n latex: () => `\\\\embed{answerBlock}[${data}]`,\n };\n });\n\n registered = true;\n }\n }\n }\n\n handleAnswerBlockDomUpdate = () => {\n const { model } = 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 // const correct = model.correctness && model.correctness.correct;\n\n if (el) {\n let MQ = MathQuill.getInterface(3);\n const answer = answers[answerId];\n\n el.textContent = (answer && answer.value) || '';\n\n if (!model.view) {\n // for now, we're not going to be showing individual response correctness\n // TODO re-attach the classes once we are\n // el.parentElement.parentElement.classList.add(\n // correct ? 'correct' : 'incorrect'\n // );\n } else {\n el.parentElement.parentElement.classList.remove('correct');\n el.parentElement.parentElement.classList.remove('incorrect');\n }\n\n MQ.StaticMath(el);\n\n // For now, we're not going to be indexing response blocks\n // TODO go back to indexing once we support individual response correctness\n // indexEl.textContent = `R${idx + 1}`;\n indexEl.textContent = 'R';\n }\n });\n }\n\n renderMath(this.root);\n };\n\n countResponseOccurrences(expression) {\n const pattern = /\\{\\{response\\}\\}/g;\n const matches = expression?.match(pattern);\n\n return matches ? matches.length : 0;\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { config } = this.props.model;\n const { config: nextConfig = {} } = nextProps.model || {};\n\n const { session } = this.props;\n const { session: nextSession = {} } = nextProps || {};\n\n // in case session props changed in parent, we need to catch this and update local state\n // example: when env is changing in pieoneer\n if (session && nextSession && !isEqual(session.answers, nextSession.answers)) {\n this.setState({\n session: { ...nextSession, answers: parseAnswers(nextSession, this.props.model) },\n });\n }\n\n // check if the note is the default one for prev language and change to the default one for new language\n // this check is necessary in order to diferanciate between default and authour defined note\n // and only change between languages for default ones\n if (\n config.note &&\n config.language &&\n config.language !== nextConfig.language &&\n config.note === translator.t('mathInline.primaryCorrectWithAlternates', { lng: config.language })\n ) {\n config.note = translator.t('mathInline.primaryCorrectWithAlternates', { lng: nextConfig.language });\n }\n\n if ((config.env && config.env.mode !== 'evaluate') || (nextConfig.env && nextConfig.env.mode !== 'evaluate')) {\n this.setState({ ...this.state.session, showCorrect: false });\n }\n\n if (nextConfig.alwaysShowCorrect) {\n this.setState({ showCorrect: true });\n }\n\n if (this.countResponseOccurrences(config.expression) < this.countResponseOccurrences(nextConfig.expression)) {\n setTimeout(() => this.updateAria(), 100);\n }\n\n if (\n (config && config.responses && config.responses.length !== nextConfig.responses.length) ||\n (!config && nextConfig && nextConfig.responses) ||\n (config && nextConfig && config.expression !== nextConfig.expression)\n ) {\n const newAnswers = {};\n const answers = this.state.session.answers;\n\n let answerBlocks = 1; // assume one at least\n\n // build out local state model using responses declared in expression\n (nextConfig.expression || '').replace(REGEX, () => {\n newAnswers[`r${answerBlocks}`] = {\n value: (answers && answers[`r${answerBlocks}`] && answers[`r${answerBlocks}`].value) || '',\n };\n answerBlocks++;\n });\n\n this.setState(\n (state) => ({\n session: {\n ...state.session,\n completeAnswer: this.mqStatic && this.mqStatic.mathField.latex(),\n answers: newAnswers,\n },\n }),\n this.handleAnswerBlockDomUpdate,\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 this.updateAria();\n setTimeout(() => renderMath(this.root), 100);\n }\n\n componentDidUpdate(prevProps, prevState) {\n this.handleAnswerBlockDomUpdate();\n\n const prevResponseType = prevProps.model?.config?.responseType;\n const currentResponseType = this.props.model?.config?.responseType;\n\n if (prevResponseType !== currentResponseType) {\n this.updateAria();\n }\n }\n\n updateAria = () => {\n if (this.root) {\n // Update aria-hidden for .mq-selectable elements\n const selectableElements = this.root.querySelectorAll('.mq-selectable');\n selectableElements.forEach((elem) => elem.setAttribute('aria-hidden', 'true'));\n\n // Update aria-label for textarea elements and add aria-describedby\n const textareaElements = this.root.querySelectorAll('textarea');\n textareaElements.forEach((elem, index) => {\n elem.setAttribute('aria-label', 'Enter answer.');\n\n // Create a unique id for each instructions element\n const instructionsId = `instructions-${index}`;\n\n // Find the parent element that contains the textarea\n const parent = elem.closest('.mq-textarea');\n\n if (parent) {\n // Create or find the instructions element within the parent\n let instructionsElement = parent.querySelector(`#${instructionsId}`);\n\n if (!instructionsElement) {\n instructionsElement = document.createElement('span');\n instructionsElement.id = instructionsId;\n instructionsElement.className = 'sr-only';\n instructionsElement.textContent =\n 'This field supports both keypad and keyboard input. Use the keyboard to access and interact with the on-screen math keypad, which accepts LaTeX markup. Use the down arrow key to open the keypad and navigate its buttons. Use the escape key to close the keypad and return to the input field.';\n parent.insertBefore(instructionsElement, elem);\n }\n\n elem.setAttribute('aria-describedby', instructionsId);\n }\n });\n }\n };\n\n focusFirstKeypadElement = () => {\n setTimeout(() => {\n const keypadElement = document.querySelector('[data-keypad]');\n\n if (keypadElement) {\n const firstButton = keypadElement.querySelector(\"button, [role='button']\");\n\n if (firstButton) {\n firstButton.focus();\n }\n }\n }, 0);\n };\n\n handleKeyDown = (event, id) => {\n const isTrigerredFromActualPieElement = isChildOfCurrentPieElement(event.target, this.root);\n const isAnswerInputFocused =\n this.mqStatic && this.mqStatic.inputRef?.current\n ? this.mqStatic.inputRef?.current.contains(document.activeElement)\n : document.activeElement?.getAttribute('aria-label') === 'Enter answer.';\n const { key, type } = event;\n const isClickOrTouchEvent = type === 'click' || type === 'touchstart';\n\n if (isAnswerInputFocused && (key === 'ArrowDown' || isClickOrTouchEvent)) {\n if (this.state.activeAnswerBlock !== id && isTrigerredFromActualPieElement) {\n this.cleanupKeyDownListener();\n this.setState({ activeAnswerBlock: id }, () => {\n this.onSubFieldFocus(id);\n if (key === 'ArrowDown') {\n this.focusFirstKeypadElement();\n }\n });\n }\n } else if (event.key === 'Escape') {\n this.setState({ activeAnswerBlock: '' });\n }\n };\n\n onSubFieldFocus = (id) => {\n if (!this.handleEvent) {\n this.handleEvent = (event) => {\n this.handleKeyDown(event, id);\n };\n\n document.addEventListener('keydown', this.handleEvent);\n document.addEventListener('click', this.handleEvent);\n document.addEventListener('touchstart', this.handleEvent);\n }\n };\n\n cleanupKeyDownListener = () => {\n if (this.handleEvent) {\n document.removeEventListener('keydown', this.handleEvent);\n document.removeEventListener('click', this.handleEvent);\n document.removeEventListener('touchstart', this.handleEvent);\n this.handleEvent = null;\n }\n };\n\n componentWillUnmount() {\n if (this.cleanupKeyDownListener) {\n this.cleanupKeyDownListener();\n }\n }\n\n onDone = () => {};\n\n onSimpleResponseChange = (response) => {\n this.setState((state) => ({ session: { ...state.session, response } }), this.callOnSessionChange);\n };\n\n toNodeData = (data) => {\n if (!data) {\n return;\n }\n\n const { type, value } = data;\n\n if (type === 'command' || type === 'cursor') {\n return data;\n } else if (type === 'answer') {\n return { type: 'answer', ...data };\n } else if (value === 'clear') {\n return { type: 'clear' };\n } else {\n return { type: 'write', value };\n }\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 completeAnswer: this.mqStatic && this.mqStatic.mathField.latex(),\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 // our keypad is in tooltip\n // in this way we see if event was triggered from the keypad\n const isKeypadOpen = currentTarget && currentTarget.closest('[role=tooltip]');\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 // if event was trigered from the keypad, avoid closing the keypad\n if (!isKeypadOpen) {\n this.setState({ activeAnswerBlock: '' });\n }\n }\n // else {\n // // Just for debugging purpose:\n // console.log('\\n\\nNew childWithDataKeypad', childWithDataKeypad);\n //\n // if (IS_SAFARI) {\n // // (IS_SAFARI && !relatedTarget?.offsetParent?.children[0]?.children[0]?.attributes?.['data-keypad'])\n // console.log('What was being used', relatedTarget?.offsetParent?.children[0]?.children[0]);\n // } else {\n // // (!IS_SAFARI && !relatedTarget?.offsetParent?.children[0]?.attributes?.['data-keypad']) ||\n // console.log('What was being used', relatedTarget?.offsetParent?.children[0]);\n // }\n // }\n };\n\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 render() {\n const { model } = this.props;\n const { activeAnswerBlock, showCorrect, session, tooltipContainerRef } = this.state;\n const {\n config,\n correctness,\n disabled,\n extraCSSRules,\n view,\n teacherInstructions,\n rationale,\n feedback,\n animationsDisabled,\n printMode,\n alwaysShowCorrect,\n language,\n } = model || {};\n\n if (!config) {\n return null;\n }\n\n const {\n showNote,\n note,\n prompt,\n responses,\n responseType,\n equationEditor,\n customKeys,\n id,\n env: { mode, role } = {},\n } = config || {};\n const displayNote = (showCorrect || (mode === 'view' && role === 'instructor')) && showNote && note;\n const emptyResponse = isEmpty(responses);\n const showCorrectAnswerToggle = !emptyResponse && correctness && correctness.correctness !== 'correct';\n const tooltipModeEnabled = disabled && correctness;\n const additionalKeys = generateAdditionalKeys(customKeys);\n const correct = correctness && correctness.correct;\n const staticLatex = prepareForStatic(model, this.state) || '';\n const viewMode = disabled && !correctness;\n const studentPrintMode = printMode && !alwaysShowCorrect;\n const showRationale = rationale && (hasText(rationale) || hasMedia(rationale));\n const showTeacherInstructions =\n teacherInstructions && (hasText(teacherInstructions) || hasMedia(teacherInstructions));\n\n const printView = (\n <PrintContainer>\n <mq.Static\n className=\"static-math\"\n ref={(mqStatic) => {\n if (mqStatic) this.mqStatic = mqStatic;\n }}\n latex={staticLatex}\n onSubFieldChange={this.subFieldChanged}\n getFieldName={this.getFieldName}\n setInput={this.setInput}\n onSubFieldFocus={this.onSubFieldFocus}\n onBlur={this.onBlur}\n />\n </PrintContainer>\n );\n\n const midContent = (\n <MainContent>\n {mode === 'gather' && <SrOnly>Math Equation Response Question</SrOnly>}\n\n {viewMode &&\n showTeacherInstructions &&\n (!animationsDisabled ? (\n <StyledCollapsible labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}>\n <div dangerouslySetInnerHTML={{ __html: teacherInstructions }} />\n </StyledCollapsible>\n ) : (\n <div dangerouslySetInnerHTML={{ __html: teacherInstructions }} />\n ))}\n\n {prompt && (\n <PromptContainer>\n <PreviewPrompt prompt={prompt} />\n </PromptContainer>\n )}\n\n {studentPrintMode ? (\n printView\n ) : (\n <Readable false>\n <InputAndKeypadContainer tabIndex={0}>\n {responseType === ResponseTypes.simple && (\n <SimpleQuestionBlock\n onSimpleResponseChange={this.onSimpleResponseChange}\n showCorrect={showCorrect}\n emptyResponse={emptyResponse}\n model={model}\n session={session}\n onSubFieldFocus={this.onSubFieldFocus}\n showKeypad={!!activeAnswerBlock}\n />\n )}\n\n {responseType === ResponseTypes.advanced && (\n <Expression\n ref={tooltipContainerRef}\n isIncorrect={!emptyResponse && !correct && !showCorrect}\n isCorrect={!emptyResponse && (correct || showCorrect)}\n showCorrectness={!emptyResponse && disabled && correctness && !view}\n correctAnswerShown={showCorrect}\n printCorrect={printMode && alwaysShowCorrect}\n >\n <Tooltip\n ref={(ref) => this.setTooltipRef(ref)}\n enterTouchDelay={0}\n interactive\n open={!!activeAnswerBlock}\n slotProps={{\n popper: {\n container: tooltipContainerRef?.current || undefined,\n placement: 'bottom-start',\n sx: {\n backgroundColor: 'transparent',\n width: '650px',\n opacity: 1,\n '& .MuiTooltip-arrow': {\n display: 'none',\n },\n },\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, 8],\n },\n },\n {\n name: 'preventOverflow',\n enabled: true,\n options: {\n boundary: 'viewport',\n padding: 8,\n },\n },\n {\n name: 'computeStyles',\n options: {\n adaptive: true,\n gpuAcceleration: true,\n },\n },\n {\n name: 'flip',\n enabled: false,\n },\n ],\n },\n tooltip: {\n sx: {\n fontSize: 'initial',\n backgroundColor: 'transparent',\n width: '600px',\n marginTop: 0,\n paddingTop: 0,\n boxShadow: 'none',\n },\n },\n }}\n title={Object.keys(session.answers).map(\n (answerId) =>\n (answerId === activeAnswerBlock && !(showCorrect || disabled) && (\n <ResponseContainer\n data-keypad={true}\n key={answerId}\n style={{\n // marginTop: this.mqStatic && this.mqStatic.input.offsetHeight - 20,\n width: getKeyPadWidth(additionalKeys, equationEditor),\n }}\n >\n <HorizontalKeypad\n additionalKeys={additionalKeys}\n mode={equationEditor || DEFAULT_KEYPAD_VARIANT}\n onClick={this.onClick}\n />\n </ResponseContainer>\n )) ||\n null,\n )}\n >\n <div>\n <mq.Static\n className=\"static-math\"\n ref={(mqStatic) => {\n if (mqStatic) this.mqStatic = mqStatic;\n }}\n latex={staticLatex}\n onSubFieldChange={this.subFieldChanged}\n getFieldName={this.getFieldName}\n setInput={this.setInput}\n onSubFieldFocus={this.onSubFieldFocus}\n onBlur={this.onBlur}\n />\n </div>\n </Tooltip>\n </Expression>\n )}\n </InputAndKeypadContainer>\n </Readable>\n )}\n\n {viewMode && displayNote && <Note dangerouslySetInnerHTML={{ __html: `<strong>Note:</strong> ${note}` }} />}\n\n {viewMode &&\n showRationale &&\n (!animationsDisabled ? (\n <Collapsible labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}>\n <div dangerouslySetInnerHTML={{ __html: rationale }} />\n </Collapsible>\n ) : (\n <div dangerouslySetInnerHTML={{ __html: rationale }} />\n ))}\n </MainContent>\n );\n\n if (tooltipModeEnabled && (showCorrectAnswerToggle || showTeacherInstructions || showRationale || feedback)) {\n return (\n <StyledUiLayout\n extraCSSRules={extraCSSRules}\n ref={(r) => {\n // eslint-disable-next-line react/no-find-dom-node\n const domNode = ReactDOM.findDOMNode(r);\n\n this.root = domNode || this.root;\n }}\n >\n <StyledTooltip\n interactive\n enterTouchDelay={0}\n placement=\"bottom-start\"\n slotProps={{\n tooltip: {\n sx: (theme) => ({\n background: `${color.primaryLight()} !important`,\n color: color.text(),\n padding: theme.spacing(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 },\n popper: {\n sx: {\n opacity: 1,\n },\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, 2],\n },\n },\n ],\n },\n }}\n title={\n <div>\n <MainContent>\n {showCorrectAnswerToggle && (\n <StyledCorrectAnswerToggle\n language={language}\n show\n toggled={showCorrect}\n onToggle={this.toggleShowCorrect}\n />\n )}\n </MainContent>\n\n {showTeacherInstructions && (\n <StyledCollapsible\n key=\"collapsible-teacher-instructions\"\n labels={{\n hidden: 'Show Teacher Instructions',\n visible: 'Hide Teacher Instructions',\n }}\n >\n <PreviewPrompt prompt={teacherInstructions} />\n </StyledCollapsible>\n )}\n {displayNote && hasText(note) && (\n <StyledCollapsible\n key=\"collapsible-note\"\n labels={{\n hidden: translator.t('common:showNote', { lng: language }),\n visible: translator.t('common:hideNote', { lng: language }),\n }}\n >\n <PreviewPrompt prompt={note} />\n </StyledCollapsible>\n )}\n\n {showRationale && (\n <StyledCollapsible\n key=\"collapsible-rationale\"\n labels={{\n hidden: 'Show Rationale',\n visible: 'Hide Rationale',\n }}\n >\n <PreviewPrompt prompt={rationale} />\n </StyledCollapsible>\n )}\n\n {feedback && <Feedback correctness={correctness.correctness} feedback={feedback} />}\n </div>\n }\n >\n {midContent}\n </StyledTooltip>\n </StyledUiLayout>\n );\n }\n\n return (\n <StyledUiLayout\n id={id}\n extraCSSRules={extraCSSRules}\n ref={(r) => {\n // eslint-disable-next-line react/no-find-dom-node\n const domNode = ReactDOM.findDOMNode(r);\n\n this.root = domNode || this.root;\n }}\n >\n {midContent}\n </StyledUiLayout>\n );\n }\n}\n\n// Helper function to get class names for HTML string generation\nconst getBlockClassNames = () => {\n return {\n blockContainer: 'block-container',\n blockResponse: 'block-response',\n blockMath: 'block-math',\n };\n};\n\n// CSS for block classes used in HTML string generation\nif (typeof document !== 'undefined') {\n const styleId = 'math-inline-block-styles';\n if (!document.getElementById(styleId)) {\n const style = document.createElement('style');\n style.id = styleId;\n style.textContent = `\n .block-container {\n margin: 8px !important;\n display: inline-flex;\n border: 2px solid grey !important;\n }\n .block-response {\n color: grey;\n background: #f5f5f5;\n font-size: 0.8rem !important;\n padding: 4px !important;\n display: flex;\n align-items: center;\n justify-content: center;\n border-right: 2px solid #bdbdbd !important;\n flex-shrink: 0;\n flex-grow: 0;\n flex-basis: auto;\n }\n .block-math {\n color: ${color.text()};\n background-color: ${color.background()};\n padding: 4px !important;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-grow: 1;\n }\n .block-math > .mq-math-mode > .mq-hasCursor > .mq-cursor {\n display: none;\n }\n .sr-only {\n position: absolute;\n left: -10000px;\n top: auto;\n width: 1px;\n height: 1px;\n overflow: hidden;\n }\n .static-math > .mq-root-block > .mq-editable-field {\n border-color: ${color.text()};\n }\n `;\n document.head.appendChild(style);\n }\n}\n\nconst StyledUiLayout = styled(UiLayout)(() => ({\n color: color.text(),\n backgroundColor: color.background(),\n display: 'inline-block',\n}));\n\nconst StyledTooltip = styled(Tooltip)({\n // Styles applied via slotProps.sx below\n});\n\nconst PromptContainer = styled('div')(({ theme }) => ({\n marginBottom: theme.spacing(2),\n}));\n\nconst MainContent = styled('div')({\n width: '100%',\n position: 'relative',\n backgroundColor: color.background(),\n color: color.text(),\n});\n\nconst Note = styled('div')(({ theme }) => ({\n paddingBottom: theme.spacing(2),\n}));\n\nconst StyledCollapsible = styled(Collapsible)(({ theme }) => ({\n marginBottom: theme.spacing(2),\n}));\n\nconst ResponseContainer = styled('div')(({ theme }) => ({\n zIndex: 10,\n minWidth: '400px',\n marginTop: theme.spacing(2),\n}));\n\nconst Expression = styled('div', {\n shouldForwardProp: (prop) =>\n !['isIncorrect', 'isCorrect', 'showCorrectness', 'correctAnswerShown', 'printCorrect'].includes(prop),\n})(({ theme, isIncorrect, isCorrect, showCorrectness, correctAnswerShown, printCorrect }) => {\n const borderColor = isIncorrect ? color.incorrect() : isCorrect ? color.correct() : undefined;\n\n return {\n maxWidth: 'fit-content',\n padding: theme.spacing(0.25),\n ...(showCorrectness && {\n border: borderColor ? `2px solid ${borderColor} !important` : '2px solid',\n }),\n ...(!showCorrectness &&\n borderColor && {\n borderColor: `${borderColor} !important`,\n }),\n ...(correctAnswerShown && {\n padding: theme.spacing(1),\n letterSpacing: '0.5px',\n }),\n ...(printCorrect && {\n border: `2px solid ${color.correct()} !important`,\n }),\n '& > .mq-math-mode': {\n '& > .mq-root-block': {\n paddingRight: '0 !important',\n paddingLeft: '0 !important',\n '& > .mq-editable-field': {\n minWidth: '10px',\n padding: theme.spacing(0.25),\n },\n },\n '& sup': {\n top: 0,\n },\n },\n };\n});\n\nconst InputAndKeypadContainer = styled('div')({\n position: 'relative',\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\nconst PrintContainer = styled('div')(({ theme }) => ({\n marginBottom: theme.spacing(1),\n pointerEvents: 'none',\n}));\n\nconst SrOnly = styled('h2')({\n position: 'absolute',\n left: '-10000px',\n top: 'auto',\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n});\n\nconst StyledCorrectAnswerToggle = styled(CorrectAnswerToggle)(({ theme }) => ({\n color: color.text(),\n marginBottom: theme.spacing(2),\n}));\n\nexport default Main;\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
7
- "version": "11.1.2-next.3",
7
+ "version": "11.2.0-next.0",
8
8
  "main": "lib/index.js",
9
9
  "description": "",
10
10
  "scripts": {
@@ -15,12 +15,12 @@
15
15
  "@emotion/style": "^0.8.0",
16
16
  "@mui/icons-material": "^7.3.4",
17
17
  "@mui/material": "^7.3.4",
18
- "@pie-framework/mathquill": "^1.1.3",
18
+ "@pie-framework/mathquill": "1.2.1-beta.0",
19
19
  "@pie-framework/pie-player-events": "^0.1.0",
20
20
  "@pie-lib/correct-answer-toggle": "3.2.0-next.4",
21
- "@pie-lib/math-input": "7.2.0-next.5",
21
+ "@pie-lib/math-input": "7.2.0-next.8",
22
22
  "@pie-lib/math-rendering": "4.2.0-next.3",
23
- "@pie-lib/math-toolbar": "2.2.0-next.6",
23
+ "@pie-lib/math-toolbar": "2.2.0-next.9",
24
24
  "@pie-lib/render-ui": "5.2.0-next.4",
25
25
  "@pie-lib/translator": "3.2.0-next.3",
26
26
  "classnames": "^2.2.5",
@@ -32,7 +32,7 @@
32
32
  },
33
33
  "author": "",
34
34
  "license": "ISC",
35
- "gitHead": "15d380e035464a06537eea3aae5cd741f5319659",
35
+ "gitHead": "11169f258ac462817f622c5272b360009b6675ab",
36
36
  "module": "src/index.js",
37
37
  "exports": {
38
38
  ".": "./src/index.js",