@pie-lib/editable-html 11.4.0 → 11.6.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 (106) hide show
  1. package/CHANGELOG.md +24 -52
  2. package/package.json +8 -7
  3. package/src/editor.jsx +2 -2
  4. package/src/plugins/media/media-dialog.js +1 -1
  5. package/src/plugins/respArea/drag-in-the-blank/choice.jsx +1 -1
  6. package/src/plugins/toolbar/editor-and-toolbar.jsx +1 -1
  7. package/lib/block-tags.js +0 -25
  8. package/lib/block-tags.js.map +0 -1
  9. package/lib/constants.js +0 -16
  10. package/lib/constants.js.map +0 -1
  11. package/lib/editor.js +0 -1355
  12. package/lib/editor.js.map +0 -1
  13. package/lib/index.js +0 -269
  14. package/lib/index.js.map +0 -1
  15. package/lib/parse-html.js +0 -16
  16. package/lib/parse-html.js.map +0 -1
  17. package/lib/plugins/characters/custom-popper.js +0 -73
  18. package/lib/plugins/characters/custom-popper.js.map +0 -1
  19. package/lib/plugins/characters/index.js +0 -305
  20. package/lib/plugins/characters/index.js.map +0 -1
  21. package/lib/plugins/characters/utils.js +0 -381
  22. package/lib/plugins/characters/utils.js.map +0 -1
  23. package/lib/plugins/css/icons/index.js +0 -37
  24. package/lib/plugins/css/icons/index.js.map +0 -1
  25. package/lib/plugins/css/index.js +0 -397
  26. package/lib/plugins/css/index.js.map +0 -1
  27. package/lib/plugins/customPlugin/index.js +0 -114
  28. package/lib/plugins/customPlugin/index.js.map +0 -1
  29. package/lib/plugins/html/icons/index.js +0 -38
  30. package/lib/plugins/html/icons/index.js.map +0 -1
  31. package/lib/plugins/html/index.js +0 -80
  32. package/lib/plugins/html/index.js.map +0 -1
  33. package/lib/plugins/image/alt-dialog.js +0 -129
  34. package/lib/plugins/image/alt-dialog.js.map +0 -1
  35. package/lib/plugins/image/component.js +0 -419
  36. package/lib/plugins/image/component.js.map +0 -1
  37. package/lib/plugins/image/image-toolbar.js +0 -177
  38. package/lib/plugins/image/image-toolbar.js.map +0 -1
  39. package/lib/plugins/image/index.js +0 -263
  40. package/lib/plugins/image/index.js.map +0 -1
  41. package/lib/plugins/image/insert-image-handler.js +0 -161
  42. package/lib/plugins/image/insert-image-handler.js.map +0 -1
  43. package/lib/plugins/index.js +0 -402
  44. package/lib/plugins/index.js.map +0 -1
  45. package/lib/plugins/list/index.js +0 -334
  46. package/lib/plugins/list/index.js.map +0 -1
  47. package/lib/plugins/math/index.js +0 -454
  48. package/lib/plugins/math/index.js.map +0 -1
  49. package/lib/plugins/media/index.js +0 -387
  50. package/lib/plugins/media/index.js.map +0 -1
  51. package/lib/plugins/media/media-dialog.js +0 -709
  52. package/lib/plugins/media/media-dialog.js.map +0 -1
  53. package/lib/plugins/media/media-toolbar.js +0 -101
  54. package/lib/plugins/media/media-toolbar.js.map +0 -1
  55. package/lib/plugins/media/media-wrapper.js +0 -93
  56. package/lib/plugins/media/media-wrapper.js.map +0 -1
  57. package/lib/plugins/rendering/index.js +0 -46
  58. package/lib/plugins/rendering/index.js.map +0 -1
  59. package/lib/plugins/respArea/drag-in-the-blank/choice.js +0 -254
  60. package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +0 -1
  61. package/lib/plugins/respArea/drag-in-the-blank/index.js +0 -97
  62. package/lib/plugins/respArea/drag-in-the-blank/index.js.map +0 -1
  63. package/lib/plugins/respArea/explicit-constructed-response/index.js +0 -57
  64. package/lib/plugins/respArea/explicit-constructed-response/index.js.map +0 -1
  65. package/lib/plugins/respArea/icons/index.js +0 -95
  66. package/lib/plugins/respArea/icons/index.js.map +0 -1
  67. package/lib/plugins/respArea/index.js +0 -341
  68. package/lib/plugins/respArea/index.js.map +0 -1
  69. package/lib/plugins/respArea/inline-dropdown/index.js +0 -75
  70. package/lib/plugins/respArea/inline-dropdown/index.js.map +0 -1
  71. package/lib/plugins/respArea/math-templated/index.js +0 -130
  72. package/lib/plugins/respArea/math-templated/index.js.map +0 -1
  73. package/lib/plugins/respArea/utils.js +0 -125
  74. package/lib/plugins/respArea/utils.js.map +0 -1
  75. package/lib/plugins/table/CustomTablePlugin.js +0 -133
  76. package/lib/plugins/table/CustomTablePlugin.js.map +0 -1
  77. package/lib/plugins/table/icons/index.js +0 -69
  78. package/lib/plugins/table/icons/index.js.map +0 -1
  79. package/lib/plugins/table/index.js +0 -483
  80. package/lib/plugins/table/index.js.map +0 -1
  81. package/lib/plugins/table/table-toolbar.js +0 -187
  82. package/lib/plugins/table/table-toolbar.js.map +0 -1
  83. package/lib/plugins/textAlign/icons/index.js +0 -226
  84. package/lib/plugins/textAlign/icons/index.js.map +0 -1
  85. package/lib/plugins/textAlign/index.js +0 -34
  86. package/lib/plugins/textAlign/index.js.map +0 -1
  87. package/lib/plugins/toolbar/default-toolbar.js +0 -229
  88. package/lib/plugins/toolbar/default-toolbar.js.map +0 -1
  89. package/lib/plugins/toolbar/done-button.js +0 -53
  90. package/lib/plugins/toolbar/done-button.js.map +0 -1
  91. package/lib/plugins/toolbar/editor-and-toolbar.js +0 -286
  92. package/lib/plugins/toolbar/editor-and-toolbar.js.map +0 -1
  93. package/lib/plugins/toolbar/index.js +0 -34
  94. package/lib/plugins/toolbar/index.js.map +0 -1
  95. package/lib/plugins/toolbar/toolbar-buttons.js +0 -194
  96. package/lib/plugins/toolbar/toolbar-buttons.js.map +0 -1
  97. package/lib/plugins/toolbar/toolbar.js +0 -376
  98. package/lib/plugins/toolbar/toolbar.js.map +0 -1
  99. package/lib/plugins/utils.js +0 -62
  100. package/lib/plugins/utils.js.map +0 -1
  101. package/lib/serialization.js +0 -677
  102. package/lib/serialization.js.map +0 -1
  103. package/lib/shared/alert-dialog.js +0 -75
  104. package/lib/shared/index.js +0 -136
  105. package/lib/theme.js +0 -9
  106. package/lib/theme.js.map +0 -1
