@pie-lib/editable-html 7.17.10 → 7.17.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,38 @@
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.17.14](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html@7.17.13...@pie-lib/editable-html@7.17.14) (2021-12-22)
7
+
8
+ **Note:** Version bump only for package @pie-lib/editable-html
9
+
10
+
11
+
12
+
13
+
14
+ ## [7.17.13](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html@7.17.12...@pie-lib/editable-html@7.17.13) (2021-12-13)
15
+
16
+ **Note:** Version bump only for package @pie-lib/editable-html
17
+
18
+
19
+
20
+
21
+
22
+ ## [7.17.12](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html@7.17.11...@pie-lib/editable-html@7.17.12) (2021-11-29)
23
+
24
+ **Note:** Version bump only for package @pie-lib/editable-html
25
+
26
+
27
+
28
+
29
+
30
+ ## [7.17.11](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html@7.17.10...@pie-lib/editable-html@7.17.11) (2021-10-04)
31
+
32
+ **Note:** Version bump only for package @pie-lib/editable-html
33
+
34
+
35
+
36
+
37
+
6
38
  ## [7.17.10](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html@7.17.9...@pie-lib/editable-html@7.17.10) (2021-10-04)
7
39
 
8
40
 
package/lib/editor.js CHANGED
@@ -695,7 +695,7 @@ var styles = {
695
695
  color: _renderUi.color.text(),
696
696
  backgroundColor: _renderUi.color.background()
697
697
  },
