@pie-lib/editable-html 9.3.1-next.53 → 9.4.0

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.
Files changed (75) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/lib/editor.js +244 -114
  3. package/lib/editor.js.map +1 -1
  4. package/lib/index.js +51 -5
  5. package/lib/index.js.map +1 -1
  6. package/lib/parse-html.js +5 -6
  7. package/lib/parse-html.js.map +1 -1
  8. package/lib/plugins/characters/custom-popper.js +12 -2
  9. package/lib/plugins/characters/custom-popper.js.map +1 -1
  10. package/lib/plugins/characters/index.js +50 -3
  11. package/lib/plugins/characters/index.js.map +1 -1
  12. package/lib/plugins/characters/utils.js.map +1 -1
  13. package/lib/plugins/image/alt-dialog.js +26 -0
  14. package/lib/plugins/image/alt-dialog.js.map +1 -1
  15. package/lib/plugins/image/component.js +82 -29
  16. package/lib/plugins/image/component.js.map +1 -1
  17. package/lib/plugins/image/image-toolbar.js +45 -7
  18. package/lib/plugins/image/image-toolbar.js.map +1 -1
  19. package/lib/plugins/image/index.js +41 -2
  20. package/lib/plugins/image/index.js.map +1 -1
  21. package/lib/plugins/image/insert-image-handler.js +22 -2
  22. package/lib/plugins/image/insert-image-handler.js.map +1 -1
  23. package/lib/plugins/index.js +34 -13
  24. package/lib/plugins/index.js.map +1 -1
  25. package/lib/plugins/list/index.js +42 -13
  26. package/lib/plugins/list/index.js.map +1 -1
  27. package/lib/plugins/math/index.js +75 -30
  28. package/lib/plugins/math/index.js.map +1 -1
  29. package/lib/plugins/media/index.js +75 -18
  30. package/lib/plugins/media/index.js.map +1 -1
  31. package/lib/plugins/media/media-dialog.js +188 -100
  32. package/lib/plugins/media/media-dialog.js.map +1 -1
  33. package/lib/plugins/media/media-toolbar.js +24 -4
  34. package/lib/plugins/media/media-toolbar.js.map +1 -1
  35. package/lib/plugins/media/media-wrapper.js +29 -5
  36. package/lib/plugins/media/media-wrapper.js.map +1 -1
  37. package/lib/plugins/respArea/drag-in-the-blank/choice.js +50 -10
  38. package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +1 -1
  39. package/lib/plugins/respArea/drag-in-the-blank/index.js +18 -4
  40. package/lib/plugins/respArea/drag-in-the-blank/index.js.map +1 -1
  41. package/lib/plugins/respArea/explicit-constructed-response/index.js +8 -2
  42. package/lib/plugins/respArea/explicit-constructed-response/index.js.map +1 -1
  43. package/lib/plugins/respArea/icons/index.js +18 -1
  44. package/lib/plugins/respArea/icons/index.js.map +1 -1
  45. package/lib/plugins/respArea/index.js +47 -1
  46. package/lib/plugins/respArea/index.js.map +1 -1
  47. package/lib/plugins/respArea/inline-dropdown/index.js +8 -1
  48. package/lib/plugins/respArea/inline-dropdown/index.js.map +1 -1
  49. package/lib/plugins/respArea/utils.js +22 -0
  50. package/lib/plugins/respArea/utils.js.map +1 -1
  51. package/lib/plugins/table/icons/index.js +7 -0
  52. package/lib/plugins/table/icons/index.js.map +1 -1
  53. package/lib/plugins/table/index.js +94 -15
  54. package/lib/plugins/table/index.js.map +1 -1
  55. package/lib/plugins/table/table-toolbar.js +43 -11
  56. package/lib/plugins/table/table-toolbar.js.map +1 -1
  57. package/lib/plugins/toolbar/default-toolbar.js +30 -8
  58. package/lib/plugins/toolbar/default-toolbar.js.map +1 -1
  59. package/lib/plugins/toolbar/done-button.js +9 -1
  60. package/lib/plugins/toolbar/done-button.js.map +1 -1
  61. package/lib/plugins/toolbar/editor-and-toolbar.js +48 -18
  62. package/lib/plugins/toolbar/editor-and-toolbar.js.map +1 -1
  63. package/lib/plugins/toolbar/index.js +5 -0
  64. package/lib/plugins/toolbar/index.js.map +1 -1
  65. package/lib/plugins/toolbar/toolbar-buttons.js +39 -8
  66. package/lib/plugins/toolbar/toolbar-buttons.js.map +1 -1
  67. package/lib/plugins/toolbar/toolbar.js +67 -19
  68. package/lib/plugins/toolbar/toolbar.js.map +1 -1
  69. package/lib/plugins/utils.js +15 -0
  70. package/lib/plugins/utils.js.map +1 -1
  71. package/lib/serialization.js +69 -8
  72. package/lib/serialization.js.map +1 -1
  73. package/lib/theme.js.map +1 -1
  74. package/package.json +4 -4
  75. package/src/plugins/media/index.jsx +1 -0
@@ -1,17 +1,26 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.onValueChange = exports.onRemoveResponse = exports["default"] = void 0;
9
+
8
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+
9
12
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+
10
14
  var _react = _interopRequireDefault(require("react"));
15
+
11
16
  var _propTypes = _interopRequireDefault(require("prop-types"));
17
+
12
18
  var _choice = _interopRequireDefault(require("./choice"));
19
+
13
20
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
21
+
14
22
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
23
+
15
24
  var onValueChange = function onValueChange(nodeProps, n, value) {
16
25
  var val = nodeProps.editor.value;
17
26
  var change = val.change();
@@ -24,7 +33,9 @@ var onValueChange = function onValueChange(nodeProps, n, value) {
24
33
  nodeProps.editor.props.onEditingDone();
25
34
  });
26
35
  };
36
+
27
37
  exports.onValueChange = onValueChange;
38
+
28
39
  var onRemoveResponse = function onRemoveResponse(nodeProps, value) {
29
40
  var val = nodeProps.editor.value;
30
41
  var change = val.change();
@@ -40,13 +51,15 @@ var onRemoveResponse = function onRemoveResponse(nodeProps, value) {
40
51
  nodeProps.editor.props.onEditingDone();
41
52
  });
42
53
  };
54
+
43
55
  exports.onRemoveResponse = onRemoveResponse;
