@pie-lib/mask-markup 2.0.0-beta.1 → 2.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +143 -35
- package/lib/choices/choice.js +22 -31
- package/lib/choices/choice.js.map +1 -1
- package/lib/choices/index.js +9 -33
- package/lib/choices/index.js.map +1 -1
- package/lib/componentize.js +1 -4
- package/lib/componentize.js.map +1 -1
- package/lib/components/blank.js +61 -86
- package/lib/components/blank.js.map +1 -1
- package/lib/components/correct-input.js +9 -25
- package/lib/components/correct-input.js.map +1 -1
- package/lib/components/dropdown.js +11 -37
- package/lib/components/dropdown.js.map +1 -1
- package/lib/components/input.js +14 -17
- package/lib/components/input.js.map +1 -1
- package/lib/constructed-response.js +11 -14
- package/lib/constructed-response.js.map +1 -1
- package/lib/drag-in-the-blank.js +21 -50
- package/lib/drag-in-the-blank.js.map +1 -1
- package/lib/index.js +1 -7
- package/lib/index.js.map +1 -1
- package/lib/inline-dropdown.js +6 -11
- package/lib/inline-dropdown.js.map +1 -1
- package/lib/mask.js +8 -49
- package/lib/mask.js.map +1 -1
- package/lib/new-serialization.js +6 -59
- package/lib/new-serialization.js.map +1 -0
- package/lib/parse-html.js +7 -6
- package/lib/parse-html.js.map +1 -0
- package/lib/serialization.js +9 -42
- package/lib/serialization.js.map +1 -1
- package/lib/test-serializer.js +4 -55
- package/lib/test-serializer.js.map +1 -0
- package/lib/with-mask.js +6 -30
- package/lib/with-mask.js.map +1 -1
- package/package.json +7 -7
- package/src/choices/choice.jsx +27 -13
- package/src/choices/index.jsx +17 -13
- package/src/components/blank.jsx +43 -31
- package/src/components/correct-input.jsx +18 -18
- package/src/components/dropdown.jsx +27 -38
- package/src/components/input.jsx +6 -3
- package/src/constructed-response.jsx +5 -4
- package/src/drag-in-the-blank.jsx +12 -12
- package/src/index.js +1 -8
- package/src/inline-dropdown.jsx +4 -3
- package/src/mask.jsx +13 -14
- package/src/new-serialization.jsx +19 -19
- package/src/parse-html.js +1 -1
- package/src/serialization.js +19 -14
- package/src/test-serializer.js +9 -9
- package/src/with-mask.jsx +2 -9
package/lib/test-serializer.js
CHANGED
|
@@ -1,207 +1,156 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports["default"] = void 0;
|
|
9
|
-
|
|
10
8
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
11
|
-
|
|
12
9
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
|
-
|
|
14
10
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
|
-
|
|
16
11
|
var _react = _interopRequireDefault(require("react"));
|
|
17
|
-
|
|
18
12
|
var _server = _interopRequireDefault(require("react-dom/server"));
|
|
19
|
-
|
|
20
13
|
var _escapeHtml = _interopRequireDefault(require("escape-html"));
|
|
21
|
-
|
|
22
14
|
var _slate = require("slate");
|
|
23
|
-
|
|
24
15
|
var _slateHyperscript = require("slate-hyperscript");
|
|
25
|
-
|
|
26
16
|
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; }
|
|
27
|
-
|
|
28
17
|
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; }
|
|
29
|
-
|
|
30
18
|
function allWhitespace(node) {
|
|
31
19
|
// Use ECMA-262 Edition 3 String and RegExp features
|
|
32
20
|
return !/[^\t\n\r ]/.test(node.textContent);
|
|
33
21
|
}
|
|
34
|
-
|
|
35
22
|
function defaultParseHtml(html) {
|
|
36
23
|
if (typeof DOMParser === 'undefined') {
|
|
37
24
|
throw new Error('The native `DOMParser` global which the `Html` serializer uses by default is not present in this environment. You must supply the `options.parseHtml` function instead.');
|
|
38
25
|
}
|
|
39
|
-
|
|
40
26
|
var parsed = new DOMParser().parseFromString(html, 'text/html');
|
|
41
27
|
var body = parsed.body;
|
|
42
28
|
var textNodes = document.createTreeWalker(body, NodeFilter.SHOW_TEXT, null, null);
|
|
43
29
|
var n = textNodes.nextNode();
|
|
44
|
-
|
|
45
30
|
while (n) {
|
|
46
31
|
if (allWhitespace(n) || n.nodeValue === "\u200B") {
|
|
47
32
|
n.parentNode.removeChild(n);
|
|
48
33
|
}
|
|
49
|
-
|
|
50
34
|
n = textNodes.nextNode();
|
|
51
35
|
}
|
|
52
|
-
|
|
53
36
|
return body;
|
|
54
37
|
}
|
|
55
|
-
|
|
56
38
|
var Html = /*#__PURE__*/(0, _createClass2["default"])(function Html(props) {
|
|
57
39
|
var _this = this;
|
|
58
|
-
|
|
59
40
|
(0, _classCallCheck2["default"])(this, Html);
|
|
60
41
|
(0, _defineProperty2["default"])(this, "serializeEls", function (node) {
|
|
61
42
|
if (_slate.Text.isText(node)) {
|
|
62
43
|
var string = (0, _escapeHtml["default"])(node.text);
|
|
63
|
-
|
|
64
44
|
if (node.bold) {
|
|
65
45
|
string = /*#__PURE__*/_react["default"].createElement("strong", null, string);
|
|
66
46
|
}
|
|
67
|
-
|
|
68
47
|
return string;
|
|
69
48
|
}
|
|
70
|
-
|
|
71
49
|
var children = (node.children || []).map(function (n) {
|
|
72
50
|
return _this.serializeEls(n);
|
|
73
51
|
});
|
|
74
|
-
|
|
75
52
|
var correctRule = _this.rules.reduce(function (res, rule) {
|
|
76
53
|
return res || rule.serialize(node, children);
|
|
77
54
|
}, null);
|
|
78
|
-
|
|
79
55
|
if (correctRule) {
|
|
80
56
|
return correctRule;
|
|
81
57
|
}
|
|
82
|
-
|
|
83
58
|
switch (node.type) {
|
|
84
59
|
case 'quote':
|
|
85
60
|
return /*#__PURE__*/_react["default"].createElement("blockquote", null, /*#__PURE__*/_react["default"].createElement("p", null, children));
|
|
86
|
-
|
|
87
61
|
case 'paragraph':
|
|
88
62
|
return /*#__PURE__*/_react["default"].createElement("p", null, children);
|
|
89
|
-
|
|
90
63
|
case 'link':
|
|
91
64
|
return /*#__PURE__*/_react["default"].createElement("a", {
|
|
92
65
|
href: (0, _escapeHtml["default"])(node.url)
|
|
93
66
|
}, children);
|
|
94
|
-
|
|
95
67
|
default:
|
|
96
68
|
return children;
|
|
97
69
|
}
|
|
98
70
|
});
|
|
99
71
|
(0, _defineProperty2["default"])(this, "serialize", function (node) {
|
|
100
72
|
var deserialized = _this.serializeEls(node);
|
|
101
|
-
|
|
102
73
|
var html = _server["default"].renderToStaticMarkup( /*#__PURE__*/_react["default"].createElement('body', null, deserialized));
|
|
103
|
-
|
|
104
74
|
var inner = html.slice(6, -7);
|
|
105
75
|
return inner;
|
|
106
76
|
});
|
|
107
77
|
(0, _defineProperty2["default"])(this, "deserialize", function (html) {
|
|
108
78
|
var body = _this.parseHtml(html);
|
|
109
|
-
|
|
110
79
|
if (body.firstChild && body.firstChild.nodeType === Node.TEXT_NODE) {
|
|
111
|
-
body = _this.parseHtml("<
|
|
80
|
+
body = _this.parseHtml("<span>".concat(html, "</span>"));
|
|
112
81
|
}
|
|
113
|
-
|
|
114
82
|
return _this.deserializeEls(body);
|
|
115
83
|
});
|
|
116
84
|
(0, _defineProperty2["default"])(this, "deserializeEls", function (element) {
|
|
117
85
|
var markAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
118
|
-
|
|
119
86
|
if (element.nodeType === Node.TEXT_NODE) {
|
|
120
87
|
return (0, _slateHyperscript.jsx)('text', markAttributes, element.textContent);
|
|
121
88
|
} else if (element.nodeType !== Node.ELEMENT_NODE) {
|
|
122
89
|
return null;
|
|
123
90
|
}
|
|
91
|
+
var nodeAttributes = _objectSpread({}, markAttributes);
|
|
124
92
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
93
|
+
// define attributes for text nodes
|
|
128
94
|
if (element.nodeName === 'STRONG') {
|
|
129
95
|
nodeAttributes.bold = true;
|
|
130
96
|
}
|
|
131
|
-
|
|
132
97
|
var nextFn = function nextFn(nodes) {
|
|
133
98
|
var childNodes = Array.from(nodes);
|
|
134
99
|
var children = Array.from(childNodes).map(function (node) {
|
|
135
100
|
return _this.deserializeEls(node, nodeAttributes);
|
|
136
101
|
}).flat();
|
|
137
|
-
|
|
138
102
|
if (children.length === 0) {
|
|
139
103
|
children.push((0, _slateHyperscript.jsx)('text', nodeAttributes, ''));
|
|
140
104
|
}
|
|
141
|
-
|
|
142
105
|
return children;
|
|
143
106
|
};
|
|
144
|
-
|
|
145
107
|
var correctRule = _this.rules.reduce(function (res, rule) {
|
|
146
108
|
return res || rule.deserialize(element, nextFn);
|
|
147
109
|
}, null);
|
|
148
|
-
|
|
149
110
|
if (correctRule) {
|
|
150
111
|
return correctRule;
|
|
151
112
|
}
|
|
152
|
-
|
|
153
113
|
var childNodes = Array.from(element.childNodes);
|
|
154
114
|
var children = Array.from(childNodes).map(function (node) {
|
|
155
115
|
return _this.deserializeEls(node, nodeAttributes);
|
|
156
116
|
}).flat();
|
|
157
|
-
|
|
158
117
|
if (children.length === 0) {
|
|
159
118
|
children.push((0, _slateHyperscript.jsx)('text', nodeAttributes, ''));
|
|
160
119
|
}
|
|
161
|
-
|
|
162
120
|
switch (element.nodeName) {
|
|
163
121
|
case 'TABLE':
|
|
164
122
|
return (0, _slateHyperscript.jsx)('element', {
|
|
165
123
|
type: 'table'
|
|
166
124
|
}, children);
|
|
167
|
-
|
|
168
125
|
case 'TBODY':
|
|
169
126
|
return (0, _slateHyperscript.jsx)('element', {
|
|
170
127
|
type: 'tbody'
|
|
171
128
|
}, children);
|
|
172
|
-
|
|
173
129
|
case 'TR':
|
|
174
130
|
return (0, _slateHyperscript.jsx)('element', {
|
|
175
131
|
type: 'tr'
|
|
176
132
|
}, children);
|
|
177
|
-
|
|
178
133
|
case 'TD':
|
|
179
134
|
return (0, _slateHyperscript.jsx)('element', {
|
|
180
135
|
type: 'td'
|
|
181
136
|
}, children);
|
|
182
|
-
|
|
183
137
|
case 'BODY':
|
|
184
138
|
return (0, _slateHyperscript.jsx)('fragment', {}, children);
|
|
185
|
-
|
|
186
139
|
case 'BR':
|
|
187
140
|
return '\n';
|
|
188
|
-
|
|
189
141
|
case 'BLOCKQUOTE':
|
|
190
142
|
return (0, _slateHyperscript.jsx)('element', {
|
|
191
143
|
type: 'quote'
|
|
192
144
|
}, children);
|
|
193
|
-
|
|
194
145
|
case 'P':
|
|
195
146
|
return (0, _slateHyperscript.jsx)('element', {
|
|
196
147
|
type: 'paragraph'
|
|
197
148
|
}, children);
|
|
198
|
-
|
|
199
149
|
case 'A':
|
|
200
150
|
return (0, _slateHyperscript.jsx)('element', {
|
|
201
151
|
type: 'link',
|
|
202
152
|
url: element.getAttribute('href')
|
|
203
153
|
}, children);
|
|
204
|
-
|
|
205
154
|
default:
|
|
206
155
|
return children;
|
|
207
156
|
}
|
|
@@ -212,4 +161,4 @@ var Html = /*#__PURE__*/(0, _createClass2["default"])(function Html(props) {
|
|
|
212
161
|
});
|
|
213
162
|
var _default = Html;
|
|
214
163
|
exports["default"] = _default;
|
|
215
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhbGxXaGl0ZXNwYWNlIiwibm9kZSIsInRlc3QiLCJ0ZXh0Q29udGVudCIsImRlZmF1bHRQYXJzZUh0bWwiLCJodG1sIiwiRE9NUGFyc2VyIiwiRXJyb3IiLCJwYXJzZWQiLCJwYXJzZUZyb21TdHJpbmciLCJib2R5IiwidGV4dE5vZGVzIiwiZG9jdW1lbnQiLCJjcmVhdGVUcmVlV2Fsa2VyIiwiTm9kZUZpbHRlciIsIlNIT1dfVEVYVCIsIm4iLCJuZXh0Tm9kZSIsIm5vZGVWYWx1ZSIsInBhcmVudE5vZGUiLCJyZW1vdmVDaGlsZCIsIkh0bWwiLCJwcm9wcyIsIlRleHQiLCJpc1RleHQiLCJzdHJpbmciLCJlc2NhcGVIdG1sIiwidGV4dCIsImJvbGQiLCJjaGlsZHJlbiIsIm1hcCIsInNlcmlhbGl6ZUVscyIsImNvcnJlY3RSdWxlIiwicnVsZXMiLCJyZWR1Y2UiLCJyZXMiLCJydWxlIiwic2VyaWFsaXplIiwidHlwZSIsInVybCIsImRlc2VyaWFsaXplZCIsIlJlYWN0U2VydmVyIiwicmVuZGVyVG9TdGF0aWNNYXJrdXAiLCJSZWFjdCIsImNyZWF0ZUVsZW1lbnQiLCJpbm5lciIsInNsaWNlIiwicGFyc2VIdG1sIiwiZmlyc3RDaGlsZCIsIm5vZGVUeXBlIiwiTm9kZSIsIlRFWFRfTk9ERSIsImRlc2VyaWFsaXplRWxzIiwiZWxlbWVudCIsIm1hcmtBdHRyaWJ1dGVzIiwianN4IiwiRUxFTUVOVF9OT0RFIiwibm9kZUF0dHJpYnV0ZXMiLCJub2RlTmFtZSIsIm5leHRGbiIsIm5vZGVzIiwiY2hpbGROb2RlcyIsIkFycmF5IiwiZnJvbSIsImZsYXQiLCJsZW5ndGgiLCJwdXNoIiwiZGVzZXJpYWxpemUiLCJnZXRBdHRyaWJ1dGUiLCJkZWZhdWx0QmxvY2siXSwic291cmNlcyI6WyIuLi9zcmMvdGVzdC1zZXJpYWxpemVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUmVhY3RTZXJ2ZXIgZnJvbSAncmVhY3QtZG9tL3NlcnZlcic7XG5pbXBvcnQgZXNjYXBlSHRtbCBmcm9tICdlc2NhcGUtaHRtbCc7XG5pbXBvcnQgeyBUZXh0IH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAnc2xhdGUtaHlwZXJzY3JpcHQnO1xuXG5mdW5jdGlvbiBhbGxXaGl0ZXNwYWNlKG5vZGUpIHtcbiAgLy8gVXNlIEVDTUEtMjYyIEVkaXRpb24gMyBTdHJpbmcgYW5kIFJlZ0V4cCBmZWF0dXJlc1xuICByZXR1cm4gIS9bXlxcdFxcblxcciBdLy50ZXN0KG5vZGUudGV4dENvbnRlbnQpO1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0UGFyc2VIdG1sKGh0bWwpIHtcbiAgaWYgKHR5cGVvZiBET01QYXJzZXIgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ1RoZSBuYXRpdmUgYERPTVBhcnNlcmAgZ2xvYmFsIHdoaWNoIHRoZSBgSHRtbGAgc2VyaWFsaXplciB1c2VzIGJ5IGRlZmF1bHQgaXMgbm90IHByZXNlbnQgaW4gdGhpcyBlbnZpcm9ubWVudC4gWW91IG11c3Qgc3VwcGx5IHRoZSBgb3B0aW9ucy5wYXJzZUh0bWxgIGZ1bmN0aW9uIGluc3RlYWQuJ1xuICAgICk7XG4gIH1cblxuICBjb25zdCBwYXJzZWQgPSBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKGh0bWwsICd0ZXh0L2h0bWwnKTtcblxuICBjb25zdCB7IGJvZHkgfSA9IHBhcnNlZDtcbiAgY29uc3QgdGV4dE5vZGVzID0gZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihib2R5LCBOb2RlRmlsdGVyLlNIT1dfVEVYVCwgbnVsbCwgbnVsbCk7XG4gIGxldCBuID0gdGV4dE5vZGVzLm5leHROb2RlKCk7XG5cbiAgd2hpbGUgKG4pIHtcbiAgICBpZiAoYWxsV2hpdGVzcGFjZShuKSB8fCBuLm5vZGVWYWx1ZSA9PT0gJ1xcdTIwMEInKSB7XG4gICAgICBuLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobik7XG4gICAgfVxuICAgIG4gPSB0ZXh0Tm9kZXMubmV4dE5vZGUoKTtcbiAgfVxuXG4gIHJldHVybiBib2R5O1xufVxuXG5jbGFzcyBIdG1sIHtcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICB0aGlzLmRlZmF1bHRCbG9jayA9IHByb3BzLmRlZmF1bHRCbG9jaztcbiAgICB0aGlzLnBhcnNlSHRtbCA9IGRlZmF1bHRQYXJzZUh0bWw7XG4gICAgdGhpcy5ydWxlcyA9IHByb3BzLnJ1bGVzO1xuICB9XG5cbiAgc2VyaWFsaXplRWxzID0gbm9kZSA9PiB7XG4gICAgaWYgKFRleHQuaXNUZXh0KG5vZGUpKSB7XG4gICAgICBsZXQgc3RyaW5nID0gZXNjYXBlSHRtbChub2RlLnRleHQpO1xuICAgICAgaWYgKG5vZGUuYm9sZCkge1xuICAgICAgICBzdHJpbmcgPSA8c3Ryb25nPntzdHJpbmd9PC9zdHJvbmc+O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHN0cmluZztcbiAgICB9XG5cbiAgICBsZXQgY2hpbGRyZW4gPSAobm9kZS5jaGlsZHJlbiB8fCBbXSkubWFwKG4gPT4gdGhpcy5zZXJpYWxpemVFbHMobikpO1xuXG4gICAgY29uc3QgY29ycmVjdFJ1bGUgPSB0aGlzLnJ1bGVzLnJlZHVjZSgocmVzLCBydWxlKSA9PiB7XG4gICAgICByZXR1cm4gcmVzIHx8IHJ1bGUuc2VyaWFsaXplKG5vZGUsIGNoaWxkcmVuKTtcbiAgICB9LCBudWxsKTtcblxuICAgIGlmIChjb3JyZWN0UnVsZSkge1xuICAgICAgcmV0dXJuIGNvcnJlY3RSdWxlO1xuICAgIH1cblxuICAgIHN3aXRjaCAobm9kZS50eXBlKSB7XG4gICAgICBjYXNlICdxdW90ZSc6XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPGJsb2NrcXVvdGU+XG4gICAgICAgICAgICA8cD57Y2hpbGRyZW59PC9wPlxuICAgICAgICAgIDwvYmxvY2txdW90ZT5cbiAgICAgICAgKTtcbiAgICAgIGNhc2UgJ3BhcmFncmFwaCc6XG4gICAgICAgIHJldHVybiA8cD57Y2hpbGRyZW59PC9wPjtcbiAgICAgIGNhc2UgJ2xpbmsnOlxuICAgICAgICByZXR1cm4gPGEgaHJlZj17ZXNjYXBlSHRtbChub2RlLnVybCl9PntjaGlsZHJlbn08L2E+O1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGNoaWxkcmVuO1xuICAgIH1cbiAgfTtcblxuICBzZXJpYWxpemUgPSBub2RlID0+IHtcbiAgICBjb25zdCBkZXNlcmlhbGl6ZWQgPSB0aGlzLnNlcmlhbGl6ZUVscyhub2RlKTtcbiAgICBjb25zdCBodG1sID0gUmVhY3RTZXJ2ZXIucmVuZGVyVG9TdGF0aWNNYXJrdXAoUmVhY3QuY3JlYXRlRWxlbWVudChcbiAgICAgICdib2R5JyxcbiAgICAgIG51bGwsXG4gICAgICBkZXNlcmlhbGl6ZWRcbiAgICApKTtcbiAgICBjb25zdCBpbm5lciA9IGh0bWwuc2xpY2UoNiwgLTcpO1xuICAgIHJldHVybiBpbm5lcjtcbiAgfTtcblxuICBkZXNlcmlhbGl6ZSA9IGh0bWwgPT4ge1xuICAgIGxldCBib2R5ID0gdGhpcy5wYXJzZUh0bWwoaHRtbCk7XG5cbiAgICBpZiAoYm9keS5maXJzdENoaWxkICYmIGJvZHkuZmlyc3RDaGlsZC5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHtcbiAgICAgIGJvZHkgPSB0aGlzLnBhcnNlSHRtbChgPHA+JHtodG1sfTwvcD5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5kZXNlcmlhbGl6ZUVscyhib2R5KTtcbiAgfTtcblxuICBkZXNlcmlhbGl6ZUVscyA9IChlbGVtZW50LCBtYXJrQXR0cmlidXRlcyA9IHt9KSA9PiB7XG4gICAgaWYgKGVsZW1lbnQubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFKSB7XG4gICAgICByZXR1cm4ganN4KCd0ZXh0JywgbWFya0F0dHJpYnV0ZXMsIGVsZW1lbnQudGV4dENvbnRlbnQpO1xuICAgIH0gZWxzZSBpZiAoZWxlbWVudC5ub2RlVHlwZSAhPT0gTm9kZS5FTEVNRU5UX05PREUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IG5vZGVBdHRyaWJ1dGVzID0geyAuLi5tYXJrQXR0cmlidXRlcyB9O1xuXG4gICAgLy8gZGVmaW5lIGF0dHJpYnV0ZXMgZm9yIHRleHQgbm9kZXNcbiAgICBpZiAoZWxlbWVudC5ub2RlTmFtZSA9PT0gJ1NUUk9ORycpIHtcbiAgICAgIG5vZGVBdHRyaWJ1dGVzLmJvbGQgPSB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IG5leHRGbiA9IG5vZGVzID0+IHtcbiAgICAgIGNvbnN0IGNoaWxkTm9kZXMgPSBBcnJheS5mcm9tKG5vZGVzKTtcbiAgICAgIGNvbnN0IGNoaWxkcmVuID0gQXJyYXkuZnJvbShjaGlsZE5vZGVzKVxuICAgICAgICAubWFwKG5vZGUgPT4gdGhpcy5kZXNlcmlhbGl6ZUVscyhub2RlLCBub2RlQXR0cmlidXRlcykpXG4gICAgICAgIC5mbGF0KCk7XG5cbiAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgY2hpbGRyZW4ucHVzaChqc3goJ3RleHQnLCBub2RlQXR0cmlidXRlcywgJycpKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNoaWxkcmVuO1xuICAgIH07XG5cbiAgICBjb25zdCBjb3JyZWN0UnVsZSA9IHRoaXMucnVsZXMucmVkdWNlKChyZXMsIHJ1bGUpID0+IHtcbiAgICAgIHJldHVybiByZXMgfHwgcnVsZS5kZXNlcmlhbGl6ZShlbGVtZW50LCBuZXh0Rm4pO1xuICAgIH0sIG51bGwpO1xuXG4gICAgaWYgKGNvcnJlY3RSdWxlKSB7XG4gICAgICByZXR1cm4gY29ycmVjdFJ1bGU7XG4gICAgfVxuXG4gICAgY29uc3QgY2hpbGROb2RlcyA9IEFycmF5LmZyb20oZWxlbWVudC5jaGlsZE5vZGVzKTtcbiAgICBjb25zdCBjaGlsZHJlbiA9IEFycmF5LmZyb20oY2hpbGROb2RlcylcbiAgICAgIC5tYXAobm9kZSA9PiB0aGlzLmRlc2VyaWFsaXplRWxzKG5vZGUsIG5vZGVBdHRyaWJ1dGVzKSlcbiAgICAgIC5mbGF0KCk7XG5cbiAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoID09PSAwKSB7XG4gICAgICBjaGlsZHJlbi5wdXNoKGpzeCgndGV4dCcsIG5vZGVBdHRyaWJ1dGVzLCAnJykpO1xuICAgIH1cblxuICAgIHN3aXRjaCAoZWxlbWVudC5ub2RlTmFtZSkge1xuICAgICAgY2FzZSAnVEFCTEUnOlxuICAgICAgICByZXR1cm4ganN4KCdlbGVtZW50JywgeyB0eXBlOiAndGFibGUnIH0sIGNoaWxkcmVuKTtcbiAgICAgIGNhc2UgJ1RCT0RZJzpcbiAgICAgICAgcmV0dXJuIGpzeCgnZWxlbWVudCcsIHsgdHlwZTogJ3Rib2R5JyB9LCBjaGlsZHJlbik7XG4gICAgICBjYXNlICdUUic6XG4gICAgICAgIHJldHVybiBqc3goJ2VsZW1lbnQnLCB7IHR5cGU6ICd0cicgfSwgY2hpbGRyZW4pO1xuICAgICAgY2FzZSAnVEQnOlxuICAgICAgICByZXR1cm4ganN4KCdlbGVtZW50JywgeyB0eXBlOiAndGQnIH0sIGNoaWxkcmVuKTtcbiAgICAgIGNhc2UgJ0JPRFknOlxuICAgICAgICByZXR1cm4ganN4KCdmcmFnbWVudCcsIHt9LCBjaGlsZHJlbik7XG4gICAgICBjYXNlICdCUic6XG4gICAgICAgIHJldHVybiAnXFxuJztcbiAgICAgIGNhc2UgJ0JMT0NLUVVPVEUnOlxuICAgICAgICByZXR1cm4ganN4KCdlbGVtZW50JywgeyB0eXBlOiAncXVvdGUnIH0sIGNoaWxkcmVuKTtcbiAgICAgIGNhc2UgJ1AnOlxuICAgICAgICByZXR1cm4ganN4KCdlbGVtZW50JywgeyB0eXBlOiAncGFyYWdyYXBoJyB9LCBjaGlsZHJlbik7XG4gICAgICBjYXNlICdBJzpcbiAgICAgICAgcmV0dXJuIGpzeCgnZWxlbWVudCcsIHsgdHlwZTogJ2xpbmsnLCB1cmw6IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdocmVmJykgfSwgY2hpbGRyZW4pO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJu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
|
|
164
|
+
//# sourceMappingURL=test-serializer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-serializer.js","names":["_react","_interopRequireDefault","require","_server","_escapeHtml","_slate","_slateHyperscript","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","allWhitespace","node","test","textContent","defaultParseHtml","html","DOMParser","Error","parsed","parseFromString","body","textNodes","document","createTreeWalker","NodeFilter","SHOW_TEXT","n","nextNode","nodeValue","parentNode","removeChild","Html","_createClass2","props","_this","_classCallCheck2","Text","isText","string","escapeHtml","text","bold","createElement","children","map","serializeEls","correctRule","rules","reduce","res","rule","serialize","type","href","url","deserialized","ReactServer","renderToStaticMarkup","React","inner","slice","parseHtml","firstChild","nodeType","Node","TEXT_NODE","concat","deserializeEls","element","markAttributes","undefined","jsx","ELEMENT_NODE","nodeAttributes","nodeName","nextFn","nodes","childNodes","Array","from","flat","deserialize","getAttribute","defaultBlock","_default","exports"],"sources":["../src/test-serializer.js"],"sourcesContent":["import React from 'react';\nimport ReactServer from 'react-dom/server';\nimport escapeHtml from 'escape-html';\nimport { Text } from 'slate';\nimport { jsx } from 'slate-hyperscript';\n\nfunction allWhitespace(node) {\n // Use ECMA-262 Edition 3 String and RegExp features\n return !/[^\\t\\n\\r ]/.test(node.textContent);\n}\n\nfunction defaultParseHtml(html) {\n if (typeof DOMParser === 'undefined') {\n throw new Error(\n 'The native `DOMParser` global which the `Html` serializer uses by default is not present in this environment. You must supply the `options.parseHtml` function instead.',\n );\n }\n\n const parsed = new DOMParser().parseFromString(html, 'text/html');\n\n const { body } = parsed;\n const textNodes = document.createTreeWalker(body, NodeFilter.SHOW_TEXT, null, null);\n let n = textNodes.nextNode();\n\n while (n) {\n if (allWhitespace(n) || n.nodeValue === '\\u200B') {\n n.parentNode.removeChild(n);\n }\n n = textNodes.nextNode();\n }\n\n return body;\n}\n\nclass Html {\n constructor(props) {\n this.defaultBlock = props.defaultBlock;\n this.parseHtml = defaultParseHtml;\n this.rules = props.rules;\n }\n\n serializeEls = (node) => {\n if (Text.isText(node)) {\n let string = escapeHtml(node.text);\n if (node.bold) {\n string = <strong>{string}</strong>;\n }\n return string;\n }\n\n let children = (node.children || []).map((n) => this.serializeEls(n));\n\n const correctRule = this.rules.reduce((res, rule) => {\n return res || rule.serialize(node, children);\n }, null);\n\n if (correctRule) {\n return correctRule;\n }\n\n switch (node.type) {\n case 'quote':\n return (\n <blockquote>\n <p>{children}</p>\n </blockquote>\n );\n case 'paragraph':\n return <p>{children}</p>;\n case 'link':\n return <a href={escapeHtml(node.url)}>{children}</a>;\n default:\n return children;\n }\n };\n\n serialize = (node) => {\n const deserialized = this.serializeEls(node);\n const html = ReactServer.renderToStaticMarkup(React.createElement('body', null, deserialized));\n const inner = html.slice(6, -7);\n return inner;\n };\n\n deserialize = (html) => {\n let body = this.parseHtml(html);\n\n if (body.firstChild && body.firstChild.nodeType === Node.TEXT_NODE) {\n body = this.parseHtml(`<span>${html}</span>`);\n }\n\n return this.deserializeEls(body);\n };\n\n deserializeEls = (element, markAttributes = {}) => {\n if (element.nodeType === Node.TEXT_NODE) {\n return jsx('text', markAttributes, element.textContent);\n } else if (element.nodeType !== Node.ELEMENT_NODE) {\n return null;\n }\n\n const nodeAttributes = { ...markAttributes };\n\n // define attributes for text nodes\n if (element.nodeName === 'STRONG') {\n nodeAttributes.bold = true;\n }\n\n const nextFn = (nodes) => {\n const childNodes = Array.from(nodes);\n const children = Array.from(childNodes)\n .map((node) => this.deserializeEls(node, nodeAttributes))\n .flat();\n\n if (children.length === 0) {\n children.push(jsx('text', nodeAttributes, ''));\n }\n\n return children;\n };\n\n const correctRule = this.rules.reduce((res, rule) => {\n return res || rule.deserialize(element, nextFn);\n }, null);\n\n if (correctRule) {\n return correctRule;\n }\n\n const childNodes = Array.from(element.childNodes);\n const children = Array.from(childNodes)\n .map((node) => this.deserializeEls(node, nodeAttributes))\n .flat();\n\n if (children.length === 0) {\n children.push(jsx('text', nodeAttributes, ''));\n }\n\n switch (element.nodeName) {\n case 'TABLE':\n return jsx('element', { type: 'table' }, children);\n case 'TBODY':\n return jsx('element', { type: 'tbody' }, children);\n case 'TR':\n return jsx('element', { type: 'tr' }, children);\n case 'TD':\n return jsx('element', { type: 'td' }, children);\n case 'BODY':\n return jsx('fragment', {}, children);\n case 'BR':\n return '\\n';\n case 'BLOCKQUOTE':\n return jsx('element', { type: 'quote' }, children);\n case 'P':\n return jsx('element', { type: 'paragraph' }, children);\n case 'A':\n return jsx('element', { type: 'link', url: element.getAttribute('href') }, children);\n default:\n return children;\n }\n };\n}\n\nexport default Html;\n"],"mappings":"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"}
|
package/lib/with-mask.js
CHANGED
|
@@ -1,69 +1,47 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.withMask = exports.buildLayoutFromMarkup = void 0;
|
|
9
|
-
|
|
10
8
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
-
|
|
12
9
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
-
|
|
14
10
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
15
|
-
|
|
16
11
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
17
|
-
|
|
18
12
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
19
|
-
|
|
20
13
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
21
|
-
|
|
22
14
|
var _react = _interopRequireDefault(require("react"));
|
|
23
|
-
|
|
24
15
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
25
|
-
|
|
26
16
|
var _mask = _interopRequireDefault(require("./mask"));
|
|
27
|
-
|
|
28
17
|
var _componentize2 = _interopRequireDefault(require("./componentize"));
|
|
29
|
-
|
|
30
18
|
var _serialization = require("./serialization");
|
|
31
|
-
|
|
32
19
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
33
|
-
|
|
34
20
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
35
|
-
|
|
36
21
|
var buildLayoutFromMarkup = function buildLayoutFromMarkup(markup, type) {
|
|
37
22
|
var _componentize = (0, _componentize2["default"])(markup, type),
|
|
38
|
-
|
|
39
|
-
|
|
23
|
+
processed = _componentize.markup;
|
|
40
24
|
var value = (0, _serialization.deserialize)(processed);
|
|
41
25
|
return value;
|
|
42
26
|
};
|
|
43
|
-
|
|
44
27
|
exports.buildLayoutFromMarkup = buildLayoutFromMarkup;
|
|
45
|
-
|
|
46
28
|
var withMask = function withMask(type, renderChildren) {
|
|
47
29
|
var _class;
|
|
48
|
-
|
|
49
30
|
return _class = /*#__PURE__*/function (_React$Component) {
|
|
50
31
|
(0, _inherits2["default"])(WithMask, _React$Component);
|
|
51
|
-
|
|
52
32
|
var _super = _createSuper(WithMask);
|
|
53
|
-
|
|
54
33
|
function WithMask() {
|
|
55
34
|
(0, _classCallCheck2["default"])(this, WithMask);
|
|
56
35
|
return _super.apply(this, arguments);
|
|
57
36
|
}
|
|
58
|
-
|
|
59
37
|
(0, _createClass2["default"])(WithMask, [{
|
|
60
38
|
key: "render",
|
|
61
39
|
value: function render() {
|
|
62
40
|
var _this$props = this.props,
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
41
|
+
markup = _this$props.markup,
|
|
42
|
+
layout = _this$props.layout,
|
|
43
|
+
value = _this$props.value,
|
|
44
|
+
onChange = _this$props.onChange;
|
|
67
45
|
var maskLayout = layout ? layout : buildLayoutFromMarkup(markup, type);
|
|
68
46
|
return /*#__PURE__*/_react["default"].createElement(_mask["default"], {
|
|
69
47
|
layout: maskLayout,
|
|
@@ -79,7 +57,6 @@ var withMask = function withMask(type, renderChildren) {
|
|
|
79
57
|
* At the start we'll probably work with markup
|
|
80
58
|
*/
|
|
81
59
|
markup: _propTypes["default"].string,
|
|
82
|
-
|
|
83
60
|
/**
|
|
84
61
|
* Once we start authoring, it may make sense for use to us layout, which will be a simple js object that maps to `slate.Value`.
|
|
85
62
|
*/
|
|
@@ -88,6 +65,5 @@ var withMask = function withMask(type, renderChildren) {
|
|
|
88
65
|
onChange: _propTypes["default"].func
|
|
89
66
|
}), _class;
|
|
90
67
|
};
|
|
91
|
-
|
|
92
68
|
exports.withMask = withMask;
|
|
93
|
-
//# sourceMappingURL=
|
|
69
|
+
//# sourceMappingURL=with-mask.js.map
|
package/lib/with-mask.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"with-mask.js","names":["buildLayoutFromMarkup","markup","type","componentize","processed","value","deserialize","
|
|
1
|
+
{"version":3,"file":"with-mask.js","names":["_react","_interopRequireDefault","require","_propTypes","_mask","_componentize2","_serialization","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","constructor","Reflect","construct","arguments","apply","_possibleConstructorReturn2","sham","Proxy","Boolean","prototype","valueOf","call","e","buildLayoutFromMarkup","markup","type","_componentize","componentize","processed","value","deserialize","exports","withMask","renderChildren","_class","_React$Component","_inherits2","WithMask","_super","_classCallCheck2","_createClass2","key","render","_this$props","props","layout","onChange","maskLayout","createElement","React","Component","_defineProperty2","PropTypes","string","object","func"],"sources":["../src/with-mask.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Mask from './mask';\nimport componentize from './componentize';\nimport { deserialize } from './serialization';\n\nexport const buildLayoutFromMarkup = (markup, type) => {\n const { markup: processed } = componentize(markup, type);\n const value = deserialize(processed);\n return value;\n};\n\nexport const withMask = (type, renderChildren) => {\n return class WithMask extends React.Component {\n static propTypes = {\n /**\n * At the start we'll probably work with markup\n */\n markup: PropTypes.string,\n /**\n * Once we start authoring, it may make sense for use to us layout, which will be a simple js object that maps to `slate.Value`.\n */\n layout: PropTypes.object,\n value: PropTypes.object,\n onChange: PropTypes.func,\n };\n\n render() {\n const { markup, layout, value, onChange } = this.props;\n\n const maskLayout = layout ? layout : buildLayoutFromMarkup(markup, type);\n return <Mask layout={maskLayout} value={value} onChange={onChange} renderChildren={renderChildren(this.props)} />;\n }\n };\n};\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-lib/mask-markup",
|
|
3
|
-
"version": "2.0.0-beta.
|
|
3
|
+
"version": "2.0.0-beta.2",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "src/index.js",
|
|
@@ -9,21 +9,21 @@
|
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@material-ui/core": "^3.9.3",
|
|
12
|
-
"@pie-lib/drag": "^
|
|
13
|
-
"@pie-lib/math-rendering": "^2.5.
|
|
14
|
-
"@pie-lib/render-ui": "^4.
|
|
12
|
+
"@pie-lib/drag": "^2.2.1",
|
|
13
|
+
"@pie-lib/math-rendering": "^2.5.17",
|
|
14
|
+
"@pie-lib/render-ui": "^4.14.28",
|
|
15
15
|
"classnames": "^2.2.6",
|
|
16
16
|
"debug": "^4.1.1",
|
|
17
17
|
"escape-html": "^1.0.3",
|
|
18
18
|
"immutable": ">=3.8.1",
|
|
19
19
|
"prop-types": "^15.7.2",
|
|
20
20
|
"react": "^16.8.1",
|
|
21
|
-
"react-dnd-html5-backend": "^
|
|
22
|
-
"slate": "^0.
|
|
21
|
+
"react-dnd-html5-backend": "^14.0.2",
|
|
22
|
+
"slate": "^0.94.1",
|
|
23
23
|
"slate-html-serializer": "^0.8.13",
|
|
24
24
|
"slate-hyperscript": "^0.77.0",
|
|
25
25
|
"slate-prop-types": "^0.5.44",
|
|
26
|
-
"slate-react": "^0.
|
|
26
|
+
"slate-react": "^0.97.2",
|
|
27
27
|
"to-style": "^1.3.3"
|
|
28
28
|
},
|
|
29
29
|
"keywords": [],
|
package/src/choices/choice.jsx
CHANGED
|
@@ -6,6 +6,7 @@ import Chip from '@material-ui/core/Chip';
|
|
|
6
6
|
import classnames from 'classnames';
|
|
7
7
|
import ReactDOM from 'react-dom';
|
|
8
8
|
import { renderMath } from '@pie-lib/math-rendering';
|
|
9
|
+
import { color } from '@pie-lib/render-ui';
|
|
9
10
|
|
|
10
11
|
export const DRAG_TYPE = 'MaskBlank';
|
|
11
12
|
|
|
@@ -14,7 +15,7 @@ class BlankContentComp extends React.Component {
|
|
|
14
15
|
disabled: PropTypes.bool,
|
|
15
16
|
choice: PropTypes.object,
|
|
16
17
|
classes: PropTypes.object,
|
|
17
|
-
connectDragSource: PropTypes.func
|
|
18
|
+
connectDragSource: PropTypes.func,
|
|
18
19
|
};
|
|
19
20
|
|
|
20
21
|
componentDidUpdate() {
|
|
@@ -24,10 +25,14 @@ class BlankContentComp extends React.Component {
|
|
|
24
25
|
render() {
|
|
25
26
|
const { connectDragSource, choice, classes, disabled } = this.props;
|
|
26
27
|
|
|
28
|
+
// TODO the Chip element is causing drag problems on touch devices. Avoid using Chip and consider refactoring the code. Keep in mind that Chip is a span with a button role, which interferes with seamless touch device dragging.
|
|
29
|
+
|
|
27
30
|
return connectDragSource(
|
|
28
31
|
<span className={classnames(classes.choice, disabled && classes.disabled)}>
|
|
29
32
|
<Chip
|
|
30
|
-
|
|
33
|
+
clickable={false}
|
|
34
|
+
disabled={true}
|
|
35
|
+
ref={(ref) => {
|
|
31
36
|
//eslint-disable-next-line
|
|
32
37
|
this.rootRef = ReactDOM.findDOMNode(ref);
|
|
33
38
|
}}
|
|
@@ -35,7 +40,7 @@ class BlankContentComp extends React.Component {
|
|
|
35
40
|
label={
|
|
36
41
|
<span
|
|
37
42
|
className={classes.chipLabel}
|
|
38
|
-
ref={ref => {
|
|
43
|
+
ref={(ref) => {
|
|
39
44
|
if (ref) {
|
|
40
45
|
ref.innerHTML = choice.value || ' ';
|
|
41
46
|
}
|
|
@@ -47,16 +52,22 @@ class BlankContentComp extends React.Component {
|
|
|
47
52
|
variant={disabled ? 'outlined' : undefined}
|
|
48
53
|
/>
|
|
49
54
|
</span>,
|
|
50
|
-
{}
|
|
55
|
+
{},
|
|
51
56
|
);
|
|
52
57
|
}
|
|
53
58
|
}
|
|
54
59
|
|
|
55
|
-
export const BlankContent = withStyles(theme => ({
|
|
60
|
+
export const BlankContent = withStyles((theme) => ({
|
|
56
61
|
choice: {
|
|
57
|
-
border: `solid 0px ${theme.palette.primary.main}
|
|
62
|
+
border: `solid 0px ${theme.palette.primary.main}`,
|
|
63
|
+
borderRadius: theme.spacing.unit * 2,
|
|
64
|
+
margin: theme.spacing.unit / 2,
|
|
65
|
+
transform: 'translate(0, 0)',
|
|
58
66
|
},
|
|
59
67
|
chip: {
|
|
68
|
+
backgroundColor: color.background(),
|
|
69
|
+
border: `1px solid ${color.text()}`,
|
|
70
|
+
color: color.text(),
|
|
60
71
|
alignItems: 'center',
|
|
61
72
|
display: 'inline-flex',
|
|
62
73
|
height: 'initial',
|
|
@@ -64,16 +75,19 @@ export const BlankContent = withStyles(theme => ({
|
|
|
64
75
|
fontSize: 'inherit',
|
|
65
76
|
whiteSpace: 'pre-wrap',
|
|
66
77
|
maxWidth: '374px',
|
|
67
|
-
|
|
78
|
+
// Added for touch devices, for image content.
|
|
79
|
+
// This will prevent the context menu from appearing and not allowing other interactions with the image.
|
|
80
|
+
// If interactions with the image in the token will be requested we should handle only the context Menu.
|
|
81
|
+
pointerEvents: 'none',
|
|
68
82
|
},
|
|
69
83
|
chipLabel: {
|
|
70
84
|
whiteSpace: 'pre-wrap',
|
|
71
85
|
'& img': {
|
|
72
86
|
display: 'block',
|
|
73
|
-
padding: '2px 0'
|
|
74
|
-
}
|
|
87
|
+
padding: '2px 0',
|
|
88
|
+
},
|
|
75
89
|
},
|
|
76
|
-
disabled: {}
|
|
90
|
+
disabled: {},
|
|
77
91
|
}))(BlankContentComp);
|
|
78
92
|
|
|
79
93
|
const tileSource = {
|
|
@@ -83,14 +97,14 @@ const tileSource = {
|
|
|
83
97
|
beginDrag(props) {
|
|
84
98
|
return {
|
|
85
99
|
choice: props.choice,
|
|
86
|
-
instanceId: props.instanceId
|
|
100
|
+
instanceId: props.instanceId,
|
|
87
101
|
};
|
|
88
|
-
}
|
|
102
|
+
},
|
|
89
103
|
};
|
|
90
104
|
|
|
91
105
|
const DragDropTile = DragSource(DRAG_TYPE, tileSource, (connect, monitor) => ({
|
|
92
106
|
connectDragSource: connect.dragSource(),
|
|
93
|
-
isDragging: monitor.isDragging()
|
|
107
|
+
isDragging: monitor.isDragging(),
|
|
94
108
|
}))(BlankContent);
|
|
95
109
|
|
|
96
110
|
export default DragDropTile;
|
package/src/choices/index.jsx
CHANGED
|
@@ -2,16 +2,15 @@ import React from 'react';
|
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
import findKey from 'lodash/findKey';
|
|
4
4
|
import Choice from './choice';
|
|
5
|
+
import DragDroppablePlaceholder from '@pie-lib/drag/lib/drag-in-the-blank-dp';
|
|
5
6
|
|
|
6
7
|
export default class Choices extends React.Component {
|
|
7
8
|
static propTypes = {
|
|
8
9
|
disabled: PropTypes.bool,
|
|
9
10
|
duplicates: PropTypes.bool,
|
|
10
|
-
choices: PropTypes.arrayOf(
|
|
11
|
-
PropTypes.shape({ label: PropTypes.string, value: PropTypes.string })
|
|
12
|
-
),
|
|
11
|
+
choices: PropTypes.arrayOf(PropTypes.shape({ label: PropTypes.string, value: PropTypes.string })),
|
|
13
12
|
value: PropTypes.object,
|
|
14
|
-
choicePosition: PropTypes.string.isRequired
|
|
13
|
+
choicePosition: PropTypes.string.isRequired,
|
|
15
14
|
};
|
|
16
15
|
|
|
17
16
|
getStyleForWrapper = () => {
|
|
@@ -20,39 +19,44 @@ export default class Choices extends React.Component {
|
|
|
20
19
|
switch (choicePosition) {
|
|
21
20
|
case 'above':
|
|
22
21
|
return {
|
|
23
|
-
margin: '0 0 40px 0'
|
|
22
|
+
margin: '0 0 40px 0',
|
|
24
23
|
};
|
|
24
|
+
|
|
25
25
|
case 'below':
|
|
26
26
|
return {
|
|
27
|
-
margin: '40px 0 0 0'
|
|
27
|
+
margin: '40px 0 0 0',
|
|
28
28
|
};
|
|
29
|
+
|
|
29
30
|
case 'right':
|
|
30
31
|
return {
|
|
31
|
-
margin: '0 0 0 40px'
|
|
32
|
+
margin: '0 0 0 40px',
|
|
32
33
|
};
|
|
34
|
+
|
|
33
35
|
default:
|
|
34
36
|
return {
|
|
35
|
-
margin: '0 40px 0 0'
|
|
37
|
+
margin: '0 40px 0 0',
|
|
36
38
|
};
|
|
37
39
|
}
|
|
38
40
|
};
|
|
39
41
|
|
|
40
42
|
render() {
|
|
41
43
|
const { disabled, duplicates, choices, value } = this.props;
|
|
42
|
-
const filteredChoices = choices.filter(c => {
|
|
44
|
+
const filteredChoices = choices.filter((c) => {
|
|
43
45
|
if (duplicates === true) {
|
|
44
46
|
return true;
|
|
45
47
|
}
|
|
46
|
-
const foundChoice = findKey(value, v => v === c.id);
|
|
48
|
+
const foundChoice = findKey(value, (v) => v === c.id);
|
|
47
49
|
return foundChoice === undefined;
|
|
48
50
|
});
|
|
49
51
|
const elementStyle = this.getStyleForWrapper();
|
|
50
52
|
|
|
51
53
|
return (
|
|
52
54
|
<div style={elementStyle}>
|
|
53
|
-
{
|
|
54
|
-
|
|
55
|
-
|
|
55
|
+
<DragDroppablePlaceholder disabled={disabled}>
|
|
56
|
+
{filteredChoices.map((c, index) => (
|
|
57
|
+
<Choice key={`${c.value}-${index}`} disabled={disabled} choice={c} />
|
|
58
|
+
))}
|
|
59
|
+
</DragDroppablePlaceholder>
|
|
56
60
|
</div>
|
|
57
61
|
);
|
|
58
62
|
}
|