11import React from 'react' ;
22import { createRoot } from 'react-dom/client' ;
3- import { debounce } from 'lodash-es' ;
3+ import { cloneDeep , debounce } from 'lodash-es' ;
44import Main from './main' ;
55import { renderMath } from '@pie-lib/math-rendering' ;
66
@@ -10,25 +10,26 @@ const log = debug('pie-element:extended-text-entry:print');
1010
1111const preparePrintModel = ( model , opts ) => {
1212 const instr = opts . role === 'instructor' ;
13+ const printModel = cloneDeep ( model ) ;
1314
14- model . prompt = model . promptEnabled !== false ? model . prompt : undefined ;
15- model . teacherInstructions =
16- instr && model . teacherInstructionsEnabled !== false ? model . teacherInstructions : undefined ;
17- model . showTeacherInstructions = instr ;
18- model . mode = instr ? 'evaluate' : model . mode ;
15+ printModel . prompt = printModel . promptEnabled !== false ? printModel . prompt : undefined ;
16+ printModel . teacherInstructions =
17+ instr && printModel . teacherInstructionsEnabled !== false ? printModel . teacherInstructions : undefined ;
18+ printModel . showTeacherInstructions = instr ;
19+ printModel . mode = instr ? 'evaluate' : printModel . mode ;
1920
2021 const defaultDimensions = { height : 100 , width : 500 } ;
2122
22- model . dimensions = {
23+ printModel . dimensions = {
2324 ...defaultDimensions ,
24- ...model . dimensions ,
25+ ...printModel . dimensions ,
2526 } ;
2627
27- model . disabled = true ;
28- model . feedback = undefined ;
29- model . animationsDisabled = true ;
28+ printModel . disabled = true ;
29+ printModel . feedback = undefined ;
30+ printModel . animationsDisabled = true ;
3031
31- return model ;
32+ return printModel ;
3233} ;
3334
3435export default class ExtendedTextEntryPrint extends HTMLElement {
@@ -40,19 +41,17 @@ export default class ExtendedTextEntryPrint extends HTMLElement {
4041 this . _root = null ;
4142 this . _rerender = debounce (
4243 ( ) => {
43- if ( this . _model && this . _session ) {
44+ if ( this . _model && this . _session && this . _options ) {
4445 const printModel = preparePrintModel ( this . _model , this . _options ) ;
4546
46- const element =
47- this . _options &&
48- React . createElement ( Main , {
49- model : printModel ,
50- session : { } ,
51- onChange : ( ) => { } ,
52- onValueChange : ( ) => { } ,
53- onAnnotationsChange : ( ) => { } ,
54- onCommentChange : ( ) => { } ,
55- } ) ;
47+ const element = React . createElement ( Main , {
48+ model : printModel ,
49+ session : { } ,
50+ onChange : ( ) => { } ,
51+ onValueChange : ( ) => { } ,
52+ onAnnotationsChange : ( ) => { } ,
53+ onCommentChange : ( ) => { } ,
54+ } ) ;
5655
5756 if ( ! this . _root ) {
5857 this . _root = createRoot ( this ) ;
@@ -72,6 +71,8 @@ export default class ExtendedTextEntryPrint extends HTMLElement {
7271 }
7372 set options ( o ) {
7473 this . _options = o ;
74+ // re-render so role changes (student/instructor) propagate
75+ this . _rerender ( ) ;
7576 }
7677
7778 set model ( s ) {
0 commit comments