@@ -1,97 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.onValueChange = exports.onRemoveResponse = exports["default"] = void 0;
9
-
10
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
-
12
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
-
14
- var _react = _interopRequireDefault(require("react"));
15
-
16
- var _propTypes = _interopRequireDefault(require("prop-types"));
17
-
18
- var _choice = _interopRequireDefault(require("./choice"));
19
-
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
-
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
-
24
- var onValueChange = function onValueChange(nodeProps, n, value) {
25
- var val = nodeProps.editor.value;
26
- var change = val.change();
27
- change.setNodeByKey(n.key, {
28
- data: _objectSpread(_objectSpread({}, value), {}, {
29
- index: n.data.get('index')
30
- })
31
- });
32
- nodeProps.editor.props.onChange(change, function () {
33
- nodeProps.editor.props.onEditingDone();
34
- });
35
- };
36
-
37
- exports.onValueChange = onValueChange;
38
-
39
- var onRemoveResponse = function onRemoveResponse(nodeProps, value) {
40
- var val = nodeProps.editor.value;
41
- var change = val.change();
42
- var dragInTheBlank = val.document.findDescendant(function (n) {
43
- return n.data && n.data.get('index') === value.index;
44
- });
45
- change.setNodeByKey(dragInTheBlank.key, {
46
- data: {
47
- index: dragInTheBlank.data.get('index')
48
- }
49
- });
50
- nodeProps.editor.props.onChange(change, function () {
51
- nodeProps.editor.props.onEditingDone();
52
- });
53
- };
54
-
55
- exports.onRemoveResponse = onRemoveResponse;
56
-
57
- var DragDrop = function DragDrop(props) {
58
- var attributes = props.attributes,
59
- data = props.data,
60
- n = props.n,
61
- nodeProps = props.nodeProps,
62
- opts = props.opts;
63
- var inTable = data.inTable;
64
- return /*#__PURE__*/_react["default"].createElement("span", (0, _extends2["default"])({}, attributes, {
65
- style: {
66
- display: 'inline-flex',
67
- minHeight: '50px',
68
- minWidth: '178px',
69
- position: 'relative',
70
- margin: inTable ? '10px' : '0 10px',
71
- cursor: 'pointer'
72
- }
73
- }), /*#__PURE__*/_react["default"].createElement(_choice["default"], {
74
- n: n,
75
- dragKey: n.key,
76
- targetId: "0",
77
- value: data,
78
- duplicates: opts.options.duplicates,
79
- onChange: function onChange(value) {
80
- return onValueChange(nodeProps, n, value);
81
- },
82
- removeResponse: function removeResponse(value) {
83
- return onRemoveResponse(nodeProps, value);
84
- }
85
- }, nodeProps.children));
86
- };
87
-
88
- DragDrop.propTypes = {
89
- attributes: _propTypes["default"].object,
90
- data: _propTypes["default"].object,
91
- n: _propTypes["default"].object,
92
- nodeProps: _propTypes["default"].object,
93
- opts: _propTypes["default"].object
94
- };
95
- var _default = DragDrop;
96
- exports["default"] = _default;
97
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
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,57 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports["default"] = void 0;
9
-
10
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
-
12
- var _react = _interopRequireDefault(require("react"));
13
-
14
- var _propTypes = _interopRequireDefault(require("prop-types"));
15
-
16
- var ExplicitConstructedResponse = function ExplicitConstructedResponse(props) {
17
- var attributes = props.attributes,
18
- value = props.value,
19
- error = props.error;
20
- return /*#__PURE__*/_react["default"].createElement("span", (0, _extends2["default"])({}, attributes, {
21
- style: {
22
- display: 'inline-flex',
23
- visibility: props.isFocused ? 'hidden' : 'visible',
24
- minHeight: '55px',
25
- minWidth: '178px',
26
- position: 'relative',
27
- cursor: 'pointer'
28
- }
29
- }), /*#__PURE__*/_react["default"].createElement("div", {
30
- style: {
31
- display: 'inline-flex',
32
- width: '100%',
33
- minHeight: '46px',
34
- height: '46px',
35
- backgroundColor: '#FFF',
36
- border: "1px solid ".concat(error ? 'red' : '#C0C3CF'),
37
- boxSizing: 'border-box',
38
- borderRadius: '4px',
39
- overflow: 'hidden',
40
- padding: '12px 21px',
41
- marginLeft: '4px'
42
- },
43
- dangerouslySetInnerHTML: {
44
- __html: value || '<div>&nbsp;</div>'
45
- }
46
- }));
47
- };
48
-
49
- ExplicitConstructedResponse.propTypes = {
50
- attributes: _propTypes["default"].object,
51
- error: _propTypes["default"].any,
52
- value: _propTypes["default"].string,
53
- isFocused: _propTypes["default"].bool
54
- };
55
- var _default = ExplicitConstructedResponse;
56
- exports["default"] = _default;
57
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/plugins/respArea/explicit-constructed-response/index.jsx"],"names":["ExplicitConstructedResponse","props","attributes","value","error","display","visibility","isFocused","minHeight","minWidth","position","cursor","width","height","backgroundColor","border","boxSizing","borderRadius","overflow","padding","marginLeft","__html","propTypes","PropTypes","object","any","string","bool"],"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,UAAU,EAAEL,KAAK,CAACM,SAAN,GAAkB,QAAlB,GAA6B,SAFpC;AAGLC,MAAAA,SAAS,EAAE,MAHN;AAILC,MAAAA,QAAQ,EAAE,OAJL;AAKLC,MAAAA,QAAQ,EAAE,UALL;AAMLC,MAAAA,MAAM,EAAE;AANH;AAFT,mBAWE;AACE,IAAA,KAAK,EAAE;AACLN,MAAAA,OAAO,EAAE,aADJ;AAELO,MAAAA,KAAK,EAAE,MAFF;AAGLJ,MAAAA,SAAS,EAAE,MAHN;AAILK,MAAAA,MAAM,EAAE,MAJH;AAKLC,MAAAA,eAAe,EAAE,MALZ;AAMLC,MAAAA,MAAM,sBAAeX,KAAK,GAAG,KAAH,GAAW,SAA/B,CAND;AAOLY,MAAAA,SAAS,EAAE,YAPN;AAQLC,MAAAA,YAAY,EAAE,KART;AASLC,MAAAA,QAAQ,EAAE,QATL;AAULC,MAAAA,OAAO,EAAE,WAVJ;AAWLC,MAAAA,UAAU,EAAE;AAXP,KADT;AAcE,IAAA,uBAAuB,EAAE;AACvBC,MAAAA,MAAM,EAAElB,KAAK,IAAI;AADM;AAd3B,IAXF,CADF;AAgCD,CAnCD;;AAqCAH,2BAA2B,CAACsB,SAA5B,GAAwC;AACtCpB,EAAAA,UAAU,EAAEqB,sBAAUC,MADgB;AAEtCpB,EAAAA,KAAK,EAAEmB,sBAAUE,GAFqB;AAGtCtB,EAAAA,KAAK,EAAEoB,sBAAUG,MAHqB;AAItCnB,EAAAA,SAAS,EAAEgB,sBAAUI;AAJiB,CAAxC;eAOe3B,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 visibility: props.isFocused ? 'hidden' : 'visible',\n minHeight: '55px',\n minWidth: '178px',\n position: 'relative',\n cursor: 'pointer',\n }}\n >\n <div\n style={{\n display: 'inline-flex',\n width: '100%',\n minHeight: '46px',\n height: '46px',\n backgroundColor: '#FFF',\n border: `1px solid ${error ? 'red' : '#C0C3CF'}`,\n boxSizing: 'border-box',\n borderRadius: '4px',\n overflow: 'hidden',\n padding: '12px 21px',\n marginLeft: '4px',\n }}\n dangerouslySetInnerHTML={{\n __html: value || '<div>&nbsp;</div>',\n }}\n />\n </span>\n );\n};\n\nExplicitConstructedResponse.propTypes = {\n attributes: PropTypes.object,\n error: PropTypes.any,\n value: PropTypes.string,\n isFocused: PropTypes.bool,\n};\n\nexport default ExplicitConstructedResponse;\n"],"file":"index.js"}
@@ -1,95 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.ToolbarIcon = exports.GripIcon = exports.Chevron = void 0;
9
-
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
-
12
- var _react = _interopRequireDefault(require("react"));
13
-
14
- var _propTypes = _interopRequireDefault(require("prop-types"));
15
-
16
- var _ChevronRight = _interopRequireDefault(require("@material-ui/icons/ChevronRight"));
17
-
18
- var _MoreVert = _interopRequireDefault(require("@material-ui/icons/MoreVert"));
19
-
20
- var _styles = require("@material-ui/core/styles");
21
-
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
-
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
-
26
- var getRotate = function getRotate(direction) {
27
- switch (direction) {
28
- case 'down':
29
- return 90;
30
-
31
- case 'up':
32
- return -90;
33
-
34
- case 'left':
35
- return 180;
36
-
37
- default:
38
- return 0;
39
- }
40
- };
41
-
42
- var Chevron = function Chevron(props) {
43
- var direction = props.direction,
44
- style = props.style;
45
- var rotate = getRotate(direction);
46
- return /*#__PURE__*/_react["default"].createElement(_ChevronRight["default"], {
47
- style: _objectSpread({
48
- transform: "rotate(".concat(rotate, "deg)")
49
- }, style)
50
- });
51
- };
52
-
53
- exports.Chevron = Chevron;
54
- Chevron.propTypes = {
55
- direction: _propTypes["default"].string,
56
- style: _propTypes["default"].object
57
- };
58
-
59
- var GripIcon = function GripIcon(_ref) {
60
- var style = _ref.style;
61
- return /*#__PURE__*/_react["default"].createElement("span", {
62
- style: style
63
- }, /*#__PURE__*/_react["default"].createElement(_MoreVert["default"], {
64
- style: {
65
- margin: '0 -16px'
66
- }
67
- }), /*#__PURE__*/_react["default"].createElement(_MoreVert["default"], null));
68
- };
69
-
70
- exports.GripIcon = GripIcon;
71
- GripIcon.propTypes = {
72
- style: _propTypes["default"].object
73
- };
74
- var ToolbarIcon = (0, _styles.withStyles)(function (theme) {
75
- return {
76
- icon: {
77
- fontFamily: 'Cerebri Sans !important',
78
- fontSize: theme.typography.fontSize,
79
- fontWeight: 'bold',
80
- lineHeight: '14px',
81
- position: 'relative',
82
- top: '7px',
83
- width: '110px',
84
- height: '28px',
85
- whiteSpace: 'nowrap'
86
- }
87
- };
88
- })(function (_ref2) {
89
- var classes = _ref2.classes;
90
- return /*#__PURE__*/_react["default"].createElement("div", {
91
- className: classes.icon
92
- }, "+ Response Area");
93
- });
94
- exports.ToolbarIcon = ToolbarIcon;
95
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
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","theme","icon","fontFamily","fontSize","typography","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;;AAEF,SAAK,IAAL;AACE,aAAO,CAAC,EAAR;;AAEF,SAAK,MAAL;AACE,aAAO,GAAP;;AAEF;AACE,aAAO,CAAP;AAXJ;AAaD,CAdD;;AAgBO,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,UAACC,KAAD;AAAA,SAAY;AAChDC,IAAAA,IAAI,EAAE;AACJC,MAAAA,UAAU,EAAE,yBADR;AAEJC,MAAAA,QAAQ,EAAEH,KAAK,CAACI,UAAN,CAAiBD,QAFvB;AAGJE,MAAAA,UAAU,EAAE,MAHR;AAIJC,MAAAA,UAAU,EAAE,MAJR;AAKJC,MAAAA,QAAQ,EAAE,UALN;AAMJC,MAAAA,GAAG,EAAE,KAND;AAOJC,MAAAA,KAAK,EAAE,OAPH;AAQJC,MAAAA,MAAM,EAAE,MARJ;AASJC,MAAAA,UAAU,EAAE;AATR;AAD0C,GAAZ;AAAA,CAAX,EAYvB;AAAA,MAAGC,OAAH,SAAGA,OAAH;AAAA,sBAAiB;AAAK,IAAA,SAAS,EAAEA,OAAO,CAACX;AAAxB,uBAAjB;AAAA,CAZuB,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\n case 'up':\n return -90;\n\n case 'left':\n return 180;\n\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((theme) => ({\n icon: {\n fontFamily: 'Cerebri Sans !important',\n fontSize: theme.typography.fontSize,\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,341 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports["default"] = ResponseAreaPlugin;
9
- exports.serialization = void 0;
10
-
11
- var _react = _interopRequireDefault(require("react"));
12
-
13
- var _debug = _interopRequireDefault(require("debug"));
14
-
15
- var _isUndefined = _interopRequireDefault(require("lodash/isUndefined"));
16
-
17
- var _inlineDropdown = _interopRequireDefault(require("./inline-dropdown"));
18
-
19
- var _dragInTheBlank = _interopRequireDefault(require("./drag-in-the-blank"));
20
-
21
- var _explicitConstructedResponse = _interopRequireDefault(require("./explicit-constructed-response"));
22
-
23
- var _mathTemplated = _interopRequireDefault(require("./math-templated"));
24
-
25
- var _utils = require("./utils");
26
-
27
- var _icons = require("./icons");
28
-
29
- var log = (0, _debug["default"])('@pie-lib:editable-html:plugins:respArea');
30
- var lastIndexMap = {};
31
- var elTypesMap = {
32
- 'inline-dropdown': 'inline_dropdown',
33
- 'explicit-constructed-response': 'explicit_constructed_response',
34
- 'math-templated': 'math_templated',
35
- 'drag-in-the-blank': 'drag_in_the_blank'
36
- };
37
- var elTypesArray = Object.values(elTypesMap);
38
-
39
- function ResponseAreaPlugin(opts) {
40
- var isOfCurrentType = function isOfCurrentType(d) {
41
- return d.type === opts.type || d.type === elTypesMap[opts.type];
42
- };
43
-
44
- var toolbar = {
45
- icon: /*#__PURE__*/_react["default"].createElement(_icons.ToolbarIcon, null),
46
- buttonStyles: {
47
- margin: '0 20px 0 auto'
48
- },
49
- onClick: function onClick(value, onChange) {
50
- log('[toolbar] onClick');
51
- var change = value.change();
52
- var currentRespAreaList = change.value.document.filterDescendants(isOfCurrentType);
53
-
54
- if (currentRespAreaList.size >= opts.maxResponseAreas) {
55
- return;
56
- }
57
-
58
- var type = opts.type.replace(/-/g, '_');
59
- var prevIndex = lastIndexMap[type];
60
- var newIndex = prevIndex === 0 ? prevIndex : prevIndex + 1;
61
- var newInline = (0, _utils.getDefaultElement)(opts, newIndex);
62
- lastIndexMap[type] += 1;
63
-
64
- if (newInline) {
65
- if (change.value.selection.startKey || change.value.selection.endKey) {
66
- change.insertInline(newInline);
67
- } else {
68
- // If the markup is empty and there's no focus
69
- var lastText = value.document.getLastText();
70
-
71
- if (!lastText) {
72
- return;
73
- }
74
-
75
- var parentNode = value.document.getParent(lastText.key);
76
-
77
- if (parentNode) {
78
- var index = parentNode.nodes.indexOf(lastText.key);
79
- if (parentNode.isVoid) return;
80
- change.insertNodeByKey(parentNode.key, index + 1, newInline);
81
- }
82
- }
83
-
84
- if (newInline.type === 'drag_in_the_blank') {
85
- var nextText = change.value.document.getNextText(newInline.key);
86
-
87
- if (nextText) {
88
- change.moveFocusTo(nextText.key, 0).moveAnchorTo(nextText.key, 0);
89
- }
90
- }
91
-
92
- if (newInline.type === 'math_templated') {
93
- var _nextText = change.value.document.getNextText(newInline.key);
94
-
95
- if (_nextText) {
96
- change.moveFocusTo(_nextText.key, 0).moveAnchorTo(_nextText.key, 0);
97
- }
98
- }
99
-
100
- onChange(change);
101
- }
102
- },
103
- customToolbar: opts.respAreaToolbar,
104
- supports: function supports(node) {
105
- return node.object === 'inline' && elTypesArray.indexOf(node.type) >= 0;
106
- },
107
- showDone: false
108
- };
109
- return {
110
- name: 'response_area',
111
- toolbar: toolbar,
112
- filterPlugins: function filterPlugins(node, plugins) {
113
- if (node.type === 'explicit_constructed_response' || node.type === 'math_templated' || node.type === 'drag_in_the_blank') {
114
- return [];
115
- }
116
-
117
- return plugins.filter(function (p) {
118
- return p.name !== 'response_area';
119
- });
120
- },
121
- deleteNode: function deleteNode(e, node, value, onChange) {
122
- e.preventDefault();
123
- var change = value.change().removeNodeByKey(node.key);
124
- onChange(change);
125
- },
126
- renderNode: function renderNode(props) {
127
- var attributes = props.attributes,
128
- n = props.node,
129
- isFocused = props.isFocused;
130
-
131
- if (n.type === 'explicit_constructed_response') {
132
- var data = n.data.toJSON();
133
- var error;
134
-
135
- if (opts.error) {
136
- error = opts.error();
137
- }
138
-
139
- return /*#__PURE__*/_react["default"].createElement(_explicitConstructedResponse["default"], {
140
- attributes: attributes,
141
- isFocused: isFocused,
142
- value: data.value,
143
- error: error && error[data.index] && error[data.index][0]
144
- });
145
- }
146
-
147
- if (n.type === 'math_templated') {
148
- var _data = n.data.toJSON();
149
-
150
- var _error;
151
-
152
- if (opts.error) {
153
- _error = opts.error();
154
- } // add 1 to index to display R 1 instead of R 0
155
-
156
-
157
- var keyToDisplay = "R ".concat(parseInt(_data.index) + 1);
158
- return /*#__PURE__*/_react["default"].createElement(_mathTemplated["default"], {
159
- attributes: attributes,
160
- keyToDisplay: keyToDisplay,
161
- value: _data.value || '',
162
- error: _error && _error[_data.index] && _error[_data.index][0]
163
- });
164
- }
165
-
166
- if (n.type === 'drag_in_the_blank') {
167
- var _data2 = n.data.toJSON();
168
-
169
- return /*#__PURE__*/_react["default"].createElement(_dragInTheBlank["default"], {
170
- attributes: attributes,
171
- data: _data2,
172
- n: n,
173
- nodeProps: props,
174
- opts: opts
175
- });
176
- }
177
-
178
- if (n.type === 'inline_dropdown') {
179
- var _data3 = n.data.toJSON();
180
-
181
- return /*#__PURE__*/_react["default"].createElement(_inlineDropdown["default"], {
182
- attributes: attributes,
183
- selectedItem: _data3.value
184
- });
185
- }
186
- },
187
- onChange: function onChange(change, editor) {
188
- var type = opts.type.replace(/-/g, '_');
189
-
190
- if ((0, _isUndefined["default"])(lastIndexMap[type])) {
191
- lastIndexMap[type] = 0;
192
- change.value.document.forEachDescendant(function (d) {
193
- if (d.type === type) {
194
- var newIndex = parseInt(d.data.get('index'), 10);
195
-
196
- if (newIndex > lastIndexMap[type]) {
197
- lastIndexMap[type] = newIndex;
198
- }
199
- }
200
- });
201
- }
202
-
203
- if (!editor.value) {
204
- return;
205
- }
206
-
207
- var currentRespAreaList = change.value.document.filterDescendants(isOfCurrentType);
208
- var oldRespAreaList = editor.value.document.filterDescendants(isOfCurrentType);
209
- toolbar.disabled = currentRespAreaList.size >= opts.maxResponseAreas;
210
- var arrayToFilter = oldRespAreaList.size > currentRespAreaList.size ? oldRespAreaList : currentRespAreaList;
211
- var arrayToUseForFilter = arrayToFilter === oldRespAreaList ? currentRespAreaList : oldRespAreaList;
212
- var elementsWithChangedStatus = arrayToFilter.filter(function (d) {
213
- return !arrayToUseForFilter.find(function (e) {
214
- return e.data.get('index') === d.data.get('index');
215
- });
216
- });
217
-
218
- if (elementsWithChangedStatus.size && oldRespAreaList.size > currentRespAreaList.size) {
219
- opts.onHandleAreaChange(elementsWithChangedStatus);
220
- }
221
- },
222
- onDrop: function onDrop(event, change, editor) {
223
- var closestEl = event.target.closest('[data-key]');
224
- var inline = editor.value.document.findDescendant(function (d) {
225
- return d.key === closestEl.dataset.key;
226
- });
227
-
228
- if (inline.type === 'drag_in_the_blank') {
229
- return false;
230
- }
231
- }
232
- };
233
- }
234
-
235
- var serialization = {
236
- deserialize: function deserialize(el) {
237
- var type = el.dataset && el.dataset.type;
238
-
239
- switch (type) {
240
- case 'inline_dropdown':
241
- return {
242
- object: 'inline',
243
- type: 'inline_dropdown',
244
- isVoid: true,
245
- data: {
246
- index: el.dataset.index,
247
- value: el.dataset.value
248
- }
249
- };
250
-
251
- case 'explicit_constructed_response':
252
- return {
253
- object: 'inline',
254
- type: 'explicit_constructed_response',
255
- isVoid: true,
256
- data: {
257
- index: el.dataset.index,
258
- value: el.dataset.value
259
- }
260
- };
261
-
262
- case 'math_templated':
263
- return {
264
- object: 'inline',
265
- type: 'math_templated',
266
- isVoid: true,
267
- data: {
268
- index: el.dataset.index,
269
- value: el.dataset.value
270
- }
271
- };
272
-
273
- case 'drag_in_the_blank':
274
- return {
275
- object: 'inline',
276
- type: 'drag_in_the_blank',
277
- isVoid: true,
278
- data: {
279
- index: el.dataset.index,
280
- id: el.dataset.id,
281
- value: el.dataset.value,
282
- inTable: el.dataset.inTable
283
- }
284
- };
285
- }
286
- },
287
- serialize: function serialize(object) {
288
- if (object.object !== 'inline') {
289
- return;
290
- }
291
-
292
- switch (object.type) {
293
- case 'inline_dropdown':
294
- {
295
- var data = object.data.toJSON();
296
- return /*#__PURE__*/_react["default"].createElement("span", {
297
- "data-type": "inline_dropdown",
298
- "data-index": data.index,
299
- "data-value": data.value
300
- });
301
- }
302
-
303
- case 'explicit_constructed_response':
304
- {
305
- var _data4 = object.data.toJSON();
306
-
307
- return /*#__PURE__*/_react["default"].createElement("span", {
308
- "data-type": "explicit_constructed_response",
309
- "data-index": _data4.index,
310
- "data-value": _data4.value
311
- });
312
- }
313
-
314
- case 'math_templated':
315
- {
316
- var _data5 = object.data.toJSON();
317
-
318
- return /*#__PURE__*/_react["default"].createElement("span", {
319
- "data-type": "math_templated",
320
- "data-index": _data5.index,
321
- "data-value": _data5.value
322
- });
323
- }
324
-
325
- case 'drag_in_the_blank':
326
- {
327
- var _data6 = object.data.toJSON();
328
-
329
- return /*#__PURE__*/_react["default"].createElement("span", {
330
- "data-type": "drag_in_the_blank",
331
- "data-index": _data6.index,
332
- "data-id": _data6.id,
333
- "data-value": _data6.value,
334
- "data-in-table": _data6.inTable
335
- });
336
- }
337
- }
338
- }
339
- };
340
- exports.serialization = serialization;
341
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
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","isFocused","data","toJSON","error","keyToDisplay","parseInt","editor","forEachDescendant","get","oldRespAreaList","disabled","arrayToFilter","arrayToUseForFilter","elementsWithChangedStatus","find","onHandleAreaChange","onDrop","event","closestEl","target","closest","inline","findDescendant","dataset","serialization","deserialize","el","id","inTable","serialize"],"mappings":";;;;;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA,IAAMA,GAAG,GAAG,uBAAM,yCAAN,CAAZ;AAEA,IAAMC,YAAY,GAAG,EAArB;AACA,IAAMC,UAAU,GAAG;AACjB,qBAAmB,iBADF;AAEjB,mCAAiC,+BAFhB;AAGjB,oBAAkB,gBAHD;AAIjB,uBAAqB;AAJJ,CAAnB;AAMA,IAAMC,YAAY,GAAGC,MAAM,CAACC,MAAP,CAAcH,UAAd,CAArB;;AAEe,SAASI,kBAAT,CAA4BC,IAA5B,EAAkC;AAC/C,MAAMC,eAAe,GAAG,SAAlBA,eAAkB,CAACC,CAAD;AAAA,WAAOA,CAAC,CAACC,IAAF,KAAWH,IAAI,CAACG,IAAhB,IAAwBD,CAAC,CAACC,IAAF,KAAWR,UAAU,CAACK,IAAI,CAACG,IAAN,CAApD;AAAA,GAAxB;;AAEA,MAAMC,OAAO,GAAG;AACdC,IAAAA,IAAI,eAAE,gCAAC,kBAAD,OADQ;AAEdC,IAAAA,YAAY,EAAE;AACZC,MAAAA,MAAM,EAAE;AADI,KAFA;AAKdC,IAAAA,OAAO,EAAE,iBAACC,KAAD,EAAQC,QAAR,EAAqB;AAC5BjB,MAAAA,GAAG,CAAC,mBAAD,CAAH;AACA,UAAMkB,MAAM,GAAGF,KAAK,CAACE,MAAN,EAAf;AACA,UAAMC,mBAAmB,GAAGD,MAAM,CAACF,KAAP,CAAaI,QAAb,CAAsBC,iBAAtB,CAAwCb,eAAxC,CAA5B;;AAEA,UAAIW,mBAAmB,CAACG,IAApB,IAA4Bf,IAAI,CAACgB,gBAArC,EAAuD;AACrD;AACD;;AAED,UAAMb,IAAI,GAAGH,IAAI,CAACG,IAAL,CAAUc,OAAV,CAAkB,IAAlB,EAAwB,GAAxB,CAAb;AACA,UAAMC,SAAS,GAAGxB,YAAY,CAACS,IAAD,CAA9B;AACA,UAAMgB,QAAQ,GAAGD,SAAS,KAAK,CAAd,GAAkBA,SAAlB,GAA8BA,SAAS,GAAG,CAA3D;AACA,UAAME,SAAS,GAAG,8BAAkBpB,IAAlB,EAAwBmB,QAAxB,CAAlB;AAEAzB,MAAAA,YAAY,CAACS,IAAD,CAAZ,IAAsB,CAAtB;;AAEA,UAAIiB,SAAJ,EAAe;AACb,YAAIT,MAAM,CAACF,KAAP,CAAaY,SAAb,CAAuBC,QAAvB,IAAmCX,MAAM,CAACF,KAAP,CAAaY,SAAb,CAAuBE,MAA9D,EAAsE;AACpEZ,UAAAA,MAAM,CAACa,YAAP,CAAoBJ,SAApB;AACD,SAFD,MAEO;AACL;AACA,cAAMK,QAAQ,GAAGhB,KAAK,CAACI,QAAN,CAAea,WAAf,EAAjB;;AAEA,cAAI,CAACD,QAAL,EAAe;AACb;AACD;;AACD,cAAME,UAAU,GAAGlB,KAAK,CAACI,QAAN,CAAee,SAAf,CAAyBH,QAAQ,CAACI,GAAlC,CAAnB;;AAEA,cAAIF,UAAJ,EAAgB;AACd,gBAAMG,KAAK,GAAGH,UAAU,CAACI,KAAX,CAAiBC,OAAjB,CAAyBP,QAAQ,CAACI,GAAlC,CAAd;AAEA,gBAAIF,UAAU,CAACM,MAAf,EAAuB;AAEvBtB,YAAAA,MAAM,CAACuB,eAAP,CAAuBP,UAAU,CAACE,GAAlC,EAAuCC,KAAK,GAAG,CAA/C,EAAkDV,SAAlD;AACD;AACF;;AAED,YAAIA,SAAS,CAACjB,IAAV,KAAmB,mBAAvB,EAA4C;AAC1C,cAAMgC,QAAQ,GAAGxB,MAAM,CAACF,KAAP,CAAaI,QAAb,CAAsBuB,WAAtB,CAAkChB,SAAS,CAACS,GAA5C,CAAjB;;AAEA,cAAIM,QAAJ,EAAc;AACZxB,YAAAA,MAAM,CAAC0B,WAAP,CAAmBF,QAAQ,CAACN,GAA5B,EAAiC,CAAjC,EAAoCS,YAApC,CAAiDH,QAAQ,CAACN,GAA1D,EAA+D,CAA/D;AACD;AACF;;AACD,YAAIT,SAAS,CAACjB,IAAV,KAAmB,gBAAvB,EAAyC;AACvC,cAAMgC,SAAQ,GAAGxB,MAAM,CAACF,KAAP,CAAaI,QAAb,CAAsBuB,WAAtB,CAAkChB,SAAS,CAACS,GAA5C,CAAjB;;AAEA,cAAIM,SAAJ,EAAc;AACZxB,YAAAA,MAAM,CAAC0B,WAAP,CAAmBF,SAAQ,CAACN,GAA5B,EAAiC,CAAjC,EAAoCS,YAApC,CAAiDH,SAAQ,CAACN,GAA1D,EAA+D,CAA/D;AACD;AACF;;AAEDnB,QAAAA,QAAQ,CAACC,MAAD,CAAR;AACD;AACF,KA3Da;AA4Dd4B,IAAAA,aAAa,EAAEvC,IAAI,CAACwC,eA5DN;AA6DdC,IAAAA,QAAQ,EAAE,kBAACC,IAAD;AAAA,aAAUA,IAAI,CAACC,MAAL,KAAgB,QAAhB,IAA4B/C,YAAY,CAACoC,OAAb,CAAqBU,IAAI,CAACvC,IAA1B,KAAmC,CAAzE;AAAA,KA7DI;AA8DdyC,IAAAA,QAAQ,EAAE;AA9DI,GAAhB;AAiEA,SAAO;AACLC,IAAAA,IAAI,EAAE,eADD;AAELzC,IAAAA,OAAO,EAAPA,OAFK;AAGL0C,IAAAA,aAAa,EAAE,uBAACJ,IAAD,EAAOK,OAAP,EAAmB;AAChC,UACEL,IAAI,CAACvC,IAAL,KAAc,+BAAd,IACAuC,IAAI,CAACvC,IAAL,KAAc,gBADd,IAEAuC,IAAI,CAACvC,IAAL,KAAc,mBAHhB,EAIE;AACA,eAAO,EAAP;AACD;;AAED,aAAO4C,OAAO,CAACC,MAAR,CAAe,UAACC,CAAD;AAAA,eAAOA,CAAC,CAACJ,IAAF,KAAW,eAAlB;AAAA,OAAf,CAAP;AACD,KAbI;AAcLK,IAAAA,UAAU,EAAE,oBAACC,CAAD,EAAIT,IAAJ,EAAUjC,KAAV,EAAiBC,QAAjB,EAA8B;AACxCyC,MAAAA,CAAC,CAACC,cAAF;AAEA,UAAMzC,MAAM,GAAGF,KAAK,CAACE,MAAN,GAAe0C,eAAf,CAA+BX,IAAI,CAACb,GAApC,CAAf;AAEAnB,MAAAA,QAAQ,CAACC,MAAD,CAAR;AACD,KApBI;AAqBL2C,IAAAA,UArBK,sBAqBMC,KArBN,EAqBa;AAChB,UAAQC,UAAR,GAA2CD,KAA3C,CAAQC,UAAR;AAAA,UAA0BC,CAA1B,GAA2CF,KAA3C,CAAoBb,IAApB;AAAA,UAA6BgB,SAA7B,GAA2CH,KAA3C,CAA6BG,SAA7B;;AAEA,UAAID,CAAC,CAACtD,IAAF,KAAW,+BAAf,EAAgD;AAC9C,YAAMwD,IAAI,GAAGF,CAAC,CAACE,IAAF,CAAOC,MAAP,EAAb;AACA,YAAIC,KAAJ;;AAEA,YAAI7D,IAAI,CAAC6D,KAAT,EAAgB;AACdA,UAAAA,KAAK,GAAG7D,IAAI,CAAC6D,KAAL,EAAR;AACD;;AAED,4BACE,gCAAC,uCAAD;AACE,UAAA,UAAU,EAAEL,UADd;AAEE,UAAA,SAAS,EAAEE,SAFb;AAGE,UAAA,KAAK,EAAEC,IAAI,CAAClD,KAHd;AAIE,UAAA,KAAK,EAAEoD,KAAK,IAAIA,KAAK,CAACF,IAAI,CAAC7B,KAAN,CAAd,IAA8B+B,KAAK,CAACF,IAAI,CAAC7B,KAAN,CAAL,CAAkB,CAAlB;AAJvC,UADF;AAQD;;AAED,UAAI2B,CAAC,CAACtD,IAAF,KAAW,gBAAf,EAAiC;AAC/B,YAAMwD,KAAI,GAAGF,CAAC,CAACE,IAAF,CAAOC,MAAP,EAAb;;AACA,YAAIC,MAAJ;;AAEA,YAAI7D,IAAI,CAAC6D,KAAT,EAAgB;AACdA,UAAAA,MAAK,GAAG7D,IAAI,CAAC6D,KAAL,EAAR;AACD,SAN8B,CAQ/B;;;AACA,YAAMC,YAAY,eAAQC,QAAQ,CAACJ,KAAI,CAAC7B,KAAN,CAAR,GAAuB,CAA/B,CAAlB;AAEA,4BACE,gCAAC,yBAAD;AACE,UAAA,UAAU,EAAE0B,UADd;AAEE,UAAA,YAAY,EAAEM,YAFhB;AAGE,UAAA,KAAK,EAAEH,KAAI,CAAClD,KAAL,IAAc,EAHvB;AAIE,UAAA,KAAK,EAAEoD,MAAK,IAAIA,MAAK,CAACF,KAAI,CAAC7B,KAAN,CAAd,IAA8B+B,MAAK,CAACF,KAAI,CAAC7B,KAAN,CAAL,CAAkB,CAAlB;AAJvC,UADF;AAQD;;AAED,UAAI2B,CAAC,CAACtD,IAAF,KAAW,mBAAf,EAAoC;AAClC,YAAMwD,MAAI,GAAGF,CAAC,CAACE,IAAF,CAAOC,MAAP,EAAb;;AAEA,4BAAO,gCAAC,0BAAD;AAAgB,UAAA,UAAU,EAAEJ,UAA5B;AAAwC,UAAA,IAAI,EAAEG,MAA9C;AAAoD,UAAA,CAAC,EAAEF,CAAvD;AAA0D,UAAA,SAAS,EAAEF,KAArE;AAA4E,UAAA,IAAI,EAAEvD;AAAlF,UAAP;AACD;;AAED,UAAIyD,CAAC,CAACtD,IAAF,KAAW,iBAAf,EAAkC;AAChC,YAAMwD,MAAI,GAAGF,CAAC,CAACE,IAAF,CAAOC,MAAP,EAAb;;AAEA,4BAAO,gCAAC,0BAAD;AAAgB,UAAA,UAAU,EAAEJ,UAA5B;AAAwC,UAAA,YAAY,EAAEG,MAAI,CAAClD;AAA3D,UAAP;AACD;AACF,KA1EI;AA2ELC,IAAAA,QA3EK,oBA2EIC,MA3EJ,EA2EYqD,MA3EZ,EA2EoB;AACvB,UAAM7D,IAAI,GAAGH,IAAI,CAACG,IAAL,CAAUc,OAAV,CAAkB,IAAlB,EAAwB,GAAxB,CAAb;;AAEA,UAAI,6BAAYvB,YAAY,CAACS,IAAD,CAAxB,CAAJ,EAAqC;AACnCT,QAAAA,YAAY,CAACS,IAAD,CAAZ,GAAqB,CAArB;AAEAQ,QAAAA,MAAM,CAACF,KAAP,CAAaI,QAAb,CAAsBoD,iBAAtB,CAAwC,UAAC/D,CAAD,EAAO;AAC7C,cAAIA,CAAC,CAACC,IAAF,KAAWA,IAAf,EAAqB;AACnB,gBAAMgB,QAAQ,GAAG4C,QAAQ,CAAC7D,CAAC,CAACyD,IAAF,CAAOO,GAAP,CAAW,OAAX,CAAD,EAAsB,EAAtB,CAAzB;;AAEA,gBAAI/C,QAAQ,GAAGzB,YAAY,CAACS,IAAD,CAA3B,EAAmC;AACjCT,cAAAA,YAAY,CAACS,IAAD,CAAZ,GAAqBgB,QAArB;AACD;AACF;AACF,SARD;AASD;;AAED,UAAI,CAAC6C,MAAM,CAACvD,KAAZ,EAAmB;AACjB;AACD;;AAED,UAAMG,mBAAmB,GAAGD,MAAM,CAACF,KAAP,CAAaI,QAAb,CAAsBC,iBAAtB,CAAwCb,eAAxC,CAA5B;AACA,UAAMkE,eAAe,GAAGH,MAAM,CAACvD,KAAP,CAAaI,QAAb,CAAsBC,iBAAtB,CAAwCb,eAAxC,CAAxB;AAEAG,MAAAA,OAAO,CAACgE,QAAR,GAAmBxD,mBAAmB,CAACG,IAApB,IAA4Bf,IAAI,CAACgB,gBAApD;AAEA,UAAMqD,aAAa,GAAGF,eAAe,CAACpD,IAAhB,GAAuBH,mBAAmB,CAACG,IAA3C,GAAkDoD,eAAlD,GAAoEvD,mBAA1F;AACA,UAAM0D,mBAAmB,GAAGD,aAAa,KAAKF,eAAlB,GAAoCvD,mBAApC,GAA0DuD,eAAtF;AAEA,UAAMI,yBAAyB,GAAGF,aAAa,CAACrB,MAAd,CAChC,UAAC9C,CAAD;AAAA,eAAO,CAACoE,mBAAmB,CAACE,IAApB,CAAyB,UAACrB,CAAD;AAAA,iBAAOA,CAAC,CAACQ,IAAF,CAAOO,GAAP,CAAW,OAAX,MAAwBhE,CAAC,CAACyD,IAAF,CAAOO,GAAP,CAAW,OAAX,CAA/B;AAAA,SAAzB,CAAR;AAAA,OADgC,CAAlC;;AAIA,UAAIK,yBAAyB,CAACxD,IAA1B,IAAkCoD,eAAe,CAACpD,IAAhB,GAAuBH,mBAAmB,CAACG,IAAjF,EAAuF;AACrFf,QAAAA,IAAI,CAACyE,kBAAL,CAAwBF,yBAAxB;AACD;AACF,KA/GI;AAgHLG,IAAAA,MAhHK,kBAgHEC,KAhHF,EAgHShE,MAhHT,EAgHiBqD,MAhHjB,EAgHyB;AAC5B,UAAMY,SAAS,GAAGD,KAAK,CAACE,MAAN,CAAaC,OAAb,CAAqB,YAArB,CAAlB;AACA,UAAMC,MAAM,GAAGf,MAAM,CAACvD,KAAP,CAAaI,QAAb,CAAsBmE,cAAtB,CAAqC,UAAC9E,CAAD;AAAA,eAAOA,CAAC,CAAC2B,GAAF,KAAU+C,SAAS,CAACK,OAAV,CAAkBpD,GAAnC;AAAA,OAArC,CAAf;;AAEA,UAAIkD,MAAM,CAAC5E,IAAP,KAAgB,mBAApB,EAAyC;AACvC,eAAO,KAAP;AACD;AACF;AAvHI,GAAP;AAyHD;;AAEM,IAAM+E,aAAa,GAAG;AAC3BC,EAAAA,WAD2B,uBACfC,EADe,EACX;AACd,QAAMjF,IAAI,GAAGiF,EAAE,CAACH,OAAH,IAAcG,EAAE,CAACH,OAAH,CAAW9E,IAAtC;;AAEA,YAAQA,IAAR;AACE,WAAK,iBAAL;AACE,eAAO;AACLwC,UAAAA,MAAM,EAAE,QADH;AAELxC,UAAAA,IAAI,EAAE,iBAFD;AAGL8B,UAAAA,MAAM,EAAE,IAHH;AAIL0B,UAAAA,IAAI,EAAE;AACJ7B,YAAAA,KAAK,EAAEsD,EAAE,CAACH,OAAH,CAAWnD,KADd;AAEJrB,YAAAA,KAAK,EAAE2E,EAAE,CAACH,OAAH,CAAWxE;AAFd;AAJD,SAAP;;AASF,WAAK,+BAAL;AACE,eAAO;AACLkC,UAAAA,MAAM,EAAE,QADH;AAELxC,UAAAA,IAAI,EAAE,+BAFD;AAGL8B,UAAAA,MAAM,EAAE,IAHH;AAIL0B,UAAAA,IAAI,EAAE;AACJ7B,YAAAA,KAAK,EAAEsD,EAAE,CAACH,OAAH,CAAWnD,KADd;AAEJrB,YAAAA,KAAK,EAAE2E,EAAE,CAACH,OAAH,CAAWxE;AAFd;AAJD,SAAP;;AASF,WAAK,gBAAL;AACE,eAAO;AACLkC,UAAAA,MAAM,EAAE,QADH;AAELxC,UAAAA,IAAI,EAAE,gBAFD;AAGL8B,UAAAA,MAAM,EAAE,IAHH;AAIL0B,UAAAA,IAAI,EAAE;AACJ7B,YAAAA,KAAK,EAAEsD,EAAE,CAACH,OAAH,CAAWnD,KADd;AAEJrB,YAAAA,KAAK,EAAE2E,EAAE,CAACH,OAAH,CAAWxE;AAFd;AAJD,SAAP;;AASF,WAAK,mBAAL;AACE,eAAO;AACLkC,UAAAA,MAAM,EAAE,QADH;AAELxC,UAAAA,IAAI,EAAE,mBAFD;AAGL8B,UAAAA,MAAM,EAAE,IAHH;AAIL0B,UAAAA,IAAI,EAAE;AACJ7B,YAAAA,KAAK,EAAEsD,EAAE,CAACH,OAAH,CAAWnD,KADd;AAEJuD,YAAAA,EAAE,EAAED,EAAE,CAACH,OAAH,CAAWI,EAFX;AAGJ5E,YAAAA,KAAK,EAAE2E,EAAE,CAACH,OAAH,CAAWxE,KAHd;AAIJ6E,YAAAA,OAAO,EAAEF,EAAE,CAACH,OAAH,CAAWK;AAJhB;AAJD,SAAP;AAhCJ;AA4CD,GAhD0B;AAiD3BC,EAAAA,SAjD2B,qBAiDjB5C,MAjDiB,EAiDT;AAChB,QAAIA,MAAM,CAACA,MAAP,KAAkB,QAAtB,EAAgC;AAC9B;AACD;;AAED,YAAQA,MAAM,CAACxC,IAAf;AACE,WAAK,iBAAL;AAAwB;AACtB,cAAMwD,IAAI,GAAGhB,MAAM,CAACgB,IAAP,CAAYC,MAAZ,EAAb;AAEA,8BAAO;AAAM,yBAAU,iBAAhB;AAAkC,0BAAYD,IAAI,CAAC7B,KAAnD;AAA0D,0BAAY6B,IAAI,CAAClD;AAA3E,YAAP;AACD;;AACD,WAAK,+BAAL;AAAsC;AACpC,cAAMkD,MAAI,GAAGhB,MAAM,CAACgB,IAAP,CAAYC,MAAZ,EAAb;;AAEA,8BAAO;AAAM,yBAAU,+BAAhB;AAAgD,0BAAYD,MAAI,CAAC7B,KAAjE;AAAwE,0BAAY6B,MAAI,CAAClD;AAAzF,YAAP;AACD;;AACD,WAAK,gBAAL;AAAuB;AACrB,cAAMkD,MAAI,GAAGhB,MAAM,CAACgB,IAAP,CAAYC,MAAZ,EAAb;;AAEA,8BAAO;AAAM,yBAAU,gBAAhB;AAAiC,0BAAYD,MAAI,CAAC7B,KAAlD;AAAyD,0BAAY6B,MAAI,CAAClD;AAA1E,YAAP;AACD;;AACD,WAAK,mBAAL;AAA0B;AACxB,cAAMkD,MAAI,GAAGhB,MAAM,CAACgB,IAAP,CAAYC,MAAZ,EAAb;;AAEA,8BACE;AACE,yBAAU,mBADZ;AAEE,0BAAYD,MAAI,CAAC7B,KAFnB;AAGE,uBAAS6B,MAAI,CAAC0B,EAHhB;AAIE,0BAAY1B,MAAI,CAAClD,KAJnB;AAKE,6BAAekD,MAAI,CAAC2B;AALtB,YADF;AASD;AA5BH;AA8BD;AApF0B,CAAtB","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 MathTemplated from './math-templated';\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 'math-templated': 'math_templated',\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 if (newInline.type === 'math_templated') {\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 (\n node.type === 'explicit_constructed_response' ||\n node.type === 'math_templated' ||\n node.type === 'drag_in_the_blank'\n ) {\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, isFocused } = 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 isFocused={isFocused}\n value={data.value}\n error={error && error[data.index] && error[data.index][0]}\n />\n );\n }\n\n if (n.type === 'math_templated') {\n const data = n.data.toJSON();\n let error;\n\n if (opts.error) {\n error = opts.error();\n }\n\n // add 1 to index to display R 1 instead of R 0\n const keyToDisplay = `R ${parseInt(data.index) + 1}`;\n\n return (\n <MathTemplated\n attributes={attributes}\n keyToDisplay={keyToDisplay}\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 toolbar.disabled = currentRespAreaList.size >= opts.maxResponseAreas;\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 'math_templated':\n return {\n object: 'inline',\n type: 'math_templated',\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 'math_templated': {\n const data = object.data.toJSON();\n\n return <span data-type=\"math_templated\" 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"}