@pie-element/select-text 9.6.1-next.2 → 9.6.2-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +0 -19
- package/configure/CHANGELOG.md +0 -18
- package/configure/lib/__tests__/design.test.js +214 -0
- package/configure/lib/defaultConfiguration.js +12 -1
- package/configure/lib/defaultConfiguration.js.map +1 -1
- package/configure/lib/design.js +450 -62
- package/configure/lib/design.js.map +1 -1
- package/configure/lib/index.js +7 -1
- package/configure/lib/index.js.map +1 -1
- package/configure/lib/utils.js +26 -2
- package/configure/lib/utils.js.map +1 -1
- package/configure/package.json +2 -2
- package/controller/CHANGELOG.md +0 -17
- package/controller/lib/__tests__/index.test.js +833 -0
- package/controller/lib/index.js +1 -0
- package/controller/lib/index.js.map +1 -1
- package/controller/package.json +2 -2
- package/docs/demo/generate.js +101 -44
- package/docs/demo/pie.manifest.json +11 -0
- package/lib/__tests__/index.test.js +91 -0
- package/lib/__tests__/main.test.js +83 -0
- package/lib/main.js +40 -6
- package/lib/main.js.map +1 -1
- package/module/configure.js +2540 -7020
- package/module/controller.js +1 -0
- package/module/demo.js +101 -44
- package/module/element.js +1106 -1139
- package/module/index.html +1 -1
- package/module/manifest.json +3 -3
- package/module/print-demo.js +101 -44
- package/module/print.html +1 -1
- package/module/print.js +1106 -1139
- package/package.json +3 -3
- package/LICENSE.md +0 -5
package/lib/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/main.jsx"],"names":["log","Types","model","PropTypes","object","session","onSelectionChange","func","isRequired","Main","props","setState","showCorrectAnswer","state","tokens","filter","t","correct","alwaysShowCorrect","nextProps","classes","env","extraCSSRules","mode","selectedTokens","correctAnswer","showRationale","rationale","showTeacherInstructions","teacherInstructions","mainContainer","animationsDisabled","hidden","visible","collapsible","prompt","disabled","incorrect","toggleShowCorrect","language","textSelect","text","selection","newSelections","map","select","token","find","start","end","highlightChoices","maxSelections","correctness","feedback","React","Component","StyledMain","theme","color","backgroundColor","background","marginBottom","spacing","unit","marginTop","whiteSpace","verticalAlign","Stateful","change"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { TextSelect, Legend } from '@pie-lib/pie-toolbox/text-select';\nimport { CorrectAnswerToggle } from '@pie-lib/pie-toolbox/correct-answer-toggle';\nimport { color, Feedback, Collapsible, hasText, hasMedia, PreviewPrompt, UiLayout } from '@pie-lib/pie-toolbox/render-ui';\nimport { withStyles } from '@material-ui/core/styles';\nimport generateModel from './utils';\n\nimport debug from 'debug';\n\nconst log = debug('@pie-ui:select-text');\n\nconst Types = {\n model: PropTypes.object,\n session: PropTypes.object,\n onSelectionChange: PropTypes.func.isRequired,\n};\n\nexport class Main extends React.Component {\n static propTypes = { ...Types, classes: PropTypes.object.isRequired };\n\n static defaultProps = {};\n\n constructor(props) {\n super(props);\n\n this.state = {\n showCorrectAnswer: this.props.model.alwaysShowCorrect || false,\n model: generateModel(props.model),\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n this.setState({\n showCorrectAnswer: !!nextProps.model.alwaysShowCorrect,\n model: generateModel(nextProps.model),\n });\n }\n\n toggleShowCorrect = () => {\n this.setState({ showCorrectAnswer: !this.state.showCorrectAnswer });\n };\n\n correctAnswer = () => {\n const { model } = this.state;\n\n return model.tokens.filter((t) => t.correct);\n };\n\n render() {\n const { session, onSelectionChange, classes } = this.props;\n const { showCorrectAnswer, model } = this.state;\n const { env, extraCSSRules } = model;\n const { mode } = env || {};\n\n\n const selectedTokens = showCorrectAnswer ? this.correctAnswer() : session.selectedTokens;\n const showRationale = model.rationale && (hasText(model.rationale) || hasMedia(model.rationale));\n const showTeacherInstructions = model.teacherInstructions && (hasText(model.teacherInstructions) || hasMedia(model.teacherInstructions));\n\n log('[render] selectedTokens:', selectedTokens);\n\n return (\n <UiLayout extraCSSRules={extraCSSRules} className={classes.mainContainer}>\n {showTeacherInstructions &&\n (!model.animationsDisabled ? (\n <Collapsible\n labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}\n className={classes.collapsible}\n >\n <PreviewPrompt prompt={model.teacherInstructions} />\n </Collapsible>\n ) : (\n <div className={classes.prompt}>\n <PreviewPrompt prompt={model.teacherInstructions} />\n </div>\n ))}\n\n <div className={classes.prompt}>\n <PreviewPrompt prompt={model.prompt} />\n </div>\n\n {!model.alwaysShowCorrect && (\n <CorrectAnswerToggle\n show={model.disabled && model.incorrect}\n toggled={showCorrectAnswer}\n onToggle={this.toggleShowCorrect}\n language={model.language}\n />\n )}\n\n <TextSelect\n className={classes.textSelect}\n disabled={model.disabled}\n text={model.text}\n tokens={model.tokens}\n selectedTokens={selectedTokens}\n onChange={(selection) => {\n const newSelections = selection.map((select) => {\n const token = model.tokens.find(({ start, end }) => select.start === start && select.end === end);\n\n // needed for getScore when tokens position is recalculated, to keep oldStart and oldEnd\n if (token) {\n return token;\n }\n\n return select;\n });\n\n onSelectionChange(newSelections);\n }}\n highlightChoices={model.highlightChoices}\n maxNoOfSelections={model.maxSelections}\n animationsDisabled={model.animationsDisabled}\n />\n {mode === 'evaluate' && <Legend language={model.language} showOnlyCorrect={showCorrectAnswer} />}\n\n {showRationale &&\n (!model.animationsDisabled ? (\n <Collapsible\n labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}\n className={classes.collapsible}\n >\n <PreviewPrompt prompt={model.rationale} />\n </Collapsible>\n ) : (\n <div className={classes.prompt}>\n <PreviewPrompt prompt={model.rationale} />\n </div>\n ))}\n\n {model.correctness && model.feedback && !showCorrectAnswer && (\n <Feedback correctness={model.correctness} feedback={model.feedback} />\n )}\n </UiLayout>\n );\n }\n}\n\nconst StyledMain = withStyles((theme) => ({\n mainContainer: {\n color: color.text(),\n backgroundColor: color.background(),\n },\n textSelect: {\n marginBottom: theme.spacing.unit,\n marginTop: theme.spacing.unit * 2,\n whiteSpace: 'normal',\n },\n prompt: {\n verticalAlign: 'middle',\n marginBottom: theme.spacing.unit,\n },\n collapsible: {\n marginBottom: theme.spacing.unit * 2,\n },\n}))(Main);\n\nexport default class Stateful extends React.Component {\n static propTypes = Types;\n\n constructor(props) {\n super(props);\n this.state = {\n model: props.model,\n session: props.session,\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n this.setState({ model: nextProps.model, session: nextProps.session });\n }\n\n change = (selectedTokens) => {\n const session = { ...this.state.session, selectedTokens };\n this.setState({ session }, () => {\n this.props.onSelectionChange(this.state.session.selectedTokens);\n });\n };\n\n render() {\n const { model, session } = this.state;\n return <StyledMain model={model} session={session} onSelectionChange={this.change} />;\n }\n}\n"],"file":"main.js"}
|
|
1
|
+
{"version":3,"sources":["../src/main.jsx"],"names":["log","Types","model","PropTypes","object","session","onSelectionChange","func","isRequired","Main","props","setState","showCorrectAnswer","state","tokens","filter","t","correct","html","onClick","classes","container","document","createElement","innerHTML","spans","querySelectorAll","forEach","span","className","token","event","console","target","id","classList","toggle","alwaysShowCorrect","tokenizedText","initializeTokenizedText","text","handleTokenClick","selectedTokens","nextProps","env","extraCSSRules","mode","correctAnswer","showRationale","rationale","showTeacherInstructions","teacherInstructions","mainContainer","animationsDisabled","hidden","visible","collapsible","prompt","disabled","incorrect","toggleShowCorrect","language","textSelect","selection","newSelections","map","select","find","start","end","highlightChoices","maxSelections","correctness","feedback","React","Component","StyledMain","theme","color","backgroundColor","background","marginBottom","spacing","unit","marginTop","whiteSpace","verticalAlign","position","cursor","border","lineHeight","Stateful","change"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { TextSelect, Legend } from '@pie-lib/pie-toolbox/text-select';\nimport { CorrectAnswerToggle } from '@pie-lib/pie-toolbox/correct-answer-toggle';\nimport {\n color,\n Feedback,\n Collapsible,\n hasText,\n hasMedia,\n PreviewPrompt,\n UiLayout,\n} from '@pie-lib/pie-toolbox/render-ui';\nimport { withStyles } from '@material-ui/core/styles';\nimport generateModel from './utils';\nimport classNames from 'classnames';\n\nimport debug from 'debug';\n\nconst log = debug('@pie-ui:select-text');\n\nconst Types = {\n model: PropTypes.object,\n session: PropTypes.object,\n onSelectionChange: PropTypes.func.isRequired,\n};\n\nexport class Main extends React.Component {\n static propTypes = { ...Types, classes: PropTypes.object.isRequired };\n\n static defaultProps = {};\n\n constructor(props) {\n super(props);\n\n this.state = {\n showCorrectAnswer: this.props.model.alwaysShowCorrect || false,\n model: {\n ...generateModel(props.model),\n tokenizedText: this.initializeTokenizedText(\n props.model.tokenizedText || props.model.text,\n this.handleTokenClick,\n ),\n },\n selectedTokens: [],\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n this.setState({\n showCorrectAnswer: !!nextProps.model.alwaysShowCorrect,\n model: {\n ...generateModel(nextProps.model),\n tokenizedText: this.initializeTokenizedText(\n nextProps.model.tokenizedText || nextProps.model.text,\n this.handleTokenClick,\n ),\n },\n });\n }\n\n toggleShowCorrect = () => {\n this.setState({ showCorrectAnswer: !this.state.showCorrectAnswer });\n };\n\n correctAnswer = () => {\n const { model } = this.state;\n\n return model.tokens.filter((t) => t.correct);\n };\n\n initializeTokenizedText = (html, onClick) => {\n const { classes } = this.props;\n const container = document.createElement('div');\n container.innerHTML = html;\n\n const spans = container.querySelectorAll('span');\n\n spans.forEach((span) => {\n span.className = classNames(classes.token);\n // span.addEventListener('click', (e) => onClick(e));\n });\n\n return container.innerHTML;\n };\n\n handleTokenClick = (event) => {\n console.log('event click', event.target.id);\n\n event.target.classList.toggle('selected');\n };\n\n render() {\n const { session, onSelectionChange, classes } = this.props;\n const { showCorrectAnswer, model } = this.state;\n const { env, extraCSSRules } = model;\n const { mode } = env || {};\n\n const selectedTokens = showCorrectAnswer ? this.correctAnswer() : session.selectedTokens;\n const showRationale = model.rationale && (hasText(model.rationale) || hasMedia(model.rationale));\n const showTeacherInstructions =\n model.teacherInstructions && (hasText(model.teacherInstructions) || hasMedia(model.teacherInstructions));\n\n log('[render] selectedTokens:', selectedTokens);\n\n return (\n <UiLayout extraCSSRules={extraCSSRules} className={classes.mainContainer}>\n {showTeacherInstructions &&\n (!model.animationsDisabled ? (\n <Collapsible\n labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}\n className={classes.collapsible}\n >\n <PreviewPrompt prompt={model.teacherInstructions} />\n </Collapsible>\n ) : (\n <div className={classes.prompt}>\n <PreviewPrompt prompt={model.teacherInstructions} />\n </div>\n ))}\n\n <div className={classes.prompt}>\n <PreviewPrompt prompt={model.prompt} />\n </div>\n\n {!model.alwaysShowCorrect && (\n <CorrectAnswerToggle\n show={model.disabled && model.incorrect}\n toggled={showCorrectAnswer}\n onToggle={this.toggleShowCorrect}\n language={model.language}\n />\n )}\n\n <TextSelect\n className={classes.textSelect}\n disabled={model.disabled}\n text={model.tokenizedText || model.text}\n tokens={[]}\n selectedTokens={[]}\n onChange={(selection) => {\n const newSelections = selection.map((select) => {\n const token = model.tokens.find(({ start, end }) => select.start === start && select.end === end);\n\n // needed for getScore when tokens position is recalculated, to keep oldStart and oldEnd\n if (token) {\n return token;\n }\n\n return select;\n });\n\n onSelectionChange(newSelections);\n }}\n highlightChoices={model.highlightChoices}\n maxNoOfSelections={model.maxSelections}\n animationsDisabled={model.animationsDisabled}\n />\n {mode === 'evaluate' && <Legend language={model.language} showOnlyCorrect={showCorrectAnswer} />}\n\n {showRationale &&\n (!model.animationsDisabled ? (\n <Collapsible\n labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}\n className={classes.collapsible}\n >\n <PreviewPrompt prompt={model.rationale} />\n </Collapsible>\n ) : (\n <div className={classes.prompt}>\n <PreviewPrompt prompt={model.rationale} />\n </div>\n ))}\n\n {model.correctness && model.feedback && !showCorrectAnswer && (\n <Feedback correctness={model.correctness} feedback={model.feedback} />\n )}\n </UiLayout>\n );\n }\n}\n\nconst StyledMain = withStyles((theme) => ({\n mainContainer: {\n color: color.text(),\n backgroundColor: color.background(),\n },\n textSelect: {\n marginBottom: theme.spacing.unit,\n marginTop: theme.spacing.unit * 2,\n whiteSpace: 'normal',\n },\n prompt: {\n verticalAlign: 'middle',\n marginBottom: theme.spacing.unit,\n },\n collapsible: {\n marginBottom: theme.spacing.unit * 2,\n },\n token: {\n position: 'relative',\n cursor: 'pointer',\n border: 'dashed 2px grey',\n lineHeight: '24px',\n\n '&:hover': {\n backgroundColor: '#9fa8da',\n },\n\n '&.selected': {\n backgroundColor: '#9fa8da',\n border: 'none',\n },\n },\n}))(Main);\n\nexport default class Stateful extends React.Component {\n static propTypes = Types;\n\n constructor(props) {\n super(props);\n this.state = {\n model: props.model,\n session: props.session,\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n this.setState({ model: nextProps.model, session: nextProps.session });\n }\n\n change = (selectedTokens) => {\n const session = { ...this.state.session, selectedTokens };\n this.setState({ session }, () => {\n this.props.onSelectionChange(this.state.session.selectedTokens);\n });\n };\n\n render() {\n const { model, session } = this.state;\n return <StyledMain model={model} session={session} onSelectionChange={this.change} />;\n }\n}\n"],"file":"main.js"}
|