698
- '& tr': {
698
+ '& table:not([border="1"]) tr': {
699
699
  borderTop: '1px solid #dfe2e5' // TODO perhaps secondary color for background, for now disable
700
700
  // '&:nth-child(2n)': {
701
701
  // backgroundColor: '#f6f8fa'
@@ -703,9 +703,11 @@ var styles = {
703
703
 
704
704
  },
705
705
  '& td, th': {
706
- border: '1px solid #dfe2e5',
707
706
  padding: '.6em 1em',
708
707
  textAlign: 'center'
708
+ },
709
+ '& table:not([border="1"]) td, th': {
710
+ border: '1px solid #dfe2e5'
709
711
  }
710
712
  },
711
713
  toolbarOnTop: {
package/lib/editor.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/editor.jsx"],"names":["log","defaultToolbarOpts","position","alignment","alwaysVisible","showDone","doneOn","createToolbarOpts","toolbarOpts","Editor","props","e","relatedTarget","target","node","state","value","setState","focusedNode","resetValue","stashedValue","stashValue","editor","change","c","collapseToStartOf","selectedNode","onChange","resolve","nonEmpty","toolbarInFocus","blur","startText","text","length","then","onEditingDone","event","Promise","handleBlur","bind","onBlur","editorDOM","document","querySelector","key","setTimeout","wrapperRef","editorElement","activeElement","closest","className","toolbarElement","toolbarRef","isInCurrentComponent","contains","removeEventListener","handleDomBlur","__TEMPORARY_CHANGE_DATA","data","domEl","setNodeByKey","addEventListener","onFocus","force","stopReset","plugins","reduce","s","p","isFocused","toObject","newValue","Value","fromJSON","toJSON","done","v","endsWith","undefined","parseInt","isNaN","object","last","nodes","type","parent","getParent","Block","pos","focus","onResize","activePlugins","math","onClick","onMathClick","onPluginFocus","onPluginBlur","image","onDelete","imageSupport","src","insertImageRequested","getHandler","handler","add","toolbar","disableUnderline","autoWidth","autoWidthToolbar","onDone","table","responseArea","responseAreaProps","options","respAreaToolbar","media","createChange","onRef","window","autoFocus","nextProps","newToolbarOpts","equals","width","minHeight","height","maxHeight","valueToSize","disabled","highlightShape","classes","placeholder","pluginProps","onKeyDown","sizeStyle","buildSizeStyle","names","withBg","toolbarOnTop","ref","r","slateEditor","editorRef","normalize","changeData","React","Component","PropTypes","bool","func","isRequired","SlateTypes","oneOfType","string","number","any","shape","oneOf","arrayOf","values","allValid","every","ALL_PLUGINS","includes","Error","join","styles","backgroundColor","fontFamily","tableLayout","borderCollapse","color","background","borderTop","border","padding","textAlign","marginTop"],"mappings":"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","sourcesContent":["import { Editor as SlateEditor, findNode } from 'slate-react';\nimport SlateTypes from 'slate-prop-types';\n\nimport isEqual from 'lodash/isEqual';\nimport * as serialization from './serialization';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { Value, Block } from 'slate';\nimport { buildPlugins, ALL_PLUGINS, DEFAULT_PLUGINS } from './plugins';\nimport debug from 'debug';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport { color } from '@pie-lib/render-ui';\n\nexport { ALL_PLUGINS, DEFAULT_PLUGINS, serialization };\n\nconst log = debug('editable-html:editor');\n\nconst defaultToolbarOpts = {\n position: 'bottom',\n alignment: 'left',\n alwaysVisible: false,\n showDone: true,\n doneOn: 'blur'\n};\n\nconst createToolbarOpts = toolbarOpts => {\n return {\n ...defaultToolbarOpts,\n ...toolbarOpts\n };\n};\n\nexport class Editor extends React.Component {\n static propTypes = {\n autoFocus: PropTypes.bool,\n editorRef: PropTypes.func.isRequired,\n onRef: PropTypes.func.isRequired,\n onChange: PropTypes.func.isRequired,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onKeyDown: PropTypes.func,\n focus: PropTypes.func.isRequired,\n value: SlateTypes.value.isRequired,\n imageSupport: PropTypes.object,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n minHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n maxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n classes: PropTypes.object.isRequired,\n highlightShape: PropTypes.bool,\n disabled: PropTypes.bool,\n nonEmpty: PropTypes.bool,\n disableUnderline: PropTypes.bool,\n autoWidthToolbar: PropTypes.bool,\n pluginProps: PropTypes.any,\n placeholder: PropTypes.string,\n responseAreaProps: PropTypes.shape({\n type: PropTypes.oneOf([\n 'explicit-constructed-response',\n 'inline-dropdown',\n 'drag-in-the-blank'\n ]),\n options: PropTypes.object,\n respAreaToolbar: PropTypes.func,\n onDelete: PropTypes.func\n }),\n toolbarOpts: PropTypes.shape({\n position: PropTypes.oneOf(['bottom', 'top']),\n alignment: PropTypes.oneOf(['left', 'right']),\n alwaysVisible: PropTypes.bool,\n showDone: PropTypes.bool,\n doneOn: PropTypes.string\n }),\n activePlugins: PropTypes.arrayOf(values => {\n const allValid = values.every(v => ALL_PLUGINS.includes(v));\n\n return (\n !allValid &&\n new Error(`Invalid values: ${values}, values must be one of [${ALL_PLUGINS.join(',')}]`)\n );\n }),\n className: PropTypes.string\n };\n\n static defaultProps = {\n disableUnderline: true,\n onFocus: () => {},\n onBlur: () => {},\n toolbarOpts: defaultToolbarOpts,\n onKeyDown: () => {}\n };\n\n constructor(props) {\n super(props);\n this.state = {\n value: props.value,\n toolbarOpts: createToolbarOpts(props.toolbarOpts)\n };\n\n this.onResize = () => {\n props.onChange(this.state.value, true);\n };\n\n this.plugins = buildPlugins(props.activePlugins, {\n math: {\n onClick: this.onMathClick,\n onFocus: this.onPluginFocus,\n onBlur: this.onPluginBlur\n },\n image: {\n onDelete:\n this.props.imageSupport &&\n this.props.imageSupport.delete &&\n ((src, done) => {\n this.props.imageSupport.delete(src, e => {\n done(e, this.state.value);\n });\n }),\n insertImageRequested:\n this.props.imageSupport &&\n (getHandler => {\n /**\n * The handler is the object through which the outer context\n * communicates file upload events like: fileChosen, cancel, progress\n */\n const handler = getHandler(() => this.state.value);\n this.props.imageSupport.add(handler);\n }),\n onFocus: this.onPluginFocus,\n onBlur: this.onPluginBlur\n },\n toolbar: {\n /**\n * To minimize converting html -> state -> html\n * We only emit markup once 'done' is clicked.\n */\n disableUnderline: props.disableUnderline,\n autoWidth: props.autoWidthToolbar,\n onDone: () => {\n const { nonEmpty } = this.props;\n\n log('[onDone]');\n this.setState({ toolbarInFocus: false, focusedNode: null });\n this.editor.blur();\n\n if (nonEmpty && this.state.value.startText.text.length === 0) {\n this.resetValue(true).then(() => {\n this.onEditingDone();\n });\n } else {\n this.onEditingDone();\n }\n }\n },\n table: {\n onFocus: () => {\n log('[table:onFocus]...');\n this.onPluginFocus();\n },\n onBlur: () => {\n log('[table:onBlur]...');\n this.onPluginBlur();\n }\n },\n responseArea: {\n type: props.responseAreaProps && props.responseAreaProps.type,\n options: props.responseAreaProps && props.responseAreaProps.options,\n respAreaToolbar: props.responseAreaProps && props.responseAreaProps.respAreaToolbar,\n onFocus: () => {\n log('[table:onFocus]...');\n this.onPluginFocus();\n },\n onBlur: () => {\n log('[table:onBlur]...');\n this.onPluginBlur();\n }\n },\n media: {\n focus: this.focus,\n createChange: () => this.state.value.change(),\n onChange: this.onChange\n }\n });\n }\n\n componentDidMount() {\n // onRef is needed to get the ref of the component because we export it using withStyles\n this.props.onRef(this);\n\n window.addEventListener('resize', this.onResize);\n\n if (this.editor && this.props.autoFocus) {\n Promise.resolve().then(() => {\n if (this.editor) {\n const editorDOM = document.querySelector(\n `[data-key=\"${this.editor.value.document.key}\"]`\n );\n\n this.editor.focus();\n\n if (editorDOM) {\n editorDOM.focus();\n }\n }\n });\n }\n }\n\n componentWillReceiveProps(nextProps) {\n const { toolbarOpts } = this.state;\n const newToolbarOpts = createToolbarOpts(nextProps.toolbarOpts);\n\n if (!isEqual(newToolbarOpts, toolbarOpts)) {\n this.setState({\n toolbarOpts: newToolbarOpts\n });\n }\n }\n\n onPluginBlur = e => {\n log('[onPluginBlur]', e && e.relatedTarget);\n const target = e && e.relatedTarget;\n\n const node = target ? findNode(target, this.state.value) : null;\n log('[onPluginBlur] node: ', node);\n this.setState({ focusedNode: node }, () => {\n this.resetValue();\n });\n };\n\n onPluginFocus = e => {\n log('[onPluginFocus]', e && e.target);\n const target = e && e.target;\n if (target) {\n const node = findNode(target, this.state.value);\n log('[onPluginFocus] node: ', node);\n\n const stashedValue = this.state.stashedValue || this.state.value;\n this.setState({ focusedNode: node, stashedValue });\n } else {\n this.setState({ focusedNode: null });\n }\n this.stashValue();\n };\n\n onMathClick = node => {\n this.editor.change(c => c.collapseToStartOf(node));\n this.setState({ selectedNode: node });\n };\n\n onEditingDone = () => {\n log('[onEditingDone]');\n this.setState({ stashedValue: null, focusedNode: null });\n log('[onEditingDone] value: ', this.state.value);\n this.props.onChange(this.state.value, true);\n };\n\n /**\n * Remove onResize event listener\n */\n componentWillUnmount() {\n window.removeEventListener('resize', this.onResize);\n }\n\n // Allowing time for onChange to take effect if it is called\n handleBlur = resolve => {\n const { nonEmpty } = this.props;\n const {\n toolbarOpts: { doneOn }\n } = this.state;\n\n this.setState({ toolbarInFocus: false, focusedNode: null });\n\n if (this.editor) {\n this.editor.blur();\n }\n\n if (doneOn === 'blur') {\n if (nonEmpty && this.state.value.startText.text.length === 0) {\n this.resetValue(true).then(() => {\n this.onEditingDone();\n resolve();\n });\n } else {\n this.onEditingDone();\n resolve();\n }\n }\n };\n\n onBlur = event => {\n log('[onBlur]');\n const target = event.relatedTarget;\n\n const node = target ? findNode(target, this.state.value) : null;\n\n log('[onBlur] node: ', node);\n\n return new Promise(resolve => {\n this.setState({ focusedNode: node }, this.handleBlur.bind(this, resolve));\n this.props.onBlur(event);\n });\n };\n\n handleDomBlur = e => {\n const editorDOM = document.querySelector(`[data-key=\"${this.state.value.document.key}\"]`);\n\n setTimeout(() => {\n if (!this.wrapperRef) {\n return;\n }\n\n const editorElement =\n !editorDOM || document.activeElement.closest(`[class*=\"${editorDOM.className}\"]`);\n const toolbarElement =\n !this.toolbarRef || document.activeElement.closest(`[class*=\"${this.toolbarRef.className}\"]`);\n const isInCurrentComponent =\n this.wrapperRef.contains(editorElement) || this.wrapperRef.contains(toolbarElement);\n\n if (!isInCurrentComponent) {\n editorDOM.removeEventListener('blur', this.handleDomBlur);\n this.onBlur(e);\n }\n }, 50);\n };\n\n /*\n * Needs to be wrapped otherwise it causes issues because of race conditions\n * Known issue for slatejs. See: https://github.com/ianstormtaylor/slate/issues/2097\n * Using timeout I wasn't able to test this\n *\n * Note: The use of promises has been causing issues with MathQuill\n * */\n onFocus = () =>\n new Promise(resolve => {\n const editorDOM = document.querySelector(`[data-key=\"${this.state.value.document.key}\"]`);\n\n log('[onFocus]', document.activeElement);\n\n /**\n * This is a temporary hack - @see changeData below for some more information.\n */\n if (this.__TEMPORARY_CHANGE_DATA) {\n const { key, data } = this.__TEMPORARY_CHANGE_DATA;\n const domEl = document.querySelector(`[data-key=\"${key}\"]`);\n\n if (domEl) {\n let change = this.state.value.change().setNodeByKey(key, { data });\n\n this.setState({ value: change.value }, () => {\n this.__TEMPORARY_CHANGE_DATA = null;\n });\n }\n }\n\n /**\n * This is needed just in case the browser decides to make the editor\n * lose focus without triggering the onBlur event (can happen in a few cases).\n * This will also trigger onBlur if the user clicks outside of the page when the editor\n * is focused.\n */\n if (editorDOM === document.activeElement) {\n editorDOM.removeEventListener('blur', this.handleDomBlur);\n editorDOM.addEventListener('blur', this.handleDomBlur);\n }\n\n this.stashValue();\n this.props.onFocus();\n\n resolve();\n });\n\n stashValue = () => {\n log('[stashValue]');\n if (!this.state.stashedValue) {\n this.setState({ stashedValue: this.state.value });\n }\n };\n\n /**\n * Reset the value if the user didn't click done.\n */\n resetValue = force => {\n const { value, focusedNode } = this.state;\n\n const stopReset = this.plugins.reduce((s, p) => {\n return s || (p.stopReset && p.stopReset(this.state.value));\n }, false);\n\n log('[resetValue]', value.isFocused, focusedNode, 'stopReset: ', stopReset);\n if ((this.state.stashedValue && !value.isFocused && !focusedNode && !stopReset) || force) {\n log('[resetValue] resetting...');\n log('stashed', this.state.stashedValue.document.toObject());\n log('current', this.state.value.document.toObject());\n\n const newValue = Value.fromJSON(this.state.stashedValue.toJSON());\n\n log('newValue: ', newValue.document);\n return new Promise(resolve => {\n setTimeout(() => {\n this.setState({ value: newValue, stashedValue: null }, () => {\n log('value now: ', this.state.value.document.toJSON());\n resolve();\n });\n }, 50);\n });\n } else {\n return Promise.resolve({});\n }\n };\n\n onChange = (change, done) => {\n log('[onChange]');\n this.setState({ value: change.value }, () => {\n log('[onChange], call done()');\n\n if (done) {\n done();\n }\n });\n };\n\n UNSAFE_componentWillReceiveProps(props) {\n if (!props.value.document.equals(this.props.value.document)) {\n this.setState({\n focus: false,\n value: props.value\n });\n }\n }\n\n valueToSize = v => {\n if (!v) {\n return;\n }\n\n if (typeof v === 'string') {\n if (v.endsWith('%')) {\n return undefined;\n } else if (v.endsWith('px') || v.endsWith('vh') || v.endsWith('vw')) {\n return v;\n } else {\n const value = parseInt(v, 10);\n return isNaN(value) ? value : `${value}px`;\n }\n }\n if (typeof v === 'number') {\n return `${v}px`;\n }\n\n return;\n };\n\n buildSizeStyle() {\n const { width, minHeight, height, maxHeight } = this.props;\n\n return {\n width: this.valueToSize(width),\n height: this.valueToSize(height),\n minHeight: this.valueToSize(minHeight),\n maxHeight: this.valueToSize(maxHeight)\n };\n }\n\n validateNode = node => {\n if (node.object !== 'block') return;\n\n const last = node.nodes.last();\n if (!last) return;\n\n if (last.type !== 'image') return;\n\n log('[validateNode] last is image..');\n\n const parent = last.getParent(last.key);\n const p = Block.getParent(last.key);\n log('[validateNode] parent:', parent, p);\n\n return undefined;\n };\n\n changeData = (key, data) => {\n log('[changeData]. .. ', key, data);\n\n /**\n * HACK ALERT: We should be calling setState here and storing the change data:\n *\n * <code>this.setState({changeData: { key, data}})</code>\n * However this is causing issues with the Mathquill instance. The 'input' event stops firing on the element and no\n * more changes get through. The issues seem to be related to the promises in onBlur/onFocus. But removing these\n * brings it's own problems. A major clean up is planned for this component so I've decided to temporarily settle\n * on this hack rather than spend more time on this.\n */\n\n // Uncomment this line to see the bug described above.\n // this.setState({changeData: {key, data}})\n\n this.__TEMPORARY_CHANGE_DATA = { key, data };\n };\n\n focus = (pos, node) => {\n const position = pos || 'end';\n\n this.props.focus(position, node);\n };\n\n render() {\n const {\n disabled,\n highlightShape,\n classes,\n className,\n placeholder,\n pluginProps,\n onKeyDown\n } = this.props;\n const { value, focusedNode, toolbarOpts } = this.state;\n\n log('[render] value: ', value);\n const sizeStyle = this.buildSizeStyle();\n const names = classNames(\n {\n [classes.withBg]: highlightShape,\n [classes.toolbarOnTop]: toolbarOpts.alwaysVisible && toolbarOpts.position === 'top'\n },\n className\n );\n\n return (\n <div\n ref={ref => (this.wrapperRef = ref)}\n style={{ width: sizeStyle.width }}\n className={names}\n >\n <SlateEditor\n plugins={this.plugins}\n innerRef={r => {\n if (r) {\n this.slateEditor = r;\n }\n }}\n ref={r => (this.editor = r && this.props.editorRef(r))}\n toolbarRef={r => {\n if (r) {\n this.toolbarRef = r;\n }\n }}\n value={value}\n focus={this.focus}\n onKeyDown={onKeyDown}\n onChange={this.onChange}\n onBlur={this.onBlur}\n onFocus={this.onFocus}\n onEditingDone={this.onEditingDone}\n focusedNode={focusedNode}\n normalize={this.normalize}\n readOnly={disabled}\n className={classes.slateEditor}\n style={{\n minHeight: sizeStyle.minHeight,\n height: sizeStyle.height,\n maxHeight: sizeStyle.maxHeight\n }}\n pluginProps={pluginProps}\n toolbarOpts={toolbarOpts}\n placeholder={placeholder}\n onDataChange={this.changeData}\n />\n </div>\n );\n }\n}\n\n// TODO color - hardcoded gray background and keypad colors will need to change too\nconst styles = {\n withBg: {\n backgroundColor: 'rgba(0,0,0,0.06)'\n },\n slateEditor: {\n fontFamily: 'Roboto, sans-serif',\n\n '& table': {\n tableLayout: 'fixed',\n width: '100%',\n borderCollapse: 'collapse',\n color: color.text(),\n backgroundColor: color.background()\n },\n '& tr': {\n borderTop: '1px solid #dfe2e5'\n // TODO perhaps secondary color for background, for now disable\n // '&:nth-child(2n)': {\n // backgroundColor: '#f6f8fa'\n // }\n },\n '& td, th': {\n border: '1px solid #dfe2e5',\n padding: '.6em 1em',\n textAlign: 'center'\n }\n },\n toolbarOnTop: {\n marginTop: '45px'\n }\n};\n\nexport default withStyles(styles)(Editor);\n"],"file":"editor.js"}
1
+ {"version":3,"sources":["../src/editor.jsx"],"names":["log","defaultToolbarOpts","position","alignment","alwaysVisible","showDone","doneOn","createToolbarOpts","toolbarOpts","Editor","props","e","relatedTarget","target","node","state","value","setState","focusedNode","resetValue","stashedValue","stashValue","editor","change","c","collapseToStartOf","selectedNode","onChange","resolve","nonEmpty","toolbarInFocus","blur","startText","text","length","then","onEditingDone","event","Promise","handleBlur","bind","onBlur","editorDOM","document","querySelector","key","setTimeout","wrapperRef","editorElement","activeElement","closest","className","toolbarElement","toolbarRef","isInCurrentComponent","contains","removeEventListener","handleDomBlur","__TEMPORARY_CHANGE_DATA","data","domEl","setNodeByKey","addEventListener","onFocus","force","stopReset","plugins","reduce","s","p","isFocused","toObject","newValue","Value","fromJSON","toJSON","done","v","endsWith","undefined","parseInt","isNaN","object","last","nodes","type","parent","getParent","Block","pos","focus","onResize","activePlugins","math","onClick","onMathClick","onPluginFocus","onPluginBlur","image","onDelete","imageSupport","src","insertImageRequested","getHandler","handler","add","toolbar","disableUnderline","autoWidth","autoWidthToolbar","onDone","table","responseArea","responseAreaProps","options","respAreaToolbar","media","createChange","onRef","window","autoFocus","nextProps","newToolbarOpts","equals","width","minHeight","height","maxHeight","valueToSize","disabled","highlightShape","classes","placeholder","pluginProps","onKeyDown","sizeStyle","buildSizeStyle","names","withBg","toolbarOnTop","ref","r","slateEditor","editorRef","normalize","changeData","React","Component","PropTypes","bool","func","isRequired","SlateTypes","oneOfType","string","number","any","shape","oneOf","arrayOf","values","allValid","every","ALL_PLUGINS","includes","Error","join","styles","backgroundColor","fontFamily","tableLayout","borderCollapse","color","background","borderTop","padding","textAlign","border","marginTop"],"mappings":"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","sourcesContent":["import { Editor as SlateEditor, findNode } from 'slate-react';\nimport SlateTypes from 'slate-prop-types';\n\nimport isEqual from 'lodash/isEqual';\nimport * as serialization from './serialization';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { Value, Block } from 'slate';\nimport { buildPlugins, ALL_PLUGINS, DEFAULT_PLUGINS } from './plugins';\nimport debug from 'debug';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport { color } from '@pie-lib/render-ui';\n\nexport { ALL_PLUGINS, DEFAULT_PLUGINS, serialization };\n\nconst log = debug('editable-html:editor');\n\nconst defaultToolbarOpts = {\n position: 'bottom',\n alignment: 'left',\n alwaysVisible: false,\n showDone: true,\n doneOn: 'blur'\n};\n\nconst createToolbarOpts = toolbarOpts => {\n return {\n ...defaultToolbarOpts,\n ...toolbarOpts\n };\n};\n\nexport class Editor extends React.Component {\n static propTypes = {\n autoFocus: PropTypes.bool,\n editorRef: PropTypes.func.isRequired,\n onRef: PropTypes.func.isRequired,\n onChange: PropTypes.func.isRequired,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onKeyDown: PropTypes.func,\n focus: PropTypes.func.isRequired,\n value: SlateTypes.value.isRequired,\n imageSupport: PropTypes.object,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n minHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n maxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n classes: PropTypes.object.isRequired,\n highlightShape: PropTypes.bool,\n disabled: PropTypes.bool,\n nonEmpty: PropTypes.bool,\n disableUnderline: PropTypes.bool,\n autoWidthToolbar: PropTypes.bool,\n pluginProps: PropTypes.any,\n placeholder: PropTypes.string,\n responseAreaProps: PropTypes.shape({\n type: PropTypes.oneOf([\n 'explicit-constructed-response',\n 'inline-dropdown',\n 'drag-in-the-blank'\n ]),\n options: PropTypes.object,\n respAreaToolbar: PropTypes.func,\n onDelete: PropTypes.func\n }),\n toolbarOpts: PropTypes.shape({\n position: PropTypes.oneOf(['bottom', 'top']),\n alignment: PropTypes.oneOf(['left', 'right']),\n alwaysVisible: PropTypes.bool,\n showDone: PropTypes.bool,\n doneOn: PropTypes.string\n }),\n activePlugins: PropTypes.arrayOf(values => {\n const allValid = values.every(v => ALL_PLUGINS.includes(v));\n\n return (\n !allValid &&\n new Error(`Invalid values: ${values}, values must be one of [${ALL_PLUGINS.join(',')}]`)\n );\n }),\n className: PropTypes.string\n };\n\n static defaultProps = {\n disableUnderline: true,\n onFocus: () => {},\n onBlur: () => {},\n toolbarOpts: defaultToolbarOpts,\n onKeyDown: () => {}\n };\n\n constructor(props) {\n super(props);\n this.state = {\n value: props.value,\n toolbarOpts: createToolbarOpts(props.toolbarOpts)\n };\n\n this.onResize = () => {\n props.onChange(this.state.value, true);\n };\n\n this.plugins = buildPlugins(props.activePlugins, {\n math: {\n onClick: this.onMathClick,\n onFocus: this.onPluginFocus,\n onBlur: this.onPluginBlur\n },\n image: {\n onDelete:\n this.props.imageSupport &&\n this.props.imageSupport.delete &&\n ((src, done) => {\n this.props.imageSupport.delete(src, e => {\n done(e, this.state.value);\n });\n }),\n insertImageRequested:\n this.props.imageSupport &&\n (getHandler => {\n /**\n * The handler is the object through which the outer context\n * communicates file upload events like: fileChosen, cancel, progress\n */\n const handler = getHandler(() => this.state.value);\n this.props.imageSupport.add(handler);\n }),\n onFocus: this.onPluginFocus,\n onBlur: this.onPluginBlur\n },\n toolbar: {\n /**\n * To minimize converting html -> state -> html\n * We only emit markup once 'done' is clicked.\n */\n disableUnderline: props.disableUnderline,\n autoWidth: props.autoWidthToolbar,\n onDone: () => {\n const { nonEmpty } = this.props;\n\n log('[onDone]');\n this.setState({ toolbarInFocus: false, focusedNode: null });\n this.editor.blur();\n\n if (nonEmpty && this.state.value.startText.text.length === 0) {\n this.resetValue(true).then(() => {\n this.onEditingDone();\n });\n } else {\n this.onEditingDone();\n }\n }\n },\n table: {\n onFocus: () => {\n log('[table:onFocus]...');\n this.onPluginFocus();\n },\n onBlur: () => {\n log('[table:onBlur]...');\n this.onPluginBlur();\n }\n },\n responseArea: {\n type: props.responseAreaProps && props.responseAreaProps.type,\n options: props.responseAreaProps && props.responseAreaProps.options,\n respAreaToolbar: props.responseAreaProps && props.responseAreaProps.respAreaToolbar,\n onFocus: () => {\n log('[table:onFocus]...');\n this.onPluginFocus();\n },\n onBlur: () => {\n log('[table:onBlur]...');\n this.onPluginBlur();\n }\n },\n media: {\n focus: this.focus,\n createChange: () => this.state.value.change(),\n onChange: this.onChange\n }\n });\n }\n\n componentDidMount() {\n // onRef is needed to get the ref of the component because we export it using withStyles\n this.props.onRef(this);\n\n window.addEventListener('resize', this.onResize);\n\n if (this.editor && this.props.autoFocus) {\n Promise.resolve().then(() => {\n if (this.editor) {\n const editorDOM = document.querySelector(\n `[data-key=\"${this.editor.value.document.key}\"]`\n );\n\n this.editor.focus();\n\n if (editorDOM) {\n editorDOM.focus();\n }\n }\n });\n }\n }\n\n componentWillReceiveProps(nextProps) {\n const { toolbarOpts } = this.state;\n const newToolbarOpts = createToolbarOpts(nextProps.toolbarOpts);\n\n if (!isEqual(newToolbarOpts, toolbarOpts)) {\n this.setState({\n toolbarOpts: newToolbarOpts\n });\n }\n }\n\n onPluginBlur = e => {\n log('[onPluginBlur]', e && e.relatedTarget);\n const target = e && e.relatedTarget;\n\n const node = target ? findNode(target, this.state.value) : null;\n log('[onPluginBlur] node: ', node);\n this.setState({ focusedNode: node }, () => {\n this.resetValue();\n });\n };\n\n onPluginFocus = e => {\n log('[onPluginFocus]', e && e.target);\n const target = e && e.target;\n if (target) {\n const node = findNode(target, this.state.value);\n log('[onPluginFocus] node: ', node);\n\n const stashedValue = this.state.stashedValue || this.state.value;\n this.setState({ focusedNode: node, stashedValue });\n } else {\n this.setState({ focusedNode: null });\n }\n this.stashValue();\n };\n\n onMathClick = node => {\n this.editor.change(c => c.collapseToStartOf(node));\n this.setState({ selectedNode: node });\n };\n\n onEditingDone = () => {\n log('[onEditingDone]');\n this.setState({ stashedValue: null, focusedNode: null });\n log('[onEditingDone] value: ', this.state.value);\n this.props.onChange(this.state.value, true);\n };\n\n /**\n * Remove onResize event listener\n */\n componentWillUnmount() {\n window.removeEventListener('resize', this.onResize);\n }\n\n // Allowing time for onChange to take effect if it is called\n handleBlur = resolve => {\n const { nonEmpty } = this.props;\n const {\n toolbarOpts: { doneOn }\n } = this.state;\n\n this.setState({ toolbarInFocus: false, focusedNode: null });\n\n if (this.editor) {\n this.editor.blur();\n }\n\n if (doneOn === 'blur') {\n if (nonEmpty && this.state.value.startText.text.length === 0) {\n this.resetValue(true).then(() => {\n this.onEditingDone();\n resolve();\n });\n } else {\n this.onEditingDone();\n resolve();\n }\n }\n };\n\n onBlur = event => {\n log('[onBlur]');\n const target = event.relatedTarget;\n\n const node = target ? findNode(target, this.state.value) : null;\n\n log('[onBlur] node: ', node);\n\n return new Promise(resolve => {\n this.setState({ focusedNode: node }, this.handleBlur.bind(this, resolve));\n this.props.onBlur(event);\n });\n };\n\n handleDomBlur = e => {\n const editorDOM = document.querySelector(`[data-key=\"${this.state.value.document.key}\"]`);\n\n setTimeout(() => {\n if (!this.wrapperRef) {\n return;\n }\n\n const editorElement =\n !editorDOM || document.activeElement.closest(`[class*=\"${editorDOM.className}\"]`);\n const toolbarElement =\n !this.toolbarRef || document.activeElement.closest(`[class*=\"${this.toolbarRef.className}\"]`);\n const isInCurrentComponent =\n this.wrapperRef.contains(editorElement) || this.wrapperRef.contains(toolbarElement);\n\n if (!isInCurrentComponent) {\n editorDOM.removeEventListener('blur', this.handleDomBlur);\n this.onBlur(e);\n }\n }, 50);\n };\n\n /*\n * Needs to be wrapped otherwise it causes issues because of race conditions\n * Known issue for slatejs. See: https://github.com/ianstormtaylor/slate/issues/2097\n * Using timeout I wasn't able to test this\n *\n * Note: The use of promises has been causing issues with MathQuill\n * */\n onFocus = () =>\n new Promise(resolve => {\n const editorDOM = document.querySelector(`[data-key=\"${this.state.value.document.key}\"]`);\n\n log('[onFocus]', document.activeElement);\n\n /**\n * This is a temporary hack - @see changeData below for some more information.\n */\n if (this.__TEMPORARY_CHANGE_DATA) {\n const { key, data } = this.__TEMPORARY_CHANGE_DATA;\n const domEl = document.querySelector(`[data-key=\"${key}\"]`);\n\n if (domEl) {\n let change = this.state.value.change().setNodeByKey(key, { data });\n\n this.setState({ value: change.value }, () => {\n this.__TEMPORARY_CHANGE_DATA = null;\n });\n }\n }\n\n /**\n * This is needed just in case the browser decides to make the editor\n * lose focus without triggering the onBlur event (can happen in a few cases).\n * This will also trigger onBlur if the user clicks outside of the page when the editor\n * is focused.\n */\n if (editorDOM === document.activeElement) {\n editorDOM.removeEventListener('blur', this.handleDomBlur);\n editorDOM.addEventListener('blur', this.handleDomBlur);\n }\n\n this.stashValue();\n this.props.onFocus();\n\n resolve();\n });\n\n stashValue = () => {\n log('[stashValue]');\n if (!this.state.stashedValue) {\n this.setState({ stashedValue: this.state.value });\n }\n };\n\n /**\n * Reset the value if the user didn't click done.\n */\n resetValue = force => {\n const { value, focusedNode } = this.state;\n\n const stopReset = this.plugins.reduce((s, p) => {\n return s || (p.stopReset && p.stopReset(this.state.value));\n }, false);\n\n log('[resetValue]', value.isFocused, focusedNode, 'stopReset: ', stopReset);\n if ((this.state.stashedValue && !value.isFocused && !focusedNode && !stopReset) || force) {\n log('[resetValue] resetting...');\n log('stashed', this.state.stashedValue.document.toObject());\n log('current', this.state.value.document.toObject());\n\n const newValue = Value.fromJSON(this.state.stashedValue.toJSON());\n\n log('newValue: ', newValue.document);\n return new Promise(resolve => {\n setTimeout(() => {\n this.setState({ value: newValue, stashedValue: null }, () => {\n log('value now: ', this.state.value.document.toJSON());\n resolve();\n });\n }, 50);\n });\n } else {\n return Promise.resolve({});\n }\n };\n\n onChange = (change, done) => {\n log('[onChange]');\n this.setState({ value: change.value }, () => {\n log('[onChange], call done()');\n\n if (done) {\n done();\n }\n });\n };\n\n UNSAFE_componentWillReceiveProps(props) {\n if (!props.value.document.equals(this.props.value.document)) {\n this.setState({\n focus: false,\n value: props.value\n });\n }\n }\n\n valueToSize = v => {\n if (!v) {\n return;\n }\n\n if (typeof v === 'string') {\n if (v.endsWith('%')) {\n return undefined;\n } else if (v.endsWith('px') || v.endsWith('vh') || v.endsWith('vw')) {\n return v;\n } else {\n const value = parseInt(v, 10);\n return isNaN(value) ? value : `${value}px`;\n }\n }\n if (typeof v === 'number') {\n return `${v}px`;\n }\n\n return;\n };\n\n buildSizeStyle() {\n const { width, minHeight, height, maxHeight } = this.props;\n\n return {\n width: this.valueToSize(width),\n height: this.valueToSize(height),\n minHeight: this.valueToSize(minHeight),\n maxHeight: this.valueToSize(maxHeight)\n };\n }\n\n validateNode = node => {\n if (node.object !== 'block') return;\n\n const last = node.nodes.last();\n if (!last) return;\n\n if (last.type !== 'image') return;\n\n log('[validateNode] last is image..');\n\n const parent = last.getParent(last.key);\n const p = Block.getParent(last.key);\n log('[validateNode] parent:', parent, p);\n\n return undefined;\n };\n\n changeData = (key, data) => {\n log('[changeData]. .. ', key, data);\n\n /**\n * HACK ALERT: We should be calling setState here and storing the change data:\n *\n * <code>this.setState({changeData: { key, data}})</code>\n * However this is causing issues with the Mathquill instance. The 'input' event stops firing on the element and no\n * more changes get through. The issues seem to be related to the promises in onBlur/onFocus. But removing these\n * brings it's own problems. A major clean up is planned for this component so I've decided to temporarily settle\n * on this hack rather than spend more time on this.\n */\n\n // Uncomment this line to see the bug described above.\n // this.setState({changeData: {key, data}})\n\n this.__TEMPORARY_CHANGE_DATA = { key, data };\n };\n\n focus = (pos, node) => {\n const position = pos || 'end';\n\n this.props.focus(position, node);\n };\n\n render() {\n const {\n disabled,\n highlightShape,\n classes,\n className,\n placeholder,\n pluginProps,\n onKeyDown\n } = this.props;\n const { value, focusedNode, toolbarOpts } = this.state;\n\n log('[render] value: ', value);\n const sizeStyle = this.buildSizeStyle();\n const names = classNames(\n {\n [classes.withBg]: highlightShape,\n [classes.toolbarOnTop]: toolbarOpts.alwaysVisible && toolbarOpts.position === 'top'\n },\n className\n );\n\n return (\n <div\n ref={ref => (this.wrapperRef = ref)}\n style={{ width: sizeStyle.width }}\n className={names}\n >\n <SlateEditor\n plugins={this.plugins}\n innerRef={r => {\n if (r) {\n this.slateEditor = r;\n }\n }}\n ref={r => (this.editor = r && this.props.editorRef(r))}\n toolbarRef={r => {\n if (r) {\n this.toolbarRef = r;\n }\n }}\n value={value}\n focus={this.focus}\n onKeyDown={onKeyDown}\n onChange={this.onChange}\n onBlur={this.onBlur}\n onFocus={this.onFocus}\n onEditingDone={this.onEditingDone}\n focusedNode={focusedNode}\n normalize={this.normalize}\n readOnly={disabled}\n className={classes.slateEditor}\n style={{\n minHeight: sizeStyle.minHeight,\n height: sizeStyle.height,\n maxHeight: sizeStyle.maxHeight\n }}\n pluginProps={pluginProps}\n toolbarOpts={toolbarOpts}\n placeholder={placeholder}\n onDataChange={this.changeData}\n />\n </div>\n );\n }\n}\n\n// TODO color - hardcoded gray background and keypad colors will need to change too\nconst styles = {\n withBg: {\n backgroundColor: 'rgba(0,0,0,0.06)'\n },\n slateEditor: {\n fontFamily: 'Roboto, sans-serif',\n\n '& table': {\n tableLayout: 'fixed',\n width: '100%',\n borderCollapse: 'collapse',\n color: color.text(),\n backgroundColor: color.background()\n },\n '& table:not([border=\"1\"]) tr': {\n borderTop: '1px solid #dfe2e5'\n // TODO perhaps secondary color for background, for now disable\n // '&:nth-child(2n)': {\n // backgroundColor: '#f6f8fa'\n // }\n },\n '& td, th': {\n padding: '.6em 1em',\n textAlign: 'center'\n },\n '& table:not([border=\"1\"]) td, th': {\n border: '1px solid #dfe2e5'\n }\n },\n toolbarOnTop: {\n marginTop: '45px'\n }\n};\n\nexport default withStyles(styles)(Editor);\n"],"file":"editor.js"}
@@ -13,6 +13,8 @@ var _isUndefined = _interopRequireDefault(require("lodash/isUndefined"));
13
13
 
14
14
  var _drag = require("@pie-lib/drag");
15
15
 
16
+ var _renderUi = require("@pie-lib/render-ui");
17
+
16
18
  var _mathRendering = require("@pie-lib/math-rendering");
17
19
 
18
20
  var _styles = require("@material-ui/core/styles");
@@ -37,10 +39,10 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
37
39
 
38
40
  function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
39
41
 
40
- function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
41
-
42
42
  function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
43
43
 
44
+ function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
45
+
44
46
  function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
45
47
 
46
48
  function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
@@ -60,6 +62,9 @@ var useStyles = (0, _styles.withStyles)(function (theme) {
60
62
  },
61
63
  incorrect: {
62
64
  border: 'solid 1px red'
65
+ },
66
+ selected: {
67
+ border: "2px solid ".concat(_renderUi.color.primaryDark(), " !important")
63
68
  }
64
69
  };
65
70
  });
@@ -69,13 +74,36 @@ var BlankContent =
69
74
  function (_React$Component) {
70
75
  _inherits(BlankContent, _React$Component);
71
76
 
72
- function BlankContent() {
77
+ function BlankContent(props) {
78
+ var _this;
79
+
73
80
  _classCallCheck(this, BlankContent);
74
81
 
75
- return _possibleConstructorReturn(this, _getPrototypeOf(BlankContent).apply(this, arguments));
82
+ _this = _possibleConstructorReturn(this, _getPrototypeOf(BlankContent).call(this, props));
83
+ _this.handleClick = _this.handleClick.bind(_assertThisInitialized(_this));
84
+ return _this;
76
85
  }
77
86
 
78
87
  _createClass(BlankContent, [{
88
+ key: "componentDidMount",
89
+ value: function componentDidMount() {
90
+ document.addEventListener('click', this.handleClick);
91
+ }
92
+ }, {
93
+ key: "componentWillUnmount",
94
+ value: function componentWillUnmount() {
95
+ document.removeEventListener('click', this.handleClick);
96
+ }
97
+ }, {
98
+ key: "handleClick",
99
+ value: function handleClick(event) {
100
+ var classes = this.props.classes;
101
+
102
+ if (this.elementRef) {
103
+ this.elementRef.className = this.elementRef.contains(event.target) ? classes.selected : '';
104
+ }
105
+ }
106
+ }, {
79
107
  key: "componentDidUpdate",
80
108
  value: function componentDidUpdate() {
81
109
  if (this.elementRef) {
@@ -85,7 +113,7 @@ function (_React$Component) {
85
113
  }, {
86
114
  key: "render",
87
115
  value: function render() {
88
- var _this = this;
116
+ var _this2 = this;
89
117
 
90
118
  var _this$props = this.props,
91
119
  n = _this$props.n,
@@ -99,7 +127,7 @@ function (_React$Component) {
99
127
  var hasGrip = finalLabel !== "\xA0";
100
128
  return _react["default"].createElement("div", {
101
129
  ref: function ref(_ref) {
102
- return _this.elementRef = _ref;
130
+ return _this2.elementRef = _ref;
103
131
  },
104
132
  style: {
105
133
  display: 'inline-flex',
@@ -142,7 +170,8 @@ _defineProperty(BlankContent, "propTypes", {
142
170
  isDragging: _propTypes["default"].bool,
143
171
  isOver: _propTypes["default"].bool,
144
172
  dragItem: _propTypes["default"].object,
145
- value: _propTypes["default"].object
173
+ value: _propTypes["default"].object,
174
+ classes: _propTypes["default"].object
146
175
  });
147
176
 
148
177
  var StyledBlankContent = useStyles(BlankContent);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/plugins/respArea/drag-in-the-blank/choice.jsx"],"names":["useStyles","theme","content","border","palette","primary","main","chip","minWidth","correct","incorrect","BlankContent","elementRef","props","n","children","isDragging","dragItem","isOver","value","label","finalLabel","hasGrip","ref","display","minHeight","background","boxSizing","borderRadius","overflow","position","padding","key","top","left","color","__html","React","Component","PropTypes","object","func","bool","StyledBlankContent","connectedBlankContent","connectDropTarget","connectDragSource","classes","dragContent","dragEl","over","tileTarget","drop","monitor","draggedItem","getItem","shouldDrop","index","onChange","dropped","canDrop","instanceId","DropTile","connect","dropTarget","tileSource","canDrag","disabled","beginDrag","id","targetId","fromChoice","endDrag","dropResult","getDropResult","duplicates","removeResponse","dragSource"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport isUndefined from 'lodash/isUndefined';\nimport { DragSource, DropTarget } from '@pie-lib/drag';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { withStyles } from '@material-ui/core/styles';\nimport classnames from 'classnames';\n\nimport { GripIcon } from '../icons';\n\nconst useStyles = withStyles(theme => ({\n content: {\n border: `solid 0px ${theme.palette.primary.main}`\n },\n chip: {\n minWidth: '90px'\n },\n correct: {\n border: 'solid 1px green'\n },\n incorrect: {\n border: 'solid 1px red'\n }\n}));\n\nexport class BlankContent extends React.Component {\n static propTypes = {\n n: PropTypes.object,\n children: PropTypes.func,\n isDragging: PropTypes.bool,\n isOver: PropTypes.bool,\n dragItem: PropTypes.object,\n value: PropTypes.object\n };\n\n componentDidUpdate() {\n if (this.elementRef) {\n renderMath(this.elementRef);\n }\n }\n\n render() {\n const { n, children, isDragging, dragItem, isOver, value } = this.props;\n\n const label = dragItem && isOver ? dragItem.value.value : value.value || '\\u00A0';\n const finalLabel = isDragging ? '\\u00A0' : label;\n const hasGrip = finalLabel !== '\\u00A0';\n\n return (\n <div\n ref={ref => (this.elementRef = ref)}\n style={{\n display: 'inline-flex',\n minWidth: '178px',\n minHeight: '36px',\n background: '#FFF',\n border: '1px solid #C0C3CF',\n boxSizing: 'border-box',\n borderRadius: '3px',\n overflow: 'hidden',\n position: 'relative',\n padding: '8px 8px 8px 35px'\n }}\n data-key={n.key}\n contentEditable={false}\n >\n {hasGrip && (\n <GripIcon\n style={{\n position: 'absolute',\n top: '6px',\n left: '15px',\n color: '#9B9B9B'\n }}\n contentEditable={false}\n />\n )}\n <span\n dangerouslySetInnerHTML={{\n __html: finalLabel\n }}\n />\n {children}\n </div>\n );\n }\n}\n\nconst StyledBlankContent = useStyles(BlankContent);\n\nconst connectedBlankContent = useStyles(({ connectDropTarget, connectDragSource, ...props }) => {\n const { classes, isOver, value } = props;\n const dragContent = <StyledBlankContent {...props} />;\n const dragEl = !value ? dragContent : connectDragSource(<span>{dragContent}</span>);\n const content = (\n <span className={classnames(classes.content, isOver && classes.over)}>{dragEl}</span>\n );\n\n return connectDropTarget ? connectDropTarget(content) : content;\n});\n\nexport const tileTarget = {\n drop(props, monitor) {\n const draggedItem = monitor.getItem();\n const shouldDrop =\n isUndefined(draggedItem.value.index) ||\n isUndefined(props.value.index) ||\n draggedItem.value.index !== props.value.index;\n\n if (shouldDrop) {\n props.onChange(draggedItem.value);\n }\n\n return {\n dropped: shouldDrop\n };\n },\n canDrop(props, monitor) {\n const draggedItem = monitor.getItem();\n\n return draggedItem.instanceId === props.instanceId;\n }\n};\n\nconst DropTile = DropTarget('drag-in-the-blank-choice', tileTarget, (connect, monitor) => ({\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n dragItem: monitor.getItem()\n}))(connectedBlankContent);\n\nexport const tileSource = {\n canDrag(props) {\n return !props.disabled && !!props.value;\n },\n beginDrag(props) {\n return {\n id: props.targetId,\n value: props.value,\n instanceId: props.instanceId,\n fromChoice: true\n };\n },\n endDrag(props, monitor) {\n // this will be null if it did not drop\n const dropResult = monitor.getDropResult();\n\n if (!dropResult || (dropResult.dropped && !props.duplicates)) {\n const draggedItem = monitor.getItem();\n\n if (draggedItem.fromChoice) {\n props.removeResponse(draggedItem.value);\n }\n }\n }\n};\n\nexport default DragSource('drag-in-the-blank-choice', tileSource, (connect, monitor) => ({\n connectDragSource: connect.dragSource(),\n isDragging: monitor.isDragging()\n}))(DropTile);\n"],"file":"choice.js"}
1
+ {"version":3,"sources":["../../../../src/plugins/respArea/drag-in-the-blank/choice.jsx"],"names":["useStyles","theme","content","border","palette","primary","main","chip","minWidth","correct","incorrect","selected","color","primaryDark","BlankContent","props","handleClick","bind","document","addEventListener","removeEventListener","event","classes","elementRef","className","contains","target","n","children","isDragging","dragItem","isOver","value","label","finalLabel","hasGrip","ref","display","minHeight","background","boxSizing","borderRadius","overflow","position","padding","key","top","left","__html","React","Component","PropTypes","object","func","bool","StyledBlankContent","connectedBlankContent","connectDropTarget","connectDragSource","dragContent","dragEl","over","tileTarget","drop","monitor","draggedItem","getItem","shouldDrop","index","onChange","dropped","canDrop","instanceId","DropTile","connect","dropTarget","tileSource","canDrag","disabled","beginDrag","id","targetId","fromChoice","endDrag","dropResult","getDropResult","duplicates","removeResponse","dragSource"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport isUndefined from 'lodash/isUndefined';\nimport { DragSource, DropTarget } from '@pie-lib/drag';\nimport { color } from '@pie-lib/render-ui';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { withStyles } from '@material-ui/core/styles';\nimport classnames from 'classnames';\n\nimport { GripIcon } from '../icons';\n\nconst useStyles = withStyles(theme => ({\n content: {\n border: `solid 0px ${theme.palette.primary.main}`\n },\n chip: {\n minWidth: '90px'\n },\n correct: {\n border: 'solid 1px green'\n },\n incorrect: {\n border: 'solid 1px red'\n },\n selected: {\n border: `2px solid ${color.primaryDark()} !important`\n }\n}));\n\nexport class BlankContent extends React.Component {\n static propTypes = {\n n: PropTypes.object,\n children: PropTypes.func,\n isDragging: PropTypes.bool,\n isOver: PropTypes.bool,\n dragItem: PropTypes.object,\n value: PropTypes.object,\n classes: PropTypes.object\n };\n\n constructor(props) {\n super(props);\n\n this.handleClick = this.handleClick.bind(this);\n }\n\n componentDidMount() {\n document.addEventListener('click', this.handleClick);\n }\n\n componentWillUnmount() {\n document.removeEventListener('click', this.handleClick);\n }\n\n handleClick(event) {\n const { classes } = this.props;\n\n if (this.elementRef) {\n this.elementRef.className = this.elementRef.contains(event.target) ? classes.selected : '';\n }\n }\n\n componentDidUpdate() {\n if (this.elementRef) {\n renderMath(this.elementRef);\n }\n }\n\n render() {\n const { n, children, isDragging, dragItem, isOver, value } = this.props;\n\n const label = dragItem && isOver ? dragItem.value.value : value.value || '\\u00A0';\n const finalLabel = isDragging ? '\\u00A0' : label;\n const hasGrip = finalLabel !== '\\u00A0';\n\n return (\n <div\n ref={ref => (this.elementRef = ref)}\n style={{\n display: 'inline-flex',\n minWidth: '178px',\n minHeight: '36px',\n background: '#FFF',\n border: '1px solid #C0C3CF',\n boxSizing: 'border-box',\n borderRadius: '3px',\n overflow: 'hidden',\n position: 'relative',\n padding: '8px 8px 8px 35px'\n }}\n data-key={n.key}\n contentEditable={false}\n >\n {hasGrip && (\n <GripIcon\n style={{\n position: 'absolute',\n top: '6px',\n left: '15px',\n color: '#9B9B9B'\n }}\n contentEditable={false}\n />\n )}\n <span\n dangerouslySetInnerHTML={{\n __html: finalLabel\n }}\n />\n {children}\n </div>\n );\n }\n}\n\nconst StyledBlankContent = useStyles(BlankContent);\n\nconst connectedBlankContent = useStyles(({ connectDropTarget, connectDragSource, ...props }) => {\n const { classes, isOver, value } = props;\n const dragContent = <StyledBlankContent {...props} />;\n const dragEl = !value ? dragContent : connectDragSource(<span>{dragContent}</span>);\n const content = (\n <span className={classnames(classes.content, isOver && classes.over)}>{dragEl}</span>\n );\n\n return connectDropTarget ? connectDropTarget(content) : content;\n});\n\nexport const tileTarget = {\n drop(props, monitor) {\n const draggedItem = monitor.getItem();\n const shouldDrop =\n isUndefined(draggedItem.value.index) ||\n isUndefined(props.value.index) ||\n draggedItem.value.index !== props.value.index;\n\n if (shouldDrop) {\n props.onChange(draggedItem.value);\n }\n\n return {\n dropped: shouldDrop\n };\n },\n canDrop(props, monitor) {\n const draggedItem = monitor.getItem();\n\n return draggedItem.instanceId === props.instanceId;\n }\n};\n\nconst DropTile = DropTarget('drag-in-the-blank-choice', tileTarget, (connect, monitor) => ({\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n dragItem: monitor.getItem()\n}))(connectedBlankContent);\n\nexport const tileSource = {\n canDrag(props) {\n return !props.disabled && !!props.value;\n },\n beginDrag(props) {\n return {\n id: props.targetId,\n value: props.value,\n instanceId: props.instanceId,\n fromChoice: true\n };\n },\n endDrag(props, monitor) {\n // this will be null if it did not drop\n const dropResult = monitor.getDropResult();\n\n if (!dropResult || (dropResult.dropped && !props.duplicates)) {\n const draggedItem = monitor.getItem();\n\n if (draggedItem.fromChoice) {\n props.removeResponse(draggedItem.value);\n }\n }\n }\n};\n\nexport default DragSource('drag-in-the-blank-choice', tileSource, (connect, monitor) => ({\n connectDragSource: connect.dragSource(),\n isDragging: monitor.isDragging()\n}))(DropTile);\n"],"file":"choice.js"}
@@ -79,7 +79,7 @@ function ResponseAreaPlugin(opts) {
79
79
  name: 'response_area',
80
80
  toolbar: toolbar,
81
81
  filterPlugins: function filterPlugins(node, plugins) {
82
- if (node.type === 'explicit_constructed_response') {
82
+ if (node.type === 'explicit_constructed_response' || node.type === 'drag_in_the_blank') {
83
83
  return [];
84
84
  }
85
85
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/plugins/respArea/index.jsx"],"names":["log","lastIndexMap","elTypesArray","ResponseAreaPlugin","opts","toolbar","icon","buttonStyles","margin","onClick","value","onChange","change","type","replace","prevIndex","newIndex","newInline","selection","startKey","endKey","insertInline","lastText","document","getLastText","parentNode","getParent","key","index","nodes","indexOf","isVoid","insertNodeByKey","nextText","getNextText","moveFocusTo","moveAnchorTo","customToolbar","respAreaToolbar","supports","node","object","showDone","name","filterPlugins","plugins","filter","p","deleteNode","e","preventDefault","removeNodeByKey","renderNode","props","attributes","n","data","toJSON","forEachDescendant","d","parseInt","get","normalizeNode","addSpacesArray","allElements","filterDescendants","forEach","el","prevText","getPreviousText","lastCharIsNewLine","text","length","push","nr","withoutNormalization","getNode","insertTextByKey","repeat","onDrop","event","editor","closestEl","target","closest","inline","findDescendant","dataset","serialization","deserialize","id","inTable","serialize"],"mappings":"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","sourcesContent":["import React from 'react';\nimport debug from 'debug';\nimport isUndefined from 'lodash/isUndefined';\n\nimport InlineDropdown from './inline-dropdown';\nimport DragInTheBlank from './drag-in-the-blank';\nimport ExplicitConstructedResponse from './explicit-constructed-response';\nimport { getDefaultElement } from './utils';\nimport { ToolbarIcon } from './icons';\n\nconst log = debug('@pie-lib:editable-html:plugins:respArea');\n\nconst lastIndexMap = {};\nconst elTypesArray = ['inline_dropdown', 'explicit_constructed_response', 'drag_in_the_blank'];\n\nexport default function ResponseAreaPlugin(opts) {\n const toolbar = {\n icon: <ToolbarIcon />,\n buttonStyles: {\n margin: '0 20px 0 auto'\n },\n onClick: (value, onChange) => {\n log('[toolbar] onClick');\n const change = value.change();\n const type = opts.type.replace(/-/g, '_');\n const prevIndex = lastIndexMap[type];\n const newIndex = prevIndex === 0 ? prevIndex : prevIndex + 1;\n const newInline = getDefaultElement(opts, newIndex);\n\n lastIndexMap[type] += 1;\n\n if (newInline) {\n if (change.value.selection.startKey || change.value.selection.endKey) {\n change.insertInline(newInline);\n } else {\n // If the markup is empty and there's no focus\n const lastText = value.document.getLastText();\n const parentNode = value.document.getParent(lastText.key);\n\n if (parentNode) {\n const index = parentNode.nodes.indexOf(lastText.key);\n\n if (parentNode.isVoid) return;\n\n change.insertNodeByKey(parentNode.key, index + 1, newInline);\n }\n }\n\n if (newInline.type === 'drag_in_the_blank') {\n const nextText = change.value.document.getNextText(newInline.key);\n\n if (nextText) {\n change.moveFocusTo(nextText.key, 0).moveAnchorTo(nextText.key, 0);\n }\n }\n\n onChange(change);\n }\n },\n customToolbar: opts.respAreaToolbar,\n supports: node => node.object === 'inline' && elTypesArray.indexOf(node.type) >= 0,\n showDone: false\n };\n\n return {\n name: 'response_area',\n toolbar,\n filterPlugins: (node, plugins) => {\n if (node.type === 'explicit_constructed_response') {\n return [];\n }\n\n return plugins.filter(p => p.name !== 'response_area');\n },\n deleteNode: (e, node, value, onChange) => {\n e.preventDefault();\n\n const change = value.change().removeNodeByKey(node.key);\n\n onChange(change);\n },\n renderNode(props) {\n const { attributes, node: n } = props;\n\n if (n.type === 'explicit_constructed_response') {\n const data = n.data.toJSON();\n\n return <ExplicitConstructedResponse attributes={attributes} value={data.value} />;\n }\n\n if (n.type === 'drag_in_the_blank') {\n const data = n.data.toJSON();\n\n return (\n <DragInTheBlank attributes={attributes} data={data} n={n} nodeProps={props} opts={opts} />\n );\n }\n\n if (n.type === 'inline_dropdown') {\n const data = n.data.toJSON();\n\n return <InlineDropdown attributes={attributes} selectedItem={data.value} />;\n }\n },\n onChange(change) {\n const type = opts.type.replace(/-/g, '_');\n\n if (isUndefined(lastIndexMap[type])) {\n lastIndexMap[type] = 0;\n\n change.value.document.forEachDescendant(d => {\n if (d.type === type) {\n const newIndex = parseInt(d.data.get('index'), 10);\n\n if (newIndex > lastIndexMap[type]) {\n lastIndexMap[type] = newIndex;\n }\n }\n });\n }\n },\n normalizeNode: node => {\n if (node.object !== 'document') {\n return;\n }\n\n const addSpacesArray = [];\n\n const allElements = node.filterDescendants(d => elTypesArray.indexOf(d.type) >= 0);\n\n allElements.forEach(el => {\n const prevText = node.getPreviousText(el.key);\n const lastCharIsNewLine = prevText.text[prevText.text.length - 1] === '\\n';\n\n if (prevText.text.length === 0 || lastCharIsNewLine) {\n addSpacesArray.push({\n nr: lastCharIsNewLine ? 1 : 2,\n key: prevText.key\n });\n }\n });\n\n if (!addSpacesArray.length) {\n return;\n }\n\n return change => {\n change.withoutNormalization(() => {\n addSpacesArray.forEach(({ key, nr }) => {\n const node = change.value.document.getNode(key);\n\n change.insertTextByKey(key, node.text.length, '\\u00A0'.repeat(nr));\n });\n });\n };\n },\n onDrop(event, change, editor) {\n const closestEl = event.target.closest('[data-key]');\n const inline = editor.value.document.findDescendant(d => d.key === closestEl.dataset.key);\n\n if (inline.type === 'drag_in_the_blank') {\n return false;\n }\n }\n };\n}\n\nexport const serialization = {\n deserialize(el) {\n const type = el.dataset && el.dataset.type;\n\n switch (type) {\n case 'inline_dropdown':\n return {\n object: 'inline',\n type: 'inline_dropdown',\n isVoid: true,\n data: {\n index: el.dataset.index,\n value: el.dataset.value\n }\n };\n case 'explicit_constructed_response':\n return {\n object: 'inline',\n type: 'explicit_constructed_response',\n isVoid: true,\n data: {\n index: el.dataset.index,\n value: el.dataset.value\n }\n };\n case 'drag_in_the_blank':\n return {\n object: 'inline',\n type: 'drag_in_the_blank',\n isVoid: true,\n data: {\n index: el.dataset.index,\n id: el.dataset.id,\n value: el.dataset.value,\n inTable: el.dataset.inTable\n }\n };\n }\n },\n serialize(object) {\n if (object.object !== 'inline') {\n return;\n }\n\n switch (object.type) {\n case 'inline_dropdown': {\n const data = object.data.toJSON();\n\n return <span data-type=\"inline_dropdown\" data-index={data.index} data-value={data.value} />;\n }\n case 'explicit_constructed_response': {\n const data = object.data.toJSON();\n\n return (\n <span\n data-type=\"explicit_constructed_response\"\n data-index={data.index}\n data-value={data.value}\n />\n );\n }\n case 'drag_in_the_blank': {\n const data = object.data.toJSON();\n\n return (\n <span\n data-type=\"drag_in_the_blank\"\n data-index={data.index}\n data-id={data.id}\n data-value={data.value}\n data-in-table={data.inTable}\n />\n );\n }\n }\n }\n};\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../src/plugins/respArea/index.jsx"],"names":["log","lastIndexMap","elTypesArray","ResponseAreaPlugin","opts","toolbar","icon","buttonStyles","margin","onClick","value","onChange","change","type","replace","prevIndex","newIndex","newInline","selection","startKey","endKey","insertInline","lastText","document","getLastText","parentNode","getParent","key","index","nodes","indexOf","isVoid","insertNodeByKey","nextText","getNextText","moveFocusTo","moveAnchorTo","customToolbar","respAreaToolbar","supports","node","object","showDone","name","filterPlugins","plugins","filter","p","deleteNode","e","preventDefault","removeNodeByKey","renderNode","props","attributes","n","data","toJSON","forEachDescendant","d","parseInt","get","normalizeNode","addSpacesArray","allElements","filterDescendants","forEach","el","prevText","getPreviousText","lastCharIsNewLine","text","length","push","nr","withoutNormalization","getNode","insertTextByKey","repeat","onDrop","event","editor","closestEl","target","closest","inline","findDescendant","dataset","serialization","deserialize","id","inTable","serialize"],"mappings":"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","sourcesContent":["import React from 'react';\nimport debug from 'debug';\nimport isUndefined from 'lodash/isUndefined';\n\nimport InlineDropdown from './inline-dropdown';\nimport DragInTheBlank from './drag-in-the-blank';\nimport ExplicitConstructedResponse from './explicit-constructed-response';\nimport { getDefaultElement } from './utils';\nimport { ToolbarIcon } from './icons';\n\nconst log = debug('@pie-lib:editable-html:plugins:respArea');\n\nconst lastIndexMap = {};\nconst elTypesArray = ['inline_dropdown', 'explicit_constructed_response', 'drag_in_the_blank'];\n\nexport default function ResponseAreaPlugin(opts) {\n const toolbar = {\n icon: <ToolbarIcon />,\n buttonStyles: {\n margin: '0 20px 0 auto'\n },\n onClick: (value, onChange) => {\n log('[toolbar] onClick');\n const change = value.change();\n const type = opts.type.replace(/-/g, '_');\n const prevIndex = lastIndexMap[type];\n const newIndex = prevIndex === 0 ? prevIndex : prevIndex + 1;\n const newInline = getDefaultElement(opts, newIndex);\n\n lastIndexMap[type] += 1;\n\n if (newInline) {\n if (change.value.selection.startKey || change.value.selection.endKey) {\n change.insertInline(newInline);\n } else {\n // If the markup is empty and there's no focus\n const lastText = value.document.getLastText();\n const parentNode = value.document.getParent(lastText.key);\n\n if (parentNode) {\n const index = parentNode.nodes.indexOf(lastText.key);\n\n if (parentNode.isVoid) return;\n\n change.insertNodeByKey(parentNode.key, index + 1, newInline);\n }\n }\n\n if (newInline.type === 'drag_in_the_blank') {\n const nextText = change.value.document.getNextText(newInline.key);\n\n if (nextText) {\n change.moveFocusTo(nextText.key, 0).moveAnchorTo(nextText.key, 0);\n }\n }\n\n onChange(change);\n }\n },\n customToolbar: opts.respAreaToolbar,\n supports: node => node.object === 'inline' && elTypesArray.indexOf(node.type) >= 0,\n showDone: false\n };\n\n return {\n name: 'response_area',\n toolbar,\n filterPlugins: (node, plugins) => {\n if (node.type === 'explicit_constructed_response' || node.type === 'drag_in_the_blank') {\n return [];\n }\n\n return plugins.filter(p => p.name !== 'response_area');\n },\n deleteNode: (e, node, value, onChange) => {\n e.preventDefault();\n\n const change = value.change().removeNodeByKey(node.key);\n\n onChange(change);\n },\n renderNode(props) {\n const { attributes, node: n } = props;\n\n if (n.type === 'explicit_constructed_response') {\n const data = n.data.toJSON();\n\n return <ExplicitConstructedResponse attributes={attributes} value={data.value} />;\n }\n\n if (n.type === 'drag_in_the_blank') {\n const data = n.data.toJSON();\n\n return (\n <DragInTheBlank attributes={attributes} data={data} n={n} nodeProps={props} opts={opts} />\n );\n }\n\n if (n.type === 'inline_dropdown') {\n const data = n.data.toJSON();\n\n return <InlineDropdown attributes={attributes} selectedItem={data.value} />;\n }\n },\n onChange(change) {\n const type = opts.type.replace(/-/g, '_');\n\n if (isUndefined(lastIndexMap[type])) {\n lastIndexMap[type] = 0;\n\n change.value.document.forEachDescendant(d => {\n if (d.type === type) {\n const newIndex = parseInt(d.data.get('index'), 10);\n\n if (newIndex > lastIndexMap[type]) {\n lastIndexMap[type] = newIndex;\n }\n }\n });\n }\n },\n normalizeNode: node => {\n if (node.object !== 'document') {\n return;\n }\n\n const addSpacesArray = [];\n\n const allElements = node.filterDescendants(d => elTypesArray.indexOf(d.type) >= 0);\n\n allElements.forEach(el => {\n const prevText = node.getPreviousText(el.key);\n const lastCharIsNewLine = prevText.text[prevText.text.length - 1] === '\\n';\n\n if (prevText.text.length === 0 || lastCharIsNewLine) {\n addSpacesArray.push({\n nr: lastCharIsNewLine ? 1 : 2,\n key: prevText.key\n });\n }\n });\n\n if (!addSpacesArray.length) {\n return;\n }\n\n return change => {\n change.withoutNormalization(() => {\n addSpacesArray.forEach(({ key, nr }) => {\n const node = change.value.document.getNode(key);\n\n change.insertTextByKey(key, node.text.length, '\\u00A0'.repeat(nr));\n });\n });\n };\n },\n onDrop(event, change, editor) {\n const closestEl = event.target.closest('[data-key]');\n const inline = editor.value.document.findDescendant(d => d.key === closestEl.dataset.key);\n\n if (inline.type === 'drag_in_the_blank') {\n return false;\n }\n }\n };\n}\n\nexport const serialization = {\n deserialize(el) {\n const type = el.dataset && el.dataset.type;\n\n switch (type) {\n case 'inline_dropdown':\n return {\n object: 'inline',\n type: 'inline_dropdown',\n isVoid: true,\n data: {\n index: el.dataset.index,\n value: el.dataset.value\n }\n };\n case 'explicit_constructed_response':\n return {\n object: 'inline',\n type: 'explicit_constructed_response',\n isVoid: true,\n data: {\n index: el.dataset.index,\n value: el.dataset.value\n }\n };\n case 'drag_in_the_blank':\n return {\n object: 'inline',\n type: 'drag_in_the_blank',\n isVoid: true,\n data: {\n index: el.dataset.index,\n id: el.dataset.id,\n value: el.dataset.value,\n inTable: el.dataset.inTable\n }\n };\n }\n },\n serialize(object) {\n if (object.object !== 'inline') {\n return;\n }\n\n switch (object.type) {\n case 'inline_dropdown': {\n const data = object.data.toJSON();\n\n return <span data-type=\"inline_dropdown\" data-index={data.index} data-value={data.value} />;\n }\n case 'explicit_constructed_response': {\n const data = object.data.toJSON();\n\n return (\n <span\n data-type=\"explicit_constructed_response\"\n data-index={data.index}\n data-value={data.value}\n />\n );\n }\n case 'drag_in_the_blank': {\n const data = object.data.toJSON();\n\n return (\n <span\n data-type=\"drag_in_the_blank\"\n data-index={data.index}\n data-id={data.id}\n data-value={data.value}\n data-in-table={data.inTable}\n />\n );\n }\n }\n }\n};\n"],"file":"index.js"}
@@ -29,6 +29,12 @@ var _toStyle = require("to-style");
29
29
 
30
30
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
31
31
 
32
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
33
+
34
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
35
+
36
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
37
+
32
38
  function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
33
39
 
34
40
  var log = (0, _debug["default"])('@pie-lib:editable-html:plugins:table');
@@ -130,12 +136,27 @@ var _default = function _default(opts, toolbarPlugins
130
136
  });
131
137
  };
132
138
 
139
+ core.utils.createTableWithOptions = function (row, columns, extra) {
140
+ var createdTable = core.utils.createTable(row, columns);
141
+
142
+ var newTable = _slate.Block.create(_objectSpread({}, createdTable.toJSON(), {}, extra));
143
+
144
+ return newTable;
145
+ };
146
+
133
147
  core.toolbar = {
134
148
  icon: _react["default"].createElement(_GridOn["default"], null),
135
149
  onClick: function onClick(value, onChange) {
136
- log('insert table');
137
- var c = core.changes.insertTable(value.change(), 2, 2);
138
- onChange(c);
150
+ log('insert table'); // const c = core.changes.insertTable(value.change(), 2, 2);
151
+
152
+ var change = value.change();
153
+ var newTable = core.utils.createTableWithOptions(2, 2, {
154
+ data: {
155
+ border: '1'
156
+ }
157
+ });
158
+ change.insertBlock(newTable);
159
+ onChange(change);
139
160
  },
140
161
  supports: function supports(node, value) {
141
162
  return node && node.object === 'block' && core.utils.isSelectionInTable(value);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/plugins/table/index.jsx"],"names":["log","Table","table","props","nodeAttributes","dataToAttributes","node","data","classes","attributes","onFocus","onBlur","children","propTypes","PropTypes","object","func","SlatePropTypes","oneOfType","arrayOf","isRequired","TableRow","TableCell","td","minWidth","Tag","get","header","opts","toolbarPlugins","core","typeContent","schema","blocks","Object","keys","forEach","key","block","parent","nodes","types","type","objects","utils","getTableBlock","containerNode","getDescendant","ancestors","getAncestors","push","findLast","p","toolbar","icon","onClick","value","onChange","c","changes","insertTable","change","supports","isSelectionInTable","customToolbar","onToolbarDone","tableBlock","document","hasBorder","addRow","insertRow","addColumn","insertColumn","removeRow","removeColumn","removeTable","toggleBorder","update","set","setNodeByKey","onDone","Tb","Node","normalizeNode","shouldAddTextAfterNode","indexToNotHaveTableOn","size","indexOfLastTable","findLastIndex","d","tableNode","tableJSON","toJSON","removeNodeByKey","newBlock","Block","create","insertBlock","withoutNormalization","prevText","getPreviousText","moveFocusTo","text","length","moveAnchorTo","renderNode","parseStyleString","s","regex","match","result","exec","trim","reactAttributes","o","camelize","addUnits","attributesToMap","el","acc","attribute","getAttribute","styleString","reactStyleObject","reduce","v","name","cellAttributes","serialization","deserialize","next","tag","tagName","toLowerCase","Array","from","childNodes","serialize"],"mappings":"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","sourcesContent":["import React from 'react';\nimport EditTable from 'slate-edit-table';\nimport { Block, Inline } from 'slate';\nimport debug from 'debug';\nimport GridOn from '@material-ui/icons/GridOn';\nimport TableToolbar from './table-toolbar';\nimport PropTypes from 'prop-types';\nimport SlatePropTypes from 'slate-prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport convert from 'react-attr-converter';\nimport { object as toStyleObject } from 'to-style';\n\nconst log = debug('@pie-lib:editable-html:plugins:table');\n\nconst Table = withStyles(() => ({\n table: {}\n}))(props => {\n const nodeAttributes = dataToAttributes(props.node.data);\n\n return (\n <table\n className={props.classes.table}\n {...props.attributes}\n {...nodeAttributes}\n onFocus={props.onFocus}\n onBlur={props.onBlur}\n >\n <tbody>{props.children}</tbody>\n </table>\n );\n});\n\nTable.propTypes = {\n attributes: PropTypes.object,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n node: SlatePropTypes.node,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired\n};\n\nconst TableRow = props => <tr {...props.attributes}>{props.children}</tr>;\n\nTableRow.propTypes = {\n attributes: PropTypes.object,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired\n};\n\nconst TableCell = withStyles(() => ({\n td: {\n minWidth: '25px'\n }\n}))(props => {\n const Tag = props.node.data.get('header') ? 'th' : 'td';\n\n const nodeAttributes = dataToAttributes(props.node.data);\n delete nodeAttributes.header;\n\n return (\n <Tag\n {...props.attributes}\n {...nodeAttributes}\n colSpan={props.node.data.get('colspan')}\n className={props.classes[Tag]}\n onFocus={props.onFocus}\n onBlur={props.onBlur}\n >\n {props.children}\n </Tag>\n );\n});\n\nTableCell.propTypes = {\n attributes: PropTypes.object,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired\n};\n\nexport default (opts, toolbarPlugins /* : {toolbar: {}}[] */) => {\n const core = EditTable({\n typeContent: 'div'\n });\n\n // fix outdated schema\n\n if (core.schema && core.schema.blocks) {\n Object.keys(core.schema.blocks).forEach(key => {\n const block = core.schema.blocks[key];\n\n if (block.parent) {\n if (block.nodes[0].types) {\n block.nodes[0] = {\n type: block.nodes[0].types[0]\n };\n }\n\n if (block.nodes[0].objects) {\n block.nodes[0] = {\n object: block.nodes[0].objects[0]\n };\n }\n\n block.parent = {\n type: block.parent.types[0]\n };\n } else {\n block.nodes[0] = { type: block.nodes[0].types[0] };\n }\n });\n }\n\n core.utils.getTableBlock = (containerNode, key) => {\n const node = containerNode.getDescendant(key);\n const ancestors = containerNode.getAncestors(key).push(node);\n return ancestors.findLast(p => p.type === 'table');\n };\n\n core.toolbar = {\n icon: <GridOn />,\n onClick: (value, onChange) => {\n log('insert table');\n const c = core.changes.insertTable(value.change(), 2, 2);\n onChange(c);\n },\n supports: (node, value) =>\n node && node.object === 'block' && core.utils.isSelectionInTable(value),\n /**\n * Note - the node may not be a table node - it may be a node inside a table.\n */\n customToolbar: (node, value, onToolbarDone) => {\n log('[customToolbar] node.data: ', node.data);\n\n const tableBlock = core.utils.getTableBlock(value.document, node.key);\n log('[customToolbar] tableBlock: ', tableBlock);\n\n const hasBorder = () =>\n tableBlock.data.get('border') && tableBlock.data.get('border') !== '0';\n const addRow = () => {\n const change = core.changes.insertRow(value.change());\n onToolbarDone(change, false);\n };\n\n const addColumn = () => {\n const change = core.changes.insertColumn(value.change());\n onToolbarDone(change, false);\n };\n\n const removeRow = () => {\n const change = core.changes.removeRow(value.change());\n onToolbarDone(change, false);\n };\n\n const removeColumn = () => {\n const change = core.changes.removeColumn(value.change());\n onToolbarDone(change, false);\n };\n\n const removeTable = () => {\n const change = core.changes.removeTable(value.change());\n onToolbarDone(change, false);\n };\n\n const toggleBorder = () => {\n const { data } = tableBlock;\n const update = data.set('border', hasBorder() ? '0' : '1');\n log('[toggleBorder] update: ', update);\n const change = value.change().setNodeByKey(tableBlock.key, { data: update });\n onToolbarDone(change, false);\n };\n\n const onDone = () => {\n log('[onDone] call onToolbarDone...');\n onToolbarDone(null, true);\n };\n\n const Tb = () => (\n <TableToolbar\n plugins={toolbarPlugins}\n onChange={c => onToolbarDone(c, false)}\n value={value}\n onAddRow={addRow}\n onRemoveRow={removeRow}\n onAddColumn={addColumn}\n onRemoveColumn={removeColumn}\n onRemoveTable={removeTable}\n hasBorder={hasBorder()}\n onToggleBorder={toggleBorder}\n onDone={onDone}\n />\n );\n return Tb;\n }\n };\n\n const Node = props => {\n switch (props.node.type) {\n case 'table':\n return <Table {...props} onFocus={opts.onFocus} onBlur={opts.onBlur} />;\n case 'table_row':\n return <TableRow {...props} />;\n case 'table_cell':\n return <TableCell {...props} onFocus={opts.onFocus} onBlur={opts.onBlur} />;\n default:\n return null;\n }\n };\n Node.propTypes = {\n node: PropTypes.object\n };\n\n core.normalizeNode = node => {\n if (node.object !== 'document') {\n return;\n }\n\n let shouldAddTextAfterNode = false;\n const indexToNotHaveTableOn = node.nodes.size - 1;\n const indexOfLastTable = node.nodes.findLastIndex(d => d.type === 'table');\n\n // if the last table in the document is of type table, we need to do the change\n if (indexOfLastTable === indexToNotHaveTableOn) {\n shouldAddTextAfterNode = true;\n }\n\n if (!shouldAddTextAfterNode) {\n return;\n }\n\n const tableNode = node.nodes.get(indexOfLastTable);\n\n return change => {\n if (shouldAddTextAfterNode) {\n const tableJSON = tableNode.toJSON();\n\n // we remove the table node because otherwise we can't add the empty block after it\n // we need a block that contains text in order to do it\n change.removeNodeByKey(tableNode.key);\n\n const newBlock = Block.create({\n object: 'block',\n type: 'div'\n });\n\n // we add an empty block but that it's going to be normalized\n // because it will add the empty text to it like it should\n change.insertBlock(newBlock);\n\n change.withoutNormalization(() => {\n // we do these changes without normalization\n\n // we get the text previous to the new block added\n const prevText = change.value.document.getPreviousText(newBlock.key);\n\n if (prevText) {\n // we move focus to the previous text\n change\n .moveFocusTo(prevText.key, prevText.text.length)\n .moveAnchorTo(prevText.key, prevText.text.length);\n }\n\n // we insert the table block between the first block with text and the last block with text\n change.insertBlock(tableJSON);\n });\n }\n };\n };\n\n core.renderNode = Node;\n\n return core;\n};\n\nexport const parseStyleString = s => {\n const regex = /([\\w-]*)\\s*:\\s*([^;]*)/g;\n let match;\n const result = {};\n while ((match = regex.exec(s))) {\n result[match[1]] = match[2].trim();\n }\n return result;\n};\n\nexport const reactAttributes = o => toStyleObject(o, { camelize: true, addUnits: false });\n\nconst attributesToMap = el => (acc, attribute) => {\n const value = el.getAttribute(attribute);\n if (value) {\n if (attribute === 'style') {\n const styleString = el.getAttribute(attribute);\n const reactStyleObject = reactAttributes(parseStyleString(styleString));\n acc['style'] = reactStyleObject;\n } else {\n acc[attribute] = el.getAttribute(attribute);\n }\n }\n return acc;\n};\n\nconst dataToAttributes = data => {\n if (!data || !data.get) {\n return {};\n }\n\n return data.reduce((acc, v, name) => {\n if (v) {\n acc[convert(name)] = v;\n }\n return acc;\n }, {});\n};\n\nconst attributes = ['border', 'cellpadding', 'cellspacing', 'class', 'style'];\n\nconst cellAttributes = ['colspan', 'rowspan', 'class', 'style'];\n\nexport const serialization = {\n deserialize(el, next) {\n const tag = el.tagName.toLowerCase();\n\n switch (tag) {\n case 'table': {\n const children =\n el.children.length === 1 && el.children[0].tagName.toLowerCase() === 'tbody'\n ? el.children[0].children\n : el.children;\n const c = Array.from(children);\n\n return {\n object: 'block',\n type: 'table',\n nodes: next(c),\n data: attributes.reduce(attributesToMap(el), {})\n };\n }\n case 'th': {\n return {\n object: 'block',\n type: 'table_cell',\n nodes: next(el.childNodes),\n data: cellAttributes.reduce(attributesToMap(el), { header: true })\n };\n }\n case 'tr': {\n return {\n object: 'block',\n type: 'table_row',\n nodes: next(Array.from(el.children))\n };\n }\n case 'td': {\n return {\n object: 'block',\n type: 'table_cell',\n nodes: next(Array.from(el.childNodes)),\n data: cellAttributes.reduce(attributesToMap(el), { header: false })\n };\n }\n }\n },\n serialize(object, children) {\n if (object.object !== 'block') {\n return;\n }\n\n switch (object.type) {\n case 'table': {\n const attributes = dataToAttributes(object.data);\n return (\n <table {...attributes}>\n <tbody>{children}</tbody>\n </table>\n );\n }\n case 'table_row': {\n return <tr>{children}</tr>;\n }\n case 'table_cell': {\n const attributes = dataToAttributes(object.data);\n delete attributes.header;\n if (object.data.get('header')) {\n return <th {...attributes}>{children}</th>;\n } else {\n return <td {...attributes}>{children}</td>;\n }\n }\n }\n }\n};\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../src/plugins/table/index.jsx"],"names":["log","Table","table","props","nodeAttributes","dataToAttributes","node","data","classes","attributes","onFocus","onBlur","children","propTypes","PropTypes","object","func","SlatePropTypes","oneOfType","arrayOf","isRequired","TableRow","TableCell","td","minWidth","Tag","get","header","opts","toolbarPlugins","core","typeContent","schema","blocks","Object","keys","forEach","key","block","parent","nodes","types","type","objects","utils","getTableBlock","containerNode","getDescendant","ancestors","getAncestors","push","findLast","p","createTableWithOptions","row","columns","extra","createdTable","createTable","newTable","Block","create","toJSON","toolbar","icon","onClick","value","onChange","change","border","insertBlock","supports","isSelectionInTable","customToolbar","onToolbarDone","tableBlock","document","hasBorder","addRow","changes","insertRow","addColumn","insertColumn","removeRow","removeColumn","removeTable","toggleBorder","update","set","setNodeByKey","onDone","Tb","c","Node","normalizeNode","shouldAddTextAfterNode","indexToNotHaveTableOn","size","indexOfLastTable","findLastIndex","d","tableNode","tableJSON","removeNodeByKey","newBlock","withoutNormalization","prevText","getPreviousText","moveFocusTo","text","length","moveAnchorTo","renderNode","parseStyleString","s","regex","match","result","exec","trim","reactAttributes","o","camelize","addUnits","attributesToMap","el","acc","attribute","getAttribute","styleString","reactStyleObject","reduce","v","name","cellAttributes","serialization","deserialize","next","tag","tagName","toLowerCase","Array","from","childNodes","serialize"],"mappings":"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","sourcesContent":["import React from 'react';\nimport EditTable from 'slate-edit-table';\nimport { Block } from 'slate';\nimport debug from 'debug';\nimport GridOn from '@material-ui/icons/GridOn';\nimport TableToolbar from './table-toolbar';\nimport PropTypes from 'prop-types';\nimport SlatePropTypes from 'slate-prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport convert from 'react-attr-converter';\nimport { object as toStyleObject } from 'to-style';\n\nconst log = debug('@pie-lib:editable-html:plugins:table');\n\nconst Table = withStyles(() => ({\n table: {}\n}))(props => {\n const nodeAttributes = dataToAttributes(props.node.data);\n\n return (\n <table\n className={props.classes.table}\n {...props.attributes}\n {...nodeAttributes}\n onFocus={props.onFocus}\n onBlur={props.onBlur}\n >\n <tbody>{props.children}</tbody>\n </table>\n );\n});\n\nTable.propTypes = {\n attributes: PropTypes.object,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n node: SlatePropTypes.node,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired\n};\n\nconst TableRow = props => <tr {...props.attributes}>{props.children}</tr>;\n\nTableRow.propTypes = {\n attributes: PropTypes.object,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired\n};\n\nconst TableCell = withStyles(() => ({\n td: {\n minWidth: '25px'\n }\n}))(props => {\n const Tag = props.node.data.get('header') ? 'th' : 'td';\n\n const nodeAttributes = dataToAttributes(props.node.data);\n delete nodeAttributes.header;\n\n return (\n <Tag\n {...props.attributes}\n {...nodeAttributes}\n colSpan={props.node.data.get('colspan')}\n className={props.classes[Tag]}\n onFocus={props.onFocus}\n onBlur={props.onBlur}\n >\n {props.children}\n </Tag>\n );\n});\n\nTableCell.propTypes = {\n attributes: PropTypes.object,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired\n};\n\nexport default (opts, toolbarPlugins /* : {toolbar: {}}[] */) => {\n const core = EditTable({\n typeContent: 'div'\n });\n\n // fix outdated schema\n\n if (core.schema && core.schema.blocks) {\n Object.keys(core.schema.blocks).forEach(key => {\n const block = core.schema.blocks[key];\n\n if (block.parent) {\n if (block.nodes[0].types) {\n block.nodes[0] = {\n type: block.nodes[0].types[0]\n };\n }\n\n if (block.nodes[0].objects) {\n block.nodes[0] = {\n object: block.nodes[0].objects[0]\n };\n }\n\n block.parent = {\n type: block.parent.types[0]\n };\n } else {\n block.nodes[0] = { type: block.nodes[0].types[0] };\n }\n });\n }\n\n core.utils.getTableBlock = (containerNode, key) => {\n const node = containerNode.getDescendant(key);\n const ancestors = containerNode.getAncestors(key).push(node);\n return ancestors.findLast(p => p.type === 'table');\n };\n\n core.utils.createTableWithOptions = (row, columns, extra) => {\n const createdTable = core.utils.createTable(row, columns);\n const newTable = Block.create({\n ...createdTable.toJSON(),\n ...extra\n });\n\n return newTable;\n };\n\n core.toolbar = {\n icon: <GridOn />,\n onClick: (value, onChange) => {\n log('insert table');\n // const c = core.changes.insertTable(value.change(), 2, 2);\n const change = value.change();\n const newTable = core.utils.createTableWithOptions(2, 2, {\n data: {\n border: '1'\n }\n });\n\n change.insertBlock(newTable);\n onChange(change);\n },\n supports: (node, value) =>\n node && node.object === 'block' && core.utils.isSelectionInTable(value),\n /**\n * Note - the node may not be a table node - it may be a node inside a table.\n */\n customToolbar: (node, value, onToolbarDone) => {\n log('[customToolbar] node.data: ', node.data);\n\n const tableBlock = core.utils.getTableBlock(value.document, node.key);\n log('[customToolbar] tableBlock: ', tableBlock);\n\n const hasBorder = () =>\n tableBlock.data.get('border') && tableBlock.data.get('border') !== '0';\n const addRow = () => {\n const change = core.changes.insertRow(value.change());\n onToolbarDone(change, false);\n };\n\n const addColumn = () => {\n const change = core.changes.insertColumn(value.change());\n onToolbarDone(change, false);\n };\n\n const removeRow = () => {\n const change = core.changes.removeRow(value.change());\n onToolbarDone(change, false);\n };\n\n const removeColumn = () => {\n const change = core.changes.removeColumn(value.change());\n onToolbarDone(change, false);\n };\n\n const removeTable = () => {\n const change = core.changes.removeTable(value.change());\n onToolbarDone(change, false);\n };\n\n const toggleBorder = () => {\n const { data } = tableBlock;\n const update = data.set('border', hasBorder() ? '0' : '1');\n log('[toggleBorder] update: ', update);\n const change = value.change().setNodeByKey(tableBlock.key, { data: update });\n onToolbarDone(change, false);\n };\n\n const onDone = () => {\n log('[onDone] call onToolbarDone...');\n onToolbarDone(null, true);\n };\n\n const Tb = () => (\n <TableToolbar\n plugins={toolbarPlugins}\n onChange={c => onToolbarDone(c, false)}\n value={value}\n onAddRow={addRow}\n onRemoveRow={removeRow}\n onAddColumn={addColumn}\n onRemoveColumn={removeColumn}\n onRemoveTable={removeTable}\n hasBorder={hasBorder()}\n onToggleBorder={toggleBorder}\n onDone={onDone}\n />\n );\n return Tb;\n }\n };\n\n const Node = props => {\n switch (props.node.type) {\n case 'table':\n return <Table {...props} onFocus={opts.onFocus} onBlur={opts.onBlur} />;\n case 'table_row':\n return <TableRow {...props} />;\n case 'table_cell':\n return <TableCell {...props} onFocus={opts.onFocus} onBlur={opts.onBlur} />;\n default:\n return null;\n }\n };\n Node.propTypes = {\n node: PropTypes.object\n };\n\n core.normalizeNode = node => {\n if (node.object !== 'document') {\n return;\n }\n\n let shouldAddTextAfterNode = false;\n const indexToNotHaveTableOn = node.nodes.size - 1;\n const indexOfLastTable = node.nodes.findLastIndex(d => d.type === 'table');\n\n // if the last table in the document is of type table, we need to do the change\n if (indexOfLastTable === indexToNotHaveTableOn) {\n shouldAddTextAfterNode = true;\n }\n\n if (!shouldAddTextAfterNode) {\n return;\n }\n\n const tableNode = node.nodes.get(indexOfLastTable);\n\n return change => {\n if (shouldAddTextAfterNode) {\n const tableJSON = tableNode.toJSON();\n\n // we remove the table node because otherwise we can't add the empty block after it\n // we need a block that contains text in order to do it\n change.removeNodeByKey(tableNode.key);\n\n const newBlock = Block.create({\n object: 'block',\n type: 'div'\n });\n\n // we add an empty block but that it's going to be normalized\n // because it will add the empty text to it like it should\n change.insertBlock(newBlock);\n\n change.withoutNormalization(() => {\n // we do these changes without normalization\n\n // we get the text previous to the new block added\n const prevText = change.value.document.getPreviousText(newBlock.key);\n\n if (prevText) {\n // we move focus to the previous text\n change\n .moveFocusTo(prevText.key, prevText.text.length)\n .moveAnchorTo(prevText.key, prevText.text.length);\n }\n\n // we insert the table block between the first block with text and the last block with text\n change.insertBlock(tableJSON);\n });\n }\n };\n };\n\n core.renderNode = Node;\n\n return core;\n};\n\nexport const parseStyleString = s => {\n const regex = /([\\w-]*)\\s*:\\s*([^;]*)/g;\n let match;\n const result = {};\n while ((match = regex.exec(s))) {\n result[match[1]] = match[2].trim();\n }\n return result;\n};\n\nexport const reactAttributes = o => toStyleObject(o, { camelize: true, addUnits: false });\n\nconst attributesToMap = el => (acc, attribute) => {\n const value = el.getAttribute(attribute);\n if (value) {\n if (attribute === 'style') {\n const styleString = el.getAttribute(attribute);\n const reactStyleObject = reactAttributes(parseStyleString(styleString));\n acc['style'] = reactStyleObject;\n } else {\n acc[attribute] = el.getAttribute(attribute);\n }\n }\n return acc;\n};\n\nconst dataToAttributes = data => {\n if (!data || !data.get) {\n return {};\n }\n\n return data.reduce((acc, v, name) => {\n if (v) {\n acc[convert(name)] = v;\n }\n return acc;\n }, {});\n};\n\nconst attributes = ['border', 'cellpadding', 'cellspacing', 'class', 'style'];\n\nconst cellAttributes = ['colspan', 'rowspan', 'class', 'style'];\n\nexport const serialization = {\n deserialize(el, next) {\n const tag = el.tagName.toLowerCase();\n\n switch (tag) {\n case 'table': {\n const children =\n el.children.length === 1 && el.children[0].tagName.toLowerCase() === 'tbody'\n ? el.children[0].children\n : el.children;\n const c = Array.from(children);\n\n return {\n object: 'block',\n type: 'table',\n nodes: next(c),\n data: attributes.reduce(attributesToMap(el), {})\n };\n }\n case 'th': {\n return {\n object: 'block',\n type: 'table_cell',\n nodes: next(el.childNodes),\n data: cellAttributes.reduce(attributesToMap(el), { header: true })\n };\n }\n case 'tr': {\n return {\n object: 'block',\n type: 'table_row',\n nodes: next(Array.from(el.children))\n };\n }\n case 'td': {\n return {\n object: 'block',\n type: 'table_cell',\n nodes: next(Array.from(el.childNodes)),\n data: cellAttributes.reduce(attributesToMap(el), { header: false })\n };\n }\n }\n },\n serialize(object, children) {\n if (object.object !== 'block') {\n return;\n }\n\n switch (object.type) {\n case 'table': {\n const attributes = dataToAttributes(object.data);\n return (\n <table {...attributes}>\n <tbody>{children}</tbody>\n </table>\n );\n }\n case 'table_row': {\n return <tr>{children}</tr>;\n }\n case 'table_cell': {\n const attributes = dataToAttributes(object.data);\n delete attributes.header;\n if (object.data.get('header')) {\n return <th {...attributes}>{children}</th>;\n } else {\n return <td {...attributes}>{children}</td>;\n }\n }\n }\n }\n};\n"],"file":"index.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pie-lib/editable-html",
3
- "version": "7.17.10",
3
+ "version": "7.17.14",
4
4
  "description": "",
5
5
  "license": "ISC",
6
6
  "main": "lib/index.js",
@@ -11,9 +11,9 @@
11
11
  "@material-ui/icons": "^3.0.2",
12
12
  "@material-ui/styles": "^3.0.0-alpha.10",
13
13
  "@pie-lib/drag": "^1.1.52",
14
- "@pie-lib/math-rendering": "^2.3.11",
15
- "@pie-lib/math-toolbar": "^1.8.5",
16
- "@pie-lib/render-ui": "^4.12.2",
14
+ "@pie-lib/math-rendering": "^2.3.12",
15
+ "@pie-lib/math-toolbar": "^1.8.6",
16
+ "@pie-lib/render-ui": "^4.12.4",
17
17
  "change-case": "^3.0.2",
18
18
  "classnames": "^2.2.6",
19
19
  "debug": "^4.1.1",
@@ -46,6 +46,6 @@
46
46
  "publishConfig": {
47
47
  "access": "public"
48
48
  },
49
- "gitHead": "b135c614cb58815bb0d35bcca6619e36a4c2da26",
49
+ "gitHead": "e5b1861ebd9022e70d0f441e46e06c63caf3f02c",
50
50
  "scripts": {}
51
51
  }
package/src/editor.jsx CHANGED
@@ -587,7 +587,7 @@ const styles = {
587
587
  color: color.text(),
588
588
  backgroundColor: color.background()
589
589
  },
590
- '& tr': {
590
+ '& table:not([border="1"]) tr': {
591
591
  borderTop: '1px solid #dfe2e5'
592
592
  // TODO perhaps secondary color for background, for now disable
593
593
  // '&:nth-child(2n)': {
@@ -595,9 +595,11 @@ const styles = {
595
595
  // }
596
596
  },
597
597
  '& td, th': {
598
- border: '1px solid #dfe2e5',
599
598
  padding: '.6em 1em',
600
599
  textAlign: 'center'
600
+ },
601
+ '& table:not([border="1"]) td, th': {
602
+ border: '1px solid #dfe2e5'
601
603
  }
602
604
  },
603
605
  toolbarOnTop: {
@@ -2,6 +2,7 @@ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import isUndefined from 'lodash/isUndefined';
4
4
  import { DragSource, DropTarget } from '@pie-lib/drag';
5
+ import { color } from '@pie-lib/render-ui';
5
6
  import { renderMath } from '@pie-lib/math-rendering';
6
7
  import { withStyles } from '@material-ui/core/styles';
7
8
  import classnames from 'classnames';
@@ -20,6 +21,9 @@ const useStyles = withStyles(theme => ({
20
21
  },
21
22
  incorrect: {
22
23
  border: 'solid 1px red'
24
+ },
25
+ selected: {
26
+ border: `2px solid ${color.primaryDark()} !important`
23
27
  }
24
28
  }));
25
29
 
@@ -30,9 +34,32 @@ export class BlankContent extends React.Component {
30
34
  isDragging: PropTypes.bool,
31
35
  isOver: PropTypes.bool,
32
36
  dragItem: PropTypes.object,
33
- value: PropTypes.object
37
+ value: PropTypes.object,
38
+ classes: PropTypes.object
34
39
  };
35
40
 
41
+ constructor(props) {
42
+ super(props);
43
+
44
+ this.handleClick = this.handleClick.bind(this);
45
+ }
46
+
47
+ componentDidMount() {
48
+ document.addEventListener('click', this.handleClick);
49
+ }
50
+
51
+ componentWillUnmount() {
52
+ document.removeEventListener('click', this.handleClick);
53
+ }
54
+
55
+ handleClick(event) {
56
+ const { classes } = this.props;
57
+
58
+ if (this.elementRef) {
59
+ this.elementRef.className = this.elementRef.contains(event.target) ? classes.selected : '';
60
+ }
61
+ }
62
+
36
63
  componentDidUpdate() {
37
64
  if (this.elementRef) {
38
65
  renderMath(this.elementRef);
@@ -66,7 +66,7 @@ export default function ResponseAreaPlugin(opts) {
66
66
  name: 'response_area',
67
67
  toolbar,
68
68
  filterPlugins: (node, plugins) => {
69
- if (node.type === 'explicit_constructed_response') {
69
+ if (node.type === 'explicit_constructed_response' || node.type === 'drag_in_the_blank') {
70
70
  return [];
71
71
  }
72
72
 
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import EditTable from 'slate-edit-table';
3
- import { Block, Inline } from 'slate';
3
+ import { Block } from 'slate';
4
4
  import debug from 'debug';
5
5
  import GridOn from '@material-ui/icons/GridOn';
6
6
  import TableToolbar from './table-toolbar';
@@ -117,12 +117,30 @@ export default (opts, toolbarPlugins /* : {toolbar: {}}[] */) => {
117
117
  return ancestors.findLast(p => p.type === 'table');
118
118
  };
119
119
 
120
+ core.utils.createTableWithOptions = (row, columns, extra) => {
121
+ const createdTable = core.utils.createTable(row, columns);
122
+ const newTable = Block.create({
123
+ ...createdTable.toJSON(),
124
+ ...extra
125
+ });
126
+
127
+ return newTable;
128
+ };
129
+
120
130
  core.toolbar = {
121
131
  icon: <GridOn />,
122
132
  onClick: (value, onChange) => {
123
133
  log('insert table');
124
- const c = core.changes.insertTable(value.change(), 2, 2);
125
- onChange(c);
134
+ // const c = core.changes.insertTable(value.change(), 2, 2);
135
+ const change = value.change();
136
+ const newTable = core.utils.createTableWithOptions(2, 2, {
137
+ data: {
138
+ border: '1'
139
+ }
140
+ });
141
+
142
+ change.insertBlock(newTable);
143
+ onChange(change);
126
144
  },
127
145
  supports: (node, value) =>
128
146
  node && node.object === 'block' && core.utils.isSelectionInTable(value),