56
+
44
57
  var DragDrop = function DragDrop(props) {
45
58
  var attributes = props.attributes,
46
- data = props.data,
47
- n = props.n,
48
- nodeProps = props.nodeProps,
49
- opts = props.opts;
59
+ data = props.data,
60
+ n = props.n,
61
+ nodeProps = props.nodeProps,
62
+ opts = props.opts;
50
63
  var inTable = data.inTable;
51
64
  return /*#__PURE__*/_react["default"].createElement("span", (0, _extends2["default"])({}, attributes, {
52
65
  style: {
@@ -71,6 +84,7 @@ var DragDrop = function DragDrop(props) {
71
84
  }
72
85
  }, nodeProps.children));
73
86
  };
87
+
74
88
  DragDrop.propTypes = {
75
89
  attributes: _propTypes["default"].object,
76
90
  data: _propTypes["default"].object,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["onValueChange","nodeProps","n","value","val","editor","change","setNodeByKey","key","data","index","get","props","onChange","onEditingDone","onRemoveResponse","dragInTheBlank","document","findDescendant","DragDrop","attributes","opts","inTable","display","minHeight","minWidth","position","margin","cursor","options","duplicates","children","propTypes","PropTypes","object"],"sources":["../../../../src/plugins/respArea/drag-in-the-blank/index.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport DragDropTile from './choice';\n\nexport const onValueChange = (nodeProps, n, value) => {\n const val = nodeProps.editor.value;\n const change = val.change();\n\n change.setNodeByKey(n.key, {\n data: {\n ...value,\n index: n.data.get('index'),\n },\n });\n\n nodeProps.editor.props.onChange(change, () => {\n nodeProps.editor.props.onEditingDone();\n });\n};\n\nexport const onRemoveResponse = (nodeProps, value) => {\n const val = nodeProps.editor.value;\n const change = val.change();\n const dragInTheBlank = val.document.findDescendant((n) => n.data && n.data.get('index') === value.index);\n\n change.setNodeByKey(dragInTheBlank.key, {\n data: {\n index: dragInTheBlank.data.get('index'),\n },\n });\n\n nodeProps.editor.props.onChange(change, () => {\n nodeProps.editor.props.onEditingDone();\n });\n};\n\nconst DragDrop = (props) => {\n const { attributes, data, n, nodeProps, opts } = props;\n const { inTable } = data;\n\n return (\n <span\n {...attributes}\n style={{\n display: 'inline-flex',\n minHeight: '50px',\n minWidth: '178px',\n position: 'relative',\n margin: inTable ? '10px' : '0 10px',\n cursor: 'pointer',\n }}\n >\n <DragDropTile\n n={n}\n dragKey={n.key}\n targetId=\"0\"\n value={data}\n duplicates={opts.options.duplicates}\n onChange={(value) => onValueChange(nodeProps, n, value)}\n removeResponse={(value) => onRemoveResponse(nodeProps, value)}\n >\n {nodeProps.children}\n </DragDropTile>\n </span>\n );\n};\n\nDragDrop.propTypes = {\n attributes: PropTypes.object,\n data: PropTypes.object,\n n: PropTypes.object,\n nodeProps: PropTypes.object,\n opts: PropTypes.object,\n};\n\nexport default DragDrop;\n"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/plugins/respArea/drag-in-the-blank/index.jsx"],"names":["onValueChange","nodeProps","n","value","val","editor","change","setNodeByKey","key","data","index","get","props","onChange","onEditingDone","onRemoveResponse","dragInTheBlank","document","findDescendant","DragDrop","attributes","opts","inTable","display","minHeight","minWidth","position","margin","cursor","options","duplicates","children","propTypes","PropTypes","object"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport DragDropTile from './choice';\n\nexport const onValueChange = (nodeProps, n, value) => {\n const val = nodeProps.editor.value;\n const change = val.change();\n\n change.setNodeByKey(n.key, {\n data: {\n ...value,\n index: n.data.get('index'),\n },\n });\n\n nodeProps.editor.props.onChange(change, () => {\n nodeProps.editor.props.onEditingDone();\n });\n};\n\nexport const onRemoveResponse = (nodeProps, value) => {\n const val = nodeProps.editor.value;\n const change = val.change();\n const dragInTheBlank = val.document.findDescendant((n) => n.data && n.data.get('index') === value.index);\n\n change.setNodeByKey(dragInTheBlank.key, {\n data: {\n index: dragInTheBlank.data.get('index'),\n },\n });\n\n nodeProps.editor.props.onChange(change, () => {\n nodeProps.editor.props.onEditingDone();\n });\n};\n\nconst DragDrop = (props) => {\n const { attributes, data, n, nodeProps, opts } = props;\n const { inTable } = data;\n\n return (\n <span\n {...attributes}\n style={{\n display: 'inline-flex',\n minHeight: '50px',\n minWidth: '178px',\n position: 'relative',\n margin: inTable ? '10px' : '0 10px',\n cursor: 'pointer',\n }}\n >\n <DragDropTile\n n={n}\n dragKey={n.key}\n targetId=\"0\"\n value={data}\n duplicates={opts.options.duplicates}\n onChange={(value) => onValueChange(nodeProps, n, value)}\n removeResponse={(value) => onRemoveResponse(nodeProps, value)}\n >\n {nodeProps.children}\n </DragDropTile>\n </span>\n );\n};\n\nDragDrop.propTypes = {\n attributes: PropTypes.object,\n data: PropTypes.object,\n n: PropTypes.object,\n nodeProps: PropTypes.object,\n opts: PropTypes.object,\n};\n\nexport default DragDrop;\n"],"file":"index.js"}
@@ -1,17 +1,22 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports["default"] = void 0;
9
+
8
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+
9
12
  var _react = _interopRequireDefault(require("react"));
13
+
10
14
  var _propTypes = _interopRequireDefault(require("prop-types"));
15
+
11
16
  var ExplicitConstructedResponse = function ExplicitConstructedResponse(props) {
12
17
  var attributes = props.attributes,
13
- value = props.value,
14
- error = props.error;
18
+ value = props.value,
19
+ error = props.error;
15
20
  return /*#__PURE__*/_react["default"].createElement("span", (0, _extends2["default"])({}, attributes, {
16
21
  style: {
17
22
  display: 'inline-flex',
@@ -39,6 +44,7 @@ var ExplicitConstructedResponse = function ExplicitConstructedResponse(props) {
39
44
  }
40
45
  }));
41
46
  };
47
+
42
48
  ExplicitConstructedResponse.propTypes = {
43
49
  attributes: _propTypes["default"].object,
44
50
  value: _propTypes["default"].string
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["ExplicitConstructedResponse","props","attributes","value","error","display","minHeight","minWidth","position","margin","cursor","height","background","border","boxSizing","borderRadius","overflow","padding","__html","propTypes","PropTypes","object","string"],"sources":["../../../../src/plugins/respArea/explicit-constructed-response/index.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst ExplicitConstructedResponse = (props) => {\n const { attributes, value, error } = props;\n\n return (\n <span\n {...attributes}\n style={{\n display: 'inline-flex',\n minHeight: '50px',\n minWidth: '178px',\n position: 'relative',\n margin: '0 5px',\n cursor: 'pointer',\n }}\n >\n <div\n style={{\n display: 'inline-flex',\n minWidth: '178px',\n minHeight: '36px',\n height: '36px',\n background: '#FFF',\n border: `1px solid ${error ? 'red' : '#C0C3CF'}`,\n boxSizing: 'border-box',\n borderRadius: '3px',\n overflow: 'hidden',\n padding: '8px',\n }}\n dangerouslySetInnerHTML={{\n __html: value || '<div>&nbsp;</div>',\n }}\n />\n </span>\n );\n};\n\nExplicitConstructedResponse.propTypes = {\n attributes: PropTypes.object,\n value: PropTypes.string,\n};\n\nexport default ExplicitConstructedResponse;\n"],"mappings":";;;;;;;;AAAA;AACA;AAEA,IAAMA,2BAA2B,GAAG,SAA9BA,2BAA2B,CAAIC,KAAK,EAAK;EAC7C,IAAQC,UAAU,GAAmBD,KAAK,CAAlCC,UAAU;IAAEC,KAAK,GAAYF,KAAK,CAAtBE,KAAK;IAAEC,KAAK,GAAKH,KAAK,CAAfG,KAAK;EAEhC,oBACE,sEACMF,UAAU;IACd,KAAK,EAAE;MACLG,OAAO,EAAE,aAAa;MACtBC,SAAS,EAAE,MAAM;MACjBC,QAAQ,EAAE,OAAO;MACjBC,QAAQ,EAAE,UAAU;MACpBC,MAAM,EAAE,OAAO;MACfC,MAAM,EAAE;IACV;EAAE,iBAEF;IACE,KAAK,EAAE;MACLL,OAAO,EAAE,aAAa;MACtBE,QAAQ,EAAE,OAAO;MACjBD,SAAS,EAAE,MAAM;MACjBK,MAAM,EAAE,MAAM;MACdC,UAAU,EAAE,MAAM;MAClBC,MAAM,sBAAeT,KAAK,GAAG,KAAK,GAAG,SAAS,CAAE;MAChDU,SAAS,EAAE,YAAY;MACvBC,YAAY,EAAE,KAAK;MACnBC,QAAQ,EAAE,QAAQ;MAClBC,OAAO,EAAE;IACX,CAAE;IACF,uBAAuB,EAAE;MACvBC,MAAM,EAAEf,KAAK,IAAI;IACnB;EAAE,EACF,CACG;AAEX,CAAC;AAEDH,2BAA2B,CAACmB,SAAS,GAAG;EACtCjB,UAAU,EAAEkB,qBAAS,CAACC,MAAM;EAC5BlB,KAAK,EAAEiB,qBAAS,CAACE;AACnB,CAAC;AAAC,eAEatB,2BAA2B;AAAA"}
1
+ {"version":3,"sources":["../../../../src/plugins/respArea/explicit-constructed-response/index.jsx"],"names":["ExplicitConstructedResponse","props","attributes","value","error","display","minHeight","minWidth","position","margin","cursor","height","background","border","boxSizing","borderRadius","overflow","padding","__html","propTypes","PropTypes","object","string"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AAEA,IAAMA,2BAA2B,GAAG,SAA9BA,2BAA8B,CAACC,KAAD,EAAW;AAC7C,MAAQC,UAAR,GAAqCD,KAArC,CAAQC,UAAR;AAAA,MAAoBC,KAApB,GAAqCF,KAArC,CAAoBE,KAApB;AAAA,MAA2BC,KAA3B,GAAqCH,KAArC,CAA2BG,KAA3B;AAEA,sBACE,sEACMF,UADN;AAEE,IAAA,KAAK,EAAE;AACLG,MAAAA,OAAO,EAAE,aADJ;AAELC,MAAAA,SAAS,EAAE,MAFN;AAGLC,MAAAA,QAAQ,EAAE,OAHL;AAILC,MAAAA,QAAQ,EAAE,UAJL;AAKLC,MAAAA,MAAM,EAAE,OALH;AAMLC,MAAAA,MAAM,EAAE;AANH;AAFT,mBAWE;AACE,IAAA,KAAK,EAAE;AACLL,MAAAA,OAAO,EAAE,aADJ;AAELE,MAAAA,QAAQ,EAAE,OAFL;AAGLD,MAAAA,SAAS,EAAE,MAHN;AAILK,MAAAA,MAAM,EAAE,MAJH;AAKLC,MAAAA,UAAU,EAAE,MALP;AAMLC,MAAAA,MAAM,sBAAeT,KAAK,GAAG,KAAH,GAAW,SAA/B,CAND;AAOLU,MAAAA,SAAS,EAAE,YAPN;AAQLC,MAAAA,YAAY,EAAE,KART;AASLC,MAAAA,QAAQ,EAAE,QATL;AAULC,MAAAA,OAAO,EAAE;AAVJ,KADT;AAaE,IAAA,uBAAuB,EAAE;AACvBC,MAAAA,MAAM,EAAEf,KAAK,IAAI;AADM;AAb3B,IAXF,CADF;AA+BD,CAlCD;;AAoCAH,2BAA2B,CAACmB,SAA5B,GAAwC;AACtCjB,EAAAA,UAAU,EAAEkB,sBAAUC,MADgB;AAEtClB,EAAAA,KAAK,EAAEiB,sBAAUE;AAFqB,CAAxC;eAKetB,2B","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst ExplicitConstructedResponse = (props) => {\n const { attributes, value, error } = props;\n\n return (\n <span\n {...attributes}\n style={{\n display: 'inline-flex',\n minHeight: '50px',\n minWidth: '178px',\n position: 'relative',\n margin: '0 5px',\n cursor: 'pointer',\n }}\n >\n <div\n style={{\n display: 'inline-flex',\n minWidth: '178px',\n minHeight: '36px',\n height: '36px',\n background: '#FFF',\n border: `1px solid ${error ? 'red' : '#C0C3CF'}`,\n boxSizing: 'border-box',\n borderRadius: '3px',\n overflow: 'hidden',\n padding: '8px',\n }}\n dangerouslySetInnerHTML={{\n __html: value || '<div>&nbsp;</div>',\n }}\n />\n </span>\n );\n};\n\nExplicitConstructedResponse.propTypes = {\n attributes: PropTypes.object,\n value: PropTypes.string,\n};\n\nexport default ExplicitConstructedResponse;\n"],"file":"index.js"}
@@ -1,33 +1,47 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.ToolbarIcon = exports.GripIcon = exports.Chevron = void 0;
9
+
8
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
9
12
  var _react = _interopRequireDefault(require("react"));
13
+
10
14
  var _propTypes = _interopRequireDefault(require("prop-types"));
15
+
11
16
  var _ChevronRight = _interopRequireDefault(require("@material-ui/icons/ChevronRight"));
17
+
12
18
  var _MoreVert = _interopRequireDefault(require("@material-ui/icons/MoreVert"));
19
+
13
20
  var _styles = require("@material-ui/core/styles");
21
+
14
22
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
23
+
15
24
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
25
+
16
26
  var getRotate = function getRotate(direction) {
17
27
  switch (direction) {
18
28
  case 'down':
19
29
  return 90;
30
+
20
31
  case 'up':
21
32
  return -90;
33
+
22
34
  case 'left':
23
35
  return 180;
36
+
24
37
  default:
25
38
  return 0;
26
39
  }
27
40
  };
41
+
28
42
  var Chevron = function Chevron(props) {
29
43
  var direction = props.direction,
30
- style = props.style;
44
+ style = props.style;
31
45
  var rotate = getRotate(direction);
32
46
  return /*#__PURE__*/_react["default"].createElement(_ChevronRight["default"], {
33
47
  style: _objectSpread({
@@ -35,11 +49,13 @@ var Chevron = function Chevron(props) {
35
49
  }, style)
36
50
  });
37
51
  };
52
+
38
53
  exports.Chevron = Chevron;
39
54
  Chevron.propTypes = {
40
55
  direction: _propTypes["default"].string,
41
56
  style: _propTypes["default"].object
42
57
  };
58
+
43
59
  var GripIcon = function GripIcon(_ref) {
44
60
  var style = _ref.style;
45
61
  return /*#__PURE__*/_react["default"].createElement("span", {
@@ -50,6 +66,7 @@ var GripIcon = function GripIcon(_ref) {
50
66
  }
51
67
  }), /*#__PURE__*/_react["default"].createElement(_MoreVert["default"], null));
52
68
  };
69
+
53
70
  exports.GripIcon = GripIcon;
54
71
  GripIcon.propTypes = {
55
72
  style: _propTypes["default"].object
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["getRotate","direction","Chevron","props","style","rotate","transform","propTypes","PropTypes","string","object","GripIcon","margin","ToolbarIcon","withStyles","icon","fontFamily","fontSize","fontWeight","lineHeight","position","top","width","height","whiteSpace","classes"],"sources":["../../../../src/plugins/respArea/icons/index.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport ChevronRight from '@material-ui/icons/ChevronRight';\nimport MoreVert from '@material-ui/icons/MoreVert';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst getRotate = (direction) => {\n switch (direction) {\n case 'down':\n return 90;\n case 'up':\n return -90;\n case 'left':\n return 180;\n default:\n return 0;\n }\n};\n\nexport const Chevron = (props) => {\n const { direction, style } = props;\n const rotate = getRotate(direction);\n\n return (\n <ChevronRight\n style={{\n transform: `rotate(${rotate}deg)`,\n ...style,\n }}\n />\n );\n};\n\nChevron.propTypes = {\n direction: PropTypes.string,\n style: PropTypes.object,\n};\n\nexport const GripIcon = ({ style }) => {\n return (\n <span style={style}>\n <MoreVert\n style={{\n margin: '0 -16px',\n }}\n />\n <MoreVert />\n </span>\n );\n};\n\nGripIcon.propTypes = {\n style: PropTypes.object,\n};\n\nexport const ToolbarIcon = withStyles({\n icon: {\n fontFamily: 'Cerebri Sans !important',\n fontSize: '14px',\n fontWeight: 'bold',\n lineHeight: '14px',\n position: 'relative',\n top: '7px',\n width: '110px',\n height: '28px',\n whiteSpace: 'nowrap',\n },\n})(({ classes }) => <div className={classes.icon}>+ Response Area</div>);\n"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;AACA;AAAsD;AAAA;AAEtD,IAAMA,SAAS,GAAG,SAAZA,SAAS,CAAIC,SAAS,EAAK;EAC/B,QAAQA,SAAS;IACf,KAAK,MAAM;MACT,OAAO,EAAE;IACX,KAAK,IAAI;MACP,OAAO,CAAC,EAAE;IACZ,KAAK,MAAM;MACT,OAAO,GAAG;IACZ;MACE,OAAO,CAAC;EAAC;AAEf,CAAC;AAEM,IAAMC,OAAO,GAAG,SAAVA,OAAO,CAAIC,KAAK,EAAK;EAChC,IAAQF,SAAS,GAAYE,KAAK,CAA1BF,SAAS;IAAEG,KAAK,GAAKD,KAAK,CAAfC,KAAK;EACxB,IAAMC,MAAM,GAAGL,SAAS,CAACC,SAAS,CAAC;EAEnC,oBACE,gCAAC,wBAAY;IACX,KAAK;MACHK,SAAS,mBAAYD,MAAM;IAAM,GAC9BD,KAAK;EACR,EACF;AAEN,CAAC;AAAC;AAEFF,OAAO,CAACK,SAAS,GAAG;EAClBN,SAAS,EAAEO,qBAAS,CAACC,MAAM;EAC3BL,KAAK,EAAEI,qBAAS,CAACE;AACnB,CAAC;AAEM,IAAMC,QAAQ,GAAG,SAAXA,QAAQ,OAAkB;EAAA,IAAZP,KAAK,QAALA,KAAK;EAC9B,oBACE;IAAM,KAAK,EAAEA;EAAM,gBACjB,gCAAC,oBAAQ;IACP,KAAK,EAAE;MACLQ,MAAM,EAAE;IACV;EAAE,EACF,eACF,gCAAC,oBAAQ,OAAG,CACP;AAEX,CAAC;AAAC;AAEFD,QAAQ,CAACJ,SAAS,GAAG;EACnBH,KAAK,EAAEI,qBAAS,CAACE;AACnB,CAAC;AAEM,IAAMG,WAAW,GAAG,IAAAC,kBAAU,EAAC;EACpCC,IAAI,EAAE;IACJC,UAAU,EAAE,yBAAyB;IACrCC,QAAQ,EAAE,MAAM;IAChBC,UAAU,EAAE,MAAM;IAClBC,UAAU,EAAE,MAAM;IAClBC,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,KAAK;IACVC,KAAK,EAAE,OAAO;IACdC,MAAM,EAAE,MAAM;IACdC,UAAU,EAAE;EACd;AACF,CAAC,CAAC,CAAC;EAAA,IAAGC,OAAO,SAAPA,OAAO;EAAA,oBAAO;IAAK,SAAS,EAAEA,OAAO,CAACV;EAAK,GAAC,iBAAe,CAAM;AAAA,EAAC;AAAC"}
1
+ {"version":3,"sources":["../../../../src/plugins/respArea/icons/index.jsx"],"names":["getRotate","direction","Chevron","props","style","rotate","transform","propTypes","PropTypes","string","object","GripIcon","margin","ToolbarIcon","icon","fontFamily","fontSize","fontWeight","lineHeight","position","top","width","height","whiteSpace","classes"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;AAEA,IAAMA,SAAS,GAAG,SAAZA,SAAY,CAACC,SAAD,EAAe;AAC/B,UAAQA,SAAR;AACE,SAAK,MAAL;AACE,aAAO,EAAP;;AACF,SAAK,IAAL;AACE,aAAO,CAAC,EAAR;;AACF,SAAK,MAAL;AACE,aAAO,GAAP;;AACF;AACE,aAAO,CAAP;AARJ;AAUD,CAXD;;AAaO,IAAMC,OAAO,GAAG,SAAVA,OAAU,CAACC,KAAD,EAAW;AAChC,MAAQF,SAAR,GAA6BE,KAA7B,CAAQF,SAAR;AAAA,MAAmBG,KAAnB,GAA6BD,KAA7B,CAAmBC,KAAnB;AACA,MAAMC,MAAM,GAAGL,SAAS,CAACC,SAAD,CAAxB;AAEA,sBACE,gCAAC,wBAAD;AACE,IAAA,KAAK;AACHK,MAAAA,SAAS,mBAAYD,MAAZ;AADN,OAEAD,KAFA;AADP,IADF;AAQD,CAZM;;;AAcPF,OAAO,CAACK,SAAR,GAAoB;AAClBN,EAAAA,SAAS,EAAEO,sBAAUC,MADH;AAElBL,EAAAA,KAAK,EAAEI,sBAAUE;AAFC,CAApB;;AAKO,IAAMC,QAAQ,GAAG,SAAXA,QAAW,OAAe;AAAA,MAAZP,KAAY,QAAZA,KAAY;AACrC,sBACE;AAAM,IAAA,KAAK,EAAEA;AAAb,kBACE,gCAAC,oBAAD;AACE,IAAA,KAAK,EAAE;AACLQ,MAAAA,MAAM,EAAE;AADH;AADT,IADF,eAME,gCAAC,oBAAD,OANF,CADF;AAUD,CAXM;;;AAaPD,QAAQ,CAACJ,SAAT,GAAqB;AACnBH,EAAAA,KAAK,EAAEI,sBAAUE;AADE,CAArB;AAIO,IAAMG,WAAW,GAAG,wBAAW;AACpCC,EAAAA,IAAI,EAAE;AACJC,IAAAA,UAAU,EAAE,yBADR;AAEJC,IAAAA,QAAQ,EAAE,MAFN;AAGJC,IAAAA,UAAU,EAAE,MAHR;AAIJC,IAAAA,UAAU,EAAE,MAJR;AAKJC,IAAAA,QAAQ,EAAE,UALN;AAMJC,IAAAA,GAAG,EAAE,KAND;AAOJC,IAAAA,KAAK,EAAE,OAPH;AAQJC,IAAAA,MAAM,EAAE,MARJ;AASJC,IAAAA,UAAU,EAAE;AATR;AAD8B,CAAX,EAYxB;AAAA,MAAGC,OAAH,SAAGA,OAAH;AAAA,sBAAiB;AAAK,IAAA,SAAS,EAAEA,OAAO,CAACV;AAAxB,uBAAjB;AAAA,CAZwB,CAApB","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport ChevronRight from '@material-ui/icons/ChevronRight';\nimport MoreVert from '@material-ui/icons/MoreVert';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst getRotate = (direction) => {\n switch (direction) {\n case 'down':\n return 90;\n case 'up':\n return -90;\n case 'left':\n return 180;\n default:\n return 0;\n }\n};\n\nexport const Chevron = (props) => {\n const { direction, style } = props;\n const rotate = getRotate(direction);\n\n return (\n <ChevronRight\n style={{\n transform: `rotate(${rotate}deg)`,\n ...style,\n }}\n />\n );\n};\n\nChevron.propTypes = {\n direction: PropTypes.string,\n style: PropTypes.object,\n};\n\nexport const GripIcon = ({ style }) => {\n return (\n <span style={style}>\n <MoreVert\n style={{\n margin: '0 -16px',\n }}\n />\n <MoreVert />\n </span>\n );\n};\n\nGripIcon.propTypes = {\n style: PropTypes.object,\n};\n\nexport const ToolbarIcon = withStyles({\n icon: {\n fontFamily: 'Cerebri Sans !important',\n fontSize: '14px',\n fontWeight: 'bold',\n lineHeight: '14px',\n position: 'relative',\n top: '7px',\n width: '110px',\n height: '28px',\n whiteSpace: 'nowrap',\n },\n})(({ classes }) => <div className={classes.icon}>+ Response Area</div>);\n"],"file":"index.js"}
@@ -1,19 +1,29 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports["default"] = ResponseAreaPlugin;
8
9
  exports.serialization = void 0;
10
+
9
11
  var _react = _interopRequireDefault(require("react"));
12
+
10
13
  var _debug = _interopRequireDefault(require("debug"));
14
+
11
15
  var _isUndefined = _interopRequireDefault(require("lodash/isUndefined"));
16
+
12
17
  var _inlineDropdown = _interopRequireDefault(require("./inline-dropdown"));
18
+
13
19
  var _dragInTheBlank = _interopRequireDefault(require("./drag-in-the-blank"));
20
+
14
21
  var _explicitConstructedResponse = _interopRequireDefault(require("./explicit-constructed-response"));
22
+
15
23
  var _utils = require("./utils");
24
+
16
25
  var _icons = require("./icons");
26
+
17
27
  var log = (0, _debug["default"])('@pie-lib:editable-html:plugins:respArea');
18
28
  var lastIndexMap = {};
19
29
  var elTypesMap = {
@@ -22,10 +32,12 @@ var elTypesMap = {
22
32
  'drag-in-the-blank': 'drag_in_the_blank'
23
33
  };
24
34
  var elTypesArray = Object.values(elTypesMap);
35
+
25
36
  function ResponseAreaPlugin(opts) {
26
37
  var isOfCurrentType = function isOfCurrentType(d) {
27
38
  return d.type === opts.type || d.type === elTypesMap[opts.type];
28
39
  };
40
+
29
41
  var toolbar = {
30
42
  icon: /*#__PURE__*/_react["default"].createElement(_icons.ToolbarIcon, null),
31
43
  buttonStyles: {
@@ -35,36 +47,45 @@ function ResponseAreaPlugin(opts) {
35
47
  log('[toolbar] onClick');
36
48
  var change = value.change();
37
49
  var currentRespAreaList = change.value.document.filterDescendants(isOfCurrentType);
50
+
38
51
  if (currentRespAreaList.size >= opts.maxResponseAreas) {
39
52
  return;
40
53
  }
54
+
41
55
  var type = opts.type.replace(/-/g, '_');
42
56
  var prevIndex = lastIndexMap[type];
43
57
  var newIndex = prevIndex === 0 ? prevIndex : prevIndex + 1;
44
58
  var newInline = (0, _utils.getDefaultElement)(opts, newIndex);
45
59
  lastIndexMap[type] += 1;
60
+
46
61
  if (newInline) {
47
62
  if (change.value.selection.startKey || change.value.selection.endKey) {
48
63
  change.insertInline(newInline);
49
64
  } else {
50
65
  // If the markup is empty and there's no focus
51
66
  var lastText = value.document.getLastText();
67
+
52
68
  if (!lastText) {
53
69
  return;
54
70
  }
71
+
55
72
  var parentNode = value.document.getParent(lastText.key);
73
+
56
74
  if (parentNode) {
57
75
  var index = parentNode.nodes.indexOf(lastText.key);
58
76
  if (parentNode.isVoid) return;
59
77
  change.insertNodeByKey(parentNode.key, index + 1, newInline);
60
78
  }
61
79
  }
80
+
62
81
  if (newInline.type === 'drag_in_the_blank') {
63
82
  var nextText = change.value.document.getNextText(newInline.key);
83
+
64
84
  if (nextText) {
65
85
  change.moveFocusTo(nextText.key, 0).moveAnchorTo(nextText.key, 0);
66
86
  }
67
87
  }
88
+
68
89
  onChange(change);
69
90
  }
70
91
  },
@@ -81,6 +102,7 @@ function ResponseAreaPlugin(opts) {
81
102
  if (node.type === 'explicit_constructed_response' || node.type === 'drag_in_the_blank') {
82
103
  return [];
83
104
  }
105
+
84
106
  return plugins.filter(function (p) {
85
107
  return p.name !== 'response_area';
86
108
  });
@@ -92,21 +114,26 @@ function ResponseAreaPlugin(opts) {
92
114
  },
93
115
  renderNode: function renderNode(props) {
94
116
  var attributes = props.attributes,
95
- n = props.node;
117
+ n = props.node;
118
+
96
119
  if (n.type === 'explicit_constructed_response') {
97
120
  var data = n.data.toJSON();
98
121
  var error;
122
+
99
123
  if (opts.error) {
100
124
  error = opts.error();
101
125
  }
126
+
102
127
  return /*#__PURE__*/_react["default"].createElement(_explicitConstructedResponse["default"], {
103
128
  attributes: attributes,
104
129
  value: data.value,
105
130
  error: error && error[data.index] && error[data.index][0]
106
131
  });
107
132
  }
133
+
108
134
  if (n.type === 'drag_in_the_blank') {
109
135
  var _data = n.data.toJSON();
136
+
110
137
  return /*#__PURE__*/_react["default"].createElement(_dragInTheBlank["default"], {
111
138
  attributes: attributes,
112
139
  data: _data,
@@ -115,8 +142,10 @@ function ResponseAreaPlugin(opts) {
115
142
  opts: opts
116
143
  });
117
144
  }
145
+
118
146
  if (n.type === 'inline_dropdown') {
119
147
  var _data2 = n.data.toJSON();
148
+
120
149
  return /*#__PURE__*/_react["default"].createElement(_inlineDropdown["default"], {
121
150
  attributes: attributes,
122
151
  selectedItem: _data2.value
@@ -125,27 +154,33 @@ function ResponseAreaPlugin(opts) {
125
154
  },
126
155
  onChange: function onChange(change, editor) {
127
156
  var type = opts.type.replace(/-/g, '_');
157
+
128
158
  if ((0, _isUndefined["default"])(lastIndexMap[type])) {
129
159
  lastIndexMap[type] = 0;
130
160
  change.value.document.forEachDescendant(function (d) {
131
161
  if (d.type === type) {
132
162
  var newIndex = parseInt(d.data.get('index'), 10);
163
+
133
164
  if (newIndex > lastIndexMap[type]) {
134
165
  lastIndexMap[type] = newIndex;
135
166
  }
136
167
  }
137
168
  });
138
169
  }
170
+
139
171
  if (!editor.value) {
140
172
  return;
141
173
  }
174
+
142
175
  var currentRespAreaList = change.value.document.filterDescendants(isOfCurrentType);
143
176
  var oldRespAreaList = editor.value.document.filterDescendants(isOfCurrentType);
177
+
144
178
  if (currentRespAreaList.size >= opts.maxResponseAreas) {
145
179
  toolbar.disabled = true;
146
180
  } else {
147
181
  toolbar.disabled = false;
148
182
  }
183
+
149
184
  var arrayToFilter = oldRespAreaList.size > currentRespAreaList.size ? oldRespAreaList : currentRespAreaList;
150
185
  var arrayToUseForFilter = arrayToFilter === oldRespAreaList ? currentRespAreaList : oldRespAreaList;
151
186
  var elementsWithChangedStatus = arrayToFilter.filter(function (d) {
@@ -153,6 +188,7 @@ function ResponseAreaPlugin(opts) {
153
188
  return e.data.get('index') === d.data.get('index');
154
189
  });
155
190
  });
191
+
156
192
  if (elementsWithChangedStatus.size && oldRespAreaList.size > currentRespAreaList.size) {
157
193
  opts.onHandleAreaChange(elementsWithChangedStatus);
158
194
  }
@@ -162,15 +198,18 @@ function ResponseAreaPlugin(opts) {
162
198
  var inline = editor.value.document.findDescendant(function (d) {
163
199
  return d.key === closestEl.dataset.key;
164
200
  });
201
+
165
202
  if (inline.type === 'drag_in_the_blank') {
166
203
  return false;
167
204
  }
168
205
  }
169
206
  };
170
207
  }
208
+
171
209
  var serialization = {
172
210
  deserialize: function deserialize(el) {
173
211
  var type = el.dataset && el.dataset.type;
212
+
174
213
  switch (type) {
175
214
  case 'inline_dropdown':
176
215
  return {
@@ -182,6 +221,7 @@ var serialization = {
182
221
  value: el.dataset.value
183
222
  }
184
223
  };
224
+
185
225
  case 'explicit_constructed_response':
186
226
  return {
187
227
  object: 'inline',
@@ -192,6 +232,7 @@ var serialization = {
192
232
  value: el.dataset.value
193
233
  }
194
234
  };
235
+
195
236
  case 'drag_in_the_blank':
196
237
  return {
197
238
  object: 'inline',
@@ -210,6 +251,7 @@ var serialization = {
210
251
  if (object.object !== 'inline') {
211
252
  return;
212
253
  }
254
+
213
255
  switch (object.type) {
214
256
  case 'inline_dropdown':
215
257
  {
@@ -220,18 +262,22 @@ var serialization = {
220
262
  "data-value": data.value
221
263
  });
222
264
  }
265
+
223
266
  case 'explicit_constructed_response':
224
267
  {
225
268
  var _data3 = object.data.toJSON();
269
+
226
270
  return /*#__PURE__*/_react["default"].createElement("span", {
227
271
  "data-type": "explicit_constructed_response",
228
272
  "data-index": _data3.index,
229
273
  "data-value": _data3.value
230
274
  });
231
275
  }
276
+
232
277
  case 'drag_in_the_blank':
233
278
  {
234
279
  var _data4 = object.data.toJSON();
280
+
235
281
  return /*#__PURE__*/_react["default"].createElement("span", {
236
282
  "data-type": "drag_in_the_blank",
237
283
  "data-index": _data4.index,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["log","debug","lastIndexMap","elTypesMap","elTypesArray","Object","values","ResponseAreaPlugin","opts","isOfCurrentType","d","type","toolbar","icon","buttonStyles","margin","onClick","value","onChange","change","currentRespAreaList","document","filterDescendants","size","maxResponseAreas","replace","prevIndex","newIndex","newInline","getDefaultElement","selection","startKey","endKey","insertInline","lastText","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","error","editor","isUndefined","forEachDescendant","parseInt","get","oldRespAreaList","disabled","arrayToFilter","arrayToUseForFilter","elementsWithChangedStatus","find","onHandleAreaChange","onDrop","event","closestEl","target","closest","inline","findDescendant","dataset","serialization","deserialize","el","id","inTable","serialize"],"sources":["../../../src/plugins/respArea/index.jsx"],"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 elTypesMap = {\n 'inline-dropdown': 'inline_dropdown',\n 'explicit-constructed-response': 'explicit_constructed_response',\n 'drag-in-the-blank': 'drag_in_the_blank',\n};\nconst elTypesArray = Object.values(elTypesMap);\n\nexport default function ResponseAreaPlugin(opts) {\n const isOfCurrentType = (d) => d.type === opts.type || d.type === elTypesMap[opts.type];\n\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 currentRespAreaList = change.value.document.filterDescendants(isOfCurrentType);\n\n if (currentRespAreaList.size >= opts.maxResponseAreas) {\n return;\n }\n\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\n if (!lastText) {\n return;\n }\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 let error;\n\n if (opts.error) {\n error = opts.error();\n }\n\n return (\n <ExplicitConstructedResponse\n attributes={attributes}\n value={data.value}\n error={error && error[data.index] && error[data.index][0]}\n />\n );\n }\n\n if (n.type === 'drag_in_the_blank') {\n const data = n.data.toJSON();\n\n return <DragInTheBlank attributes={attributes} data={data} n={n} nodeProps={props} opts={opts} />;\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, editor) {\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 if (!editor.value) {\n return;\n }\n\n const currentRespAreaList = change.value.document.filterDescendants(isOfCurrentType);\n const oldRespAreaList = editor.value.document.filterDescendants(isOfCurrentType);\n\n if (currentRespAreaList.size >= opts.maxResponseAreas) {\n toolbar.disabled = true;\n } else {\n toolbar.disabled = false;\n }\n\n const arrayToFilter = oldRespAreaList.size > currentRespAreaList.size ? oldRespAreaList : currentRespAreaList;\n const arrayToUseForFilter = arrayToFilter === oldRespAreaList ? currentRespAreaList : oldRespAreaList;\n\n const elementsWithChangedStatus = arrayToFilter.filter(\n (d) => !arrayToUseForFilter.find((e) => e.data.get('index') === d.data.get('index')),\n );\n\n if (elementsWithChangedStatus.size && oldRespAreaList.size > currentRespAreaList.size) {\n opts.onHandleAreaChange(elementsWithChangedStatus);\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 <span data-type=\"explicit_constructed_response\" data-index={data.index} data-value={data.value} />;\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"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/plugins/respArea/index.jsx"],"names":["log","lastIndexMap","elTypesMap","elTypesArray","Object","values","ResponseAreaPlugin","opts","isOfCurrentType","d","type","toolbar","icon","buttonStyles","margin","onClick","value","onChange","change","currentRespAreaList","document","filterDescendants","size","maxResponseAreas","replace","prevIndex","newIndex","newInline","selection","startKey","endKey","insertInline","lastText","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","error","editor","forEachDescendant","parseInt","get","oldRespAreaList","disabled","arrayToFilter","arrayToUseForFilter","elementsWithChangedStatus","find","onHandleAreaChange","onDrop","event","closestEl","target","closest","inline","findDescendant","dataset","serialization","deserialize","el","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 elTypesMap = {\n 'inline-dropdown': 'inline_dropdown',\n 'explicit-constructed-response': 'explicit_constructed_response',\n 'drag-in-the-blank': 'drag_in_the_blank',\n};\nconst elTypesArray = Object.values(elTypesMap);\n\nexport default function ResponseAreaPlugin(opts) {\n const isOfCurrentType = (d) => d.type === opts.type || d.type === elTypesMap[opts.type];\n\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 currentRespAreaList = change.value.document.filterDescendants(isOfCurrentType);\n\n if (currentRespAreaList.size >= opts.maxResponseAreas) {\n return;\n }\n\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\n if (!lastText) {\n return;\n }\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 let error;\n\n if (opts.error) {\n error = opts.error();\n }\n\n return (\n <ExplicitConstructedResponse\n attributes={attributes}\n value={data.value}\n error={error && error[data.index] && error[data.index][0]}\n />\n );\n }\n\n if (n.type === 'drag_in_the_blank') {\n const data = n.data.toJSON();\n\n return <DragInTheBlank attributes={attributes} data={data} n={n} nodeProps={props} opts={opts} />;\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, editor) {\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 if (!editor.value) {\n return;\n }\n\n const currentRespAreaList = change.value.document.filterDescendants(isOfCurrentType);\n const oldRespAreaList = editor.value.document.filterDescendants(isOfCurrentType);\n\n if (currentRespAreaList.size >= opts.maxResponseAreas) {\n toolbar.disabled = true;\n } else {\n toolbar.disabled = false;\n }\n\n const arrayToFilter = oldRespAreaList.size > currentRespAreaList.size ? oldRespAreaList : currentRespAreaList;\n const arrayToUseForFilter = arrayToFilter === oldRespAreaList ? currentRespAreaList : oldRespAreaList;\n\n const elementsWithChangedStatus = arrayToFilter.filter(\n (d) => !arrayToUseForFilter.find((e) => e.data.get('index') === d.data.get('index')),\n );\n\n if (elementsWithChangedStatus.size && oldRespAreaList.size > currentRespAreaList.size) {\n opts.onHandleAreaChange(elementsWithChangedStatus);\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 <span data-type=\"explicit_constructed_response\" data-index={data.index} data-value={data.value} />;\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,17 +1,23 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports["default"] = void 0;
9
+
8
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+
9
12
  var _react = _interopRequireDefault(require("react"));
13
+
10
14
  var _propTypes = _interopRequireDefault(require("prop-types"));
15
+
11
16
  var _icons = require("../icons");
17
+
12
18
  var InlineDropdown = function InlineDropdown(_ref) {
13
19
  var attributes = _ref.attributes,
14
- selectedItem = _ref.selectedItem;
20
+ selectedItem = _ref.selectedItem;
15
21
  // TODO: Investigate
16
22
  // Needed because items with values inside have different positioning for some reason
17
23
  var html = selectedItem || '<div>&nbsp</div>';
@@ -54,6 +60,7 @@ var InlineDropdown = function InlineDropdown(_ref) {
54
60
  }
55
61
  })));
56
62
  };
63
+
57
64
  InlineDropdown.propTypes = {
58
65
  attributes: _propTypes["default"].object,
59
66
  selectedItem: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].object])
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["InlineDropdown","attributes","selectedItem","html","display","height","margin","cursor","minWidth","background","border","boxSizing","borderRadius","position","flex","overflow","padding","whiteSpace","textOverflow","lineHeight","__html","top","right","propTypes","PropTypes","object","oneOfType","string"],"sources":["../../../../src/plugins/respArea/inline-dropdown/index.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Chevron } from '../icons';\n\nconst InlineDropdown = ({ attributes, selectedItem }) => {\n // TODO: Investigate\n // Needed because items with values inside have different positioning for some reason\n const html = selectedItem || '<div>&nbsp</div>';\n\n return (\n <span\n {...attributes}\n style={{\n display: 'inline-flex',\n height: '50px',\n margin: '0 5px',\n cursor: 'pointer',\n }}\n >\n <div\n style={{\n display: 'inline-flex',\n minWidth: '178px',\n height: '36px',\n background: '#FFF',\n border: '1px solid #C0C3CF',\n boxSizing: 'border-box',\n borderRadius: '3px',\n position: 'relative',\n }}\n >\n <div\n style={{\n flex: 1,\n overflow: 'hidden',\n padding: '0 25px 0 8px',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n lineHeight: '35px',\n }}\n dangerouslySetInnerHTML={{\n __html: html,\n }}\n />\n <Chevron\n direction=\"down\"\n style={{\n position: 'absolute',\n top: '5px',\n right: '5px',\n }}\n />\n </div>\n </span>\n );\n};\n\nInlineDropdown.propTypes = {\n attributes: PropTypes.object,\n selectedItem: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n\nexport default InlineDropdown;\n"],"mappings":";;;;;;;;AAAA;AACA;AACA;AAEA,IAAMA,cAAc,GAAG,SAAjBA,cAAc,OAAqC;EAAA,IAA/BC,UAAU,QAAVA,UAAU;IAAEC,YAAY,QAAZA,YAAY;EAChD;EACA;EACA,IAAMC,IAAI,GAAGD,YAAY,IAAI,kBAAkB;EAE/C,oBACE,sEACMD,UAAU;IACd,KAAK,EAAE;MACLG,OAAO,EAAE,aAAa;MACtBC,MAAM,EAAE,MAAM;MACdC,MAAM,EAAE,OAAO;MACfC,MAAM,EAAE;IACV;EAAE,iBAEF;IACE,KAAK,EAAE;MACLH,OAAO,EAAE,aAAa;MACtBI,QAAQ,EAAE,OAAO;MACjBH,MAAM,EAAE,MAAM;MACdI,UAAU,EAAE,MAAM;MAClBC,MAAM,EAAE,mBAAmB;MAC3BC,SAAS,EAAE,YAAY;MACvBC,YAAY,EAAE,KAAK;MACnBC,QAAQ,EAAE;IACZ;EAAE,gBAEF;IACE,KAAK,EAAE;MACLC,IAAI,EAAE,CAAC;MACPC,QAAQ,EAAE,QAAQ;MAClBC,OAAO,EAAE,cAAc;MACvBC,UAAU,EAAE,QAAQ;MACpBC,YAAY,EAAE,UAAU;MACxBC,UAAU,EAAE;IACd,CAAE;IACF,uBAAuB,EAAE;MACvBC,MAAM,EAAEjB;IACV;EAAE,EACF,eACF,gCAAC,cAAO;IACN,SAAS,EAAC,MAAM;IAChB,KAAK,EAAE;MACLU,QAAQ,EAAE,UAAU;MACpBQ,GAAG,EAAE,KAAK;MACVC,KAAK,EAAE;IACT;EAAE,EACF,CACE,CACD;AAEX,CAAC;AAEDtB,cAAc,CAACuB,SAAS,GAAG;EACzBtB,UAAU,EAAEuB,qBAAS,CAACC,MAAM;EAC5BvB,YAAY,EAAEsB,qBAAS,CAACE,SAAS,CAAC,CAACF,qBAAS,CAACG,MAAM,EAAEH,qBAAS,CAACC,MAAM,CAAC;AACxE,CAAC;AAAC,eAEazB,cAAc;AAAA"}
1
+ {"version":3,"sources":["../../../../src/plugins/respArea/inline-dropdown/index.jsx"],"names":["InlineDropdown","attributes","selectedItem","html","display","height","margin","cursor","minWidth","background","border","boxSizing","borderRadius","position","flex","overflow","padding","whiteSpace","textOverflow","lineHeight","__html","top","right","propTypes","PropTypes","object","oneOfType","string"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AACA;;AAEA,IAAMA,cAAc,GAAG,SAAjBA,cAAiB,OAAkC;AAAA,MAA/BC,UAA+B,QAA/BA,UAA+B;AAAA,MAAnBC,YAAmB,QAAnBA,YAAmB;AACvD;AACA;AACA,MAAMC,IAAI,GAAGD,YAAY,IAAI,kBAA7B;AAEA,sBACE,sEACMD,UADN;AAEE,IAAA,KAAK,EAAE;AACLG,MAAAA,OAAO,EAAE,aADJ;AAELC,MAAAA,MAAM,EAAE,MAFH;AAGLC,MAAAA,MAAM,EAAE,OAHH;AAILC,MAAAA,MAAM,EAAE;AAJH;AAFT,mBASE;AACE,IAAA,KAAK,EAAE;AACLH,MAAAA,OAAO,EAAE,aADJ;AAELI,MAAAA,QAAQ,EAAE,OAFL;AAGLH,MAAAA,MAAM,EAAE,MAHH;AAILI,MAAAA,UAAU,EAAE,MAJP;AAKLC,MAAAA,MAAM,EAAE,mBALH;AAMLC,MAAAA,SAAS,EAAE,YANN;AAOLC,MAAAA,YAAY,EAAE,KAPT;AAQLC,MAAAA,QAAQ,EAAE;AARL;AADT,kBAYE;AACE,IAAA,KAAK,EAAE;AACLC,MAAAA,IAAI,EAAE,CADD;AAELC,MAAAA,QAAQ,EAAE,QAFL;AAGLC,MAAAA,OAAO,EAAE,cAHJ;AAILC,MAAAA,UAAU,EAAE,QAJP;AAKLC,MAAAA,YAAY,EAAE,UALT;AAMLC,MAAAA,UAAU,EAAE;AANP,KADT;AASE,IAAA,uBAAuB,EAAE;AACvBC,MAAAA,MAAM,EAAEjB;AADe;AAT3B,IAZF,eAyBE,gCAAC,cAAD;AACE,IAAA,SAAS,EAAC,MADZ;AAEE,IAAA,KAAK,EAAE;AACLU,MAAAA,QAAQ,EAAE,UADL;AAELQ,MAAAA,GAAG,EAAE,KAFA;AAGLC,MAAAA,KAAK,EAAE;AAHF;AAFT,IAzBF,CATF,CADF;AA8CD,CAnDD;;AAqDAtB,cAAc,CAACuB,SAAf,GAA2B;AACzBtB,EAAAA,UAAU,EAAEuB,sBAAUC,MADG;AAEzBvB,EAAAA,YAAY,EAAEsB,sBAAUE,SAAV,CAAoB,CAACF,sBAAUG,MAAX,EAAmBH,sBAAUC,MAA7B,CAApB;AAFW,CAA3B;eAKezB,c","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Chevron } from '../icons';\n\nconst InlineDropdown = ({ attributes, selectedItem }) => {\n // TODO: Investigate\n // Needed because items with values inside have different positioning for some reason\n const html = selectedItem || '<div>&nbsp</div>';\n\n return (\n <span\n {...attributes}\n style={{\n display: 'inline-flex',\n height: '50px',\n margin: '0 5px',\n cursor: 'pointer',\n }}\n >\n <div\n style={{\n display: 'inline-flex',\n minWidth: '178px',\n height: '36px',\n background: '#FFF',\n border: '1px solid #C0C3CF',\n boxSizing: 'border-box',\n borderRadius: '3px',\n position: 'relative',\n }}\n >\n <div\n style={{\n flex: 1,\n overflow: 'hidden',\n padding: '0 25px 0 8px',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n lineHeight: '35px',\n }}\n dangerouslySetInnerHTML={{\n __html: html,\n }}\n />\n <Chevron\n direction=\"down\"\n style={{\n position: 'absolute',\n top: '5px',\n right: '5px',\n }}\n />\n </div>\n </span>\n );\n};\n\nInlineDropdown.propTypes = {\n attributes: PropTypes.object,\n selectedItem: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n\nexport default InlineDropdown;\n"],"file":"index.js"}