@pie-element/drawing-response 6.4.1-next.6 → 6.4.1-next.62
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/configure/lib/defaults.js +13 -0
- package/configure/lib/defaults.js.map +1 -1
- package/configure/lib/root.js +16 -4
- package/configure/lib/root.js.map +1 -1
- package/configure/package.json +2 -2
- package/configure/src/__tests__/__snapshots__/root.test.jsx.snap +21 -0
- package/configure/src/defaults.js +13 -0
- package/configure/src/root.jsx +8 -0
- package/controller/lib/index.js +4 -2
- package/controller/lib/index.js.map +1 -1
- package/controller/src/index.js +2 -1
- package/docs/config-schema.json +112 -0
- package/docs/config-schema.json.md +77 -1
- package/docs/pie-schema.json +41 -0
- package/docs/pie-schema.json.md +29 -0
- package/lib/drawing-response/container.js +56 -5
- package/lib/drawing-response/container.js.map +1 -1
- package/lib/drawing-response/drawable-main.js +15 -5
- package/lib/drawing-response/drawable-main.js.map +1 -1
- package/lib/drawing-response/drawable-palette.js +14 -5
- package/lib/drawing-response/drawable-palette.js.map +1 -1
- package/lib/drawing-response/drawable-text.js +8 -2
- package/lib/drawing-response/drawable-text.js.map +1 -1
- package/lib/drawing-response/index.js +4 -3
- package/lib/drawing-response/index.js.map +1 -1
- package/package.json +5 -4
- package/src/drawing-response/__tests__/__snapshots__/container.test.jsx.snap +30 -30
- package/src/drawing-response/container.jsx +36 -3
- package/src/drawing-response/drawable-main.jsx +8 -4
- package/src/drawing-response/drawable-palette.jsx +7 -3
- package/src/drawing-response/drawable-text.jsx +4 -2
- package/src/drawing-response/index.jsx +11 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/drawing-response/drawable-text.jsx"],"names":["generateId","Math","random","toString","substring","Date","getTime","TextDrawable","props","eventListenersDetachArray","forEach","fn","all","forceUpdate","id","push","isDefault","label","width","x","length","y","textVisible","transformerVisible","textareaVisible","createdAt","type","handleSessionChange","toggleTextSelected","e","current","filter","item","text","toggleTextarea","textNode","getTextNode","textareaNode","getTextareaNode","areaPosition","_lastPos","value","style","position","top","left","padding","height","fontSize","border","margin","overflow","background","outline","resize","lineHeight","fontFamily","transformOrigin","textAlign","align","color","fill","rotation","transform","px","isFirefox","navigator","userAgent","toLowerCase","indexOf","round","scrollHeight","focus","keyDownHandler","keyCode","shiftKey","saveValue","addEventListener","removeEventListener","blurHandler","showOnlyTextNodes","initializeDefault","setAttrs","scaleX","scale","map","textarea","display","setInitialProps","stage","newStage","stageClickHandler","target","on","off","transformerNode","extraProps","disabled","onClick","handleClick","onTap","onDblClick","handleDblClick","onDblTap","onTransform","handleTransform","onTransformEnd","onMouseDown","handleMouseDown","onTouchStart","onMouseUp","handleMouseUp","onTouchEnd","onDragEnd","onMouseEnter","onMouseOverElement","onMouseLeave","onMouseOutElement"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Text } from 'react-konva';\n\nimport Transformer from './drawable-transformer';\n\nexport const generateId = () => Math.random().toString(36).substring(2) + new Date().getTime().toString(36);\n\nexport default class TextDrawable {\n static getTextareaNode(id) {\n return `textarea_${id}`;\n }\n\n static getTextNode(id) {\n return `text_${id}`;\n }\n\n static getTransformerNode(id) {\n return `transformer_${id}`;\n }\n\n constructor(props) {\n this.all = (props && props.all) || [];\n this.eventListenersDetachArray = [];\n }\n\n removeEventListeners = () => this.eventListenersDetachArray.forEach((fn) => fn());\n\n setAll = (all) => {\n this.all = all;\n this.props.forceUpdate();\n };\n\n addNewTextEntry = () => {\n const all = this.all;\n const id = generateId();\n\n all.push({\n id: id,\n isDefault: true,\n label: 'Double click to edit this text. Press Enter to submit.',\n width: 200,\n x: (all.length + 1) * 5 + 50,\n y: (all.length + 1) * 5 + 50,\n textVisible: true,\n transformerVisible: true,\n textareaVisible: false,\n createdAt: new Date(),\n type: 'text-entry',\n });\n\n this.props.handleSessionChange();\n };\n\n showOnlyTextNodes() {\n this.all.map((item) => {\n item.textVisible = true;\n item.transformerVisible = false;\n item.textareaVisible = false;\n });\n }\n\n toggleTextarea(id, value) {\n this.all = this.all.map((item) => {\n if (item.id === id) {\n return {\n ...item,\n textVisible: !value,\n transformerVisible: !value,\n textareaVisible: value,\n };\n }\n return item;\n });\n this.props.forceUpdate();\n }\n\n initializeDefault(id, isDefault) {\n if (isDefault) {\n const current = this.all.filter((item) => item.id === id)[0];\n current.isDefault = false;\n }\n }\n\n saveValue(id, textNode, textareaNode) {\n if (textareaNode.value) {\n textNode.text(textareaNode.value);\n } else {\n this.all = this.all.filter((text) => text.id !== id);\n this.props.forceUpdate();\n }\n\n this.props.handleSessionChange();\n }\n\n handleMouseDown = () => this.props.toggleTextSelected(true);\n handleMouseUp = () => this.props.toggleTextSelected(false);\n\n handleClick = (e, id) => {\n const current = this.all.filter((item) => item.id === id)[0];\n current.transformerVisible = true;\n this.props.forceUpdate();\n };\n\n handleDblClick = (e, text) => {\n const { id, isDefault } = text;\n this.toggleTextarea(id, true);\n\n const textNode = this[TextDrawable.getTextNode(id)];\n const textareaNode = this[TextDrawable.getTextareaNode(id)];\n\n const areaPosition = textNode._lastPos;\n\n textareaNode.value = isDefault ? '' : textNode.text();\n textareaNode.style.position = 'absolute';\n textareaNode.style.top = areaPosition.y + 'px';\n textareaNode.style.left = areaPosition.x + 'px';\n textareaNode.style.width = textNode.width() - textNode.padding() * 2 + 'px';\n textareaNode.style.height = textNode.height() - textNode.padding() * 2 + 5 + 'px';\n textareaNode.style.fontSize = textNode.fontSize() + 'px';\n textareaNode.style.border = 'none';\n textareaNode.style.padding = '0px';\n textareaNode.style.margin = '0px';\n textareaNode.style.overflow = 'hidden';\n textareaNode.style.background = 'none';\n textareaNode.style.outline = 'none';\n textareaNode.style.resize = 'none';\n textareaNode.style.lineHeight = textNode.lineHeight();\n textareaNode.style.fontFamily = textNode.fontFamily();\n textareaNode.style.transformOrigin = 'left top';\n textareaNode.style.textAlign = textNode.align();\n textareaNode.style.color = textNode.fill();\n\n let rotation = textNode.rotation();\n let transform = '';\n if (rotation) {\n transform += 'rotateZ(' + rotation + 'deg)';\n }\n\n let px = 0;\n const isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n\n if (isFirefox) {\n px += 2 + Math.round(textNode.fontSize() / 20);\n }\n\n transform += 'translateY(-' + px + 'px)';\n\n textareaNode.style.transform = transform;\n textareaNode.style.height = 'auto';\n textareaNode.style.height = textareaNode.scrollHeight + 3 + 'px';\n\n textareaNode.focus();\n\n const keyDownHandler = (e) => {\n // hide on enter but don't hide on shift + enter\n if (e.keyCode === 13 && !e.shiftKey) {\n this.toggleTextarea(id, false);\n this.saveValue(id, textNode, textareaNode);\n }\n\n // on esc do not set value back to node\n if (e.keyCode === 27) {\n this.toggleTextarea(id, false);\n }\n };\n\n textareaNode.addEventListener('keydown', keyDownHandler);\n\n this.eventListenersDetachArray.push(() => textareaNode.removeEventListener('keydown', keyDownHandler));\n\n const blurHandler = () => {\n this.showOnlyTextNodes();\n this.saveValue(id, textNode, textareaNode);\n };\n\n textareaNode.addEventListener('blur', blurHandler);\n\n this.eventListenersDetachArray.push(() => textareaNode.removeEventListener('blur', blurHandler));\n\n this.initializeDefault(id, isDefault);\n this.props.forceUpdate();\n };\n\n handleTransform = (e, textNode) => {\n this[textNode].setAttrs({\n width: this[textNode].width() * this[textNode].scaleX(),\n scaleX: this.props.scale,\n });\n };\n\n renderTextareas() {\n return this.all.map((text) => {\n const { id, textareaVisible } = text;\n const textareaNode = `textarea_${id}`;\n\n return (\n <textarea\n key={textareaNode}\n ref={(textarea) => {\n this[textareaNode] = textarea;\n }}\n style={{ display: `${textareaVisible ? 'block' : 'none'}` }}\n />\n );\n });\n }\n\n setInitialProps(props) {\n if (!this.props) {\n this.props = props;\n }\n }\n\n render(props) {\n this.setInitialProps(props);\n\n if (props.stage) {\n const newStage = props.stage;\n\n // setting the handler only once\n if (newStage !== this.stage) {\n const stageClickHandler = (e) => {\n if (e.target !== this.stage) {\n return;\n }\n\n this.showOnlyTextNodes();\n this.props.forceUpdate();\n };\n\n newStage.on('click', stageClickHandler);\n\n this.eventListenersDetachArray.push(() => newStage.off('click', stageClickHandler));\n }\n\n this.stage = newStage;\n }\n\n return this.all.map((text) => {\n const { id, label, x, y, width, textVisible, rotation, transformerVisible } = text;\n\n const textNode = `text_${id}`;\n const transformerNode = `transformer_${id}`;\n let extraProps = {};\n\n if (!props.disabled) {\n extraProps = {\n onClick: (e) => this.handleClick(e, id),\n onTap: (e) => this.handleClick(e, id),\n onDblClick: (e) => this.handleDblClick(e, text),\n onDblTap: (e) => this.handleDblClick(e, text),\n onTransform: (e) => this.handleTransform(e, textNode),\n onTransformEnd: this.props.handleSessionChange,\n onMouseDown: this.handleMouseDown,\n onTouchStart: this.handleMouseDown,\n onMouseUp: this.handleMouseUp,\n onTouchEnd: this.handleMouseUp,\n onDragEnd: this.props.handleSessionChange,\n onMouseEnter: this.props.onMouseOverElement,\n onMouseLeave: this.props.onMouseOutElement,\n };\n }\n\n if (rotation) {\n extraProps.rotation = rotation;\n }\n\n return [\n <Text\n key={id}\n bubbles={true}\n id={id}\n ref={(text) => {\n this[textNode] = text;\n }}\n text={text.text || label}\n name={textNode}\n x={x}\n y={y}\n width={width}\n draggable={!props.disabled}\n visible={textVisible}\n fontSize={16}\n {...extraProps}\n />,\n transformerVisible && (\n <Transformer\n key={`transformer_${id}`}\n ref={(text) => {\n this[transformerNode] = text;\n }}\n selectedShapeName={textNode}\n onMouseDown={this.handleMouseDown}\n onTouchStart={this.handleMouseDown}\n onMouseUp={this.handleMouseUp}\n onTouchEnd={this.handleMouseUp}\n />\n ),\n ];\n });\n }\n}\n"],"file":"drawable-text.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/drawing-response/drawable-text.jsx"],"names":["translator","Translator","generateId","Math","random","toString","substring","Date","getTime","TextDrawable","props","eventListenersDetachArray","forEach","fn","all","forceUpdate","language","id","push","isDefault","label","t","lng","width","x","length","y","textVisible","transformerVisible","textareaVisible","createdAt","type","handleSessionChange","toggleTextSelected","e","current","filter","item","text","toggleTextarea","textNode","getTextNode","textareaNode","getTextareaNode","areaPosition","_lastPos","value","style","position","top","left","padding","height","fontSize","border","margin","overflow","background","outline","resize","lineHeight","fontFamily","transformOrigin","textAlign","align","color","fill","rotation","transform","px","isFirefox","navigator","userAgent","toLowerCase","indexOf","round","scrollHeight","focus","keyDownHandler","keyCode","shiftKey","saveValue","addEventListener","removeEventListener","blurHandler","showOnlyTextNodes","initializeDefault","setAttrs","scaleX","scale","map","textarea","display","setInitialProps","stage","newStage","stageClickHandler","target","on","off","transformerNode","extraProps","disabled","onClick","handleClick","onTap","onDblClick","handleDblClick","onDblTap","onTransform","handleTransform","onTransformEnd","onMouseDown","handleMouseDown","onTouchStart","onMouseUp","handleMouseUp","onTouchEnd","onDragEnd","onMouseEnter","onMouseOverElement","onMouseLeave","onMouseOutElement"],"mappings":";;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAGA;;;;;;AADA,IAAQA,UAAR,GAAuBC,sBAAvB,CAAQD,UAAR;;AAGO,IAAME,UAAU,GAAG,SAAbA,UAAa;AAAA,SAAMC,IAAI,CAACC,MAAL,GAAcC,QAAd,CAAuB,EAAvB,EAA2BC,SAA3B,CAAqC,CAArC,IAA0C,IAAIC,IAAJ,GAAWC,OAAX,GAAqBH,QAArB,CAA8B,EAA9B,CAAhD;AAAA,CAAnB;;;;IAEcI,Y;AAanB,wBAAYC,KAAZ,EAAmB;AAAA;;AAAA;AAAA,mEAKI;AAAA,aAAM,KAAI,CAACC,yBAAL,CAA+BC,OAA/B,CAAuC,UAACC,EAAD;AAAA,eAAQA,EAAE,EAAV;AAAA,OAAvC,CAAN;AAAA,KALJ;AAAA,qDAOV,UAACC,GAAD,EAAS;AAChB,MAAA,KAAI,CAACA,GAAL,GAAWA,GAAX;;AACA,MAAA,KAAI,CAACJ,KAAL,CAAWK,WAAX;AACD,KAVkB;AAAA,8DAYD,UAACC,QAAD,EAAc;AAC9B,UAAMF,GAAG,GAAG,KAAI,CAACA,GAAjB;AACA,UAAMG,EAAE,GAAGf,UAAU,EAArB;AAEAY,MAAAA,GAAG,CAACI,IAAJ,CAAS;AACPD,QAAAA,EAAE,EAAEA,EADG;AAEPE,QAAAA,SAAS,EAAE,IAFJ;AAGPC,QAAAA,KAAK,EAAEpB,UAAU,CAACqB,CAAX,CAAa,+BAAb,EAA8C;AAAEC,UAAAA,GAAG,EAAEN;AAAP,SAA9C,CAHA;AAIPO,QAAAA,KAAK,EAAE,GAJA;AAKPC,QAAAA,CAAC,EAAE,CAACV,GAAG,CAACW,MAAJ,GAAa,CAAd,IAAmB,CAAnB,GAAuB,EALnB;AAMPC,QAAAA,CAAC,EAAE,CAACZ,GAAG,CAACW,MAAJ,GAAa,CAAd,IAAmB,CAAnB,GAAuB,EANnB;AAOPE,QAAAA,WAAW,EAAE,IAPN;AAQPC,QAAAA,kBAAkB,EAAE,IARb;AASPC,QAAAA,eAAe,EAAE,KATV;AAUPC,QAAAA,SAAS,EAAE,IAAIvB,IAAJ,EAVJ;AAWPwB,QAAAA,IAAI,EAAE;AAXC,OAAT;;AAcA,MAAA,KAAI,CAACrB,KAAL,CAAWsB,mBAAX;AACD,KA/BkB;AAAA,8DA0ED;AAAA,aAAM,KAAI,CAACtB,KAAL,CAAWuB,kBAAX,CAA8B,IAA9B,CAAN;AAAA,KA1EC;AAAA,4DA2EH;AAAA,aAAM,KAAI,CAACvB,KAAL,CAAWuB,kBAAX,CAA8B,KAA9B,CAAN;AAAA,KA3EG;AAAA,0DA6EL,UAACC,CAAD,EAAIjB,EAAJ,EAAW;AACvB,UAAMkB,OAAO,GAAG,KAAI,CAACrB,GAAL,CAASsB,MAAT,CAAgB,UAACC,IAAD;AAAA,eAAUA,IAAI,CAACpB,EAAL,KAAYA,EAAtB;AAAA,OAAhB,EAA0C,CAA1C,CAAhB;;AACAkB,MAAAA,OAAO,CAACP,kBAAR,GAA6B,IAA7B;;AACA,MAAA,KAAI,CAAClB,KAAL,CAAWK,WAAX;AACD,KAjFkB;AAAA,6DAmFF,UAACmB,CAAD,EAAII,IAAJ,EAAa;AAC5B,UAAQrB,EAAR,GAA0BqB,IAA1B,CAAQrB,EAAR;AAAA,UAAYE,SAAZ,GAA0BmB,IAA1B,CAAYnB,SAAZ;;AACA,MAAA,KAAI,CAACoB,cAAL,CAAoBtB,EAApB,EAAwB,IAAxB;;AAEA,UAAMuB,QAAQ,GAAG,KAAI,CAAC/B,YAAY,CAACgC,WAAb,CAAyBxB,EAAzB,CAAD,CAArB;;AACA,UAAMyB,YAAY,GAAG,KAAI,CAACjC,YAAY,CAACkC,eAAb,CAA6B1B,EAA7B,CAAD,CAAzB;;AAEA,UAAM2B,YAAY,GAAGJ,QAAQ,CAACK,QAA9B;AAEAH,MAAAA,YAAY,CAACI,KAAb,GAAqB3B,SAAS,GAAG,EAAH,GAAQqB,QAAQ,CAACF,IAAT,EAAtC;AACAI,MAAAA,YAAY,CAACK,KAAb,CAAmBC,QAAnB,GAA8B,UAA9B;AACAN,MAAAA,YAAY,CAACK,KAAb,CAAmBE,GAAnB,GAAyBL,YAAY,CAAClB,CAAb,GAAiB,IAA1C;AACAgB,MAAAA,YAAY,CAACK,KAAb,CAAmBG,IAAnB,GAA0BN,YAAY,CAACpB,CAAb,GAAiB,IAA3C;AACAkB,MAAAA,YAAY,CAACK,KAAb,CAAmBxB,KAAnB,GAA2BiB,QAAQ,CAACjB,KAAT,KAAmBiB,QAAQ,CAACW,OAAT,KAAqB,CAAxC,GAA4C,IAAvE;AACAT,MAAAA,YAAY,CAACK,KAAb,CAAmBK,MAAnB,GAA4BZ,QAAQ,CAACY,MAAT,KAAoBZ,QAAQ,CAACW,OAAT,KAAqB,CAAzC,GAA6C,CAA7C,GAAiD,IAA7E;AACAT,MAAAA,YAAY,CAACK,KAAb,CAAmBM,QAAnB,GAA8Bb,QAAQ,CAACa,QAAT,KAAsB,IAApD;AACAX,MAAAA,YAAY,CAACK,KAAb,CAAmBO,MAAnB,GAA4B,MAA5B;AACAZ,MAAAA,YAAY,CAACK,KAAb,CAAmBI,OAAnB,GAA6B,KAA7B;AACAT,MAAAA,YAAY,CAACK,KAAb,CAAmBQ,MAAnB,GAA4B,KAA5B;AACAb,MAAAA,YAAY,CAACK,KAAb,CAAmBS,QAAnB,GAA8B,QAA9B;AACAd,MAAAA,YAAY,CAACK,KAAb,CAAmBU,UAAnB,GAAgC,MAAhC;AACAf,MAAAA,YAAY,CAACK,KAAb,CAAmBW,OAAnB,GAA6B,MAA7B;AACAhB,MAAAA,YAAY,CAACK,KAAb,CAAmBY,MAAnB,GAA4B,MAA5B;AACAjB,MAAAA,YAAY,CAACK,KAAb,CAAmBa,UAAnB,GAAgCpB,QAAQ,CAACoB,UAAT,EAAhC;AACAlB,MAAAA,YAAY,CAACK,KAAb,CAAmBc,UAAnB,GAAgCrB,QAAQ,CAACqB,UAAT,EAAhC;AACAnB,MAAAA,YAAY,CAACK,KAAb,CAAmBe,eAAnB,GAAqC,UAArC;AACApB,MAAAA,YAAY,CAACK,KAAb,CAAmBgB,SAAnB,GAA+BvB,QAAQ,CAACwB,KAAT,EAA/B;AACAtB,MAAAA,YAAY,CAACK,KAAb,CAAmBkB,KAAnB,GAA2BzB,QAAQ,CAAC0B,IAAT,EAA3B;AAEA,UAAIC,QAAQ,GAAG3B,QAAQ,CAAC2B,QAAT,EAAf;AACA,UAAIC,SAAS,GAAG,EAAhB;;AACA,UAAID,QAAJ,EAAc;AACZC,QAAAA,SAAS,IAAI,aAAaD,QAAb,GAAwB,MAArC;AACD;;AAED,UAAIE,EAAE,GAAG,CAAT;AACA,UAAMC,SAAS,GAAGC,SAAS,CAACC,SAAV,CAAoBC,WAApB,GAAkCC,OAAlC,CAA0C,SAA1C,IAAuD,CAAC,CAA1E;;AAEA,UAAIJ,SAAJ,EAAe;AACbD,QAAAA,EAAE,IAAI,IAAIlE,IAAI,CAACwE,KAAL,CAAWnC,QAAQ,CAACa,QAAT,KAAsB,EAAjC,CAAV;AACD;;AAEDe,MAAAA,SAAS,IAAI,iBAAiBC,EAAjB,GAAsB,KAAnC;AAEA3B,MAAAA,YAAY,CAACK,KAAb,CAAmBqB,SAAnB,GAA+BA,SAA/B;AACA1B,MAAAA,YAAY,CAACK,KAAb,CAAmBK,MAAnB,GAA4B,MAA5B;AACAV,MAAAA,YAAY,CAACK,KAAb,CAAmBK,MAAnB,GAA4BV,YAAY,CAACkC,YAAb,GAA4B,CAA5B,GAAgC,IAA5D;AAEAlC,MAAAA,YAAY,CAACmC,KAAb;;AAEA,UAAMC,cAAc,GAAG,SAAjBA,cAAiB,CAAC5C,CAAD,EAAO;AAC5B;AACA,YAAIA,CAAC,CAAC6C,OAAF,KAAc,EAAd,IAAoB,CAAC7C,CAAC,CAAC8C,QAA3B,EAAqC;AACnC,UAAA,KAAI,CAACzC,cAAL,CAAoBtB,EAApB,EAAwB,KAAxB;;AACA,UAAA,KAAI,CAACgE,SAAL,CAAehE,EAAf,EAAmBuB,QAAnB,EAA6BE,YAA7B;AACD,SAL2B,CAO5B;;;AACA,YAAIR,CAAC,CAAC6C,OAAF,KAAc,EAAlB,EAAsB;AACpB,UAAA,KAAI,CAACxC,cAAL,CAAoBtB,EAApB,EAAwB,KAAxB;AACD;AACF,OAXD;;AAaAyB,MAAAA,YAAY,CAACwC,gBAAb,CAA8B,SAA9B,EAAyCJ,cAAzC;;AAEA,MAAA,KAAI,CAACnE,yBAAL,CAA+BO,IAA/B,CAAoC;AAAA,eAAMwB,YAAY,CAACyC,mBAAb,CAAiC,SAAjC,EAA4CL,cAA5C,CAAN;AAAA,OAApC;;AAEA,UAAMM,WAAW,GAAG,SAAdA,WAAc,GAAM;AACxB,QAAA,KAAI,CAACC,iBAAL;;AACA,QAAA,KAAI,CAACJ,SAAL,CAAehE,EAAf,EAAmBuB,QAAnB,EAA6BE,YAA7B;AACD,OAHD;;AAKAA,MAAAA,YAAY,CAACwC,gBAAb,CAA8B,MAA9B,EAAsCE,WAAtC;;AAEA,MAAA,KAAI,CAACzE,yBAAL,CAA+BO,IAA/B,CAAoC;AAAA,eAAMwB,YAAY,CAACyC,mBAAb,CAAiC,MAAjC,EAAyCC,WAAzC,CAAN;AAAA,OAApC;;AAEA,MAAA,KAAI,CAACE,iBAAL,CAAuBrE,EAAvB,EAA2BE,SAA3B;;AACA,MAAA,KAAI,CAACT,KAAL,CAAWK,WAAX;AACD,KAjKkB;AAAA,8DAmKD,UAACmB,CAAD,EAAIM,QAAJ,EAAiB;AACjC,MAAA,KAAI,CAACA,QAAD,CAAJ,CAAe+C,QAAf,CAAwB;AACtBhE,QAAAA,KAAK,EAAE,KAAI,CAACiB,QAAD,CAAJ,CAAejB,KAAf,KAAyB,KAAI,CAACiB,QAAD,CAAJ,CAAegD,MAAf,EADV;AAEtBA,QAAAA,MAAM,EAAE,KAAI,CAAC9E,KAAL,CAAW+E;AAFG,OAAxB;AAID,KAxKkB;AACjB,SAAK3E,GAAL,GAAYJ,KAAK,IAAIA,KAAK,CAACI,GAAhB,IAAwB,EAAnC;AACA,SAAKH,yBAAL,GAAiC,EAAjC;AACD;;;;WA8BD,6BAAoB;AAClB,WAAKG,GAAL,CAAS4E,GAAT,CAAa,UAACrD,IAAD,EAAU;AACrBA,QAAAA,IAAI,CAACV,WAAL,GAAmB,IAAnB;AACAU,QAAAA,IAAI,CAACT,kBAAL,GAA0B,KAA1B;AACAS,QAAAA,IAAI,CAACR,eAAL,GAAuB,KAAvB;AACD,OAJD;AAKD;;;WAED,wBAAeZ,EAAf,EAAmB6B,KAAnB,EAA0B;AACxB,WAAKhC,GAAL,GAAW,KAAKA,GAAL,CAAS4E,GAAT,CAAa,UAACrD,IAAD,EAAU;AAChC,YAAIA,IAAI,CAACpB,EAAL,KAAYA,EAAhB,EAAoB;AAClB,iDACKoB,IADL;AAEEV,YAAAA,WAAW,EAAE,CAACmB,KAFhB;AAGElB,YAAAA,kBAAkB,EAAE,CAACkB,KAHvB;AAIEjB,YAAAA,eAAe,EAAEiB;AAJnB;AAMD;;AACD,eAAOT,IAAP;AACD,OAVU,CAAX;AAWA,WAAK3B,KAAL,CAAWK,WAAX;AACD;;;WAED,2BAAkBE,EAAlB,EAAsBE,SAAtB,EAAiC;AAC/B,UAAIA,SAAJ,EAAe;AACb,YAAMgB,OAAO,GAAG,KAAKrB,GAAL,CAASsB,MAAT,CAAgB,UAACC,IAAD;AAAA,iBAAUA,IAAI,CAACpB,EAAL,KAAYA,EAAtB;AAAA,SAAhB,EAA0C,CAA1C,CAAhB;AACAkB,QAAAA,OAAO,CAAChB,SAAR,GAAoB,KAApB;AACD;AACF;;;WAED,mBAAUF,EAAV,EAAcuB,QAAd,EAAwBE,YAAxB,EAAsC;AACpC,UAAIA,YAAY,CAACI,KAAjB,EAAwB;AACtBN,QAAAA,QAAQ,CAACF,IAAT,CAAcI,YAAY,CAACI,KAA3B;AACD,OAFD,MAEO;AACL,aAAKhC,GAAL,GAAW,KAAKA,GAAL,CAASsB,MAAT,CAAgB,UAACE,IAAD;AAAA,iBAAUA,IAAI,CAACrB,EAAL,KAAYA,EAAtB;AAAA,SAAhB,CAAX;AACA,aAAKP,KAAL,CAAWK,WAAX;AACD;;AAED,WAAKL,KAAL,CAAWsB,mBAAX;AACD;;;WAkGD,2BAAkB;AAAA;;AAChB,aAAO,KAAKlB,GAAL,CAAS4E,GAAT,CAAa,UAACpD,IAAD,EAAU;AAC5B,YAAQrB,EAAR,GAAgCqB,IAAhC,CAAQrB,EAAR;AAAA,YAAYY,eAAZ,GAAgCS,IAAhC,CAAYT,eAAZ;AACA,YAAMa,YAAY,sBAAezB,EAAf,CAAlB;AAEA,4BACE;AACE,UAAA,GAAG,EAAEyB,YADP;AAEE,UAAA,GAAG,EAAE,aAACiD,QAAD,EAAc;AACjB,YAAA,MAAI,CAACjD,YAAD,CAAJ,GAAqBiD,QAArB;AACD,WAJH;AAKE,UAAA,KAAK,EAAE;AAAEC,YAAAA,OAAO,YAAK/D,eAAe,GAAG,OAAH,GAAa,MAAjC;AAAT;AALT,UADF;AASD,OAbM,CAAP;AAcD;;;WAED,yBAAgBnB,KAAhB,EAAuB;AACrB,UAAI,CAAC,KAAKA,KAAV,EAAiB;AACf,aAAKA,KAAL,GAAaA,KAAb;AACD;AACF;;;WAED,gBAAOA,KAAP,EAAc;AAAA;;AACZ,WAAKmF,eAAL,CAAqBnF,KAArB;;AAEA,UAAIA,KAAK,CAACoF,KAAV,EAAiB;AACf,YAAMC,QAAQ,GAAGrF,KAAK,CAACoF,KAAvB,CADe,CAGf;;AACA,YAAIC,QAAQ,KAAK,KAAKD,KAAtB,EAA6B;AAC3B,cAAME,iBAAiB,GAAG,SAApBA,iBAAoB,CAAC9D,CAAD,EAAO;AAC/B,gBAAIA,CAAC,CAAC+D,MAAF,KAAa,MAAI,CAACH,KAAtB,EAA6B;AAC3B;AACD;;AAED,YAAA,MAAI,CAACT,iBAAL;;AACA,YAAA,MAAI,CAAC3E,KAAL,CAAWK,WAAX;AACD,WAPD;;AASAgF,UAAAA,QAAQ,CAACG,EAAT,CAAY,OAAZ,EAAqBF,iBAArB;AAEA,eAAKrF,yBAAL,CAA+BO,IAA/B,CAAoC;AAAA,mBAAM6E,QAAQ,CAACI,GAAT,CAAa,OAAb,EAAsBH,iBAAtB,CAAN;AAAA,WAApC;AACD;;AAED,aAAKF,KAAL,GAAaC,QAAb;AACD;;AAED,aAAO,KAAKjF,GAAL,CAAS4E,GAAT,CAAa,UAACpD,IAAD,EAAU;AAC5B,YAAQrB,EAAR,GAA8EqB,IAA9E,CAAQrB,EAAR;AAAA,YAAYG,KAAZ,GAA8EkB,IAA9E,CAAYlB,KAAZ;AAAA,YAAmBI,CAAnB,GAA8Ec,IAA9E,CAAmBd,CAAnB;AAAA,YAAsBE,CAAtB,GAA8EY,IAA9E,CAAsBZ,CAAtB;AAAA,YAAyBH,KAAzB,GAA8Ee,IAA9E,CAAyBf,KAAzB;AAAA,YAAgCI,WAAhC,GAA8EW,IAA9E,CAAgCX,WAAhC;AAAA,YAA6CwC,QAA7C,GAA8E7B,IAA9E,CAA6C6B,QAA7C;AAAA,YAAuDvC,kBAAvD,GAA8EU,IAA9E,CAAuDV,kBAAvD;AAEA,YAAMY,QAAQ,kBAAWvB,EAAX,CAAd;AACA,YAAMmF,eAAe,yBAAkBnF,EAAlB,CAArB;AACA,YAAIoF,UAAU,GAAG,EAAjB;;AAEA,YAAI,CAAC3F,KAAK,CAAC4F,QAAX,EAAqB;AACnBD,UAAAA,UAAU,GAAG;AACXE,YAAAA,OAAO,EAAE,iBAACrE,CAAD;AAAA,qBAAO,MAAI,CAACsE,WAAL,CAAiBtE,CAAjB,EAAoBjB,EAApB,CAAP;AAAA,aADE;AAEXwF,YAAAA,KAAK,EAAE,eAACvE,CAAD;AAAA,qBAAO,MAAI,CAACsE,WAAL,CAAiBtE,CAAjB,EAAoBjB,EAApB,CAAP;AAAA,aAFI;AAGXyF,YAAAA,UAAU,EAAE,oBAACxE,CAAD;AAAA,qBAAO,MAAI,CAACyE,cAAL,CAAoBzE,CAApB,EAAuBI,IAAvB,CAAP;AAAA,aAHD;AAIXsE,YAAAA,QAAQ,EAAE,kBAAC1E,CAAD;AAAA,qBAAO,MAAI,CAACyE,cAAL,CAAoBzE,CAApB,EAAuBI,IAAvB,CAAP;AAAA,aAJC;AAKXuE,YAAAA,WAAW,EAAE,qBAAC3E,CAAD;AAAA,qBAAO,MAAI,CAAC4E,eAAL,CAAqB5E,CAArB,EAAwBM,QAAxB,CAAP;AAAA,aALF;AAMXuE,YAAAA,cAAc,EAAE,MAAI,CAACrG,KAAL,CAAWsB,mBANhB;AAOXgF,YAAAA,WAAW,EAAE,MAAI,CAACC,eAPP;AAQXC,YAAAA,YAAY,EAAE,MAAI,CAACD,eARR;AASXE,YAAAA,SAAS,EAAE,MAAI,CAACC,aATL;AAUXC,YAAAA,UAAU,EAAE,MAAI,CAACD,aAVN;AAWXE,YAAAA,SAAS,EAAE,MAAI,CAAC5G,KAAL,CAAWsB,mBAXX;AAYXuF,YAAAA,YAAY,EAAE,MAAI,CAAC7G,KAAL,CAAW8G,kBAZd;AAaXC,YAAAA,YAAY,EAAE,MAAI,CAAC/G,KAAL,CAAWgH;AAbd,WAAb;AAeD;;AAED,YAAIvD,QAAJ,EAAc;AACZkC,UAAAA,UAAU,CAAClC,QAAX,GAAsBA,QAAtB;AACD;;AAED,eAAO,cACL,gCAAC,gBAAD;AACE,UAAA,GAAG,EAAElD,EADP;AAEE,UAAA,OAAO,EAAE,IAFX;AAGE,UAAA,EAAE,EAAEA,EAHN;AAIE,UAAA,GAAG,EAAE,aAACqB,IAAD,EAAU;AACb,YAAA,MAAI,CAACE,QAAD,CAAJ,GAAiBF,IAAjB;AACD,WANH;AAOE,UAAA,IAAI,EAAEA,IAAI,CAACA,IAAL,IAAalB,KAPrB;AAQE,UAAA,IAAI,EAAEoB,QARR;AASE,UAAA,CAAC,EAAEhB,CATL;AAUE,UAAA,CAAC,EAAEE,CAVL;AAWE,UAAA,KAAK,EAAEH,KAXT;AAYE,UAAA,SAAS,EAAE,CAACb,KAAK,CAAC4F,QAZpB;AAaE,UAAA,OAAO,EAAE3E,WAbX;AAcE,UAAA,QAAQ,EAAE;AAdZ,WAeM0E,UAfN,EADK,EAkBLzE,kBAAkB,iBAChB,gCAAC,+BAAD;AACE,UAAA,GAAG,wBAAiBX,EAAjB,CADL;AAEE,UAAA,GAAG,EAAE,aAACqB,IAAD,EAAU;AACb,YAAA,MAAI,CAAC8D,eAAD,CAAJ,GAAwB9D,IAAxB;AACD,WAJH;AAKE,UAAA,iBAAiB,EAAEE,QALrB;AAME,UAAA,WAAW,EAAE,MAAI,CAACyE,eANpB;AAOE,UAAA,YAAY,EAAE,MAAI,CAACA,eAPrB;AAQE,UAAA,SAAS,EAAE,MAAI,CAACG,aARlB;AASE,UAAA,UAAU,EAAE,MAAI,CAACA;AATnB,UAnBG,CAAP;AAgCD,OA7DM,CAAP;AA8DD;;;WApSD,yBAAuBnG,EAAvB,EAA2B;AACzB,gCAAmBA,EAAnB;AACD;;;WAED,qBAAmBA,EAAnB,EAAuB;AACrB,4BAAeA,EAAf;AACD;;;WAED,4BAA0BA,EAA1B,EAA8B;AAC5B,mCAAsBA,EAAtB;AACD","sourcesContent":["import React from 'react';\nimport { Text } from 'react-konva';\nimport Translator from '@pie-lib/translator';\n\nconst { translator } = Translator;\nimport Transformer from './drawable-transformer';\n\nexport const generateId = () => Math.random().toString(36).substring(2) + new Date().getTime().toString(36);\n\nexport default class TextDrawable {\n static getTextareaNode(id) {\n return `textarea_${id}`;\n }\n\n static getTextNode(id) {\n return `text_${id}`;\n }\n\n static getTransformerNode(id) {\n return `transformer_${id}`;\n }\n\n constructor(props) {\n this.all = (props && props.all) || [];\n this.eventListenersDetachArray = [];\n }\n\n removeEventListeners = () => this.eventListenersDetachArray.forEach((fn) => fn());\n\n setAll = (all) => {\n this.all = all;\n this.props.forceUpdate();\n };\n\n addNewTextEntry = (language) => {\n const all = this.all;\n const id = generateId();\n\n all.push({\n id: id,\n isDefault: true,\n label: translator.t('drawingResponse.onDoubleClick', { lng: language }),\n width: 200,\n x: (all.length + 1) * 5 + 50,\n y: (all.length + 1) * 5 + 50,\n textVisible: true,\n transformerVisible: true,\n textareaVisible: false,\n createdAt: new Date(),\n type: 'text-entry',\n });\n\n this.props.handleSessionChange();\n };\n\n showOnlyTextNodes() {\n this.all.map((item) => {\n item.textVisible = true;\n item.transformerVisible = false;\n item.textareaVisible = false;\n });\n }\n\n toggleTextarea(id, value) {\n this.all = this.all.map((item) => {\n if (item.id === id) {\n return {\n ...item,\n textVisible: !value,\n transformerVisible: !value,\n textareaVisible: value,\n };\n }\n return item;\n });\n this.props.forceUpdate();\n }\n\n initializeDefault(id, isDefault) {\n if (isDefault) {\n const current = this.all.filter((item) => item.id === id)[0];\n current.isDefault = false;\n }\n }\n\n saveValue(id, textNode, textareaNode) {\n if (textareaNode.value) {\n textNode.text(textareaNode.value);\n } else {\n this.all = this.all.filter((text) => text.id !== id);\n this.props.forceUpdate();\n }\n\n this.props.handleSessionChange();\n }\n\n handleMouseDown = () => this.props.toggleTextSelected(true);\n handleMouseUp = () => this.props.toggleTextSelected(false);\n\n handleClick = (e, id) => {\n const current = this.all.filter((item) => item.id === id)[0];\n current.transformerVisible = true;\n this.props.forceUpdate();\n };\n\n handleDblClick = (e, text) => {\n const { id, isDefault } = text;\n this.toggleTextarea(id, true);\n\n const textNode = this[TextDrawable.getTextNode(id)];\n const textareaNode = this[TextDrawable.getTextareaNode(id)];\n\n const areaPosition = textNode._lastPos;\n\n textareaNode.value = isDefault ? '' : textNode.text();\n textareaNode.style.position = 'absolute';\n textareaNode.style.top = areaPosition.y + 'px';\n textareaNode.style.left = areaPosition.x + 'px';\n textareaNode.style.width = textNode.width() - textNode.padding() * 2 + 'px';\n textareaNode.style.height = textNode.height() - textNode.padding() * 2 + 5 + 'px';\n textareaNode.style.fontSize = textNode.fontSize() + 'px';\n textareaNode.style.border = 'none';\n textareaNode.style.padding = '0px';\n textareaNode.style.margin = '0px';\n textareaNode.style.overflow = 'hidden';\n textareaNode.style.background = 'none';\n textareaNode.style.outline = 'none';\n textareaNode.style.resize = 'none';\n textareaNode.style.lineHeight = textNode.lineHeight();\n textareaNode.style.fontFamily = textNode.fontFamily();\n textareaNode.style.transformOrigin = 'left top';\n textareaNode.style.textAlign = textNode.align();\n textareaNode.style.color = textNode.fill();\n\n let rotation = textNode.rotation();\n let transform = '';\n if (rotation) {\n transform += 'rotateZ(' + rotation + 'deg)';\n }\n\n let px = 0;\n const isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n\n if (isFirefox) {\n px += 2 + Math.round(textNode.fontSize() / 20);\n }\n\n transform += 'translateY(-' + px + 'px)';\n\n textareaNode.style.transform = transform;\n textareaNode.style.height = 'auto';\n textareaNode.style.height = textareaNode.scrollHeight + 3 + 'px';\n\n textareaNode.focus();\n\n const keyDownHandler = (e) => {\n // hide on enter but don't hide on shift + enter\n if (e.keyCode === 13 && !e.shiftKey) {\n this.toggleTextarea(id, false);\n this.saveValue(id, textNode, textareaNode);\n }\n\n // on esc do not set value back to node\n if (e.keyCode === 27) {\n this.toggleTextarea(id, false);\n }\n };\n\n textareaNode.addEventListener('keydown', keyDownHandler);\n\n this.eventListenersDetachArray.push(() => textareaNode.removeEventListener('keydown', keyDownHandler));\n\n const blurHandler = () => {\n this.showOnlyTextNodes();\n this.saveValue(id, textNode, textareaNode);\n };\n\n textareaNode.addEventListener('blur', blurHandler);\n\n this.eventListenersDetachArray.push(() => textareaNode.removeEventListener('blur', blurHandler));\n\n this.initializeDefault(id, isDefault);\n this.props.forceUpdate();\n };\n\n handleTransform = (e, textNode) => {\n this[textNode].setAttrs({\n width: this[textNode].width() * this[textNode].scaleX(),\n scaleX: this.props.scale,\n });\n };\n\n renderTextareas() {\n return this.all.map((text) => {\n const { id, textareaVisible } = text;\n const textareaNode = `textarea_${id}`;\n\n return (\n <textarea\n key={textareaNode}\n ref={(textarea) => {\n this[textareaNode] = textarea;\n }}\n style={{ display: `${textareaVisible ? 'block' : 'none'}` }}\n />\n );\n });\n }\n\n setInitialProps(props) {\n if (!this.props) {\n this.props = props;\n }\n }\n\n render(props) {\n this.setInitialProps(props);\n\n if (props.stage) {\n const newStage = props.stage;\n\n // setting the handler only once\n if (newStage !== this.stage) {\n const stageClickHandler = (e) => {\n if (e.target !== this.stage) {\n return;\n }\n\n this.showOnlyTextNodes();\n this.props.forceUpdate();\n };\n\n newStage.on('click', stageClickHandler);\n\n this.eventListenersDetachArray.push(() => newStage.off('click', stageClickHandler));\n }\n\n this.stage = newStage;\n }\n\n return this.all.map((text) => {\n const { id, label, x, y, width, textVisible, rotation, transformerVisible } = text;\n\n const textNode = `text_${id}`;\n const transformerNode = `transformer_${id}`;\n let extraProps = {};\n\n if (!props.disabled) {\n extraProps = {\n onClick: (e) => this.handleClick(e, id),\n onTap: (e) => this.handleClick(e, id),\n onDblClick: (e) => this.handleDblClick(e, text),\n onDblTap: (e) => this.handleDblClick(e, text),\n onTransform: (e) => this.handleTransform(e, textNode),\n onTransformEnd: this.props.handleSessionChange,\n onMouseDown: this.handleMouseDown,\n onTouchStart: this.handleMouseDown,\n onMouseUp: this.handleMouseUp,\n onTouchEnd: this.handleMouseUp,\n onDragEnd: this.props.handleSessionChange,\n onMouseEnter: this.props.onMouseOverElement,\n onMouseLeave: this.props.onMouseOutElement,\n };\n }\n\n if (rotation) {\n extraProps.rotation = rotation;\n }\n\n return [\n <Text\n key={id}\n bubbles={true}\n id={id}\n ref={(text) => {\n this[textNode] = text;\n }}\n text={text.text || label}\n name={textNode}\n x={x}\n y={y}\n width={width}\n draggable={!props.disabled}\n visible={textVisible}\n fontSize={16}\n {...extraProps}\n />,\n transformerVisible && (\n <Transformer\n key={`transformer_${id}`}\n ref={(text) => {\n this[transformerNode] = text;\n }}\n selectedShapeName={textNode}\n onMouseDown={this.handleMouseDown}\n onTouchStart={this.handleMouseDown}\n onMouseUp={this.handleMouseUp}\n onTouchEnd={this.handleMouseUp}\n />\n ),\n ];\n });\n }\n}\n"],"file":"drawable-text.js"}
|
|
@@ -59,8 +59,8 @@ var DrawingResponseComponent = /*#__PURE__*/function (_React$Component) {
|
|
|
59
59
|
prompt = _this$props$model.prompt,
|
|
60
60
|
mode = _this$props$model.mode,
|
|
61
61
|
teacherInstructions = _this$props$model.teacherInstructions,
|
|
62
|
-
|
|
63
|
-
|
|
62
|
+
backgroundImageEnabled = _this$props$model.backgroundImageEnabled,
|
|
63
|
+
language = _this$props$model.language,
|
|
64
64
|
session = _this$props.session,
|
|
65
65
|
onSessionChange = _this$props.onSessionChange,
|
|
66
66
|
classes = _this$props.classes;
|
|
@@ -90,7 +90,8 @@ var DrawingResponseComponent = /*#__PURE__*/function (_React$Component) {
|
|
|
90
90
|
imageDimensions: imageDimensions,
|
|
91
91
|
imageUrl: imageUrl,
|
|
92
92
|
backgroundImageEnabled: backgroundImageEnabled,
|
|
93
|
-
disabled: disabled
|
|
93
|
+
disabled: disabled,
|
|
94
|
+
language: language
|
|
94
95
|
}));
|
|
95
96
|
}
|
|
96
97
|
}], [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/drawing-response/index.jsx"],"names":["DrawingResponseComponent","props","state","showCorrect","hasError","model","disabled","imageDimensions","imageUrl","prompt","mode","teacherInstructions","backgroundImageEnabled","session","onSessionChange","classes","errorMessage","isEvaluateMode","main","collapsible","hidden","visible","error","message","React","Component","propTypes","PropTypes","object","isRequired","func","styles","theme","color","text","backgroundColor","background","marginBottom","spacing","unit"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA;;;;;;IAEMA,wB;;;;;AACJ,oCAAYC,KAAZ,EAAmB;AAAA;;AAAA;AACjB,8BAAMA,KAAN;AACA,UAAKC,KAAL,GAAa;AACXC,MAAAA,WAAW,EAAE,KADF;AAEXC,MAAAA,QAAQ,EAAE;AAFC,KAAb;AAFiB;AAMlB;;;;WAMD,kBAAS;AACP,
|
|
1
|
+
{"version":3,"sources":["../../src/drawing-response/index.jsx"],"names":["DrawingResponseComponent","props","state","showCorrect","hasError","model","disabled","imageDimensions","imageUrl","prompt","mode","teacherInstructions","backgroundImageEnabled","language","session","onSessionChange","classes","errorMessage","isEvaluateMode","main","collapsible","hidden","visible","error","message","React","Component","propTypes","PropTypes","object","isRequired","func","styles","theme","color","text","backgroundColor","background","marginBottom","spacing","unit"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { color, Collapsible, PreviewPrompt } from '@pie-lib/render-ui';\nimport { withStyles } from '@material-ui/core/styles';\n\nimport Container from './container';\n\nclass DrawingResponseComponent extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n showCorrect: false,\n hasError: false,\n };\n }\n\n static getDerivedStateFromError(error) {\n return { hasError: true, errorMessage: error.message };\n }\n\n render() {\n const {\n model: {\n disabled,\n imageDimensions,\n imageUrl,\n prompt,\n mode,\n teacherInstructions,\n backgroundImageEnabled,\n language\n },\n session,\n onSessionChange,\n classes,\n } = this.props;\n const { hasError, errorMessage } = this.state;\n const isEvaluateMode = mode === 'evaluate';\n\n return hasError ? (\n <div className={classes.main}>An error occured: {errorMessage}</div>\n ) : (\n <div className={classes.main}>\n {teacherInstructions && (\n <Collapsible\n className={classes.collapsible}\n labels={{\n hidden: 'Show Teacher Instructions',\n visible: 'Hide Teacher Instructions',\n }}\n >\n <PreviewPrompt prompt={teacherInstructions} />\n </Collapsible>\n )}\n\n {prompt && <PreviewPrompt tagName=\"span\" prompt={prompt} />}\n\n <Container\n session={session}\n onSessionChange={onSessionChange}\n isEvaluateMode={isEvaluateMode}\n imageDimensions={imageDimensions}\n imageUrl={imageUrl}\n backgroundImageEnabled={backgroundImageEnabled}\n disabled={disabled}\n language={language}\n />\n </div>\n );\n }\n}\n\nDrawingResponseComponent.propTypes = {\n classes: PropTypes.object,\n model: PropTypes.object.isRequired,\n onSessionChange: PropTypes.func.isRequired,\n session: PropTypes.object.isRequired,\n};\n\nconst styles = (theme) => ({\n main: {\n color: color.text(),\n backgroundColor: color.background(),\n },\n collapsible: {\n marginBottom: theme.spacing.unit * 2,\n },\n});\n\nexport default withStyles(styles)(DrawingResponseComponent);\n"],"file":"index.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/drawing-response",
|
|
3
|
-
"version": "6.4.1-next.
|
|
3
|
+
"version": "6.4.1-next.62+339ca667a",
|
|
4
4
|
"description": "",
|
|
5
5
|
"repository": "pie-framework/pie-elements",
|
|
6
6
|
"publishConfig": {
|
|
@@ -11,8 +11,9 @@
|
|
|
11
11
|
"@mdi/js": "^3.6.95",
|
|
12
12
|
"@mdi/react": "^1.1.1",
|
|
13
13
|
"@pie-framework/pie-player-events": "^0.1.0",
|
|
14
|
-
"@pie-lib/math-rendering": "^2.5.
|
|
15
|
-
"@pie-lib/render-ui": "^4.14.
|
|
14
|
+
"@pie-lib/math-rendering": "^2.5.15",
|
|
15
|
+
"@pie-lib/render-ui": "^4.14.26",
|
|
16
|
+
"@pie-lib/translator": "^2.0.0",
|
|
16
17
|
"classnames": "^2.2.6",
|
|
17
18
|
"enzyme-to-json": "^3.3.5",
|
|
18
19
|
"konva": "^3.4.1",
|
|
@@ -24,7 +25,7 @@
|
|
|
24
25
|
},
|
|
25
26
|
"author": "pie framework developers",
|
|
26
27
|
"license": "ISC",
|
|
27
|
-
"gitHead": "
|
|
28
|
+
"gitHead": "339ca667a18a4667ec4dbbe3206b381dde933fe9",
|
|
28
29
|
"scripts": {
|
|
29
30
|
"postpublish": "../../scripts/postpublish"
|
|
30
31
|
},
|
|
@@ -7,47 +7,47 @@ exports[`Container snapshot renders 1`] = `
|
|
|
7
7
|
fillList={
|
|
8
8
|
Array [
|
|
9
9
|
Object {
|
|
10
|
-
"label": "
|
|
10
|
+
"label": "No fill",
|
|
11
11
|
"value": "transparent",
|
|
12
12
|
},
|
|
13
13
|
Object {
|
|
14
|
-
"label": "
|
|
14
|
+
"label": "Light blue",
|
|
15
15
|
"value": "lightblue",
|
|
16
16
|
},
|
|
17
17
|
Object {
|
|
18
|
-
"label": "
|
|
18
|
+
"label": "Light yellow",
|
|
19
19
|
"value": "lightyellow",
|
|
20
20
|
},
|
|
21
21
|
Object {
|
|
22
|
-
"label": "
|
|
22
|
+
"label": "Red",
|
|
23
23
|
"value": "red",
|
|
24
24
|
},
|
|
25
25
|
Object {
|
|
26
|
-
"label": "
|
|
26
|
+
"label": "Orange",
|
|
27
27
|
"value": "orange",
|
|
28
28
|
},
|
|
29
29
|
Object {
|
|
30
|
-
"label": "
|
|
30
|
+
"label": "Yellow",
|
|
31
31
|
"value": "yellow",
|
|
32
32
|
},
|
|
33
33
|
Object {
|
|
34
|
-
"label": "
|
|
34
|
+
"label": "Violet",
|
|
35
35
|
"value": "violet",
|
|
36
36
|
},
|
|
37
37
|
Object {
|
|
38
|
-
"label": "
|
|
38
|
+
"label": "Blue",
|
|
39
39
|
"value": "blue",
|
|
40
40
|
},
|
|
41
41
|
Object {
|
|
42
|
-
"label": "
|
|
42
|
+
"label": "Green",
|
|
43
43
|
"value": "green",
|
|
44
44
|
},
|
|
45
45
|
Object {
|
|
46
|
-
"label": "
|
|
46
|
+
"label": "White",
|
|
47
47
|
"value": "white",
|
|
48
48
|
},
|
|
49
49
|
Object {
|
|
50
|
-
"label": "
|
|
50
|
+
"label": "Black",
|
|
51
51
|
"value": "black",
|
|
52
52
|
},
|
|
53
53
|
]
|
|
@@ -59,72 +59,72 @@ exports[`Container snapshot renders 1`] = `
|
|
|
59
59
|
outlineList={
|
|
60
60
|
Array [
|
|
61
61
|
Object {
|
|
62
|
-
"label": "
|
|
62
|
+
"label": "Red",
|
|
63
63
|
"value": "red",
|
|
64
64
|
},
|
|
65
65
|
Object {
|
|
66
|
-
"label": "
|
|
66
|
+
"label": "Orange",
|
|
67
67
|
"value": "orange",
|
|
68
68
|
},
|
|
69
69
|
Object {
|
|
70
|
-
"label": "
|
|
70
|
+
"label": "Yellow",
|
|
71
71
|
"value": "yellow",
|
|
72
72
|
},
|
|
73
73
|
Object {
|
|
74
|
-
"label": "
|
|
74
|
+
"label": "Violet",
|
|
75
75
|
"value": "violet",
|
|
76
76
|
},
|
|
77
77
|
Object {
|
|
78
|
-
"label": "
|
|
78
|
+
"label": "Blue",
|
|
79
79
|
"value": "blue",
|
|
80
80
|
},
|
|
81
81
|
Object {
|
|
82
|
-
"label": "
|
|
82
|
+
"label": "Green",
|
|
83
83
|
"value": "green",
|
|
84
84
|
},
|
|
85
85
|
Object {
|
|
86
|
-
"label": "
|
|
86
|
+
"label": "White",
|
|
87
87
|
"value": "white",
|
|
88
88
|
},
|
|
89
89
|
Object {
|
|
90
|
-
"label": "
|
|
90
|
+
"label": "Black",
|
|
91
91
|
"value": "black",
|
|
92
92
|
},
|
|
93
93
|
]
|
|
94
94
|
}
|
|
95
|
-
paintColor="
|
|
95
|
+
paintColor="Red"
|
|
96
96
|
paintList={
|
|
97
97
|
Array [
|
|
98
98
|
Object {
|
|
99
|
-
"label": "
|
|
99
|
+
"label": "Red",
|
|
100
100
|
"value": "red",
|
|
101
101
|
},
|
|
102
102
|
Object {
|
|
103
|
-
"label": "
|
|
103
|
+
"label": "Orange",
|
|
104
104
|
"value": "orange",
|
|
105
105
|
},
|
|
106
106
|
Object {
|
|
107
|
-
"label": "
|
|
107
|
+
"label": "Yellow",
|
|
108
108
|
"value": "yellow",
|
|
109
109
|
},
|
|
110
110
|
Object {
|
|
111
|
-
"label": "
|
|
111
|
+
"label": "Violet",
|
|
112
112
|
"value": "violet",
|
|
113
113
|
},
|
|
114
114
|
Object {
|
|
115
|
-
"label": "
|
|
115
|
+
"label": "Blue",
|
|
116
116
|
"value": "blue",
|
|
117
117
|
},
|
|
118
118
|
Object {
|
|
119
|
-
"label": "
|
|
119
|
+
"label": "Green",
|
|
120
120
|
"value": "green",
|
|
121
121
|
},
|
|
122
122
|
Object {
|
|
123
|
-
"label": "
|
|
123
|
+
"label": "White",
|
|
124
124
|
"value": "white",
|
|
125
125
|
},
|
|
126
126
|
Object {
|
|
127
|
-
"label": "
|
|
127
|
+
"label": "Black",
|
|
128
128
|
"value": "black",
|
|
129
129
|
},
|
|
130
130
|
]
|
|
@@ -244,7 +244,7 @@ exports[`Container snapshot renders 1`] = `
|
|
|
244
244
|
imageUrl="url"
|
|
245
245
|
onSessionChange={[MockFunction]}
|
|
246
246
|
outlineColor="black"
|
|
247
|
-
paintColor="
|
|
247
|
+
paintColor="Red"
|
|
248
248
|
scale={1}
|
|
249
249
|
session={Object {}}
|
|
250
250
|
toolActive={
|
|
@@ -377,7 +377,7 @@ exports[`Container snapshot renders disabled 1`] = `
|
|
|
377
377
|
imageUrl="url"
|
|
378
378
|
onSessionChange={[MockFunction]}
|
|
379
379
|
outlineColor="black"
|
|
380
|
-
paintColor="
|
|
380
|
+
paintColor="Red"
|
|
381
381
|
scale={1}
|
|
382
382
|
session={Object {}}
|
|
383
383
|
toolActive={
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React, { Component } from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
import { withStyles } from '@material-ui/core/styles';
|
|
4
|
+
import Translator from '@pie-lib/translator';
|
|
4
5
|
|
|
5
6
|
import constants from './constants';
|
|
6
7
|
import Button from './button';
|
|
@@ -10,6 +11,7 @@ import DrawableText from './drawable-text';
|
|
|
10
11
|
import Icon from './icon';
|
|
11
12
|
|
|
12
13
|
const { tools: TOOLS } = constants;
|
|
14
|
+
const { translator } = Translator;
|
|
13
15
|
|
|
14
16
|
const ROGVAIV = ['red', 'orange', 'yellow', 'violet', 'blue', 'green', 'white', 'black'].map((c) => ({
|
|
15
17
|
value: c,
|
|
@@ -25,6 +27,7 @@ export class Container extends Component {
|
|
|
25
27
|
imageDimensions: PropTypes.object.isRequired,
|
|
26
28
|
imageUrl: PropTypes.string.isRequired,
|
|
27
29
|
backgroundImageEnabled: PropTypes.bool.isRequired,
|
|
30
|
+
language: PropTypes.string,
|
|
28
31
|
};
|
|
29
32
|
|
|
30
33
|
constructor(props) {
|
|
@@ -53,6 +56,30 @@ export class Container extends Component {
|
|
|
53
56
|
};
|
|
54
57
|
}
|
|
55
58
|
|
|
59
|
+
setTranslatedState(language) {
|
|
60
|
+
const translatedROGVAIV = ROGVAIV.map((c) => ({
|
|
61
|
+
value: c.value,
|
|
62
|
+
label: translator.t(`drawingResponse.${c.label}`, { lng: language }),
|
|
63
|
+
}));
|
|
64
|
+
|
|
65
|
+
this.setState({
|
|
66
|
+
fillColorList: [
|
|
67
|
+
{ value: 'transparent', label: translator.t('drawingResponse.noFill', { lng: language }), },
|
|
68
|
+
{ value: 'lightblue', label: translator.t('drawingResponse.lightblue', { lng: language }), },
|
|
69
|
+
{ value: 'lightyellow', label: translator.t('drawingResponse.lightyellow', { lng: language }), },
|
|
70
|
+
...translatedROGVAIV,
|
|
71
|
+
],
|
|
72
|
+
paintColor: translator.t('drawingResponse.red', { lng: language }),
|
|
73
|
+
outlineColorList: translatedROGVAIV,
|
|
74
|
+
paintColorList: translatedROGVAIV,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
UNSAFE_componentWillReceiveProps(props) {
|
|
79
|
+
const { language } = props;
|
|
80
|
+
this.setTranslatedState(language);
|
|
81
|
+
}
|
|
82
|
+
|
|
56
83
|
setDimensions() {
|
|
57
84
|
const checkExist = setInterval(() => {
|
|
58
85
|
try {
|
|
@@ -75,6 +102,9 @@ export class Container extends Component {
|
|
|
75
102
|
}
|
|
76
103
|
|
|
77
104
|
componentDidMount() {
|
|
105
|
+
const { language } = this.props;
|
|
106
|
+
this.setTranslatedState(language);
|
|
107
|
+
|
|
78
108
|
this.setDimensions();
|
|
79
109
|
|
|
80
110
|
this.observer = new MutationObserver((mutations) => {
|
|
@@ -114,13 +144,14 @@ export class Container extends Component {
|
|
|
114
144
|
handleMakeToolActive(tool) {
|
|
115
145
|
const { TextEntry } = this.state;
|
|
116
146
|
const { type } = tool;
|
|
147
|
+
const { language } = this.props;
|
|
117
148
|
|
|
118
149
|
if (type !== 'Text') {
|
|
119
150
|
this.setState({
|
|
120
151
|
toolActive: tool,
|
|
121
152
|
});
|
|
122
153
|
} else {
|
|
123
|
-
TextEntry.addNewTextEntry();
|
|
154
|
+
TextEntry.addNewTextEntry(language);
|
|
124
155
|
// Force update
|
|
125
156
|
this.setState({
|
|
126
157
|
updatedAt: new Date(),
|
|
@@ -147,7 +178,7 @@ export class Container extends Component {
|
|
|
147
178
|
}
|
|
148
179
|
|
|
149
180
|
render() {
|
|
150
|
-
const { classes, disabled, imageUrl, imageDimensions, onSessionChange, session, backgroundImageEnabled } =
|
|
181
|
+
const { classes, disabled, imageUrl, imageDimensions, onSessionChange, session, backgroundImageEnabled, language } =
|
|
151
182
|
this.props;
|
|
152
183
|
const {
|
|
153
184
|
drawableDimensions,
|
|
@@ -176,6 +207,7 @@ export class Container extends Component {
|
|
|
176
207
|
onFillColorChange={(color) => this.handleColorChange('fill', color)}
|
|
177
208
|
onOutlineColorChange={(color) => this.handleColorChange('outline', color)}
|
|
178
209
|
onPaintColorChange={(color) => this.handleColorChange('paint', color)}
|
|
210
|
+
language={language}
|
|
179
211
|
/>
|
|
180
212
|
)}
|
|
181
213
|
|
|
@@ -190,7 +222,7 @@ export class Container extends Component {
|
|
|
190
222
|
key={type}
|
|
191
223
|
disabled={this.checkIfToolIsDisabled(type)}
|
|
192
224
|
onClick={() => this.handleMakeToolActive(tool)}
|
|
193
|
-
label={<Icon path={icon}
|
|
225
|
+
label={<Icon path={icon}/>}
|
|
194
226
|
/>
|
|
195
227
|
);
|
|
196
228
|
})}
|
|
@@ -217,6 +249,7 @@ export class Container extends Component {
|
|
|
217
249
|
toolActive={toolActive}
|
|
218
250
|
TextEntry={TextEntry}
|
|
219
251
|
backgroundImageEnabled={backgroundImageEnabled}
|
|
252
|
+
language={language}
|
|
220
253
|
/>
|
|
221
254
|
</div>
|
|
222
255
|
</div>
|
|
@@ -6,7 +6,9 @@ import isEqual from 'lodash/isEqual';
|
|
|
6
6
|
import classnames from 'classnames';
|
|
7
7
|
import { Layer, Stage } from 'react-konva';
|
|
8
8
|
import { withStyles } from '@material-ui/core/styles';
|
|
9
|
+
import Translator from '@pie-lib/translator';
|
|
9
10
|
|
|
11
|
+
const { translator } = Translator;
|
|
10
12
|
import ImageBackground from './drawable-image';
|
|
11
13
|
import Button from './button';
|
|
12
14
|
import factory from './factory';
|
|
@@ -185,6 +187,7 @@ export class DrawableMain extends React.Component {
|
|
|
185
187
|
backgroundImageEnabled = true,
|
|
186
188
|
toolActive: { type },
|
|
187
189
|
scale,
|
|
190
|
+
language
|
|
188
191
|
} = this.props;
|
|
189
192
|
const { isOver, newDrawable } = this.state;
|
|
190
193
|
|
|
@@ -205,7 +208,7 @@ export class DrawableMain extends React.Component {
|
|
|
205
208
|
stage: this.stage,
|
|
206
209
|
onMouseOverElement: this.onMouseOverElement,
|
|
207
210
|
onMouseOutElement: this.onMouseOutElement,
|
|
208
|
-
scale
|
|
211
|
+
scale
|
|
209
212
|
};
|
|
210
213
|
|
|
211
214
|
let listeners = {};
|
|
@@ -230,8 +233,8 @@ export class DrawableMain extends React.Component {
|
|
|
230
233
|
return (
|
|
231
234
|
<div className={classes.wrapper}>
|
|
232
235
|
<div className={classes.undoControls}>
|
|
233
|
-
<Button disabled={disabled} onClick={this.handleUndo} label=
|
|
234
|
-
<Button disabled={disabled} onClick={this.handleClearAll} label=
|
|
236
|
+
<Button disabled={disabled} onClick={this.handleUndo} label={translator.t('common:undo', { lng: language })} />
|
|
237
|
+
<Button disabled={disabled} onClick={this.handleClearAll} label={translator.t('common:clearAll', { lng: language })} />
|
|
235
238
|
</div>
|
|
236
239
|
<div className={classes.base}>
|
|
237
240
|
{backgroundImageEnabled && imageUrl && (
|
|
@@ -290,7 +293,7 @@ const styles = () => ({
|
|
|
290
293
|
},
|
|
291
294
|
undoControls: {
|
|
292
295
|
marginTop: -43,
|
|
293
|
-
|
|
296
|
+
marginRight: 10,
|
|
294
297
|
},
|
|
295
298
|
});
|
|
296
299
|
|
|
@@ -309,6 +312,7 @@ DrawableMain.propTypes = {
|
|
|
309
312
|
session: PropTypes.object.isRequired,
|
|
310
313
|
backgroundImageEnabled: PropTypes.bool.isRequired,
|
|
311
314
|
scale: PropTypes.number.isRequired,
|
|
315
|
+
language: PropTypes.string,
|
|
312
316
|
};
|
|
313
317
|
|
|
314
318
|
export default withStyles(styles)(DrawableMain);
|
|
@@ -5,6 +5,9 @@ import Select from '@material-ui/core/Select';
|
|
|
5
5
|
import MenuItem from '@material-ui/core/MenuItem';
|
|
6
6
|
import { withStyles } from '@material-ui/core/styles';
|
|
7
7
|
import classnames from 'classnames';
|
|
8
|
+
import Translator from '@pie-lib/translator';
|
|
9
|
+
|
|
10
|
+
const { translator } = Translator;
|
|
8
11
|
|
|
9
12
|
// TODO: Change Palette so will render inputs and colors dynamically
|
|
10
13
|
class Palette extends React.Component {
|
|
@@ -22,11 +25,11 @@ class Palette extends React.Component {
|
|
|
22
25
|
};
|
|
23
26
|
|
|
24
27
|
render() {
|
|
25
|
-
const { classes, fillColor, outlineColor, fillList, outlineList } = this.props;
|
|
28
|
+
const { classes, fillColor, outlineColor, fillList, outlineList, language } = this.props;
|
|
26
29
|
|
|
27
30
|
return (
|
|
28
31
|
<div className={classes.base}>
|
|
29
|
-
<InputContainer label=
|
|
32
|
+
<InputContainer label={translator.t('drawingResponse.fillColor', { lng: language })} className={classes.input}>
|
|
30
33
|
<Select className={classes.select} onChange={this.onChange('fill')} value={fillColor}>
|
|
31
34
|
{fillList.map(({ value, label }) => (
|
|
32
35
|
<MenuItem
|
|
@@ -43,7 +46,7 @@ class Palette extends React.Component {
|
|
|
43
46
|
</Select>
|
|
44
47
|
</InputContainer>
|
|
45
48
|
|
|
46
|
-
<InputContainer label=
|
|
49
|
+
<InputContainer label={translator.t('drawingResponse.outlineColor', { lng: language })} className={classes.input}>
|
|
47
50
|
<Select className={classes.select} onChange={this.onChange('outline')} value={outlineColor}>
|
|
48
51
|
{outlineList.map(({ value, label }) => (
|
|
49
52
|
<MenuItem key={value} value={value} className={classes.item} style={{ border: `2px solid ${value}` }}>
|
|
@@ -93,6 +96,7 @@ Palette.propTypes = {
|
|
|
93
96
|
onPaintColorChange: PropTypes.func.isRequired,
|
|
94
97
|
outlineColor: PropTypes.string.isRequired,
|
|
95
98
|
outlineList: PropTypes.array.isRequired,
|
|
99
|
+
language: PropTypes.string,
|
|
96
100
|
};
|
|
97
101
|
|
|
98
102
|
export default withStyles(styles)(Palette);
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { Text } from 'react-konva';
|
|
3
|
+
import Translator from '@pie-lib/translator';
|
|
3
4
|
|
|
5
|
+
const { translator } = Translator;
|
|
4
6
|
import Transformer from './drawable-transformer';
|
|
5
7
|
|
|
6
8
|
export const generateId = () => Math.random().toString(36).substring(2) + new Date().getTime().toString(36);
|
|
@@ -30,14 +32,14 @@ export default class TextDrawable {
|
|
|
30
32
|
this.props.forceUpdate();
|
|
31
33
|
};
|
|
32
34
|
|
|
33
|
-
addNewTextEntry = () => {
|
|
35
|
+
addNewTextEntry = (language) => {
|
|
34
36
|
const all = this.all;
|
|
35
37
|
const id = generateId();
|
|
36
38
|
|
|
37
39
|
all.push({
|
|
38
40
|
id: id,
|
|
39
41
|
isDefault: true,
|
|
40
|
-
label: '
|
|
42
|
+
label: translator.t('drawingResponse.onDoubleClick', { lng: language }),
|
|
41
43
|
width: 200,
|
|
42
44
|
x: (all.length + 1) * 5 + 50,
|
|
43
45
|
y: (all.length + 1) * 5 + 50,
|
|
@@ -20,7 +20,16 @@ class DrawingResponseComponent extends React.Component {
|
|
|
20
20
|
|
|
21
21
|
render() {
|
|
22
22
|
const {
|
|
23
|
-
model: {
|
|
23
|
+
model: {
|
|
24
|
+
disabled,
|
|
25
|
+
imageDimensions,
|
|
26
|
+
imageUrl,
|
|
27
|
+
prompt,
|
|
28
|
+
mode,
|
|
29
|
+
teacherInstructions,
|
|
30
|
+
backgroundImageEnabled,
|
|
31
|
+
language
|
|
32
|
+
},
|
|
24
33
|
session,
|
|
25
34
|
onSessionChange,
|
|
26
35
|
classes,
|
|
@@ -54,6 +63,7 @@ class DrawingResponseComponent extends React.Component {
|
|
|
54
63
|
imageUrl={imageUrl}
|
|
55
64
|
backgroundImageEnabled={backgroundImageEnabled}
|
|
56
65
|
disabled={disabled}
|
|
66
|
+
language={language}
|
|
57
67
|
/>
|
|
58
68
|
</div>
|
|
59
69
|
);
|