@pie-element/extended-text-entry 14.0.0-beta.0 → 14.0.0-next.42

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,23 +3,6 @@
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
- # [13.4.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/extended-text-entry@13.3.2...@pie-element/extended-text-entry@13.4.0) (2025-11-27)
7
-
8
-
9
- ### Bug Fixes
10
-
11
- * bump libs PD-5274, PD-5211, PD-5248 ([7610b25](https://github.com/pie-framework/pie-elements/commit/7610b25423956b6492f33322513b3430051fca77))
12
- * tests ([4648663](https://github.com/pie-framework/pie-elements/commit/464866307e8f8dc10cd7983cc3f4429ce82c4a47))
13
-
14
-
15
- ### Features
16
-
17
- * remove list tools from extended-text-entry player view PD-5266 ([bc282d1](https://github.com/pie-framework/pie-elements/commit/bc282d1ea47c26115a6890fa72da3bab2206580d))
18
-
19
-
20
-
21
-
22
-
23
6
  ## [13.3.2](https://github.com/pie-framework/pie-elements/compare/@pie-element/extended-text-entry@13.3.1...@pie-element/extended-text-entry@13.3.2) (2025-10-22)
24
7
 
25
8
 
@@ -3,17 +3,6 @@
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.3.3](https://github.com/pie-framework/pie-elements/compare/@pie-element/extended-text-entry-configure@11.3.2...@pie-element/extended-text-entry-configure@11.3.3) (2025-11-27)
7
-
8
-
9
- ### Bug Fixes
10
-
11
- * bump libs PD-5274, PD-5211, PD-5248 ([7610b25](https://github.com/pie-framework/pie-elements/commit/7610b25423956b6492f33322513b3430051fca77))
12
-
13
-
14
-
15
-
16
-
17
6
  ## [11.3.2](https://github.com/pie-framework/pie-elements/compare/@pie-element/extended-text-entry-configure@11.3.1...@pie-element/extended-text-entry-configure@11.3.2) (2025-10-22)
18
7
 
19
8
 
@@ -11,7 +11,7 @@ var _configUi = require("@pie-lib/config-ui");
11
11
  var _propTypes = _interopRequireDefault(require("prop-types"));
12
12
  var _Typography = _interopRequireDefault(require("@mui/material/Typography"));
13
13
  var _styles = require("@mui/material/styles");
14
- var _editableHtml = _interopRequireWildcard(require("@pie-lib/editable-html"));
14
+ var _editableHtmlTipTap = _interopRequireWildcard(require("@pie-lib/editable-html-tip-tap"));
15
15
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
16
16
  const {
17
17
  Panel,
@@ -183,7 +183,7 @@ class Main extends _react.default.Component {
183
183
  })
184
184
  }, teacherInstructionsEnabled && /*#__PURE__*/_react.default.createElement(PromptContainer, {
185
185
  label: teacherInstructions.label
186
- }, /*#__PURE__*/_react.default.createElement(_editableHtml.default, {
186
+ }, /*#__PURE__*/_react.default.createElement(_editableHtmlTipTap.default, {
187
187
  className: "prompt",
188
188
  markup: model.teacherInstructions || '',
189
189
  onChange: this.changeTeacherInstructions,
@@ -204,8 +204,8 @@ class Main extends _react.default.Component {
204
204
  pluginProps: getPluginProps(teacherInstructions?.inputConfiguration)
205
205
  }), teacherInstructionsError && /*#__PURE__*/_react.default.createElement(ErrorText, null, teacherInstructionsError)), promptEnabled && /*#__PURE__*/_react.default.createElement(PromptContainer, {
206
206
  label: prompt.label
207
- }, /*#__PURE__*/_react.default.createElement(_editableHtml.default, {
208
- activePlugins: _editableHtml.ALL_PLUGINS,
207
+ }, /*#__PURE__*/_react.default.createElement(_editableHtmlTipTap.default, {
208
+ activePlugins: _editableHtmlTipTap.ALL_PLUGINS,
209
209
  className: "prompt",
210
210
  markup: model.prompt || '',
211
211
  onChange: this.onPromptChange,
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","names":["_react","_interopRequireDefault","require","_configUi","_propTypes","_Typography","_styles","_editableHtml","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","Panel","toggle","numberFields","dropdown","settings","defaultFeedback","type","StyledHeader","styled","Typography","theme","paddingBottom","spacing","PromptContainer","InputContainer","paddingTop","marginTop","marginBottom","width","ErrorText","fontSize","typography","color","palette","error","main","Main","React","Component","constructor","props","_defineProperty2","markup","onModelChanged","model","prompt","feedback","update","teacherInstructions","state","setDimensions","render","configuration","imageSupport","onConfigurationChanged","uploadSoundSupport","annotations","contentDimensions","dimensions","equationEditor","playerSpellCheck","settingsPanelDisabled","spanishInput","specialInput","spellCheck","studentInstructions","mathInput","maxImageWidth","maxImageHeight","multiple","withRubric","mathMlOptions","baseInputConfiguration","errors","extraCSSRules","feedbackEnabled","promptEnabled","spellCheckEnabled","teacherInstructionsEnabled","toolbarEditorPosition","promptError","teacherInstructionsError","defaultImageMaxWidth","defaultImageMaxHeight","toolbarOpts","position","panelSettings","label","enabled","suffix","min","max","height","annotationsEnabled","playerSpellCheckDisabled","panelProperties","studentInstructionsEnabled","rubricEnabled","getPluginProps","assign","createElement","layout","ConfigLayout","hideSettings","onChangeModel","onChangeConfiguration","config","groups","Settings","Properties","className","onChange","changeTeacherInstructions","nonEmpty","languageCharactersProps","language","pluginProps","inputConfiguration","activePlugins","ALL_PLUGINS","onPromptChange","Fragment","variant","FeedbackSelector","changeFeedback","exports","PropTypes","func","isRequired","object","_default"],"sources":["../src/main.jsx"],"sourcesContent":["import React from 'react';\nimport { FeedbackSelector, InputContainer, settings, layout } from '@pie-lib/config-ui';\nimport PropTypes from 'prop-types';\nimport Typography from '@mui/material/Typography';\nimport { styled } from '@mui/material/styles';\nimport EditableHtml, { ALL_PLUGINS } from '@pie-lib/editable-html';\n\nconst { Panel, toggle, numberFields, dropdown } = settings;\n\nconst defaultFeedback = {\n type: 'default',\n default: 'Your answer has been submitted',\n};\n\nconst StyledHeader = styled(Typography)(({ theme }) => ({\n paddingBottom: theme.spacing(1),\n}));\n\nconst PromptContainer = styled(InputContainer)(({ theme }) => ({\n paddingTop: theme.spacing(1),\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n width: '100%',\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\nexport class Main extends React.Component {\n static propTypes = {\n onModelChanged: PropTypes.func.isRequired,\n onConfigurationChanged: PropTypes.func,\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n imageSupport: PropTypes.object.isRequired,\n uploadSoundSupport: PropTypes.object.isRequired,\n };\n\n constructor(props) {\n super(props);\n this.state = { setDimensions: true };\n }\n\n onPromptChange = (markup) => {\n const { onModelChanged, model } = this.props;\n\n onModelChanged({ ...model, prompt: markup });\n };\n\n changeFeedback = (feedback) => {\n const { model, onModelChanged } = this.props;\n const update = { ...model, feedback };\n\n onModelChanged(update);\n };\n\n changeTeacherInstructions = (teacherInstructions) => {\n const { model, onModelChanged } = this.props;\n const update = { ...model, teacherInstructions };\n\n onModelChanged(update);\n };\n\n render() {\n const { model, configuration, imageSupport, onConfigurationChanged, onModelChanged, uploadSoundSupport } =\n this.props;\n const {\n annotations = {},\n contentDimensions = {},\n dimensions = {},\n equationEditor = {},\n feedback = {},\n playerSpellCheck = {},\n prompt = {},\n settingsPanelDisabled,\n spanishInput = {},\n specialInput = {},\n spellCheck = {},\n studentInstructions = {},\n teacherInstructions = {},\n mathInput = {},\n maxImageWidth = {},\n maxImageHeight = {},\n multiple = {},\n withRubric = {},\n mathMlOptions = {},\n baseInputConfiguration = {},\n } = configuration || {};\n const {\n errors = {},\n extraCSSRules,\n feedbackEnabled,\n promptEnabled,\n spellCheckEnabled,\n teacherInstructionsEnabled,\n toolbarEditorPosition,\n } = model || {};\n const { prompt: promptError, teacherInstructions: teacherInstructionsError } = errors;\n\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n\n const toolbarOpts = {\n position: toolbarEditorPosition === 'top' ? 'top' : 'bottom',\n };\n\n const panelSettings = {\n mathInput: mathInput.settings && toggle(mathInput.label),\n equationEditor:\n equationEditor.enabled &&\n model.mathInput &&\n dropdown(equationEditor.label, [\n 'non-negative-integers',\n 'integers',\n 'decimals',\n 'fractions',\n 'Grade 1 - 2',\n 'Grade 3 - 5',\n 'Grade 6 - 7',\n 'Grade 8 - HS',\n 'geometry',\n 'advanced-algebra',\n 'statistics',\n 'item-authoring',\n ]),\n spanishInput: spanishInput.settings && toggle(spanishInput.label),\n specialInput: specialInput.settings && toggle(specialInput.label),\n dimensions:\n dimensions.settings &&\n numberFields(dimensions.label, {\n width: { label: 'Width (px)', suffix: 'px', min: 100, max: 1200 },\n height: { label: 'Height (px)', suffix: 'px', min: 100, max: 500 },\n }),\n 'multiple.enabled': multiple.settings && toggle(multiple.label, true),\n promptEnabled: prompt.settings && toggle(prompt.label),\n feedbackEnabled: feedback.settings && toggle(feedback.label),\n annotationsEnabled: annotations.settings && toggle(annotations.label),\n spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),\n playerSpellCheckDisabled: playerSpellCheck.settings && toggle(playerSpellCheck.label),\n };\n const panelProperties = {\n teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),\n studentInstructionsEnabled: studentInstructions.settings && toggle(studentInstructions.label),\n rubricEnabled: withRubric?.settings && toggle(withRubric?.label),\n };\n\n const getPluginProps = (props) => {\n return Object.assign(\n {\n ...baseInputConfiguration,\n },\n props || {},\n );\n };\n\n return (\n <layout.ConfigLayout\n extraCSSRules={extraCSSRules}\n dimensions={contentDimensions}\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n configuration={configuration}\n onChangeModel={(model) => onModelChanged(model)}\n onChangeConfiguration={(config) => onConfigurationChanged(config)}\n groups={{\n Settings: panelSettings,\n Properties: panelProperties,\n }}\n />\n }\n >\n {teacherInstructionsEnabled && (\n <PromptContainer label={teacherInstructions.label}>\n <EditableHtml\n className=\"prompt\"\n markup={model.teacherInstructions || ''}\n onChange={this.changeTeacherInstructions}\n imageSupport={imageSupport}\n nonEmpty={false}\n error={teacherInstructionsError}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.teacherInstructions) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.teacherInstructions) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n pluginProps={getPluginProps(teacherInstructions?.inputConfiguration)}\n />\n {teacherInstructionsError && <ErrorText>{teacherInstructionsError}</ErrorText>}\n </PromptContainer>\n )}\n\n {promptEnabled && (\n <PromptContainer label={prompt.label}>\n <EditableHtml\n activePlugins={ALL_PLUGINS}\n className=\"prompt\"\n markup={model.prompt || ''}\n onChange={this.onPromptChange}\n imageSupport={imageSupport}\n nonEmpty={false}\n error={promptError}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n maxImageWidth={defaultImageMaxWidth}\n maxImageHeight={defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n pluginProps={getPluginProps(prompt?.inputConfiguration)}\n />\n {promptError && <ErrorText>{promptError}</ErrorText>}\n </PromptContainer>\n )}\n\n {feedbackEnabled && (\n <React.Fragment>\n <StyledHeader variant=\"h6\">\n Feedback\n </StyledHeader>\n\n <FeedbackSelector\n label=\"When submitted, show\"\n feedback={model.feedback || defaultFeedback}\n onChange={this.changeFeedback}\n toolbarOpts={toolbarOpts}\n />\n </React.Fragment>\n )}\n </layout.ConfigLayout>\n );\n }\n}\n\nexport default Main;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"main.js","names":["_react","_interopRequireDefault","require","_configUi","_propTypes","_Typography","_styles","_editableHtmlTipTap","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","Panel","toggle","numberFields","dropdown","settings","defaultFeedback","type","StyledHeader","styled","Typography","theme","paddingBottom","spacing","PromptContainer","InputContainer","paddingTop","marginTop","marginBottom","width","ErrorText","fontSize","typography","color","palette","error","main","Main","React","Component","constructor","props","_defineProperty2","markup","onModelChanged","model","prompt","feedback","update","teacherInstructions","state","setDimensions","render","configuration","imageSupport","onConfigurationChanged","uploadSoundSupport","annotations","contentDimensions","dimensions","equationEditor","playerSpellCheck","settingsPanelDisabled","spanishInput","specialInput","spellCheck","studentInstructions","mathInput","maxImageWidth","maxImageHeight","multiple","withRubric","mathMlOptions","baseInputConfiguration","errors","extraCSSRules","feedbackEnabled","promptEnabled","spellCheckEnabled","teacherInstructionsEnabled","toolbarEditorPosition","promptError","teacherInstructionsError","defaultImageMaxWidth","defaultImageMaxHeight","toolbarOpts","position","panelSettings","label","enabled","suffix","min","max","height","annotationsEnabled","playerSpellCheckDisabled","panelProperties","studentInstructionsEnabled","rubricEnabled","getPluginProps","assign","createElement","layout","ConfigLayout","hideSettings","onChangeModel","onChangeConfiguration","config","groups","Settings","Properties","className","onChange","changeTeacherInstructions","nonEmpty","languageCharactersProps","language","pluginProps","inputConfiguration","activePlugins","ALL_PLUGINS","onPromptChange","Fragment","variant","FeedbackSelector","changeFeedback","exports","PropTypes","func","isRequired","object","_default"],"sources":["../src/main.jsx"],"sourcesContent":["import React from 'react';\nimport { FeedbackSelector, InputContainer, settings, layout } from '@pie-lib/config-ui';\nimport PropTypes from 'prop-types';\nimport Typography from '@mui/material/Typography';\nimport { styled } from '@mui/material/styles';\nimport EditableHtml, { ALL_PLUGINS } from '@pie-lib/editable-html-tip-tap';\n\nconst { Panel, toggle, numberFields, dropdown } = settings;\n\nconst defaultFeedback = {\n type: 'default',\n default: 'Your answer has been submitted',\n};\n\nconst StyledHeader = styled(Typography)(({ theme }) => ({\n paddingBottom: theme.spacing(1),\n}));\n\nconst PromptContainer = styled(InputContainer)(({ theme }) => ({\n paddingTop: theme.spacing(1),\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n width: '100%',\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\nexport class Main extends React.Component {\n static propTypes = {\n onModelChanged: PropTypes.func.isRequired,\n onConfigurationChanged: PropTypes.func,\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n imageSupport: PropTypes.object.isRequired,\n uploadSoundSupport: PropTypes.object.isRequired,\n };\n\n constructor(props) {\n super(props);\n this.state = { setDimensions: true };\n }\n\n onPromptChange = (markup) => {\n const { onModelChanged, model } = this.props;\n\n onModelChanged({ ...model, prompt: markup });\n };\n\n changeFeedback = (feedback) => {\n const { model, onModelChanged } = this.props;\n const update = { ...model, feedback };\n\n onModelChanged(update);\n };\n\n changeTeacherInstructions = (teacherInstructions) => {\n const { model, onModelChanged } = this.props;\n const update = { ...model, teacherInstructions };\n\n onModelChanged(update);\n };\n\n render() {\n const { model, configuration, imageSupport, onConfigurationChanged, onModelChanged, uploadSoundSupport } =\n this.props;\n const {\n annotations = {},\n contentDimensions = {},\n dimensions = {},\n equationEditor = {},\n feedback = {},\n playerSpellCheck = {},\n prompt = {},\n settingsPanelDisabled,\n spanishInput = {},\n specialInput = {},\n spellCheck = {},\n studentInstructions = {},\n teacherInstructions = {},\n mathInput = {},\n maxImageWidth = {},\n maxImageHeight = {},\n multiple = {},\n withRubric = {},\n mathMlOptions = {},\n baseInputConfiguration = {},\n } = configuration || {};\n const {\n errors = {},\n extraCSSRules,\n feedbackEnabled,\n promptEnabled,\n spellCheckEnabled,\n teacherInstructionsEnabled,\n toolbarEditorPosition,\n } = model || {};\n const { prompt: promptError, teacherInstructions: teacherInstructionsError } = errors;\n\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n\n const toolbarOpts = {\n position: toolbarEditorPosition === 'top' ? 'top' : 'bottom',\n };\n\n const panelSettings = {\n mathInput: mathInput.settings && toggle(mathInput.label),\n equationEditor:\n equationEditor.enabled &&\n model.mathInput &&\n dropdown(equationEditor.label, [\n 'non-negative-integers',\n 'integers',\n 'decimals',\n 'fractions',\n 'Grade 1 - 2',\n 'Grade 3 - 5',\n 'Grade 6 - 7',\n 'Grade 8 - HS',\n 'geometry',\n 'advanced-algebra',\n 'statistics',\n 'item-authoring',\n ]),\n spanishInput: spanishInput.settings && toggle(spanishInput.label),\n specialInput: specialInput.settings && toggle(specialInput.label),\n dimensions:\n dimensions.settings &&\n numberFields(dimensions.label, {\n width: { label: 'Width (px)', suffix: 'px', min: 100, max: 1200 },\n height: { label: 'Height (px)', suffix: 'px', min: 100, max: 500 },\n }),\n 'multiple.enabled': multiple.settings && toggle(multiple.label, true),\n promptEnabled: prompt.settings && toggle(prompt.label),\n feedbackEnabled: feedback.settings && toggle(feedback.label),\n annotationsEnabled: annotations.settings && toggle(annotations.label),\n spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),\n playerSpellCheckDisabled: playerSpellCheck.settings && toggle(playerSpellCheck.label),\n };\n const panelProperties = {\n teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),\n studentInstructionsEnabled: studentInstructions.settings && toggle(studentInstructions.label),\n rubricEnabled: withRubric?.settings && toggle(withRubric?.label),\n };\n\n const getPluginProps = (props) => {\n return Object.assign(\n {\n ...baseInputConfiguration,\n },\n props || {},\n );\n };\n\n return (\n <layout.ConfigLayout\n extraCSSRules={extraCSSRules}\n dimensions={contentDimensions}\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n configuration={configuration}\n onChangeModel={(model) => onModelChanged(model)}\n onChangeConfiguration={(config) => onConfigurationChanged(config)}\n groups={{\n Settings: panelSettings,\n Properties: panelProperties,\n }}\n />\n }\n >\n {teacherInstructionsEnabled && (\n <PromptContainer label={teacherInstructions.label}>\n <EditableHtml\n className=\"prompt\"\n markup={model.teacherInstructions || ''}\n onChange={this.changeTeacherInstructions}\n imageSupport={imageSupport}\n nonEmpty={false}\n error={teacherInstructionsError}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.teacherInstructions) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.teacherInstructions) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n pluginProps={getPluginProps(teacherInstructions?.inputConfiguration)}\n />\n {teacherInstructionsError && <ErrorText>{teacherInstructionsError}</ErrorText>}\n </PromptContainer>\n )}\n\n {promptEnabled && (\n <PromptContainer label={prompt.label}>\n <EditableHtml\n activePlugins={ALL_PLUGINS}\n className=\"prompt\"\n markup={model.prompt || ''}\n onChange={this.onPromptChange}\n imageSupport={imageSupport}\n nonEmpty={false}\n error={promptError}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n maxImageWidth={defaultImageMaxWidth}\n maxImageHeight={defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n pluginProps={getPluginProps(prompt?.inputConfiguration)}\n />\n {promptError && <ErrorText>{promptError}</ErrorText>}\n </PromptContainer>\n )}\n\n {feedbackEnabled && (\n <React.Fragment>\n <StyledHeader variant=\"h6\">\n Feedback\n </StyledHeader>\n\n <FeedbackSelector\n label=\"When submitted, show\"\n feedback={model.feedback || defaultFeedback}\n onChange={this.changeFeedback}\n toolbarOpts={toolbarOpts}\n />\n </React.Fragment>\n )}\n </layout.ConfigLayout>\n );\n }\n}\n\nexport default Main;\n"],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@pie-element/extended-text-entry-configure",
3
3
  "private": true,
4
- "version": "12.0.0-beta.0",
4
+ "version": "12.0.0-beta.1",
5
5
  "description": "",
6
6
  "main": "lib/index.js",
7
7
  "module": "src/index.js",
@@ -13,8 +13,8 @@
13
13
  "@mui/icons-material": "^7.3.4",
14
14
  "@mui/material": "^7.3.4",
15
15
  "@pie-framework/pie-configure-events": "^1.3.0",
16
- "@pie-lib/config-ui": "11.30.4-next.0",
17
- "@pie-lib/editable-html": "11.21.4-next.0",
16
+ "@pie-lib/config-ui": "12.1.1-next.0",
17
+ "@pie-lib/editable-html-tip-tap": "1.1.1-next.0",
18
18
  "lodash": "^4.17.15",
19
19
  "prop-types": "^15.6.2",
20
20
  "react": "18.2.0",
@@ -3,17 +3,6 @@
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
- ## [7.3.3](https://github.com/pie-framework/pie-elements/compare/@pie-element/extended-text-entry-controller@7.3.2...@pie-element/extended-text-entry-controller@7.3.3) (2025-11-27)
7
-
8
-
9
- ### Bug Fixes
10
-
11
- * bump libs PD-5274, PD-5211, PD-5248 ([7610b25](https://github.com/pie-framework/pie-elements/commit/7610b25423956b6492f33322513b3430051fca77))
12
-
13
-
14
-
15
-
16
-
17
6
  ## [7.3.2](https://github.com/pie-framework/pie-elements/compare/@pie-element/extended-text-entry-controller@7.3.1...@pie-element/extended-text-entry-controller@7.3.2) (2025-10-22)
18
7
 
19
8
 
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@pie-element/extended-text-entry-controller",
3
3
  "private": true,
4
- "version": "8.0.0-beta.0",
4
+ "version": "8.0.0-beta.1",
5
5
  "description": "",
6
6
  "main": "lib/index.js",
7
7
  "module": "src/index.js",
8
8
  "dependencies": {
9
- "@pie-lib/feedback": "0.24.3-next.0"
9
+ "@pie-lib/feedback": "1.1.1-next.0"
10
10
  },
11
11
  "scripts": {
12
12
  "test": "echo \"Error: no test specified\" && exit 1"
@@ -12,7 +12,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
12
12
  var _annotationUtils = require("./annotation-utils");
13
13
  var _freeformEditor = _interopRequireDefault(require("./freeform-editor"));
14
14
  var _annotationMenu = _interopRequireDefault(require("./annotation-menu"));
15
- var _editableHtml = _interopRequireDefault(require("@pie-lib/editable-html"));
15
+ var _editableHtmlTipTap = _interopRequireDefault(require("@pie-lib/editable-html-tip-tap"));
16
16
  var _configUi = require("@pie-lib/config-ui");
17
17
  const TextContainer = (0, _styles.styled)('div')({
18
18
  padding: '10px 120px 10px 16px',
@@ -568,7 +568,7 @@ class AnnotationEditor extends _react.default.Component {
568
568
  ref: r => this.labelsRef = r
569
569
  })), /*#__PURE__*/_react.default.createElement(CommentContainer, {
570
570
  label: 'Comment'
571
- }, /*#__PURE__*/_react.default.createElement(_editableHtml.default, {
571
+ }, /*#__PURE__*/_react.default.createElement(_editableHtmlTipTap.default, {
572
572
  className: "prompt",
573
573
  markup: comment || '',
574
574
  onChange: onCommentChange,
@@ -1 +1 @@
1
- {"version":3,"file":"annotation-editor.js","names":["_react","_interopRequireDefault","require","_styles","_propTypes","_annotationUtils","_freeformEditor","_annotationMenu","_editableHtml","_configUi","TextContainer","styled","padding","backgroundColor","border","borderRadius","overflowY","lineHeight","whiteSpace","overflowWrap","margin","userSelect","LabelsContainer","width","Wrapper","position","overflowX","display","CommentContainer","InputContainer","theme","paddingTop","spacing","marginBottom","marginTop","globalStyles","document","getElementById","styleElement","createElement","id","textContent","head","appendChild","AnnotationEditor","React","Component","constructor","props","_defineProperty2","default","textRef","labelsRef","left","offsetLeft","offsetWidth","Array","from","children","forEach","label","spans","getAnnotationElements","dataset","annId","spanOffset","offsetTop","offsetParent","top","scrollTop","style","event","annotations","selectionDetails","state","target","annotationId","selectedElems","labelElem","getLabelElement","annotationIndex","findIndex","annotation","isSideLabel","hasAttribute","zIndex","setState","anchorEl","openedMenu","openedEditor","elem","classList","contains","setProperty","color","removeProperty","length","removeElemsWrapping","clearSelection","selection","window","getSelection","detail","rangeCount","selectedRange","getRangeAt","selectedText","toString","isSelectionInside","commonAncestorContainer","isCollapsed","getRangeDetails","wrapRange","onChange","parentRef","removeChild","splice","handleClose","elems","disabled","type","className","cursor","onclick","handleClick","onmouseover","handleHover","onmouseout","handleCancelHover","firstSpan","innerHTML","freeform","marginLeft","wordBreak","fontSize","fontStyle","fontWeight","webkitUserSelect","mozUserSelect","msUserSelect","start","end","Date","getTime","join","createDOMAnnotation","newAnnotation","text","updatedAnnotation","oldType","oldLabel","updateLabel","createNewAnnotation","push","remove","add","newLabel","span","componentDidMount","domStart","domEnd","getDOMNodes","range","createRange","setStart","node","offset","setEnd","adjustAnnotationsPosition","addEventListener","componentWillUnmount","removeEventListener","render","comment","customKeys","disabledMath","keypadMode","height","maxHeight","onCommentChange","predefinedAnnotations","anchorOffset","topOffset","minHeight","ref","r","onMouseDown","onMouseUp","handleSelection","dangerouslySetInnerHTML","__html","markup","pluginProps","math","controlledKeypadMode","video","audio","textAlign","open","isNewAnnotation","onClose","onDelete","deleteAnnotation","onEdit","editAnnotation","onWrite","addAnnotation","onAnnotate","handleMenuClick","value","onSave","updateAnnotation","onTypeChange","changeAnnotationType","PropTypes","string","array","func","isRequired","number","bool","_default","exports"],"sources":["../../src/annotation/annotation-editor.jsx"],"sourcesContent":["import React from 'react';\nimport { styled } from '@mui/material/styles';\nimport PropTypes from 'prop-types';\n\nimport {\n clearSelection,\n isSideLabel,\n getAnnotationElements,\n getDOMNodes,\n getLabelElement,\n getRangeDetails,\n removeElemsWrapping,\n wrapRange,\n} from './annotation-utils';\nimport FreeformEditor from './freeform-editor';\nimport AnnotationMenu from './annotation-menu';\nimport EditableHtml from '@pie-lib/editable-html';\nimport { InputContainer } from '@pie-lib/config-ui';\n\nconst TextContainer = styled('div')({\n padding: '10px 120px 10px 16px',\n backgroundColor: 'rgba(0, 0, 0, 0.06)',\n border: '1px solid #ccc',\n borderRadius: '4px',\n overflowY: 'scroll',\n lineHeight: '36px',\n whiteSpace: 'pre-wrap',\n overflowWrap: 'break-word',\n '& p': {\n margin: 0,\n },\n '& span[data-latex]': {\n userSelect: 'none',\n '-webkit-user-select': 'none',\n '-moz-user-select': 'none',\n '-ms-user-select': 'none',\n },\n});\n\nconst LabelsContainer = styled('div')({\n width: '230px',\n});\n\nconst Wrapper = styled('div')({\n position: 'relative',\n overflowX: 'hidden',\n display: 'flex',\n});\n\nconst CommentContainer = styled(InputContainer)(({ theme }) => ({\n paddingTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n marginTop: theme.spacing(2),\n width: '100%',\n}));\n\n// Global styles for pseudo-elements that can't be applied inline\nconst globalStyles = `\n .sideAnnotation:before {\n position: absolute;\n right: var(--before-right, 100%);\n top: var(--before-top, 5px);\n border: solid transparent;\n content: \"\";\n height: 0;\n width: 0;\n pointer-events: none;\n border-width: var(--before-border-width, 7px);\n border-right-color: var(--before-border-color, rgb(153, 255, 153));\n }\n`;\n\n// Inject styles if not already injected\nif (!document.getElementById('annotation-editor-styles')) {\n const styleElement = document.createElement('style');\n styleElement.id = 'annotation-editor-styles';\n styleElement.textContent = globalStyles;\n document.head.appendChild(styleElement);\n}\n\nclass AnnotationEditor extends React.Component {\n static propTypes = {\n text: PropTypes.string,\n comment: PropTypes.string,\n annotations: PropTypes.array,\n predefinedAnnotations: PropTypes.array,\n onChange: PropTypes.func.isRequired,\n onCommentChange: PropTypes.func.isRequired,\n width: PropTypes.number,\n height: PropTypes.number,\n maxHeight: PropTypes.string,\n disabled: PropTypes.bool,\n disabledMath: PropTypes.bool,\n customKeys: PropTypes.array,\n keypadMode: PropTypes.string,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n anchorEl: null,\n openedMenu: false,\n openedEditor: false,\n selectedElems: [],\n labelElem: null,\n selectionDetails: null,\n annotation: null,\n annotationIndex: null,\n };\n }\n\n componentDidMount() {\n const { annotations, text } = this.props;\n\n if (text) {\n annotations.forEach((annotation) => {\n const [domStart, domEnd] = getDOMNodes(annotation.start, annotation.end, this.textRef);\n\n if (domStart && domEnd) {\n const range = document.createRange();\n\n range.setStart(domStart.node, domStart.offset);\n range.setEnd(domEnd.node, domEnd.offset);\n\n const spans = wrapRange(range);\n\n this.createDOMAnnotation(spans, annotation);\n }\n });\n }\n\n if (this.textRef) {\n this.adjustAnnotationsPosition();\n this.textRef.addEventListener('scroll', this.adjustAnnotationsPosition);\n }\n }\n\n adjustAnnotationsPosition = () => {\n if (this.textRef && this.labelsRef) {\n const left = this.textRef.offsetLeft + this.textRef.offsetWidth + 8;\n\n Array.from(this.labelsRef.children).forEach((label) => {\n const spans = getAnnotationElements(label.dataset.annId);\n const spanOffset = spans[0].offsetTop ? spans[0].offsetTop : spans[0].offsetParent.offsetTop;\n const top = spanOffset - this.textRef.scrollTop - 6;\n\n label.style.top = `${top}px`;\n label.style.left = `${left}px`;\n });\n }\n };\n\n handleClick = (event) => {\n const { annotations } = this.props;\n const { selectionDetails } = this.state;\n\n if (selectionDetails) {\n // new selection was made inside another annotation and should not update that annotation\n return;\n }\n\n const { id, annId } = event.target.dataset;\n const annotationId = id || annId;\n const selectedElems = getAnnotationElements(annotationId);\n const labelElem = getLabelElement(annotationId);\n const annotationIndex = annotations.findIndex((annotation) => annotation.id === annotationId);\n const isSideLabel = labelElem.hasAttribute('data-freeform');\n\n if (isSideLabel) {\n labelElem.style.zIndex = '10';\n }\n\n this.setState({\n anchorEl: selectedElems[0],\n openedMenu: !!id || (!!annId && !isSideLabel), // true if the annotation or the label was clicked\n openedEditor: !!annId && isSideLabel, // true if the side label was clicked\n selectedElems,\n labelElem,\n annotationIndex,\n annotation: annotations[annotationIndex],\n selectionDetails: null,\n });\n };\n\n handleHover = (event) => {\n const { id, annId } = event.target.dataset;\n const annotationId = id || annId;\n const selectedElems = getAnnotationElements(annotationId);\n const labelElem = getLabelElement(annotationId);\n const isSideLabel = labelElem.hasAttribute('data-freeform');\n\n selectedElems.forEach((elem) => {\n elem.style.zIndex = '20';\n if (elem.classList.contains('positive')) {\n elem.style.backgroundColor = 'rgb(51, 255, 51, 0.7)';\n } else if (elem.classList.contains('negative')) {\n elem.style.backgroundColor = 'rgba(255, 102, 204, 0.55)';\n }\n });\n\n if (isSideLabel) {\n labelElem.style.zIndex = '20';\n if (labelElem.classList.contains('positive')) {\n labelElem.style.backgroundColor = 'rgb(128, 255, 128)';\n labelElem.style.setProperty('--before-border-color', 'rgb(153, 255, 153)');\n } else if (labelElem.classList.contains('negative')) {\n labelElem.style.backgroundColor = 'rgb(255, 179, 230)';\n labelElem.style.setProperty('--before-border-color', 'rgb(255, 179, 230)');\n }\n } else {\n labelElem.style.zIndex = '20';\n if (labelElem.classList.contains('positive')) {\n labelElem.style.color = 'rgb(0, 77, 0)';\n } else if (labelElem.classList.contains('negative')) {\n labelElem.style.color = 'rgb(153, 0, 102)';\n }\n }\n };\n\n handleCancelHover = (event) => {\n const { id, annId } = event.target.dataset;\n const annotationId = id || annId;\n const selectedElems = getAnnotationElements(annotationId);\n const labelElem = getLabelElement(annotationId);\n const isSideLabel = labelElem.hasAttribute('data-freeform');\n\n selectedElems.forEach((elem) => {\n elem.style.zIndex = '';\n if (elem.classList.contains('positive')) {\n elem.style.backgroundColor = 'rgb(51, 255, 51, 0.5)';\n } else if (elem.classList.contains('negative')) {\n elem.style.backgroundColor = 'rgba(255, 102, 204, 0.4)';\n }\n });\n\n if (isSideLabel) {\n labelElem.style.zIndex = '';\n if (labelElem.classList.contains('positive')) {\n labelElem.style.backgroundColor = 'rgb(153, 255, 153)';\n labelElem.style.removeProperty('--before-border-color');\n } else if (labelElem.classList.contains('negative')) {\n labelElem.style.backgroundColor = 'rgb(255, 204, 238)';\n labelElem.style.removeProperty('--before-border-color');\n }\n } else {\n labelElem.style.zIndex = '';\n if (labelElem.classList.contains('positive')) {\n labelElem.style.color = 'rgb(0, 128, 0)';\n } else if (labelElem.classList.contains('negative')) {\n labelElem.style.color = 'rgb(204, 0, 136)';\n }\n }\n };\n\n handleClose = (event) => {\n const { selectedElems, labelElem } = this.state;\n\n if (selectedElems.length && !selectedElems[0].hasAttribute('data-id')) {\n removeElemsWrapping(selectedElems, this.textRef);\n }\n\n if (labelElem) {\n labelElem.style.zIndex = '';\n }\n\n this.setState({\n anchorEl: null,\n openedMenu: false,\n openedEditor: false,\n selectedElems: [],\n labelElem: null,\n selectionDetails: null,\n annotationIndex: null,\n annotation: null,\n });\n\n clearSelection();\n };\n\n handleSelection = (event) => {\n const selection = window.getSelection();\n\n // prevent unwanted selections\n if (event.detail > 2) {\n clearSelection();\n return;\n }\n\n if (selection && selection.rangeCount > 0) {\n const selectedRange = selection.getRangeAt(0);\n const selectedText = selectedRange.toString();\n const isSelectionInside = this.textRef.contains(selectedRange.commonAncestorContainer);\n\n if (!selection.isCollapsed && selectedText !== '' && isSelectionInside) {\n const selectionDetails = getRangeDetails(selectedRange, this.textRef);\n const selectedElems = wrapRange(selectedRange);\n\n this.setState({\n anchorEl: selectedElems[0],\n openedMenu: true,\n selectedElems,\n selectionDetails,\n });\n }\n }\n };\n\n deleteAnnotation = () => {\n const { annotations, onChange } = this.props;\n const { selectedElems, labelElem, annotationIndex, annotation } = this.state;\n const parentRef = isSideLabel(annotation.label) ? this.labelsRef : selectedElems[0];\n\n parentRef.removeChild(labelElem);\n removeElemsWrapping(selectedElems, this.textRef);\n annotations.splice(annotationIndex, 1);\n\n onChange(annotations);\n this.handleClose();\n };\n\n createDOMAnnotation = (elems, annotation) => {\n const { disabled } = this.props;\n const { id, label, type } = annotation;\n\n (elems || []).forEach((elem) => {\n elem.dataset.id = id;\n elem.className = `annotation ${type}`;\n // Apply annotation styles directly\n elem.style.position = 'relative';\n elem.style.cursor = 'pointer';\n if (type === 'positive') {\n elem.style.backgroundColor = 'rgb(51, 255, 51, 0.5)';\n } else if (type === 'negative') {\n elem.style.backgroundColor = 'rgba(255, 102, 204, 0.4)';\n }\n elem.onclick = !disabled && this.handleClick;\n elem.onmouseover = this.handleHover;\n elem.onmouseout = this.handleCancelHover;\n });\n\n const firstSpan = (elems && elems[0]) || {};\n const labelElem = document.createElement('SPAN');\n\n labelElem.dataset.annId = id;\n labelElem.innerHTML = label;\n labelElem.onclick = !disabled && this.handleClick;\n labelElem.onmouseover = this.handleHover;\n labelElem.onmouseout = this.handleCancelHover;\n\n if (isSideLabel(label)) {\n const spanOffset = firstSpan.offsetTop ? firstSpan.offsetTop : firstSpan.offsetParent.offsetTop;\n const top = spanOffset - this.textRef.scrollTop;\n const left = this.textRef.offsetLeft + this.textRef.offsetWidth + 8;\n\n labelElem.dataset.freeform = true;\n labelElem.className = `sideAnnotation ${type}`;\n \n // Apply side annotation styles directly\n labelElem.style.position = 'absolute';\n labelElem.style.padding = '4px';\n labelElem.style.borderRadius = '4px';\n labelElem.style.marginLeft = '8px';\n labelElem.style.width = '180px';\n labelElem.style.whiteSpace = 'pre-wrap';\n labelElem.style.wordBreak = 'break-word';\n labelElem.style.border = '2px solid #ffffff';\n labelElem.style.fontSize = '14px';\n labelElem.style.fontStyle = 'normal';\n labelElem.style.fontWeight = 'normal';\n labelElem.style.top = `${top}px`;\n labelElem.style.left = `${left}px`;\n \n if (type === 'negative') {\n labelElem.style.backgroundColor = 'rgb(255, 204, 238)';\n } else if (type === 'positive') {\n labelElem.style.backgroundColor = 'rgb(153, 255, 153)';\n }\n \n // Add pseudo-element styles via CSS\n labelElem.style.setProperty('--before-border-width', '7px');\n labelElem.style.setProperty('--before-top', '5px');\n labelElem.style.setProperty('--before-right', '100%');\n if (type === 'negative') {\n labelElem.style.setProperty('--before-border-color', 'rgb(255, 204, 238)');\n } else if (type === 'positive') {\n labelElem.style.setProperty('--before-border-color', 'rgb(153, 255, 153)');\n }\n\n this.labelsRef.appendChild(labelElem);\n } else {\n labelElem.className = `annotationLabel ${type}`;\n \n // Apply annotation label styles directly\n labelElem.style.backgroundColor = 'rgb(242, 242, 242)';\n labelElem.style.padding = '2px';\n labelElem.style.position = 'absolute';\n labelElem.style.userSelect = 'none';\n labelElem.style.whiteSpace = 'nowrap';\n labelElem.style.top = '-10px';\n labelElem.style.left = '-2px';\n labelElem.style.fontSize = '12px';\n labelElem.style.fontStyle = 'normal';\n labelElem.style.fontWeight = 'normal';\n labelElem.style.lineHeight = '6px';\n labelElem.style.webkitUserSelect = 'none';\n labelElem.style.mozUserSelect = 'none';\n labelElem.style.msUserSelect = 'none';\n \n if (type === 'positive') {\n labelElem.style.color = 'rgb(0, 128, 0)';\n } else if (type === 'negative') {\n labelElem.style.color = 'rgb(204, 0, 136)';\n }\n \n firstSpan.appendChild(labelElem);\n }\n };\n\n createNewAnnotation = (label, type) => {\n const { selectedElems, selectionDetails } = this.state;\n const annotation = {\n id: [selectionDetails.start, selectionDetails.end, new Date().getTime()].join('-'),\n label,\n type,\n ...selectionDetails,\n };\n\n this.createDOMAnnotation(selectedElems, annotation);\n\n return annotation;\n };\n\n handleMenuClick = (newAnnotation) => {\n const { annotations, onChange } = this.props;\n const { annotation, annotationIndex } = this.state;\n const { type, text: label } = newAnnotation;\n\n if (annotation) {\n const updatedAnnotation = { ...annotation, label, type };\n const { type: oldType, label: oldLabel } = annotation;\n\n this.updateLabel(oldLabel, updatedAnnotation, type !== oldType && oldType);\n annotations.splice(annotationIndex, 1, updatedAnnotation);\n } else {\n const newAnnotation = this.createNewAnnotation(label, type);\n\n annotations.push(newAnnotation);\n }\n\n onChange(annotations);\n this.handleClose();\n };\n\n editAnnotation = () => {\n this.setState({\n openedMenu: false,\n openedEditor: true,\n });\n };\n\n addAnnotation = (type) => {\n const { annotations, onChange } = this.props;\n const annotation = this.createNewAnnotation('', type);\n const labelElem = getLabelElement(annotation.id);\n\n annotations.push(annotation);\n\n this.setState({\n openedMenu: false,\n openedEditor: true,\n annotationIndex: annotations.length - 1,\n annotation,\n labelElem,\n });\n\n onChange(annotations);\n };\n\n updateLabel = (oldLabel, annotation, oldType) => {\n const { selectedElems, labelElem } = this.state;\n const { label, type } = annotation;\n\n if ((isSideLabel(label) && isSideLabel(oldLabel)) || (!isSideLabel(label) && !isSideLabel(oldLabel))) {\n labelElem.innerHTML = label;\n\n if (oldType) {\n labelElem.classList.remove(oldType);\n labelElem.classList.add(type);\n\n selectedElems.forEach((elem) => {\n elem.classList.remove(oldType);\n elem.classList.add(type);\n });\n }\n } else if (isSideLabel(label) && !isSideLabel(oldLabel)) {\n selectedElems[0].removeChild(labelElem);\n this.createDOMAnnotation(selectedElems, annotation);\n } else if (!isSideLabel(label) && isSideLabel(oldLabel)) {\n this.labelsRef.removeChild(labelElem);\n this.createDOMAnnotation(selectedElems, annotation);\n }\n };\n\n changeAnnotationType = (newLabel) => {\n const { annotations, onChange } = this.props;\n const { annotationIndex, selectedElems } = this.state;\n const { type: oldType, label: oldLabel } = annotations[annotationIndex];\n const type = oldType === 'positive' ? 'negative' : 'positive';\n const updatedAnnotation = { ...annotations[annotationIndex], type, label: newLabel };\n\n selectedElems.forEach((span) => {\n span.classList.remove(oldType);\n span.classList.add(type);\n });\n\n this.updateLabel(oldLabel, updatedAnnotation, oldType);\n annotations.splice(annotationIndex, 1, updatedAnnotation);\n\n onChange(annotations);\n this.handleClose();\n };\n\n updateAnnotation = (oldLabel, newLabel) => {\n const { annotations, onChange } = this.props;\n const { annotationIndex } = this.state;\n const updatedAnnotation = { ...annotations[annotationIndex], label: newLabel };\n\n this.updateLabel(oldLabel, updatedAnnotation);\n annotations.splice(annotationIndex, 1, updatedAnnotation);\n\n onChange(annotations);\n };\n\n componentWillUnmount() {\n this.textRef.removeEventListener('scroll', this.adjustAnnotationsPosition);\n }\n\n render() {\n const {\n comment,\n customKeys,\n disabled,\n disabledMath,\n keypadMode,\n height,\n width,\n maxHeight,\n onCommentChange,\n predefinedAnnotations,\n text,\n } = this.props;\n const { anchorEl, annotation, openedMenu, openedEditor, selectionDetails } = this.state;\n\n const anchorOffset = anchorEl && (anchorEl.offsetTop ? anchorEl.offsetTop : anchorEl.offsetParent.offsetTop);\n const topOffset = this.textRef && anchorOffset ? anchorOffset - this.textRef.scrollTop - 8 : 0;\n\n return (\n <div>\n <Wrapper>\n <TextContainer\n style={{ width: width - 34, minHeight: height, maxHeight: maxHeight }}\n ref={(r) => (this.textRef = r)}\n onMouseDown={!disabled ? clearSelection : () => {}}\n onMouseUp={!disabled ? this.handleSelection : () => {}}\n dangerouslySetInnerHTML={{ __html: text }}\n />\n <LabelsContainer ref={(r) => (this.labelsRef = r)} />\n </Wrapper>\n\n <CommentContainer label={'Comment'}>\n <EditableHtml\n className=\"prompt\"\n markup={comment || ''}\n onChange={onCommentChange}\n width={width && (width + 104).toString()}\n disabled={disabled}\n pluginProps={{\n math: {\n disabled: disabledMath,\n customKeys: customKeys,\n keypadMode: keypadMode,\n controlledKeypadMode: false,\n },\n video: {\n disabled: true,\n },\n audio: {\n disabled: true,\n },\n textAlign: {\n disabled: true,\n },\n }}\n />\n </CommentContainer>\n\n <AnnotationMenu\n anchorEl={anchorEl}\n open={openedMenu && !disabled}\n annotations={predefinedAnnotations}\n isNewAnnotation={!!selectionDetails}\n onClose={this.handleClose}\n onDelete={this.deleteAnnotation}\n onEdit={this.editAnnotation}\n onWrite={this.addAnnotation}\n onAnnotate={this.handleMenuClick}\n />\n\n <FreeformEditor\n anchorEl={this.textRef}\n open={openedEditor && !disabled}\n offset={topOffset}\n value={(annotation && annotation.label) || ''}\n type={annotation && annotation.type}\n onClose={this.handleClose}\n onDelete={this.deleteAnnotation}\n onSave={this.updateAnnotation}\n onTypeChange={this.changeAnnotationType}\n />\n </div>\n );\n }\n}\n\nexport default AnnotationEditor;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"annotation-editor.js","names":["_react","_interopRequireDefault","require","_styles","_propTypes","_annotationUtils","_freeformEditor","_annotationMenu","_editableHtmlTipTap","_configUi","TextContainer","styled","padding","backgroundColor","border","borderRadius","overflowY","lineHeight","whiteSpace","overflowWrap","margin","userSelect","LabelsContainer","width","Wrapper","position","overflowX","display","CommentContainer","InputContainer","theme","paddingTop","spacing","marginBottom","marginTop","globalStyles","document","getElementById","styleElement","createElement","id","textContent","head","appendChild","AnnotationEditor","React","Component","constructor","props","_defineProperty2","default","textRef","labelsRef","left","offsetLeft","offsetWidth","Array","from","children","forEach","label","spans","getAnnotationElements","dataset","annId","spanOffset","offsetTop","offsetParent","top","scrollTop","style","event","annotations","selectionDetails","state","target","annotationId","selectedElems","labelElem","getLabelElement","annotationIndex","findIndex","annotation","isSideLabel","hasAttribute","zIndex","setState","anchorEl","openedMenu","openedEditor","elem","classList","contains","setProperty","color","removeProperty","length","removeElemsWrapping","clearSelection","selection","window","getSelection","detail","rangeCount","selectedRange","getRangeAt","selectedText","toString","isSelectionInside","commonAncestorContainer","isCollapsed","getRangeDetails","wrapRange","onChange","parentRef","removeChild","splice","handleClose","elems","disabled","type","className","cursor","onclick","handleClick","onmouseover","handleHover","onmouseout","handleCancelHover","firstSpan","innerHTML","freeform","marginLeft","wordBreak","fontSize","fontStyle","fontWeight","webkitUserSelect","mozUserSelect","msUserSelect","start","end","Date","getTime","join","createDOMAnnotation","newAnnotation","text","updatedAnnotation","oldType","oldLabel","updateLabel","createNewAnnotation","push","remove","add","newLabel","span","componentDidMount","domStart","domEnd","getDOMNodes","range","createRange","setStart","node","offset","setEnd","adjustAnnotationsPosition","addEventListener","componentWillUnmount","removeEventListener","render","comment","customKeys","disabledMath","keypadMode","height","maxHeight","onCommentChange","predefinedAnnotations","anchorOffset","topOffset","minHeight","ref","r","onMouseDown","onMouseUp","handleSelection","dangerouslySetInnerHTML","__html","markup","pluginProps","math","controlledKeypadMode","video","audio","textAlign","open","isNewAnnotation","onClose","onDelete","deleteAnnotation","onEdit","editAnnotation","onWrite","addAnnotation","onAnnotate","handleMenuClick","value","onSave","updateAnnotation","onTypeChange","changeAnnotationType","PropTypes","string","array","func","isRequired","number","bool","_default","exports"],"sources":["../../src/annotation/annotation-editor.jsx"],"sourcesContent":["import React from 'react';\nimport { styled } from '@mui/material/styles';\nimport PropTypes from 'prop-types';\n\nimport {\n clearSelection,\n isSideLabel,\n getAnnotationElements,\n getDOMNodes,\n getLabelElement,\n getRangeDetails,\n removeElemsWrapping,\n wrapRange,\n} from './annotation-utils';\nimport FreeformEditor from './freeform-editor';\nimport AnnotationMenu from './annotation-menu';\nimport EditableHtml from '@pie-lib/editable-html-tip-tap';\nimport { InputContainer } from '@pie-lib/config-ui';\n\nconst TextContainer = styled('div')({\n padding: '10px 120px 10px 16px',\n backgroundColor: 'rgba(0, 0, 0, 0.06)',\n border: '1px solid #ccc',\n borderRadius: '4px',\n overflowY: 'scroll',\n lineHeight: '36px',\n whiteSpace: 'pre-wrap',\n overflowWrap: 'break-word',\n '& p': {\n margin: 0,\n },\n '& span[data-latex]': {\n userSelect: 'none',\n '-webkit-user-select': 'none',\n '-moz-user-select': 'none',\n '-ms-user-select': 'none',\n },\n});\n\nconst LabelsContainer = styled('div')({\n width: '230px',\n});\n\nconst Wrapper = styled('div')({\n position: 'relative',\n overflowX: 'hidden',\n display: 'flex',\n});\n\nconst CommentContainer = styled(InputContainer)(({ theme }) => ({\n paddingTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n marginTop: theme.spacing(2),\n width: '100%',\n}));\n\n// Global styles for pseudo-elements that can't be applied inline\nconst globalStyles = `\n .sideAnnotation:before {\n position: absolute;\n right: var(--before-right, 100%);\n top: var(--before-top, 5px);\n border: solid transparent;\n content: \"\";\n height: 0;\n width: 0;\n pointer-events: none;\n border-width: var(--before-border-width, 7px);\n border-right-color: var(--before-border-color, rgb(153, 255, 153));\n }\n`;\n\n// Inject styles if not already injected\nif (!document.getElementById('annotation-editor-styles')) {\n const styleElement = document.createElement('style');\n styleElement.id = 'annotation-editor-styles';\n styleElement.textContent = globalStyles;\n document.head.appendChild(styleElement);\n}\n\nclass AnnotationEditor extends React.Component {\n static propTypes = {\n text: PropTypes.string,\n comment: PropTypes.string,\n annotations: PropTypes.array,\n predefinedAnnotations: PropTypes.array,\n onChange: PropTypes.func.isRequired,\n onCommentChange: PropTypes.func.isRequired,\n width: PropTypes.number,\n height: PropTypes.number,\n maxHeight: PropTypes.string,\n disabled: PropTypes.bool,\n disabledMath: PropTypes.bool,\n customKeys: PropTypes.array,\n keypadMode: PropTypes.string,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n anchorEl: null,\n openedMenu: false,\n openedEditor: false,\n selectedElems: [],\n labelElem: null,\n selectionDetails: null,\n annotation: null,\n annotationIndex: null,\n };\n }\n\n componentDidMount() {\n const { annotations, text } = this.props;\n\n if (text) {\n annotations.forEach((annotation) => {\n const [domStart, domEnd] = getDOMNodes(annotation.start, annotation.end, this.textRef);\n\n if (domStart && domEnd) {\n const range = document.createRange();\n\n range.setStart(domStart.node, domStart.offset);\n range.setEnd(domEnd.node, domEnd.offset);\n\n const spans = wrapRange(range);\n\n this.createDOMAnnotation(spans, annotation);\n }\n });\n }\n\n if (this.textRef) {\n this.adjustAnnotationsPosition();\n this.textRef.addEventListener('scroll', this.adjustAnnotationsPosition);\n }\n }\n\n adjustAnnotationsPosition = () => {\n if (this.textRef && this.labelsRef) {\n const left = this.textRef.offsetLeft + this.textRef.offsetWidth + 8;\n\n Array.from(this.labelsRef.children).forEach((label) => {\n const spans = getAnnotationElements(label.dataset.annId);\n const spanOffset = spans[0].offsetTop ? spans[0].offsetTop : spans[0].offsetParent.offsetTop;\n const top = spanOffset - this.textRef.scrollTop - 6;\n\n label.style.top = `${top}px`;\n label.style.left = `${left}px`;\n });\n }\n };\n\n handleClick = (event) => {\n const { annotations } = this.props;\n const { selectionDetails } = this.state;\n\n if (selectionDetails) {\n // new selection was made inside another annotation and should not update that annotation\n return;\n }\n\n const { id, annId } = event.target.dataset;\n const annotationId = id || annId;\n const selectedElems = getAnnotationElements(annotationId);\n const labelElem = getLabelElement(annotationId);\n const annotationIndex = annotations.findIndex((annotation) => annotation.id === annotationId);\n const isSideLabel = labelElem.hasAttribute('data-freeform');\n\n if (isSideLabel) {\n labelElem.style.zIndex = '10';\n }\n\n this.setState({\n anchorEl: selectedElems[0],\n openedMenu: !!id || (!!annId && !isSideLabel), // true if the annotation or the label was clicked\n openedEditor: !!annId && isSideLabel, // true if the side label was clicked\n selectedElems,\n labelElem,\n annotationIndex,\n annotation: annotations[annotationIndex],\n selectionDetails: null,\n });\n };\n\n handleHover = (event) => {\n const { id, annId } = event.target.dataset;\n const annotationId = id || annId;\n const selectedElems = getAnnotationElements(annotationId);\n const labelElem = getLabelElement(annotationId);\n const isSideLabel = labelElem.hasAttribute('data-freeform');\n\n selectedElems.forEach((elem) => {\n elem.style.zIndex = '20';\n if (elem.classList.contains('positive')) {\n elem.style.backgroundColor = 'rgb(51, 255, 51, 0.7)';\n } else if (elem.classList.contains('negative')) {\n elem.style.backgroundColor = 'rgba(255, 102, 204, 0.55)';\n }\n });\n\n if (isSideLabel) {\n labelElem.style.zIndex = '20';\n if (labelElem.classList.contains('positive')) {\n labelElem.style.backgroundColor = 'rgb(128, 255, 128)';\n labelElem.style.setProperty('--before-border-color', 'rgb(153, 255, 153)');\n } else if (labelElem.classList.contains('negative')) {\n labelElem.style.backgroundColor = 'rgb(255, 179, 230)';\n labelElem.style.setProperty('--before-border-color', 'rgb(255, 179, 230)');\n }\n } else {\n labelElem.style.zIndex = '20';\n if (labelElem.classList.contains('positive')) {\n labelElem.style.color = 'rgb(0, 77, 0)';\n } else if (labelElem.classList.contains('negative')) {\n labelElem.style.color = 'rgb(153, 0, 102)';\n }\n }\n };\n\n handleCancelHover = (event) => {\n const { id, annId } = event.target.dataset;\n const annotationId = id || annId;\n const selectedElems = getAnnotationElements(annotationId);\n const labelElem = getLabelElement(annotationId);\n const isSideLabel = labelElem.hasAttribute('data-freeform');\n\n selectedElems.forEach((elem) => {\n elem.style.zIndex = '';\n if (elem.classList.contains('positive')) {\n elem.style.backgroundColor = 'rgb(51, 255, 51, 0.5)';\n } else if (elem.classList.contains('negative')) {\n elem.style.backgroundColor = 'rgba(255, 102, 204, 0.4)';\n }\n });\n\n if (isSideLabel) {\n labelElem.style.zIndex = '';\n if (labelElem.classList.contains('positive')) {\n labelElem.style.backgroundColor = 'rgb(153, 255, 153)';\n labelElem.style.removeProperty('--before-border-color');\n } else if (labelElem.classList.contains('negative')) {\n labelElem.style.backgroundColor = 'rgb(255, 204, 238)';\n labelElem.style.removeProperty('--before-border-color');\n }\n } else {\n labelElem.style.zIndex = '';\n if (labelElem.classList.contains('positive')) {\n labelElem.style.color = 'rgb(0, 128, 0)';\n } else if (labelElem.classList.contains('negative')) {\n labelElem.style.color = 'rgb(204, 0, 136)';\n }\n }\n };\n\n handleClose = (event) => {\n const { selectedElems, labelElem } = this.state;\n\n if (selectedElems.length && !selectedElems[0].hasAttribute('data-id')) {\n removeElemsWrapping(selectedElems, this.textRef);\n }\n\n if (labelElem) {\n labelElem.style.zIndex = '';\n }\n\n this.setState({\n anchorEl: null,\n openedMenu: false,\n openedEditor: false,\n selectedElems: [],\n labelElem: null,\n selectionDetails: null,\n annotationIndex: null,\n annotation: null,\n });\n\n clearSelection();\n };\n\n handleSelection = (event) => {\n const selection = window.getSelection();\n\n // prevent unwanted selections\n if (event.detail > 2) {\n clearSelection();\n return;\n }\n\n if (selection && selection.rangeCount > 0) {\n const selectedRange = selection.getRangeAt(0);\n const selectedText = selectedRange.toString();\n const isSelectionInside = this.textRef.contains(selectedRange.commonAncestorContainer);\n\n if (!selection.isCollapsed && selectedText !== '' && isSelectionInside) {\n const selectionDetails = getRangeDetails(selectedRange, this.textRef);\n const selectedElems = wrapRange(selectedRange);\n\n this.setState({\n anchorEl: selectedElems[0],\n openedMenu: true,\n selectedElems,\n selectionDetails,\n });\n }\n }\n };\n\n deleteAnnotation = () => {\n const { annotations, onChange } = this.props;\n const { selectedElems, labelElem, annotationIndex, annotation } = this.state;\n const parentRef = isSideLabel(annotation.label) ? this.labelsRef : selectedElems[0];\n\n parentRef.removeChild(labelElem);\n removeElemsWrapping(selectedElems, this.textRef);\n annotations.splice(annotationIndex, 1);\n\n onChange(annotations);\n this.handleClose();\n };\n\n createDOMAnnotation = (elems, annotation) => {\n const { disabled } = this.props;\n const { id, label, type } = annotation;\n\n (elems || []).forEach((elem) => {\n elem.dataset.id = id;\n elem.className = `annotation ${type}`;\n // Apply annotation styles directly\n elem.style.position = 'relative';\n elem.style.cursor = 'pointer';\n if (type === 'positive') {\n elem.style.backgroundColor = 'rgb(51, 255, 51, 0.5)';\n } else if (type === 'negative') {\n elem.style.backgroundColor = 'rgba(255, 102, 204, 0.4)';\n }\n elem.onclick = !disabled && this.handleClick;\n elem.onmouseover = this.handleHover;\n elem.onmouseout = this.handleCancelHover;\n });\n\n const firstSpan = (elems && elems[0]) || {};\n const labelElem = document.createElement('SPAN');\n\n labelElem.dataset.annId = id;\n labelElem.innerHTML = label;\n labelElem.onclick = !disabled && this.handleClick;\n labelElem.onmouseover = this.handleHover;\n labelElem.onmouseout = this.handleCancelHover;\n\n if (isSideLabel(label)) {\n const spanOffset = firstSpan.offsetTop ? firstSpan.offsetTop : firstSpan.offsetParent.offsetTop;\n const top = spanOffset - this.textRef.scrollTop;\n const left = this.textRef.offsetLeft + this.textRef.offsetWidth + 8;\n\n labelElem.dataset.freeform = true;\n labelElem.className = `sideAnnotation ${type}`;\n \n // Apply side annotation styles directly\n labelElem.style.position = 'absolute';\n labelElem.style.padding = '4px';\n labelElem.style.borderRadius = '4px';\n labelElem.style.marginLeft = '8px';\n labelElem.style.width = '180px';\n labelElem.style.whiteSpace = 'pre-wrap';\n labelElem.style.wordBreak = 'break-word';\n labelElem.style.border = '2px solid #ffffff';\n labelElem.style.fontSize = '14px';\n labelElem.style.fontStyle = 'normal';\n labelElem.style.fontWeight = 'normal';\n labelElem.style.top = `${top}px`;\n labelElem.style.left = `${left}px`;\n \n if (type === 'negative') {\n labelElem.style.backgroundColor = 'rgb(255, 204, 238)';\n } else if (type === 'positive') {\n labelElem.style.backgroundColor = 'rgb(153, 255, 153)';\n }\n \n // Add pseudo-element styles via CSS\n labelElem.style.setProperty('--before-border-width', '7px');\n labelElem.style.setProperty('--before-top', '5px');\n labelElem.style.setProperty('--before-right', '100%');\n if (type === 'negative') {\n labelElem.style.setProperty('--before-border-color', 'rgb(255, 204, 238)');\n } else if (type === 'positive') {\n labelElem.style.setProperty('--before-border-color', 'rgb(153, 255, 153)');\n }\n\n this.labelsRef.appendChild(labelElem);\n } else {\n labelElem.className = `annotationLabel ${type}`;\n \n // Apply annotation label styles directly\n labelElem.style.backgroundColor = 'rgb(242, 242, 242)';\n labelElem.style.padding = '2px';\n labelElem.style.position = 'absolute';\n labelElem.style.userSelect = 'none';\n labelElem.style.whiteSpace = 'nowrap';\n labelElem.style.top = '-10px';\n labelElem.style.left = '-2px';\n labelElem.style.fontSize = '12px';\n labelElem.style.fontStyle = 'normal';\n labelElem.style.fontWeight = 'normal';\n labelElem.style.lineHeight = '6px';\n labelElem.style.webkitUserSelect = 'none';\n labelElem.style.mozUserSelect = 'none';\n labelElem.style.msUserSelect = 'none';\n \n if (type === 'positive') {\n labelElem.style.color = 'rgb(0, 128, 0)';\n } else if (type === 'negative') {\n labelElem.style.color = 'rgb(204, 0, 136)';\n }\n \n firstSpan.appendChild(labelElem);\n }\n };\n\n createNewAnnotation = (label, type) => {\n const { selectedElems, selectionDetails } = this.state;\n const annotation = {\n id: [selectionDetails.start, selectionDetails.end, new Date().getTime()].join('-'),\n label,\n type,\n ...selectionDetails,\n };\n\n this.createDOMAnnotation(selectedElems, annotation);\n\n return annotation;\n };\n\n handleMenuClick = (newAnnotation) => {\n const { annotations, onChange } = this.props;\n const { annotation, annotationIndex } = this.state;\n const { type, text: label } = newAnnotation;\n\n if (annotation) {\n const updatedAnnotation = { ...annotation, label, type };\n const { type: oldType, label: oldLabel } = annotation;\n\n this.updateLabel(oldLabel, updatedAnnotation, type !== oldType && oldType);\n annotations.splice(annotationIndex, 1, updatedAnnotation);\n } else {\n const newAnnotation = this.createNewAnnotation(label, type);\n\n annotations.push(newAnnotation);\n }\n\n onChange(annotations);\n this.handleClose();\n };\n\n editAnnotation = () => {\n this.setState({\n openedMenu: false,\n openedEditor: true,\n });\n };\n\n addAnnotation = (type) => {\n const { annotations, onChange } = this.props;\n const annotation = this.createNewAnnotation('', type);\n const labelElem = getLabelElement(annotation.id);\n\n annotations.push(annotation);\n\n this.setState({\n openedMenu: false,\n openedEditor: true,\n annotationIndex: annotations.length - 1,\n annotation,\n labelElem,\n });\n\n onChange(annotations);\n };\n\n updateLabel = (oldLabel, annotation, oldType) => {\n const { selectedElems, labelElem } = this.state;\n const { label, type } = annotation;\n\n if ((isSideLabel(label) && isSideLabel(oldLabel)) || (!isSideLabel(label) && !isSideLabel(oldLabel))) {\n labelElem.innerHTML = label;\n\n if (oldType) {\n labelElem.classList.remove(oldType);\n labelElem.classList.add(type);\n\n selectedElems.forEach((elem) => {\n elem.classList.remove(oldType);\n elem.classList.add(type);\n });\n }\n } else if (isSideLabel(label) && !isSideLabel(oldLabel)) {\n selectedElems[0].removeChild(labelElem);\n this.createDOMAnnotation(selectedElems, annotation);\n } else if (!isSideLabel(label) && isSideLabel(oldLabel)) {\n this.labelsRef.removeChild(labelElem);\n this.createDOMAnnotation(selectedElems, annotation);\n }\n };\n\n changeAnnotationType = (newLabel) => {\n const { annotations, onChange } = this.props;\n const { annotationIndex, selectedElems } = this.state;\n const { type: oldType, label: oldLabel } = annotations[annotationIndex];\n const type = oldType === 'positive' ? 'negative' : 'positive';\n const updatedAnnotation = { ...annotations[annotationIndex], type, label: newLabel };\n\n selectedElems.forEach((span) => {\n span.classList.remove(oldType);\n span.classList.add(type);\n });\n\n this.updateLabel(oldLabel, updatedAnnotation, oldType);\n annotations.splice(annotationIndex, 1, updatedAnnotation);\n\n onChange(annotations);\n this.handleClose();\n };\n\n updateAnnotation = (oldLabel, newLabel) => {\n const { annotations, onChange } = this.props;\n const { annotationIndex } = this.state;\n const updatedAnnotation = { ...annotations[annotationIndex], label: newLabel };\n\n this.updateLabel(oldLabel, updatedAnnotation);\n annotations.splice(annotationIndex, 1, updatedAnnotation);\n\n onChange(annotations);\n };\n\n componentWillUnmount() {\n this.textRef.removeEventListener('scroll', this.adjustAnnotationsPosition);\n }\n\n render() {\n const {\n comment,\n customKeys,\n disabled,\n disabledMath,\n keypadMode,\n height,\n width,\n maxHeight,\n onCommentChange,\n predefinedAnnotations,\n text,\n } = this.props;\n const { anchorEl, annotation, openedMenu, openedEditor, selectionDetails } = this.state;\n\n const anchorOffset = anchorEl && (anchorEl.offsetTop ? anchorEl.offsetTop : anchorEl.offsetParent.offsetTop);\n const topOffset = this.textRef && anchorOffset ? anchorOffset - this.textRef.scrollTop - 8 : 0;\n\n return (\n <div>\n <Wrapper>\n <TextContainer\n style={{ width: width - 34, minHeight: height, maxHeight: maxHeight }}\n ref={(r) => (this.textRef = r)}\n onMouseDown={!disabled ? clearSelection : () => {}}\n onMouseUp={!disabled ? this.handleSelection : () => {}}\n dangerouslySetInnerHTML={{ __html: text }}\n />\n <LabelsContainer ref={(r) => (this.labelsRef = r)} />\n </Wrapper>\n\n <CommentContainer label={'Comment'}>\n <EditableHtml\n className=\"prompt\"\n markup={comment || ''}\n onChange={onCommentChange}\n width={width && (width + 104).toString()}\n disabled={disabled}\n pluginProps={{\n math: {\n disabled: disabledMath,\n customKeys: customKeys,\n keypadMode: keypadMode,\n controlledKeypadMode: false,\n },\n video: {\n disabled: true,\n },\n audio: {\n disabled: true,\n },\n textAlign: {\n disabled: true,\n },\n }}\n />\n </CommentContainer>\n\n <AnnotationMenu\n anchorEl={anchorEl}\n open={openedMenu && !disabled}\n annotations={predefinedAnnotations}\n isNewAnnotation={!!selectionDetails}\n onClose={this.handleClose}\n onDelete={this.deleteAnnotation}\n onEdit={this.editAnnotation}\n onWrite={this.addAnnotation}\n onAnnotate={this.handleMenuClick}\n />\n\n <FreeformEditor\n anchorEl={this.textRef}\n open={openedEditor && !disabled}\n offset={topOffset}\n value={(annotation && annotation.label) || ''}\n type={annotation && annotation.type}\n onClose={this.handleClose}\n onDelete={this.deleteAnnotation}\n onSave={this.updateAnnotation}\n onTypeChange={this.changeAnnotationType}\n />\n </div>\n );\n }\n}\n\nexport default AnnotationEditor;\n"],"mappings":"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","ignoreList":[]}
package/lib/main.js CHANGED
@@ -12,7 +12,7 @@ var _debounce = _interopRequireDefault(require("lodash/debounce"));
12
12
  var _debug = _interopRequireDefault(require("debug"));
13
13
  var _Typography = _interopRequireDefault(require("@mui/material/Typography"));
14
14
  var _styles = require("@mui/material/styles");
15
- var _editableHtml = _interopRequireDefault(require("@pie-lib/editable-html"));
15
+ var _editableHtmlTipTap = _interopRequireDefault(require("@pie-lib/editable-html-tip-tap"));
16
16
  var _renderUi = require("@pie-lib/render-ui");
17
17
  var _annotationEditor = _interopRequireDefault(require("./annotation/annotation-editor"));
18
18
  const log = (0, _debug.default)('@pie-ui:extended-text-entry');
@@ -33,7 +33,7 @@ const TeacherInstructions = (0, _styles.styled)('div')(({
33
33
  }) => ({
34
34
  marginBottom: theme.spacing(2)
35
35
  }));
36
- const Editor = (0, _styles.styled)(_editableHtml.default)(({
36
+ const Editor = (0, _styles.styled)(_editableHtmlTipTap.default)(({
37
37
  theme
38
38
  }) => ({
39
39
  marginBottom: theme.spacing(2),
package/lib/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","names":["_react","_interopRequireDefault","require","_propTypes","_debounce","_debug","_Typography","_styles","_editableHtml","_renderUi","_annotationEditor","log","debug","MainContainer","styled","UiLayout","backgroundColor","color","background","text","StyledPrompt","Typography","theme","width","marginBottom","spacing","fontSize","TeacherInstructions","Editor","EditableHtml","borderRadius","SrOnly","position","left","top","height","overflow","Main","React","Component","constructor","args","_defineProperty2","default","debounce","props","onValueChange","onCommentChange","render","model","session","onAnnotationsChange","animationsDisabled","annotatorMode","customKeys","dimensions","disabled","disabledAnnotator","equationEditor","extraCSSRules","feedback","mathInput","playersToolbarPosition","predefinedAnnotations","prompt","spanishInput","specialInput","spellCheckEnabled","teacherInstructions","annotations","comment","value","maxHeight","toolbarOpts","teacherInstructionsDiv","createElement","PreviewPrompt","defaultClassName","languageCharactersProps","push","language","ref","containerRef","Collapsible","labels","hidden","visible","component","onChange","changeSessionComment","disabledMath","keypadMode","className","changeSessionValue","markup","maxWidth","toString","minWidth","minHeight","highlightShape","spellCheck","charactersLimit","autoWidthToolbar","pluginProps","math","controlledKeypadMode","video","audio","table","textAlign","separateParagraphs","ul_list","ol_list","Feedback","correctness","exports","PropTypes","func","isRequired","object","shape","string","array","_default"],"sources":["../src/main.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash/debounce';\nimport debug from 'debug';\n\nimport Typography from '@mui/material/Typography';\nimport { styled } from '@mui/material/styles';\n\nimport EditableHtml from '@pie-lib/editable-html';\nimport { color, Feedback, Collapsible, PreviewPrompt, UiLayout } from '@pie-lib/render-ui';\n\nimport AnnotationEditor from './annotation/annotation-editor';\n\nconst log = debug('@pie-ui:extended-text-entry');\n\nconst MainContainer = styled(UiLayout)({\n backgroundColor: color.background(),\n color: color.text(),\n});\n\nconst StyledPrompt = styled(Typography)(({ theme }) => ({\n width: '100%',\n color: color.text(),\n marginBottom: theme.spacing(2),\n fontSize: 'inherit',\n}));\n\nconst TeacherInstructions = styled('div')(({ theme }) => ({\n marginBottom: theme.spacing(2),\n}));\n\nconst Editor = styled(EditableHtml)(({ theme }) => ({\n marginBottom: theme.spacing(2),\n borderRadius: '4px',\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\nexport class Main extends React.Component {\n static propTypes = {\n onValueChange: PropTypes.func.isRequired,\n onAnnotationsChange: PropTypes.func.isRequired,\n onCommentChange: PropTypes.func.isRequired,\n model: PropTypes.object,\n session: PropTypes.shape({\n value: PropTypes.string,\n annotations: PropTypes.array,\n comment: PropTypes.string,\n }).isRequired,\n };\n\n changeSessionValue = debounce(this.props.onValueChange, 1500);\n\n changeSessionComment = debounce(this.props.onCommentChange, 1500);\n\n render() {\n const { model, session, onAnnotationsChange } = this.props;\n const {\n animationsDisabled,\n annotatorMode,\n customKeys,\n dimensions,\n disabled,\n disabledAnnotator,\n equationEditor,\n extraCSSRules,\n feedback,\n mathInput,\n playersToolbarPosition,\n predefinedAnnotations,\n prompt,\n spanishInput,\n specialInput,\n spellCheckEnabled,\n teacherInstructions,\n } = model;\n const { annotations, comment, value } = session;\n const { width, height } = dimensions || {};\n const maxHeight = '40vh';\n const toolbarOpts = { position: playersToolbarPosition === 'top' ? 'top' : 'bottom' };\n\n log('[render] disabled? ', disabled);\n\n const teacherInstructionsDiv = (\n <PreviewPrompt defaultClassName=\"teacher-instructions\" prompt={teacherInstructions} />\n );\n\n const languageCharactersProps = [];\n\n if (spanishInput) {\n languageCharactersProps.push({ language: 'spanish' });\n }\n\n if (specialInput) {\n languageCharactersProps.push({ language: 'special' });\n }\n\n return (\n <MainContainer\n extraCSSRules={extraCSSRules}\n ref={(ref) => {\n this.containerRef = ref;\n }}\n >\n <SrOnly>Constructed Response Question</SrOnly>\n\n {teacherInstructions && (\n <TeacherInstructions>\n {!animationsDisabled ? (\n <Collapsible\n labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}\n >\n {teacherInstructionsDiv}\n </Collapsible>\n ) : (\n teacherInstructionsDiv\n )}\n </TeacherInstructions>\n )}\n\n {prompt && (\n <StyledPrompt component={'span'}>\n <PreviewPrompt defaultClassName=\"prompt\" prompt={model.prompt} />\n </StyledPrompt>\n )}\n\n {annotatorMode ? (\n <AnnotationEditor\n text={value || ''}\n annotations={annotations || []}\n comment={comment || ''}\n predefinedAnnotations={predefinedAnnotations || []}\n onChange={onAnnotationsChange}\n onCommentChange={this.changeSessionComment}\n width={width}\n height={height}\n maxHeight={maxHeight}\n disabled={disabledAnnotator}\n disabledMath={!mathInput}\n customKeys={customKeys}\n keypadMode={equationEditor}\n />\n ) : (\n <Editor\n className=\"response-area-editor\"\n onChange={this.changeSessionValue}\n markup={value || ''}\n maxWidth={width && width.toString()}\n minWidth={'100px'}\n minHeight={height && height.toString()}\n maxHeight={maxHeight}\n disabled={disabled}\n highlightShape={true}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n charactersLimit={50000}\n autoWidthToolbar\n pluginProps={{\n math: {\n disabled: !mathInput,\n customKeys: this.props.model.customKeys,\n keypadMode: this.props.model.equationEditor,\n controlledKeypadMode: false,\n },\n video: {\n disabled: true,\n },\n audio: {\n disabled: true,\n },\n table: {\n disabled: true,\n },\n textAlign: {\n disabled: true,\n },\n separateParagraphs: { disabled: false },\n ul_list: { disabled: true },\n ol_list: { disabled: true },\n }}\n languageCharactersProps={languageCharactersProps}\n />\n )}\n\n {feedback && <Feedback correctness=\"correct\" feedback={feedback} />}\n </MainContainer>\n );\n }\n}\n\nexport default Main;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"main.js","names":["_react","_interopRequireDefault","require","_propTypes","_debounce","_debug","_Typography","_styles","_editableHtmlTipTap","_renderUi","_annotationEditor","log","debug","MainContainer","styled","UiLayout","backgroundColor","color","background","text","StyledPrompt","Typography","theme","width","marginBottom","spacing","fontSize","TeacherInstructions","Editor","EditableHtml","borderRadius","SrOnly","position","left","top","height","overflow","Main","React","Component","constructor","args","_defineProperty2","default","debounce","props","onValueChange","onCommentChange","render","model","session","onAnnotationsChange","animationsDisabled","annotatorMode","customKeys","dimensions","disabled","disabledAnnotator","equationEditor","extraCSSRules","feedback","mathInput","playersToolbarPosition","predefinedAnnotations","prompt","spanishInput","specialInput","spellCheckEnabled","teacherInstructions","annotations","comment","value","maxHeight","toolbarOpts","teacherInstructionsDiv","createElement","PreviewPrompt","defaultClassName","languageCharactersProps","push","language","ref","containerRef","Collapsible","labels","hidden","visible","component","onChange","changeSessionComment","disabledMath","keypadMode","className","changeSessionValue","markup","maxWidth","toString","minWidth","minHeight","highlightShape","spellCheck","charactersLimit","autoWidthToolbar","pluginProps","math","controlledKeypadMode","video","audio","table","textAlign","separateParagraphs","ul_list","ol_list","Feedback","correctness","exports","PropTypes","func","isRequired","object","shape","string","array","_default"],"sources":["../src/main.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash/debounce';\nimport debug from 'debug';\n\nimport Typography from '@mui/material/Typography';\nimport { styled } from '@mui/material/styles';\n\nimport EditableHtml from '@pie-lib/editable-html-tip-tap';\nimport { color, Feedback, Collapsible, PreviewPrompt, UiLayout } from '@pie-lib/render-ui';\n\nimport AnnotationEditor from './annotation/annotation-editor';\n\nconst log = debug('@pie-ui:extended-text-entry');\n\nconst MainContainer = styled(UiLayout)({\n backgroundColor: color.background(),\n color: color.text(),\n});\n\nconst StyledPrompt = styled(Typography)(({ theme }) => ({\n width: '100%',\n color: color.text(),\n marginBottom: theme.spacing(2),\n fontSize: 'inherit',\n}));\n\nconst TeacherInstructions = styled('div')(({ theme }) => ({\n marginBottom: theme.spacing(2),\n}));\n\nconst Editor = styled(EditableHtml)(({ theme }) => ({\n marginBottom: theme.spacing(2),\n borderRadius: '4px',\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\nexport class Main extends React.Component {\n static propTypes = {\n onValueChange: PropTypes.func.isRequired,\n onAnnotationsChange: PropTypes.func.isRequired,\n onCommentChange: PropTypes.func.isRequired,\n model: PropTypes.object,\n session: PropTypes.shape({\n value: PropTypes.string,\n annotations: PropTypes.array,\n comment: PropTypes.string,\n }).isRequired,\n };\n\n changeSessionValue = debounce(this.props.onValueChange, 1500);\n\n changeSessionComment = debounce(this.props.onCommentChange, 1500);\n\n render() {\n const { model, session, onAnnotationsChange } = this.props;\n const {\n animationsDisabled,\n annotatorMode,\n customKeys,\n dimensions,\n disabled,\n disabledAnnotator,\n equationEditor,\n extraCSSRules,\n feedback,\n mathInput,\n playersToolbarPosition,\n predefinedAnnotations,\n prompt,\n spanishInput,\n specialInput,\n spellCheckEnabled,\n teacherInstructions,\n } = model;\n const { annotations, comment, value } = session;\n const { width, height } = dimensions || {};\n const maxHeight = '40vh';\n const toolbarOpts = { position: playersToolbarPosition === 'top' ? 'top' : 'bottom' };\n\n log('[render] disabled? ', disabled);\n\n const teacherInstructionsDiv = (\n <PreviewPrompt defaultClassName=\"teacher-instructions\" prompt={teacherInstructions} />\n );\n\n const languageCharactersProps = [];\n\n if (spanishInput) {\n languageCharactersProps.push({ language: 'spanish' });\n }\n\n if (specialInput) {\n languageCharactersProps.push({ language: 'special' });\n }\n\n return (\n <MainContainer\n extraCSSRules={extraCSSRules}\n ref={(ref) => {\n this.containerRef = ref;\n }}\n >\n <SrOnly>Constructed Response Question</SrOnly>\n\n {teacherInstructions && (\n <TeacherInstructions>\n {!animationsDisabled ? (\n <Collapsible\n labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}\n >\n {teacherInstructionsDiv}\n </Collapsible>\n ) : (\n teacherInstructionsDiv\n )}\n </TeacherInstructions>\n )}\n\n {prompt && (\n <StyledPrompt component={'span'}>\n <PreviewPrompt defaultClassName=\"prompt\" prompt={model.prompt} />\n </StyledPrompt>\n )}\n\n {annotatorMode ? (\n <AnnotationEditor\n text={value || ''}\n annotations={annotations || []}\n comment={comment || ''}\n predefinedAnnotations={predefinedAnnotations || []}\n onChange={onAnnotationsChange}\n onCommentChange={this.changeSessionComment}\n width={width}\n height={height}\n maxHeight={maxHeight}\n disabled={disabledAnnotator}\n disabledMath={!mathInput}\n customKeys={customKeys}\n keypadMode={equationEditor}\n />\n ) : (\n <Editor\n className=\"response-area-editor\"\n onChange={this.changeSessionValue}\n markup={value || ''}\n maxWidth={width && width.toString()}\n minWidth={'100px'}\n minHeight={height && height.toString()}\n maxHeight={maxHeight}\n disabled={disabled}\n highlightShape={true}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n charactersLimit={50000}\n autoWidthToolbar\n pluginProps={{\n math: {\n disabled: !mathInput,\n customKeys: this.props.model.customKeys,\n keypadMode: this.props.model.equationEditor,\n controlledKeypadMode: false,\n },\n video: {\n disabled: true,\n },\n audio: {\n disabled: true,\n },\n table: {\n disabled: true,\n },\n textAlign: {\n disabled: true,\n },\n separateParagraphs: { disabled: false },\n ul_list: { disabled: true },\n ol_list: { disabled: true },\n }}\n languageCharactersProps={languageCharactersProps}\n />\n )}\n\n {feedback && <Feedback correctness=\"correct\" feedback={feedback} />}\n </MainContainer>\n );\n }\n}\n\nexport default Main;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1 @@
1
+ import{_dll_react_dom as e,_dll_react as t,_dll_prop_types as n,_dll_mui__material as i,_dll_mui__material_styles as a}from"../../../@pie-lib/shared-module@^3.0.5/module/index.js";import{_dll_pie_lib__config_ui as s}from"../../../@pie-lib/config-module@^3.0.0/module/index.js";import{_dll_pie_lib__editable_html_tip_tap as o}from"../../../@pie-lib/editable-html-module@^6.0.5/module/index.js";var l={};Object.defineProperty(l,"__esModule",{value:!0});class r extends CustomEvent{constructor(e,t=!1){super(r.TYPE,{bubbles:!0,detail:{update:e,reset:t}}),this.update=e,this.reset=t}}r.TYPE="model.updated";var d=l.ModelUpdatedEvent=r;class c extends CustomEvent{constructor(e,t){super(c.TYPE,{bubbles:!0,detail:{src:e,done:t}}),this.src=e,this.done=t}}c.TYPE="delete.image";var p=l.DeleteImageEvent=c;class u extends CustomEvent{constructor(e){super(u.TYPE,{bubbles:!0,detail:e}),this.handler=e}}u.TYPE="insert.image";var h=l.InsertImageEvent=u;class g extends CustomEvent{constructor(e,t){super(g.TYPE,{bubbles:!0,detail:{src:e,done:t}}),this.src=e,this.done=t}}g.TYPE="delete.sound";var b=l.DeleteSoundEvent=g;class m extends CustomEvent{constructor(e){super(m.TYPE,{bubbles:!0,detail:e}),this.handler=e}}m.TYPE="insert.sound";var _,E=l.InsertSoundEvent=m,f=e;_=f.createRoot,f.hydrateRoot;const C=t,I=n,{Typography:v}=i,{styled:S}=a,{FeedbackSelector:x}=s,{InputContainer:y}=s,{settings:k}=s,{layout:P}=s,w=o,{ALL_PLUGINS:M}=o;function T(e){let t,n=e[0],i=1;for(;i<e.length;){const a=e[i],s=e[i+1];if(i+=2,("optionalAccess"===a||"optionalCall"===a)&&null==n)return;"access"===a||"optionalAccess"===a?(t=n,n=s(n)):"call"!==a&&"optionalCall"!==a||(n=s((...e)=>n.call(t,...e)),t=void 0)}return n}const{Panel:A,toggle:D,numberFields:R,dropdown:q}=k,Y={type:"default",default:"Your answer has been submitted"},O=S(v)(({theme:e})=>({paddingBottom:e.spacing(1)})),j=S(y)(({theme:e})=>({paddingTop:e.spacing(1),marginTop:e.spacing(2),marginBottom:e.spacing(2),width:"100%"})),H=S("div")(({theme:e})=>({fontSize:e.typography.fontSize-2,color:e.palette.error.main,paddingTop:e.spacing(1)}));class F extends C.Component{static __initStatic(){this.propTypes={onModelChanged:I.func.isRequired,onConfigurationChanged:I.func,model:I.object.isRequired,configuration:I.object.isRequired,imageSupport:I.object.isRequired,uploadSoundSupport:I.object.isRequired}}constructor(e){super(e),F.prototype.__init.call(this),F.prototype.__init2.call(this),F.prototype.__init3.call(this),this.state={setDimensions:!0}}__init(){this.onPromptChange=e=>{const{onModelChanged:t,model:n}=this.props;t({...n,prompt:e})}}__init2(){this.changeFeedback=e=>{const{model:t,onModelChanged:n}=this.props;n({...t,feedback:e})}}__init3(){this.changeTeacherInstructions=e=>{const{model:t,onModelChanged:n}=this.props;n({...t,teacherInstructions:e})}}render(){const{model:e,configuration:t,imageSupport:n,onConfigurationChanged:i,onModelChanged:a,uploadSoundSupport:s}=this.props,{annotations:o={},contentDimensions:l={},dimensions:r={},equationEditor:d={},feedback:c={},playerSpellCheck:p={},prompt:u={},settingsPanelDisabled:h,spanishInput:g={},specialInput:b={},spellCheck:m={},studentInstructions:_={},teacherInstructions:E={},mathInput:f={},maxImageWidth:I={},maxImageHeight:v={},multiple:S={},withRubric:y={},mathMlOptions:k={},baseInputConfiguration:F={}}=t||{},{errors:G={},extraCSSRules:W,feedbackEnabled:L,promptEnabled:z,spellCheckEnabled:N,teacherInstructionsEnabled:B,toolbarEditorPosition:U}=e||{},{prompt:J,teacherInstructions:K}=G,Q=I&&I.prompt,V=v&&v.prompt,X={position:"top"===U?"top":"bottom"},Z={mathInput:f.settings&&D(f.label),equationEditor:d.enabled&&e.mathInput&&q(d.label,["non-negative-integers","integers","decimals","fractions","Grade 1 - 2","Grade 3 - 5","Grade 6 - 7","Grade 8 - HS","geometry","advanced-algebra","statistics","item-authoring"]),spanishInput:g.settings&&D(g.label),specialInput:b.settings&&D(b.label),dimensions:r.settings&&R(r.label,{width:{label:"Width (px)",suffix:"px",min:100,max:1200},height:{label:"Height (px)",suffix:"px",min:100,max:500}}),"multiple.enabled":S.settings&&D(S.label,!0),promptEnabled:u.settings&&D(u.label),feedbackEnabled:c.settings&&D(c.label),annotationsEnabled:o.settings&&D(o.label),spellCheckEnabled:m.settings&&D(m.label),playerSpellCheckDisabled:p.settings&&D(p.label)},$={teacherInstructionsEnabled:E.settings&&D(E.label),studentInstructionsEnabled:_.settings&&D(_.label),rubricEnabled:T([y,"optionalAccess",e=>e.settings])&&D(T([y,"optionalAccess",e=>e.label]))},ee=e=>Object.assign({...F},e||{});return C.createElement(P.ConfigLayout,{extraCSSRules:W,dimensions:l,hideSettings:h,settings:C.createElement(A,{model:e,configuration:t,onChangeModel:e=>a(e),onChangeConfiguration:e=>i(e),groups:{Settings:Z,Properties:$}})},B&&C.createElement(j,{label:E.label},C.createElement(w,{className:"prompt",markup:e.teacherInstructions||"",onChange:this.changeTeacherInstructions,imageSupport:n,nonEmpty:!1,error:K,toolbarOpts:X,spellCheck:N,maxImageWidth:I&&I.teacherInstructions||Q,maxImageHeight:v&&v.teacherInstructions||V,uploadSoundSupport:s,languageCharactersProps:[{language:"spanish"},{language:"special"}],mathMlOptions:k,pluginProps:ee(T([E,"optionalAccess",e=>e.inputConfiguration]))}),K&&C.createElement(H,null,K)),z&&C.createElement(j,{label:u.label},C.createElement(w,{activePlugins:M,className:"prompt",markup:e.prompt||"",onChange:this.onPromptChange,imageSupport:n,nonEmpty:!1,error:J,toolbarOpts:X,spellCheck:N,maxImageWidth:Q,maxImageHeight:V,uploadSoundSupport:s,languageCharactersProps:[{language:"spanish"},{language:"special"}],mathMlOptions:k,pluginProps:ee(T([u,"optionalAccess",e=>e.inputConfiguration]))}),J&&C.createElement(H,null,J)),L&&C.createElement(C.Fragment,null,C.createElement(O,{variant:"h6"},"Feedback"),C.createElement(x,{label:"When submitted, show",feedback:e.feedback||Y,onChange:this.changeFeedback,toolbarOpts:X})))}}F.__initStatic();var G={annotationsEnabled:!1,dimensions:{height:100,width:500},equationEditor:"Grade 8 - HS",feedbackEnabled:!1,mathInput:!1,playerSpellCheckDisabled:!0,predefinedAnnotations:[{label:"good",text:"good",type:"positive"},{label:"★",text:"★",type:"positive"},{label:":-)",text:":-)",type:"positive"},{label:"creative",text:"creative",type:"positive"},{label:"run-on",text:"run-on",type:"negative"},{label:"frag",text:"fragment",type:"negative"},{label:"tran",text:"transition",type:"negative"},{label:"supp",text:"support needed",type:"negative"},{label:"punc",text:"punctuation",type:"negative"},{label:"agr",text:"agreement wrong",type:"negative"},{label:"unclear",text:"unclear",type:"negative"},{label:"cut",text:"cut",type:"negative"},{label:"sp",text:"spelling",type:"negative"},{label:"cap",text:"capitalization",type:"negative"},{label:"inf",text:"informal",type:"negative"},{label:"awk",text:"awkward",type:"negative"}],prompt:"",promptEnabled:!0,rationale:"",rationaleEnabled:!0,spanishInput:!1,specialInput:!1,spellCheckEnabled:!0,studentInstructionsEnabled:!0,teacherInstructions:"",teacherInstructionsEnabled:!0,toolbarEditorPosition:"bottom"},W={annotations:{settings:!1,label:"Annotations"},baseInputConfiguration:{audio:{disabled:!1},video:{disabled:!1},image:{disabled:!1},h3:{disabled:!0},blockquote:{disabled:!0},textAlign:{disabled:!0},showParagraphs:{disabled:!1},separateParagraphs:{disabled:!0}},dimensions:{settings:!0,label:"Text-Entry Display Size"},spellCheck:{label:"Spellcheck",settings:!1,enabled:!0},playerSpellCheck:{label:"Disable Student Spellcheck",settings:!0,enabled:!0},equationEditor:{settings:!1,label:"Equation Editor",enabled:!0},feedback:{settings:!0,label:"Feedback"},mathInput:{settings:!0,label:"Student response can include math notation",enabled:!1},settingsPanelDisabled:!1,spanishInput:{settings:!0,label:"Students can insert Spanish",enabled:!1},specialInput:{settings:!0,label:"Students can insert Special Characters",enabled:!1},multiple:{settings:!1,label:"Multiple Parts",enabled:!1},studentInstructions:{settings:!1,label:"Student Instructions"},prompt:{settings:!0,label:"Prompt",inputConfiguration:{audio:{disabled:!1},video:{disabled:!1},image:{disabled:!1}},required:!1},teacherInstructions:{settings:!0,label:"Teacher Instructions",inputConfiguration:{audio:{disabled:!1},video:{disabled:!1},image:{disabled:!1}},required:!1},maxImageWidth:{teacherInstructions:300,prompt:300},maxImageHeight:{teacherInstructions:300,prompt:300},withRubric:{settings:!1,label:"Add Rubric"},mathMlOptions:{mmlOutput:!1,mmlEditing:!1}};const L=t;function z(e){let t,n=e[0],i=1;for(;i<e.length;){const a=e[i],s=e[i+1];if(i+=2,("optionalAccess"===a||"optionalCall"===a)&&null==n)return;"access"===a||"optionalAccess"===a?(t=n,n=s(n)):"call"!==a&&"optionalCall"!==a||(n=s((...e)=>n.call(t,...e)),t=void 0)}return n}class N extends HTMLElement{static __initStatic(){this.createDefaultModel=(e={},t)=>{const n={...G,...e};return z([t,"optionalAccess",e=>e.withRubric,"optionalAccess",e=>e.forceEnabled])&&!n.rubricEnabled&&(n.rubricEnabled=!0),n}}constructor(){super(),this._root=null,this._configuration=W,z([this,"access",e=>e._configuration,"access",e=>e.withRubric,"optionalAccess",e=>e.forceEnabled])&&(this._configuration.withRubric.settings=!1),this._model=N.createDefaultModel({},this._configuration)}set model(e){this._model=N.createDefaultModel(e,this._configuration),this.render()}set configuration(e){this._configuration={...W,...e};const{withRubric:t={}}=e||{};z([t,"optionalAccess",e=>e.forceEnabled])&&(this._configuration.withRubric.settings=!1,this._model.rubricEnabled||(this._model.rubricEnabled=!0)),this.render()}onModelChanged(e){this._model=e,this.render(),this.dispatchEvent(new d(this._model,!1))}onConfigurationChanged(e){this._configuration={...W,...e},this._model&&this.onModelChanged(this._model),this.render()}insertImage(e){this.dispatchEvent(new h(e))}onDeleteImage(e,t){this.dispatchEvent(new p(e,t))}insertSound(e){this.dispatchEvent(new E(e))}onDeleteSound(e,t){this.dispatchEvent(new b(e,t))}render(){if(this._model){const e=L.createElement(F,{model:this._model,configuration:this._configuration,onModelChanged:this.onModelChanged.bind(this),onConfigurationChanged:this.onConfigurationChanged.bind(this),imageSupport:{add:this.insertImage.bind(this),delete:this.onDeleteImage.bind(this)},uploadSoundSupport:{add:this.insertSound.bind(this),delete:this.onDeleteSound.bind(this)}});this._root||(this._root=_(this)),this._root.render(e)}}disconnectedCallback(){this._root&&this._root.unmount()}}N.__initStatic();export{N as default};
@@ -0,0 +1,139 @@
1
+ /**
2
+ * Get the feedback from a {FeedbackConfig}
3
+ *
4
+ * @param {FeedbackConfig} feedback
5
+ * @param {string} fallback
6
+ */
7
+ const getFeedback = (feedback, fallback) =>
8
+ new Promise((resolve) => {
9
+ if (!feedback || feedback.type === 'none') {
10
+ resolve(undefined);
11
+ return;
12
+ }
13
+ feedback = feedback || {};
14
+ const out = feedback[feedback.type] || fallback;
15
+ resolve(out);
16
+ });
17
+
18
+ var defaults = {
19
+ annotationsEnabled: false,
20
+ dimensions: { height: 100, width: 500 },
21
+ equationEditor: 'Grade 8 - HS',
22
+ feedbackEnabled: false,
23
+ mathInput: false,
24
+ playerSpellCheckDisabled: true,
25
+ predefinedAnnotations: [
26
+ { label: 'good', text: 'good', type: 'positive' },
27
+ { label: '★', text: '★', type: 'positive' },
28
+ { label: ':-)', text: ':-)', type: 'positive' },
29
+ { label: 'creative', text: 'creative', type: 'positive' },
30
+ { label: 'run-on', text: 'run-on', type: 'negative' },
31
+ { label: 'frag', text: 'fragment', type: 'negative' },
32
+ { label: 'tran', text: 'transition', type: 'negative' },
33
+ { label: 'supp', text: 'support needed', type: 'negative' },
34
+ { label: 'punc', text: 'punctuation', type: 'negative' },
35
+ { label: 'agr', text: 'agreement wrong', type: 'negative' },
36
+ { label: 'unclear', text: 'unclear', type: 'negative' },
37
+ { label: 'cut', text: 'cut', type: 'negative' },
38
+ { label: 'sp', text: 'spelling', type: 'negative' },
39
+ { label: 'cap', text: 'capitalization', type: 'negative' },
40
+ { label: 'inf', text: 'informal', type: 'negative' },
41
+ { label: 'awk', text: 'awkward', type: 'negative' },
42
+ ],
43
+ prompt: '',
44
+ promptEnabled: true,
45
+ rationale: '',
46
+ rationaleEnabled: true,
47
+ studentInstructionsEnabled: true,
48
+ teacherInstructions: '',
49
+ teacherInstructionsEnabled: true,
50
+ toolbarEditorPosition: 'bottom',
51
+ };
52
+
53
+ async function createDefaultModel(model = {}) {
54
+
55
+ return { ...defaults, ...model };
56
+ }
57
+
58
+ const normalize = (question) => ({ ...defaults, ...question });
59
+
60
+ async function model(question, session, env) {
61
+ const normalizedQuestion = normalize(question);
62
+
63
+ const fb =
64
+ env.mode === 'evaluate' && normalizedQuestion.feedbackEnabled
65
+ ? getFeedback(normalizedQuestion.feedback, 'Your answer has been submitted')
66
+ : Promise.resolve(undefined);
67
+
68
+ let teacherInstructions = null;
69
+ if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {
70
+ teacherInstructions = normalizedQuestion.teacherInstructionsEnabled ? normalizedQuestion.teacherInstructions : null;
71
+ } else {
72
+ teacherInstructions = null;
73
+ }
74
+
75
+ let equationEditor = normalizedQuestion.equationEditor || 'miscellaneous';
76
+
77
+ switch (normalizedQuestion.equationEditor) {
78
+ case 'Grade 1 - 2':
79
+ equationEditor = 1;
80
+ break;
81
+ case 'Grade 3 - 5':
82
+ equationEditor = 3;
83
+ break;
84
+ case 'Grade 6 - 7':
85
+ equationEditor = 6;
86
+ break;
87
+ case 'Grade 8 - HS':
88
+ equationEditor = 8;
89
+ break;
90
+ }
91
+
92
+ const annotatorMode = normalizedQuestion.annotationsEnabled && (env.role === 'instructor' || env.mode === 'evaluate');
93
+
94
+ return fb.then((feedback) => ({
95
+ prompt: normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : null,
96
+ dimensions: normalizedQuestion.dimensions,
97
+ customKeys: normalizedQuestion.customKeys || [],
98
+ id: normalizedQuestion.id,
99
+ disabled: env.mode !== 'gather',
100
+ feedback,
101
+ teacherInstructions,
102
+ language: normalizedQuestion.language,
103
+ mathInput: normalizedQuestion.mathInput,
104
+ spanishInput: normalizedQuestion.spanishInput,
105
+ specialInput: normalizedQuestion.specialInput,
106
+ equationEditor,
107
+ spellCheckEnabled: !normalizedQuestion.playerSpellCheckDisabled,
108
+ playersToolbarPosition: normalizedQuestion.playersToolbarPosition || 'bottom',
109
+ annotatorMode,
110
+ disabledAnnotator: normalizedQuestion.annotationsEnabled ? env.role !== 'instructor' : true,
111
+ predefinedAnnotations: normalizedQuestion.annotationsEnabled ? normalizedQuestion.predefinedAnnotations : [],
112
+ extraCSSRules: normalizedQuestion.extraCSSRules,
113
+ }));
114
+ }
115
+
116
+ async function outcome(/*question, session, env*/) {
117
+ return {
118
+ score: 0,
119
+ completed: 'n/a',
120
+ note: 'Requires manual scoring',
121
+ };
122
+ }
123
+
124
+ // remove all html tags except img, iframe and source tag for audio
125
+ const getContent = (html) => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');
126
+
127
+ const validate = (model = {}, config = {}) => {
128
+ const errors = {};
129
+
130
+ ['teacherInstructions', 'prompt'].forEach((field) => {
131
+ if (config[field]?.required && !getContent(model[field])) {
132
+ errors[field] = 'This field is required.';
133
+ }
134
+ });
135
+
136
+ return errors;
137
+ };
138
+
139
+ export { createDefaultModel, model, normalize, outcome, validate };
package/module/demo.js ADDED
@@ -0,0 +1,38 @@
1
+ import Configure from './configure.js';
2
+ import Element from './element.js';
3
+ import * as controller from './controller.js';
4
+
5
+ var generate = {};
6
+
7
+ generate.model = (id, element) => ({
8
+ id,
9
+ element,
10
+ customKeys: ['\\square'],
11
+ feedback: { type: 'default', default: 'this is default feedback' },
12
+ prompt: 'This is the question prompt',
13
+ promptEnabled: true,
14
+ mathInput: true,
15
+ playersToolbarPosition: 'bottom',
16
+ toolbarEditorPosition: 'bottom',
17
+ spellCheckEnabled: true,
18
+ rubricEnabled: false,
19
+ annotationsEnabled: false,
20
+ });
21
+
22
+ const { model } = generate;
23
+ var config = {
24
+ elements: {
25
+ 'extended-text-entry': '../..',
26
+ },
27
+ models: [model('1', 'extended-text-entry')],
28
+ };
29
+
30
+ //Note: demo-el is a custom element loaded in the markup.
31
+ customElements.whenDefined("demo-el").then(() => {
32
+ config.models.forEach((m) => {
33
+ const de = document.createElement("demo-el");
34
+ document.body.appendChild(de);
35
+ de.def = { tagName: m.element, Element, Configure, controller };
36
+ de.model = m;
37
+ });
38
+ });
@@ -0,0 +1 @@
1
+ import{_dll_prop_types as e,_dll_mui__material as t,_dll_mui__material_styles as n,_dll_lodash as o,_dll_debug as r,_dll_pie_lib__render_ui as i,_dll_react_dom as s}from"../../../@pie-lib/shared-module@^3.0.5/module/index.js";import{_dll_pie_lib__math_rendering as a}from"../../../@pie-lib/math-rendering-module@^4.0.5/module/index.js";import{_dll_pie_lib__editable_html_tip_tap as l}from"../../../@pie-lib/editable-html-module@^6.0.5/module/index.js";import{_dll_pie_lib__config_ui as c}from"../../../@pie-lib/config-module@^3.0.0/module/index.js";var d={exports:{}},p={},u=Symbol.for("react.element"),h=Symbol.for("react.portal"),f=Symbol.for("react.fragment"),m=Symbol.for("react.strict_mode"),g=Symbol.for("react.profiler"),y=Symbol.for("react.provider"),b=Symbol.for("react.context"),v=Symbol.for("react.forward_ref"),C=Symbol.for("react.suspense"),_=Symbol.for("react.memo"),x=Symbol.for("react.lazy"),E=Symbol.iterator;var S={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},w=Object.assign,k={};function R(e,t,n){this.props=e,this.context=t,this.refs=k,this.updater=n||S}function A(){}function T(e,t,n){this.props=e,this.context=t,this.refs=k,this.updater=n||S}R.prototype.isReactComponent={},R.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},R.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},A.prototype=R.prototype;var P=T.prototype=new A;P.constructor=T,w(P,R.prototype),P.isPureReactComponent=!0;var L=Array.isArray,M=Object.prototype.hasOwnProperty,I={current:null},$={key:!0,ref:!0,__self:!0,__source:!0};function N(e,t,n){var o,r={},i=null,s=null;if(null!=t)for(o in void 0!==t.ref&&(s=t.ref),void 0!==t.key&&(i=""+t.key),t)M.call(t,o)&&!$.hasOwnProperty(o)&&(r[o]=t[o]);var a=arguments.length-2;if(1===a)r.children=n;else if(1<a){for(var l=Array(a),c=0;c<a;c++)l[c]=arguments[c+2];r.children=l}if(e&&e.defaultProps)for(o in a=e.defaultProps)void 0===r[o]&&(r[o]=a[o]);return{$$typeof:u,type:e,key:i,ref:s,props:r,_owner:I.current}}function D(e){return"object"==typeof e&&null!==e&&e.$$typeof===u}var O=/\/+/g;function j(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(e){return t[e]})}(""+e.key):t.toString(36)}function H(e,t,n,o,r){var i=typeof e;"undefined"!==i&&"boolean"!==i||(e=null);var s=!1;if(null===e)s=!0;else switch(i){case"string":case"number":s=!0;break;case"object":switch(e.$$typeof){case u:case h:s=!0}}if(s)return r=r(s=e),e=""===o?"."+j(s,0):o,L(r)?(n="",null!=e&&(n=e.replace(O,"$&/")+"/"),H(r,t,n,"",function(e){return e})):null!=r&&(D(r)&&(r=function(e,t){return{$$typeof:u,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(r,n+(!r.key||s&&s.key===r.key?"":(""+r.key).replace(O,"$&/")+"/")+e)),t.push(r)),1;if(s=0,o=""===o?".":o+":",L(e))for(var a=0;a<e.length;a++){var l=o+j(i=e[a],a);s+=H(i,t,n,l,r)}else if(l=function(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=E&&e[E]||e["@@iterator"])?e:null}(e),"function"==typeof l)for(e=l.call(e),a=0;!(i=e.next()).done;)s+=H(i=i.value,t,n,l=o+j(i,a++),r);else if("object"===i)throw t=String(e),Error("Objects are not valid as a React child (found: "+("[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.");return s}function W(e,t,n){if(null==e)return e;var o=[],r=0;return H(e,o,"","",function(e){return t.call(n,e,r++)}),o}function z(e){if(-1===e._status){var t=e._result;(t=t()).then(function(t){0!==e._status&&-1!==e._status||(e._status=1,e._result=t)},function(t){0!==e._status&&-1!==e._status||(e._status=2,e._result=t)}),-1===e._status&&(e._status=0,e._result=t)}if(1===e._status)return e._result.default;throw e._result}var q={current:null},V={transition:null},U={ReactCurrentDispatcher:q,ReactCurrentBatchConfig:V,ReactCurrentOwner:I};function F(){throw Error("act(...) is not supported in production builds of React.")}p.Children={map:W,forEach:function(e,t,n){W(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return W(e,function(){t++}),t},toArray:function(e){return W(e,function(e){return e})||[]},only:function(e){if(!D(e))throw Error("React.Children.only expected to receive a single React element child.");return e}},p.Component=R,p.Fragment=f,p.Profiler=g,p.PureComponent=T,p.StrictMode=m,p.Suspense=C,p.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=U,p.act=F,p.cloneElement=function(e,t,n){if(null==e)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+e+".");var o=w({},e.props),r=e.key,i=e.ref,s=e._owner;if(null!=t){if(void 0!==t.ref&&(i=t.ref,s=I.current),void 0!==t.key&&(r=""+t.key),e.type&&e.type.defaultProps)var a=e.type.defaultProps;for(l in t)M.call(t,l)&&!$.hasOwnProperty(l)&&(o[l]=void 0===t[l]&&void 0!==a?a[l]:t[l])}var l=arguments.length-2;if(1===l)o.children=n;else if(1<l){a=Array(l);for(var c=0;c<l;c++)a[c]=arguments[c+2];o.children=a}return{$$typeof:u,type:e.type,key:r,ref:i,props:o,_owner:s}},p.createContext=function(e){return(e={$$typeof:b,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null}).Provider={$$typeof:y,_context:e},e.Consumer=e},p.createElement=N,p.createFactory=function(e){var t=N.bind(null,e);return t.type=e,t},p.createRef=function(){return{current:null}},p.forwardRef=function(e){return{$$typeof:v,render:e}},p.isValidElement=D,p.lazy=function(e){return{$$typeof:x,_payload:{_status:-1,_result:e},_init:z}},p.memo=function(e,t){return{$$typeof:_,type:e,compare:void 0===t?null:t}},p.startTransition=function(e){var t=V.transition;V.transition={};try{e()}finally{V.transition=t}},p.unstable_act=F,p.useCallback=function(e,t){return q.current.useCallback(e,t)},p.useContext=function(e){return q.current.useContext(e)},p.useDebugValue=function(){},p.useDeferredValue=function(e){return q.current.useDeferredValue(e)},p.useEffect=function(e,t){return q.current.useEffect(e,t)},p.useId=function(){return q.current.useId()},p.useImperativeHandle=function(e,t,n){return q.current.useImperativeHandle(e,t,n)},p.useInsertionEffect=function(e,t){return q.current.useInsertionEffect(e,t)},p.useLayoutEffect=function(e,t){return q.current.useLayoutEffect(e,t)},p.useMemo=function(e,t){return q.current.useMemo(e,t)},p.useReducer=function(e,t,n){return q.current.useReducer(e,t,n)},p.useRef=function(e){return q.current.useRef(e)},p.useState=function(e){return q.current.useState(e)},p.useSyncExternalStore=function(e,t,n){return q.current.useSyncExternalStore(e,t,n)},p.useTransition=function(){return q.current.useTransition()},p.version="18.3.1",d.exports=p;var B=d.exports;const K=(e,t,n)=>{const o=n||[],r=o.reduce((e,t)=>e+t.textContent.length,0);let i=!0;if(r>t)return!1;for(e&&(3===e.nodeType&&e.parentNode&&!e.parentNode.hasAttribute("data-ann-id")&&o.push(e),e=e.firstChild);e&&i;)i=K(e,t,o),e=e.nextSibling;return o},Y=e=>{const{commonAncestorContainer:t,startContainer:n,endContainer:o,startOffset:r,endOffset:i}=e,s=[];let a=!1,l=!1,c="";const d=e=>{const{nodeValue:t,childNodes:p}=e;e===n&&e===o?(t&&(c+=t.substring(r,i)),a=l=!0):e===n?(t&&(c+=t.substring(r)),a=!0):e===o?(t&&(c+=t.substring(0,i)),l=!0):e&&3===e.nodeType&&e.parentNode&&!e.parentNode.hasAttribute("data-ann-id")&&t&&a&&!l&&(c+=t,s.push(e)),p.forEach(e=>{l||d(e)})};return d(t),[s,c]},G=e=>{const t=document.createElement("SPAN");return e.surroundContents(t),t},X=e=>{if(e.startContainer===e.endContainer)return[G(e)];const[t]=Y(e),n=document.createRange();n.selectNodeContents(e.startContainer),n.setStart(e.startContainer,e.startOffset);const o=G(n),r=document.createRange();r.selectNode(e.endContainer),r.setEnd(e.endContainer,e.endOffset);const i=G(r);return[o,...t.map(e=>{const t=document.createElement("SPAN");return e.parentNode.insertBefore(t,e),t.appendChild(e),t}),i]},Q=(e,t)=>{(e||[]).forEach(e=>{const t=e.parentNode,n=e.childNodes,o=n.length;if(o>0)for(let r=0;r<o;r++)t.insertBefore(n[0],e);else t.insertBefore(document.createTextNode(e.textContent),e);t.removeChild(e)}),t.normalize()},J=()=>{document.getSelection?(document.getSelection().removeAllRanges(),document.getSelection().addRange(document.createRange())):window.getSelection?window.getSelection().removeAllRanges?(window.getSelection().removeAllRanges(),window.getSelection().addRange(document.createRange())):window.getSelection().empty&&window.getSelection().empty():document.selection&&document.selection.empty()},Z=e=>e.length>=20||-1!==e.search(/\n|\r|\r\n/),ee=e=>Array.from(document.querySelectorAll(`[data-id='${e}']`)),te=e=>document.querySelector(`[data-ann-id='${e}']`),ne=e,{Popover:oe}=t,{TextField:re}=t,{styled:ie}=n,se=ie(oe)(({theme:e,annotationType:t})=>({"& .MuiPaper-root":{overflowX:"unset",overflowY:"unset",marginLeft:"16px","&::before":{position:"absolute",right:"100%",top:"13px",border:"solid transparent",content:'""',height:0,width:0,pointerEvents:"none",borderWidth:"7px",borderRightColor:e.palette.grey[100]},..."negative"===t&&{"&::before":{borderRightColor:"rgb(255, 204, 238) !important"}},..."positive"===t&&{"&::before":{borderRightColor:"rgb(153, 255, 153) !important"}}}})),ae=ie("div")(({theme:e,annotationType:t})=>({width:"200px",overflow:"hidden",borderRadius:"4px",backgroundColor:"#ffffff",border:`4px solid ${e.palette.grey[100]}`,..."negative"===t&&{borderColor:"rgb(255, 204, 238) !important"},..."positive"===t&&{borderColor:"rgb(153, 255, 153) !important"}})),le=ie("div")(({theme:e})=>({display:"flex",flexWrap:"wrap",borderTop:`2px solid ${e.palette.grey[100]}`})),ce=ie("div")(({theme:e,variant:t,annotationType:n})=>({flexGrow:1,width:"28%",textAlign:"center",padding:"4px",cursor:"pointer","&:not(:nth-child(3n))":{borderRight:`1px solid ${e.palette.grey[100]}`},"&:hover":{backgroundColor:e.palette.grey[100]},..."positive"===t&&{backgroundColor:"rgb(153, 255, 153) !important","&:hover":{filter:"brightness(85%)"}},..."negative"===t&&{backgroundColor:"rgb(255, 204, 238) !important","&:hover":{filter:"brightness(85%)"}},..."typeChange"===t&&"negative"===n&&{"&:hover":{backgroundColor:"rgb(153, 255, 153) !important"}},..."typeChange"===t&&"positive"===n&&{"&:hover":{backgroundColor:"rgb(255, 204, 238) !important"}}}));class de extends B.Component{static __initStatic(){this.propTypes={anchorEl:ne.object,open:ne.bool,offset:ne.number,value:ne.string,type:ne.string,onClose:ne.func,onDelete:ne.func,onSave:ne.func,onTypeChange:ne.func}}constructor(e){super(e),de.prototype.__init.call(this),de.prototype.__init2.call(this),de.prototype.__init3.call(this),this.state={value:e.value}}UNSAFE_componentWillReceiveProps(e){const{value:t}=e,{value:n}=this.props;t!==n&&this.setState({value:t})}__init(){this.onValueChange=e=>this.setState({value:e.target.value})}__init2(){this.handleSave=()=>{const{value:e,onSave:t,onClose:n,onDelete:o}=this.props,{value:r}=this.state;""===r&&o(),e!==r&&t(e,r),this.setState({value:""}),n()}}__init3(){this.handleTypeChange=()=>{const{onTypeChange:e,onDelete:t}=this.props,{value:n}=this.state;""===n?t():e(n),this.setState({value:""})}}render(){const{anchorEl:e,offset:t,onDelete:n,open:o,type:r}=this.props,{value:i}=this.state;return B.createElement(se,{anchorEl:e,elevation:2,open:o,onClose:this.handleSave,annotationType:r,style:{marginTop:`${t}px`,transition:"margin-top 2s ease-out"},transitionDuration:{enter:225,exit:195},anchorOrigin:{vertical:"top",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"left"}},B.createElement(ae,{annotationType:r},B.createElement(re,{id:"annotation-editor",style:{padding:"2px 5px",width:"95%"},autoFocus:!0,multiline:!0,rows:1,maxRows:4,value:i,onChange:this.onValueChange,InputProps:{disableUnderline:!0}}),B.createElement(le,null,B.createElement(ce,{onClick:n},"Delete"),B.createElement(ce,{variant:"typeChange",annotationType:r,onClick:this.handleTypeChange},"negative"===r?"Green":"Pink"),B.createElement(ce,{onClick:this.handleSave},"Save"))))}}de.__initStatic();const pe=e,{styled:ue}=n,{Popover:he}=t,fe=ue(he)({"& .MuiPaper-root":{overflowX:"unset",overflowY:"unset",marginTop:"-16px","&::after":{position:"absolute",left:"calc(50% - 7px)",border:"solid transparent",content:'""',height:0,width:0,pointerEvents:"none",borderWidth:"7px",borderTopColor:"black"}}}),me=ue("div")(({theme:e})=>({width:"300px",overflow:"hidden",borderRadius:"4px",backgroundColor:e.palette.common.white,border:`2px solid ${e.palette.grey[100]}`})),ge=ue("div")({display:"flex",flexWrap:"wrap"}),ye=ue("div")(({theme:e})=>({display:"flex",flexWrap:"wrap",borderTop:`2px solid ${e.palette.grey[100]}`})),be=ue("div")(({theme:e,variant:t})=>({width:"22%",textAlign:"center",padding:"4px",cursor:"pointer",borderBottom:`1px solid ${e.palette.grey[100]}`,"&:not(:nth-child(4n))":{borderRight:`1px solid ${e.palette.grey[100]}`},"&:nth-child(4n)":{flexGrow:1},"&:hover":{backgroundColor:e.palette.grey[100]},..."positive"===t&&{backgroundColor:"rgb(153, 255, 153) !important","&:hover":{filter:"brightness(85%)"}},..."negative"===t&&{backgroundColor:"rgb(255, 204, 238) !important","&:hover":{filter:"brightness(85%)"}}}));class ve extends B.Component{static __initStatic(){this.propTypes={anchorEl:pe.object,open:pe.bool,annotations:pe.array,isNewAnnotation:pe.bool,onClose:pe.func,onDelete:pe.func,onEdit:pe.func,onWrite:pe.func,onAnnotate:pe.func}}render(){const{anchorEl:e,annotations:t,isNewAnnotation:n,onAnnotate:o,onClose:r,onEdit:i,onDelete:s,onWrite:a,open:l}=this.props;return B.createElement(fe,{anchorEl:e,open:l,onClose:r,elevation:5,transitionDuration:{enter:225,exit:195},anchorOrigin:{vertical:"top",horizontal:"center"},transformOrigin:{vertical:"bottom",horizontal:"center"}},B.createElement(me,null,B.createElement(ge,null,t.map((e,t)=>B.createElement(be,{key:`annotation-${t}`,variant:e.type,onClick:()=>o(e)},e.label))),B.createElement(ye,null,B.createElement(be,{onClick:r},"Cancel"),B.createElement(be,{style:{pointerEvents:"none"}}),n?B.createElement(B.Fragment,null,B.createElement(be,{variant:"positive",onClick:()=>a("positive")},"Write"),B.createElement(be,{variant:"negative",onClick:()=>a("negative")},"Write")):B.createElement(B.Fragment,null,B.createElement(be,{onClick:s},"Delete"),B.createElement(be,{onClick:i},"Edit")))))}}ve.__initStatic();const{styled:Ce}=n,_e=e,xe=l,{InputContainer:Ee}=c,Se=Ce("div")({padding:"10px 120px 10px 16px",backgroundColor:"rgba(0, 0, 0, 0.06)",border:"1px solid #ccc",borderRadius:"4px",overflowY:"scroll",lineHeight:"36px",whiteSpace:"pre-wrap",overflowWrap:"break-word","& p":{margin:0},"& span[data-latex]":{userSelect:"none","-webkit-user-select":"none","-moz-user-select":"none","-ms-user-select":"none"}}),we=Ce("div")({width:"230px"}),ke=Ce("div")({position:"relative",overflowX:"hidden",display:"flex"}),Re=Ce(Ee)(({theme:e})=>({paddingTop:e.spacing(2),marginBottom:e.spacing(2),marginTop:e.spacing(2),width:"100%"}));if(!document.getElementById("annotation-editor-styles")){const e=document.createElement("style");e.id="annotation-editor-styles",e.textContent='\n .sideAnnotation:before {\n position: absolute;\n right: var(--before-right, 100%);\n top: var(--before-top, 5px);\n border: solid transparent;\n content: "";\n height: 0;\n width: 0;\n pointer-events: none;\n border-width: var(--before-border-width, 7px);\n border-right-color: var(--before-border-color, rgb(153, 255, 153));\n }\n',document.head.appendChild(e)}class Ae extends B.Component{static __initStatic(){this.propTypes={text:_e.string,comment:_e.string,annotations:_e.array,predefinedAnnotations:_e.array,onChange:_e.func.isRequired,onCommentChange:_e.func.isRequired,width:_e.number,height:_e.number,maxHeight:_e.string,disabled:_e.bool,disabledMath:_e.bool,customKeys:_e.array,keypadMode:_e.string}}constructor(e){super(e),Ae.prototype.__init.call(this),Ae.prototype.__init2.call(this),Ae.prototype.__init3.call(this),Ae.prototype.__init4.call(this),Ae.prototype.__init5.call(this),Ae.prototype.__init6.call(this),Ae.prototype.__init7.call(this),Ae.prototype.__init8.call(this),Ae.prototype.__init9.call(this),Ae.prototype.__init10.call(this),Ae.prototype.__init11.call(this),Ae.prototype.__init12.call(this),Ae.prototype.__init13.call(this),Ae.prototype.__init14.call(this),Ae.prototype.__init15.call(this),this.state={anchorEl:null,openedMenu:!1,openedEditor:!1,selectedElems:[],labelElem:null,selectionDetails:null,annotation:null,annotationIndex:null}}componentDidMount(){const{annotations:e,text:t}=this.props;t&&e.forEach(e=>{const[t,n]=((e,t,n)=>{const o=K(n,t),r=[];let i=0;return o.forEach(n=>{const o=i+n.textContent.length;[e,t].forEach(e=>{i<=e&&e<o&&r.push({node:n,offset:e-i})}),i=o}),r})(e.start,e.end,this.textRef);if(t&&n){const o=document.createRange();o.setStart(t.node,t.offset),o.setEnd(n.node,n.offset);const r=X(o);this.createDOMAnnotation(r,e)}}),this.textRef&&(this.adjustAnnotationsPosition(),this.textRef.addEventListener("scroll",this.adjustAnnotationsPosition))}__init(){this.adjustAnnotationsPosition=()=>{if(this.textRef&&this.labelsRef){const e=this.textRef.offsetLeft+this.textRef.offsetWidth+8;Array.from(this.labelsRef.children).forEach(t=>{const n=ee(t.dataset.annId),o=(n[0].offsetTop?n[0].offsetTop:n[0].offsetParent.offsetTop)-this.textRef.scrollTop-6;t.style.top=`${o}px`,t.style.left=`${e}px`})}}}__init2(){this.handleClick=e=>{const{annotations:t}=this.props,{selectionDetails:n}=this.state;if(n)return;const{id:o,annId:r}=e.target.dataset,i=o||r,s=ee(i),a=te(i),l=t.findIndex(e=>e.id===i),c=a.hasAttribute("data-freeform");c&&(a.style.zIndex="10"),this.setState({anchorEl:s[0],openedMenu:!!o||!!r&&!c,openedEditor:!!r&&c,selectedElems:s,labelElem:a,annotationIndex:l,annotation:t[l],selectionDetails:null})}}__init3(){this.handleHover=e=>{const{id:t,annId:n}=e.target.dataset,o=t||n,r=ee(o),i=te(o),s=i.hasAttribute("data-freeform");r.forEach(e=>{e.style.zIndex="20",e.classList.contains("positive")?e.style.backgroundColor="rgb(51, 255, 51, 0.7)":e.classList.contains("negative")&&(e.style.backgroundColor="rgba(255, 102, 204, 0.55)")}),s?(i.style.zIndex="20",i.classList.contains("positive")?(i.style.backgroundColor="rgb(128, 255, 128)",i.style.setProperty("--before-border-color","rgb(153, 255, 153)")):i.classList.contains("negative")&&(i.style.backgroundColor="rgb(255, 179, 230)",i.style.setProperty("--before-border-color","rgb(255, 179, 230)"))):(i.style.zIndex="20",i.classList.contains("positive")?i.style.color="rgb(0, 77, 0)":i.classList.contains("negative")&&(i.style.color="rgb(153, 0, 102)"))}}__init4(){this.handleCancelHover=e=>{const{id:t,annId:n}=e.target.dataset,o=t||n,r=ee(o),i=te(o),s=i.hasAttribute("data-freeform");r.forEach(e=>{e.style.zIndex="",e.classList.contains("positive")?e.style.backgroundColor="rgb(51, 255, 51, 0.5)":e.classList.contains("negative")&&(e.style.backgroundColor="rgba(255, 102, 204, 0.4)")}),s?(i.style.zIndex="",i.classList.contains("positive")?(i.style.backgroundColor="rgb(153, 255, 153)",i.style.removeProperty("--before-border-color")):i.classList.contains("negative")&&(i.style.backgroundColor="rgb(255, 204, 238)",i.style.removeProperty("--before-border-color"))):(i.style.zIndex="",i.classList.contains("positive")?i.style.color="rgb(0, 128, 0)":i.classList.contains("negative")&&(i.style.color="rgb(204, 0, 136)"))}}__init5(){this.handleClose=e=>{const{selectedElems:t,labelElem:n}=this.state;t.length&&!t[0].hasAttribute("data-id")&&Q(t,this.textRef),n&&(n.style.zIndex=""),this.setState({anchorEl:null,openedMenu:!1,openedEditor:!1,selectedElems:[],labelElem:null,selectionDetails:null,annotationIndex:null,annotation:null}),J()}}__init6(){this.handleSelection=e=>{const t=window.getSelection();if(e.detail>2)J();else if(t&&t.rangeCount>0){const e=t.getRangeAt(0),n=e.toString(),o=this.textRef.contains(e.commonAncestorContainer);if(!t.isCollapsed&&""!==n&&o){const t=((e,t)=>{const n=document.createRange();n.setStart(t,0),n.setEnd(e.startContainer,e.startOffset);const[,o]=Y(n),[,r]=Y(e),i=o.length;return{quote:r,start:i,end:i+r.length}})(e,this.textRef),n=X(e);this.setState({anchorEl:n[0],openedMenu:!0,selectedElems:n,selectionDetails:t})}}}}__init7(){this.deleteAnnotation=()=>{const{annotations:e,onChange:t}=this.props,{selectedElems:n,labelElem:o,annotationIndex:r,annotation:i}=this.state;(Z(i.label)?this.labelsRef:n[0]).removeChild(o),Q(n,this.textRef),e.splice(r,1),t(e),this.handleClose()}}__init8(){this.createDOMAnnotation=(e,t)=>{const{disabled:n}=this.props,{id:o,label:r,type:i}=t;(e||[]).forEach(e=>{e.dataset.id=o,e.className=`annotation ${i}`,e.style.position="relative",e.style.cursor="pointer","positive"===i?e.style.backgroundColor="rgb(51, 255, 51, 0.5)":"negative"===i&&(e.style.backgroundColor="rgba(255, 102, 204, 0.4)"),e.onclick=!n&&this.handleClick,e.onmouseover=this.handleHover,e.onmouseout=this.handleCancelHover});const s=e&&e[0]||{},a=document.createElement("SPAN");if(a.dataset.annId=o,a.innerHTML=r,a.onclick=!n&&this.handleClick,a.onmouseover=this.handleHover,a.onmouseout=this.handleCancelHover,Z(r)){const e=(s.offsetTop?s.offsetTop:s.offsetParent.offsetTop)-this.textRef.scrollTop,t=this.textRef.offsetLeft+this.textRef.offsetWidth+8;a.dataset.freeform=!0,a.className=`sideAnnotation ${i}`,a.style.position="absolute",a.style.padding="4px",a.style.borderRadius="4px",a.style.marginLeft="8px",a.style.width="180px",a.style.whiteSpace="pre-wrap",a.style.wordBreak="break-word",a.style.border="2px solid #ffffff",a.style.fontSize="14px",a.style.fontStyle="normal",a.style.fontWeight="normal",a.style.top=`${e}px`,a.style.left=`${t}px`,"negative"===i?a.style.backgroundColor="rgb(255, 204, 238)":"positive"===i&&(a.style.backgroundColor="rgb(153, 255, 153)"),a.style.setProperty("--before-border-width","7px"),a.style.setProperty("--before-top","5px"),a.style.setProperty("--before-right","100%"),"negative"===i?a.style.setProperty("--before-border-color","rgb(255, 204, 238)"):"positive"===i&&a.style.setProperty("--before-border-color","rgb(153, 255, 153)"),this.labelsRef.appendChild(a)}else a.className=`annotationLabel ${i}`,a.style.backgroundColor="rgb(242, 242, 242)",a.style.padding="2px",a.style.position="absolute",a.style.userSelect="none",a.style.whiteSpace="nowrap",a.style.top="-10px",a.style.left="-2px",a.style.fontSize="12px",a.style.fontStyle="normal",a.style.fontWeight="normal",a.style.lineHeight="6px",a.style.webkitUserSelect="none",a.style.mozUserSelect="none",a.style.msUserSelect="none","positive"===i?a.style.color="rgb(0, 128, 0)":"negative"===i&&(a.style.color="rgb(204, 0, 136)"),s.appendChild(a)}}__init9(){this.createNewAnnotation=(e,t)=>{const{selectedElems:n,selectionDetails:o}=this.state,r={id:[o.start,o.end,(new Date).getTime()].join("-"),label:e,type:t,...o};return this.createDOMAnnotation(n,r),r}}__init10(){this.handleMenuClick=e=>{const{annotations:t,onChange:n}=this.props,{annotation:o,annotationIndex:r}=this.state,{type:i,text:s}=e;if(o){const e={...o,label:s,type:i},{type:n,label:a}=o;this.updateLabel(a,e,i!==n&&n),t.splice(r,1,e)}else{const e=this.createNewAnnotation(s,i);t.push(e)}n(t),this.handleClose()}}__init11(){this.editAnnotation=()=>{this.setState({openedMenu:!1,openedEditor:!0})}}__init12(){this.addAnnotation=e=>{const{annotations:t,onChange:n}=this.props,o=this.createNewAnnotation("",e),r=te(o.id);t.push(o),this.setState({openedMenu:!1,openedEditor:!0,annotationIndex:t.length-1,annotation:o,labelElem:r}),n(t)}}__init13(){this.updateLabel=(e,t,n)=>{const{selectedElems:o,labelElem:r}=this.state,{label:i,type:s}=t;Z(i)&&Z(e)||!Z(i)&&!Z(e)?(r.innerHTML=i,n&&(r.classList.remove(n),r.classList.add(s),o.forEach(e=>{e.classList.remove(n),e.classList.add(s)}))):Z(i)&&!Z(e)?(o[0].removeChild(r),this.createDOMAnnotation(o,t)):!Z(i)&&Z(e)&&(this.labelsRef.removeChild(r),this.createDOMAnnotation(o,t))}}__init14(){this.changeAnnotationType=e=>{const{annotations:t,onChange:n}=this.props,{annotationIndex:o,selectedElems:r}=this.state,{type:i,label:s}=t[o],a="positive"===i?"negative":"positive",l={...t[o],type:a,label:e};r.forEach(e=>{e.classList.remove(i),e.classList.add(a)}),this.updateLabel(s,l,i),t.splice(o,1,l),n(t),this.handleClose()}}__init15(){this.updateAnnotation=(e,t)=>{const{annotations:n,onChange:o}=this.props,{annotationIndex:r}=this.state,i={...n[r],label:t};this.updateLabel(e,i),n.splice(r,1,i),o(n)}}componentWillUnmount(){this.textRef.removeEventListener("scroll",this.adjustAnnotationsPosition)}render(){const{comment:e,customKeys:t,disabled:n,disabledMath:o,keypadMode:r,height:i,width:s,maxHeight:a,onCommentChange:l,predefinedAnnotations:c,text:d}=this.props,{anchorEl:p,annotation:u,openedMenu:h,openedEditor:f,selectionDetails:m}=this.state,g=p&&(p.offsetTop?p.offsetTop:p.offsetParent.offsetTop),y=this.textRef&&g?g-this.textRef.scrollTop-8:0;return B.createElement("div",null,B.createElement(ke,null,B.createElement(Se,{style:{width:s-34,minHeight:i,maxHeight:a},ref:e=>this.textRef=e,onMouseDown:n?()=>{}:J,onMouseUp:n?()=>{}:this.handleSelection,dangerouslySetInnerHTML:{__html:d}}),B.createElement(we,{ref:e=>this.labelsRef=e})),B.createElement(Re,{label:"Comment"},B.createElement(xe,{className:"prompt",markup:e||"",onChange:l,width:s&&(s+104).toString(),disabled:n,pluginProps:{math:{disabled:o,customKeys:t,keypadMode:r,controlledKeypadMode:!1},video:{disabled:!0},audio:{disabled:!0},textAlign:{disabled:!0}}})),B.createElement(ve,{anchorEl:p,open:h&&!n,annotations:c,isNewAnnotation:!!m,onClose:this.handleClose,onDelete:this.deleteAnnotation,onEdit:this.editAnnotation,onWrite:this.addAnnotation,onAnnotate:this.handleMenuClick}),B.createElement(de,{anchorEl:this.textRef,open:f&&!n,offset:y,value:u&&u.label||"",type:u&&u.type,onClose:this.handleClose,onDelete:this.deleteAnnotation,onSave:this.updateAnnotation,onTypeChange:this.changeAnnotationType}))}}Ae.__initStatic();const Te=e,{debounce:Pe}=o,Le=r,{Typography:Me}=t,{styled:Ie}=n,{color:$e}=i,{Feedback:Ne}=i,{Collapsible:De}=i,{PreviewPrompt:Oe}=i,{UiLayout:je}=i,He=l,We=Le("@pie-ui:extended-text-entry"),ze=Ie(je)({backgroundColor:$e.background(),color:$e.text()}),qe=Ie(Me)(({theme:e})=>({width:"100%",color:$e.text(),marginBottom:e.spacing(2),fontSize:"inherit"})),Ve=Ie("div")(({theme:e})=>({marginBottom:e.spacing(2)})),Ue=Ie(He)(({theme:e})=>({marginBottom:e.spacing(2),borderRadius:"4px"})),Fe=Ie("h2")({position:"absolute",left:"-10000px",top:"auto",width:"1px",height:"1px",overflow:"hidden"});class Be extends B.Component{constructor(...e){super(...e),Be.prototype.__init.call(this),Be.prototype.__init2.call(this)}static __initStatic(){this.propTypes={onValueChange:Te.func.isRequired,onAnnotationsChange:Te.func.isRequired,onCommentChange:Te.func.isRequired,model:Te.object,session:Te.shape({value:Te.string,annotations:Te.array,comment:Te.string}).isRequired}}__init(){this.changeSessionValue=Pe(this.props.onValueChange,1500)}__init2(){this.changeSessionComment=Pe(this.props.onCommentChange,1500)}render(){const{model:e,session:t,onAnnotationsChange:n}=this.props,{animationsDisabled:o,annotatorMode:r,customKeys:i,dimensions:s,disabled:a,disabledAnnotator:l,equationEditor:c,extraCSSRules:d,feedback:p,mathInput:u,playersToolbarPosition:h,predefinedAnnotations:f,prompt:m,spanishInput:g,specialInput:y,spellCheckEnabled:b,teacherInstructions:v}=e,{annotations:C,comment:_,value:x}=t,{width:E,height:S}=s||{},w="40vh",k={position:"top"===h?"top":"bottom"};We("[render] disabled? ",a);const R=B.createElement(Oe,{defaultClassName:"teacher-instructions",prompt:v}),A=[];return g&&A.push({language:"spanish"}),y&&A.push({language:"special"}),B.createElement(ze,{extraCSSRules:d,ref:e=>{this.containerRef=e}},B.createElement(Fe,null,"Constructed Response Question"),v&&B.createElement(Ve,null,o?R:B.createElement(De,{labels:{hidden:"Show Teacher Instructions",visible:"Hide Teacher Instructions"}},R)),m&&B.createElement(qe,{component:"span"},B.createElement(Oe,{defaultClassName:"prompt",prompt:e.prompt})),r?B.createElement(Ae,{text:x||"",annotations:C||[],comment:_||"",predefinedAnnotations:f||[],onChange:n,onCommentChange:this.changeSessionComment,width:E,height:S,maxHeight:w,disabled:l,disabledMath:!u,customKeys:i,keypadMode:c}):B.createElement(Ue,{className:"response-area-editor",onChange:this.changeSessionValue,markup:x||"",maxWidth:E&&E.toString(),minWidth:"100px",minHeight:S&&S.toString(),maxHeight:w,disabled:a,highlightShape:!0,toolbarOpts:k,spellCheck:b,charactersLimit:5e4,autoWidthToolbar:!0,pluginProps:{math:{disabled:!u,customKeys:this.props.model.customKeys,keypadMode:this.props.model.equationEditor,controlledKeypadMode:!1},video:{disabled:!0},audio:{disabled:!0},table:{disabled:!0},textAlign:{disabled:!0},separateParagraphs:{disabled:!1},ul_list:{disabled:!0},ol_list:{disabled:!0}},languageCharactersProps:A}),p&&B.createElement(Ne,{correctness:"correct",feedback:p}))}}Be.__initStatic();var Ke,Ye=s;Ke=Ye.createRoot,Ye.hydrateRoot;var Ge={};Object.defineProperty(Ge,"__esModule",{value:!0});class Xe extends CustomEvent{constructor(e,t,n){super(Xe.TYPE,{bubbles:!0,composed:!0,detail:{complete:t,component:e,hasModel:n}}),this.component=e,this.complete=t}}Xe.TYPE="model-set";var Qe=Ge.ModelSetEvent=Xe;class Je extends CustomEvent{constructor(e,t){super(Je.TYPE,{bubbles:!0,composed:!0,detail:{complete:t,component:e}}),this.component=e,this.complete=t}}Je.TYPE="session-changed";var Ze=Ge.SessionChangedEvent=Je;const et=r,{renderMath:tt}=a,nt=et("@pie-elements:extended-text-entry"),ot=void 0!==typeof window?new DOMParser:{parseFromString:e=>e};function rt(e){if("string"==typeof e)try{const t=ot.parseFromString(e,"text/html");return t.body.textContent}catch(t){return nt("tried to parse as dom and failed",e),e}}function it(e){const t=rt(e);return void 0!==t&&t.length>0}class st extends HTMLElement{constructor(){super(),this._model=null,this._session=null,this._root=null}setLangAttribute(){const e=this._model&&(this._model.language,1)?this._model.language:"",t=e?e.slice(0,2):"en";this.setAttribute("lang",t)}set model(e){this._model=e,this.dispatchEvent(new Qe(this.tagName.toLowerCase(),!1,!!this._model)),this.render()}set session(e){this._session=e,this.render()}get session(){return this._session}valueChange(e){this._session.value=e,this.dispatchEvent(new Ze(this.tagName.toLowerCase(),it(e))),this.render()}annotationsChange(e){this._session.annotations=e,this.dispatchEvent(new Ze(this.tagName.toLowerCase(),!0)),this.render()}commentChange(e){this._session.comment=e,this.dispatchEvent(new Ze(this.tagName.toLowerCase(),it(e))),this.render()}connectedCallback(){this.setAttribute("aria-label","Written Response Question"),this.setAttribute("role","region"),this.render()}render(){if(this._model&&this._session){let e=B.createElement(Be,{model:this._model,session:this._session,onValueChange:this.valueChange.bind(this),onAnnotationsChange:this.annotationsChange.bind(this),onCommentChange:this.commentChange.bind(this)});this.setLangAttribute(),this._root||(this._root=Ke(this)),this._root.render(e),queueMicrotask(()=>{tt(this)})}}disconnectedCallback(){this._root&&this._root.unmount()}}export{st as default,it as isComplete,rt as textContent};
@@ -0,0 +1,21 @@
1
+
2
+ <!doctype html>
3
+ <html>
4
+ <head>
5
+ <title>@pie-element/extended-text-entry@14.0.0-beta.1</title>
6
+ <script
7
+ type="module"
8
+ src="https://cdn.jsdelivr.net/npm/@pslb/demo-el@^1.0.0/dist/demo-el/demo-el.esm.js"></script>
9
+
10
+ <link
11
+ href="https://fonts.googleapis.com/css?family=Roboto&display=swap"
12
+ rel="stylesheet"
13
+ />
14
+ <style>
15
+ html, body {
16
+ font-family: 'Roboto', sans-serif;
17
+ }
18
+ </style>
19
+ <script type="module" src="./demo.js"></script>
20
+ </head>
21
+ </html>
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "@pie-element/extended-text-entry",
3
+ "version": "14.0.0-beta.1",
4
+ "modules": [
5
+ {
6
+ "name": "@pie-lib/shared-module",
7
+ "version": "^3.0.5"
8
+ },
9
+ {
10
+ "name": "@pie-lib/math-rendering-module",
11
+ "version": "^4.0.5"
12
+ },
13
+ {
14
+ "name": "@pie-lib/editable-html-module",
15
+ "version": "^6.0.5"
16
+ },
17
+ {
18
+ "name": "@pie-lib/config-module",
19
+ "version": "^3.0.0"
20
+ }
21
+ ]
22
+ }
@@ -0,0 +1,76 @@
1
+ import PrintElement from './print.js';
2
+
3
+ var generate = {};
4
+
5
+ generate.model = (id, element) => ({
6
+ id,
7
+ element,
8
+ customKeys: ['\\square'],
9
+ feedback: { type: 'default', default: 'this is default feedback' },
10
+ prompt: 'This is the question prompt',
11
+ promptEnabled: true,
12
+ mathInput: true,
13
+ playersToolbarPosition: 'bottom',
14
+ toolbarEditorPosition: 'bottom',
15
+ spellCheckEnabled: true,
16
+ rubricEnabled: false,
17
+ annotationsEnabled: false,
18
+ });
19
+
20
+ const { model } = generate;
21
+ var config = {
22
+ elements: {
23
+ 'extended-text-entry': '../..',
24
+ },
25
+ models: [model('1', 'extended-text-entry')],
26
+ };
27
+
28
+ // new init - just shows off print!
29
+
30
+ const init = async () => {
31
+ console.log('define the element...');
32
+ await Promise.all(
33
+ config.models.map(async (m) => {
34
+ try {
35
+ const printTag = `${m.element}-print`;
36
+ if (customElements.get(printTag)) {
37
+ return true;
38
+ } else {
39
+ customElements.define(printTag, PrintElement);
40
+ await customElements.whenDefined(printTag);
41
+ return true;
42
+ }
43
+ } catch (e) {
44
+ return false;
45
+ }
46
+ })
47
+ );
48
+
49
+ console.log('now apply the model...');
50
+ config.models.forEach((m) => {
51
+ const printTag = `${m.element}-print`;
52
+ const h3s = document.createElement('h3');
53
+ h3s.textContent = 'student mode';
54
+ document.body.appendChild(h3s);
55
+ const de = document.createElement(printTag);
56
+ document.body.appendChild(de);
57
+ de.options = {};
58
+ de.model = m;
59
+
60
+ const h3 = document.createElement('h3');
61
+ h3.textContent = 'instructor mode';
62
+ document.body.appendChild(h3);
63
+ const instr = document.createElement(printTag);
64
+ document.body.appendChild(instr);
65
+ instr.options = { mode: 'instructor' };
66
+ instr.model = JSON.parse(JSON.stringify(m));
67
+ });
68
+ };
69
+
70
+ init()
71
+ .then(() => {
72
+ console.log('ready');
73
+ })
74
+ .catch((e) => {
75
+ console.error(e);
76
+ });
@@ -0,0 +1,18 @@
1
+
2
+ <!doctype html>
3
+ <html>
4
+ <head>
5
+ <title>@pie-element/extended-text-entry@14.0.0-beta.1</title>
6
+ <link
7
+ href="https://fonts.googleapis.com/css?family=Roboto&display=swap"
8
+ rel="stylesheet"
9
+ />
10
+ <style>
11
+ html, body {
12
+ font-family: 'Roboto', sans-serif;
13
+ }
14
+ </style>
15
+ <script type="module" src="./print-demo.js"></script>
16
+ </head>
17
+ <body></body>
18
+ </html>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pie-element/extended-text-entry",
3
- "version": "14.0.0-beta.0",
3
+ "version": "14.0.0-next.42+bb1f3eb4e",
4
4
  "description": "",
5
5
  "repository": "pie-framework/pie-elements",
6
6
  "publishConfig": {
@@ -14,10 +14,10 @@
14
14
  "@mui/icons-material": "^7.3.4",
15
15
  "@mui/material": "^7.3.4",
16
16
  "@pie-framework/pie-player-events": "^0.1.0",
17
- "@pie-lib/config-ui": "11.30.4-next.0",
18
- "@pie-lib/editable-html": "11.21.4-next.0",
19
- "@pie-lib/math-rendering": "3.22.3-next.0",
20
- "@pie-lib/render-ui": "4.35.4-next.0",
17
+ "@pie-lib/config-ui": "12.1.1-next.0",
18
+ "@pie-lib/editable-html-tip-tap": "1.1.1-next.0",
19
+ "@pie-lib/math-rendering": "4.1.1-next.0",
20
+ "@pie-lib/render-ui": "5.1.1-next.0",
21
21
  "classnames": "^2.2.5",
22
22
  "debug": "^4.1.1",
23
23
  "lodash.throttle": "^4.1.1",
@@ -25,7 +25,7 @@
25
25
  "react": "18.2.0",
26
26
  "react-dom": "18.2.0"
27
27
  },
28
- "gitHead": "028605f2d7b2b3b7e5b8840078c0d2c5d9a562e0",
28
+ "gitHead": "bb1f3eb4e3b5b1cb15024d459ffd6e94bf419712",
29
29
  "scripts": {
30
30
  "postpublish": "../../scripts/postpublish"
31
31
  },