@pie-element/inline-dropdown 4.7.1-beta.1 → 4.7.1-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/configure/lib/__tests__/inline-dropdown-toolbar.test.js +112 -0
- package/configure/lib/__tests__/main.test.js +492 -0
- package/configure/lib/__tests__/markupUtils.test.js +107 -0
- package/configure/lib/defaults.js +78 -0
- package/configure/lib/index.js +137 -0
- package/configure/lib/inline-dropdown-toolbar.js +401 -0
- package/configure/lib/main.js +636 -0
- package/configure/lib/markupUtils.js +55 -0
- package/configure/lib/utils.js +15 -0
- package/configure/package.json +3 -3
- package/controller/lib/__tests__/index.test.js +858 -0
- package/controller/lib/defaults.js +11 -0
- package/controller/lib/index.js +292 -0
- package/controller/lib/utils.js +33 -0
- package/docs/demo/pie.manifest.json +11 -0
- package/lib/__tests__/inline-dropdown.test.js +113 -0
- package/lib/index.js +87 -0
- package/lib/inline-dropdown.js +182 -0
- package/package.json +4 -4
|
@@ -0,0 +1,401 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports["default"] = exports.RespAreaToolbar = void 0;
|
|
9
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
10
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
11
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
12
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
13
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
14
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
15
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
16
|
+
var _react = _interopRequireDefault(require("react"));
|
|
17
|
+
var _reactDom = _interopRequireDefault(require("react-dom"));
|
|
18
|
+
var _slateReact = require("slate-react");
|
|
19
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
20
|
+
var _editableHtml = _interopRequireWildcard(require("@pie-lib/editable-html"));
|
|
21
|
+
var _mathRendering = require("@pie-lib/math-rendering");
|
|
22
|
+
var _styles = require("@material-ui/core/styles");
|
|
23
|
+
var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
|
|
24
|
+
var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
|
|
25
|
+
var _classnames2 = _interopRequireDefault(require("classnames"));
|
|
26
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
27
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
28
|
+
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; }
|
|
29
|
+
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; }
|
|
30
|
+
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); }; }
|
|
31
|
+
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; } }
|
|
32
|
+
var MenuItemComp = /*#__PURE__*/function (_React$Component) {
|
|
33
|
+
(0, _inherits2["default"])(MenuItemComp, _React$Component);
|
|
34
|
+
var _super = _createSuper(MenuItemComp);
|
|
35
|
+
function MenuItemComp() {
|
|
36
|
+
var _this;
|
|
37
|
+
(0, _classCallCheck2["default"])(this, MenuItemComp);
|
|
38
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
39
|
+
args[_key] = arguments[_key];
|
|
40
|
+
}
|
|
41
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
42
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onRemoveClick", function (e) {
|
|
43
|
+
var onRemoveChoice = _this.props.onRemoveChoice;
|
|
44
|
+
e.preventDefault();
|
|
45
|
+
e.stopPropagation();
|
|
46
|
+
onRemoveChoice();
|
|
47
|
+
});
|
|
48
|
+
return _this;
|
|
49
|
+
}
|
|
50
|
+
(0, _createClass2["default"])(MenuItemComp, [{
|
|
51
|
+
key: "render",
|
|
52
|
+
value: function render() {
|
|
53
|
+
var _this$props = this.props,
|
|
54
|
+
classes = _this$props.classes,
|
|
55
|
+
correct = _this$props.correct,
|
|
56
|
+
onClick = _this$props.onClick,
|
|
57
|
+
value = _this$props.value;
|
|
58
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
59
|
+
className: (0, _classnames2["default"])(classes.wrapper, (0, _defineProperty2["default"])({}, classes.correct, correct)),
|
|
60
|
+
onClick: onClick
|
|
61
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
62
|
+
className: classes.valueHolder,
|
|
63
|
+
dangerouslySetInnerHTML: {
|
|
64
|
+
__html: value
|
|
65
|
+
}
|
|
66
|
+
}), /*#__PURE__*/_react["default"].createElement("i", {
|
|
67
|
+
className: classes.removeIcon,
|
|
68
|
+
onClick: this.onRemoveClick
|
|
69
|
+
}, "x"));
|
|
70
|
+
}
|
|
71
|
+
}]);
|
|
72
|
+
return MenuItemComp;
|
|
73
|
+
}(_react["default"].Component);
|
|
74
|
+
(0, _defineProperty2["default"])(MenuItemComp, "propTypes", {
|
|
75
|
+
classes: _propTypes["default"].object.isRequired,
|
|
76
|
+
correct: _propTypes["default"].bool.isRequired,
|
|
77
|
+
onClick: _propTypes["default"].func.isRequired,
|
|
78
|
+
onRemoveChoice: _propTypes["default"].func.isRequired,
|
|
79
|
+
value: _propTypes["default"].string.isRequired
|
|
80
|
+
});
|
|
81
|
+
var MenuItem = (0, _styles.withStyles)({
|
|
82
|
+
wrapper: {
|
|
83
|
+
background: '#fff',
|
|
84
|
+
borderBottom: '1px solid black',
|
|
85
|
+
boxSizing: 'border-box',
|
|
86
|
+
display: 'block',
|
|
87
|
+
cursor: 'pointer',
|
|
88
|
+
lineHeight: '30px',
|
|
89
|
+
padding: '10px 25px 10px 10px',
|
|
90
|
+
position: 'relative'
|
|
91
|
+
},
|
|
92
|
+
correct: {
|
|
93
|
+
background: '#C4DCFA'
|
|
94
|
+
},
|
|
95
|
+
removeIcon: {
|
|
96
|
+
cursor: 'pointer',
|
|
97
|
+
fontSize: '20px',
|
|
98
|
+
fontStyle: 'normal',
|
|
99
|
+
position: 'absolute',
|
|
100
|
+
transform: 'translate(0, -50%)',
|
|
101
|
+
top: '50%',
|
|
102
|
+
right: '5px',
|
|
103
|
+
zIndex: 3
|
|
104
|
+
},
|
|
105
|
+
valueHolder: {
|
|
106
|
+
wordBreak: 'break-all'
|
|
107
|
+
}
|
|
108
|
+
})(MenuItemComp);
|
|
109
|
+
var createElementFromHTML = function createElementFromHTML(htmlString) {
|
|
110
|
+
var div = document.createElement('div');
|
|
111
|
+
div.innerHTML = (htmlString || '').trim();
|
|
112
|
+
return div;
|
|
113
|
+
};
|
|
114
|
+
var RespAreaToolbar = /*#__PURE__*/function (_React$Component2) {
|
|
115
|
+
(0, _inherits2["default"])(RespAreaToolbar, _React$Component2);
|
|
116
|
+
var _super2 = _createSuper(RespAreaToolbar);
|
|
117
|
+
function RespAreaToolbar() {
|
|
118
|
+
var _this2;
|
|
119
|
+
(0, _classCallCheck2["default"])(this, RespAreaToolbar);
|
|
120
|
+
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
121
|
+
args[_key2] = arguments[_key2];
|
|
122
|
+
}
|
|
123
|
+
_this2 = _super2.call.apply(_super2, [this].concat(args));
|
|
124
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "state", {
|
|
125
|
+
respAreaMarkup: ''
|
|
126
|
+
});
|
|
127
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "onRespAreaChange", function (respAreaMarkup) {
|
|
128
|
+
_this2.setState({
|
|
129
|
+
respAreaMarkup: respAreaMarkup
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "onAddChoice", function () {
|
|
133
|
+
if (_this2.editorRef) {
|
|
134
|
+
_this2.editorRef.finishEditing();
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "onDone", function (val) {
|
|
138
|
+
var _this2$props = _this2.props,
|
|
139
|
+
node = _this2$props.node,
|
|
140
|
+
onAddChoice = _this2$props.onAddChoice;
|
|
141
|
+
var onlyText = createElementFromHTML(val).textContent.trim();
|
|
142
|
+
if (!(0, _isEmpty["default"])(onlyText)) {
|
|
143
|
+
onAddChoice(node.data.index, val);
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "onSelectChoice", function (newValue, index) {
|
|
147
|
+
var _this2$props2 = _this2.props,
|
|
148
|
+
node = _this2$props2.node,
|
|
149
|
+
nodePath = _this2$props2.nodePath,
|
|
150
|
+
editor = _this2$props2.editor,
|
|
151
|
+
onToolbarDone = _this2$props2.onToolbarDone,
|
|
152
|
+
onSelectChoice = _this2$props2.onSelectChoice;
|
|
153
|
+
var update = _objectSpread(_objectSpread({}, node.data), {}, {
|
|
154
|
+
value: newValue
|
|
155
|
+
});
|
|
156
|
+
editor.apply({
|
|
157
|
+
type: 'set_node',
|
|
158
|
+
path: nodePath,
|
|
159
|
+
properties: {
|
|
160
|
+
data: node.data
|
|
161
|
+
},
|
|
162
|
+
newProperties: {
|
|
163
|
+
data: update
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
onToolbarDone(false);
|
|
167
|
+
onSelectChoice(index);
|
|
168
|
+
});
|
|
169
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "onRemoveChoice", function (val, index) {
|
|
170
|
+
var _this2$props3 = _this2.props,
|
|
171
|
+
node = _this2$props3.node,
|
|
172
|
+
nodePath = _this2$props3.nodePath,
|
|
173
|
+
editor = _this2$props3.editor,
|
|
174
|
+
onToolbarDone = _this2$props3.onToolbarDone,
|
|
175
|
+
onRemoveChoice = _this2$props3.onRemoveChoice;
|
|
176
|
+
if ((0, _isEqual["default"])(val, node.data.value)) {
|
|
177
|
+
var update = _objectSpread(_objectSpread({}, node.data), {}, {
|
|
178
|
+
value: null
|
|
179
|
+
});
|
|
180
|
+
editor.apply({
|
|
181
|
+
type: 'set_node',
|
|
182
|
+
path: nodePath,
|
|
183
|
+
properties: {
|
|
184
|
+
data: node.data
|
|
185
|
+
},
|
|
186
|
+
newProperties: {
|
|
187
|
+
data: update
|
|
188
|
+
}
|
|
189
|
+
});
|
|
190
|
+
onToolbarDone(false);
|
|
191
|
+
}
|
|
192
|
+
onRemoveChoice(index);
|
|
193
|
+
});
|
|
194
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "onKeyDown", function (event) {
|
|
195
|
+
if (event.key === 'Enter') {
|
|
196
|
+
_this2.onAddChoice();
|
|
197
|
+
// Cancelling event
|
|
198
|
+
return false;
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "onBlur", function () {
|
|
202
|
+
if (_this2.clickedInside) {
|
|
203
|
+
_this2.clickedInside = false;
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
var _this2$props4 = _this2.props,
|
|
207
|
+
nodePath = _this2$props4.nodePath,
|
|
208
|
+
choices = _this2$props4.choices,
|
|
209
|
+
onCheck = _this2$props4.onCheck,
|
|
210
|
+
onToolbarDone = _this2$props4.onToolbarDone,
|
|
211
|
+
editor = _this2$props4.editor;
|
|
212
|
+
var correctResponse = (choices || []).find(function (choice) {
|
|
213
|
+
return choice.correct;
|
|
214
|
+
});
|
|
215
|
+
_this2.onAddChoice();
|
|
216
|
+
if (!choices || choices && choices.length < 2 || !correctResponse) {
|
|
217
|
+
onCheck(function () {
|
|
218
|
+
editor.apply({
|
|
219
|
+
type: 'remove_node',
|
|
220
|
+
path: nodePath
|
|
221
|
+
});
|
|
222
|
+
onToolbarDone(false);
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
});
|
|
226
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "onClickInside", function () {
|
|
227
|
+
_this2.clickedInside = true;
|
|
228
|
+
});
|
|
229
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "focusInput", function () {
|
|
230
|
+
// we need to focus the input so that math is saved even without pressing the green checkmark
|
|
231
|
+
var slateEditorRef = _this2.editorRef && _this2.editorRef.rootRef && _this2.editorRef.rootRef.slateEditor;
|
|
232
|
+
var inputRef = slateEditorRef && slateEditorRef.editorRef && slateEditorRef.editorRef.element;
|
|
233
|
+
if (inputRef) {
|
|
234
|
+
inputRef.focus();
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
return _this2;
|
|
238
|
+
}
|
|
239
|
+
(0, _createClass2["default"])(RespAreaToolbar, [{
|
|
240
|
+
key: "componentDidMount",
|
|
241
|
+
value: function componentDidMount() {
|
|
242
|
+
var _this$props2 = this.props,
|
|
243
|
+
node = _this$props2.node,
|
|
244
|
+
editor = _this$props2.editor;
|
|
245
|
+
var domNode = _slateReact.ReactEditor.toDOMNode(editor, node);
|
|
246
|
+
if (domNode) {
|
|
247
|
+
//eslint-disable-next-line
|
|
248
|
+
var domNodeRect = domNode.getBoundingClientRect();
|
|
249
|
+
var _editor = domNode.closest('[data-slate-editor]');
|
|
250
|
+
var editorRect = _editor.getBoundingClientRect();
|
|
251
|
+
var top = domNodeRect.top - editorRect.top;
|
|
252
|
+
var left = domNodeRect.left - editorRect.left;
|
|
253
|
+
this.setState({
|
|
254
|
+
toolbarStyle: {
|
|
255
|
+
position: 'absolute',
|
|
256
|
+
top: "".concat(top + domNodeRect.height + 60, "px"),
|
|
257
|
+
left: "".concat(left + 25, "px"),
|
|
258
|
+
width: domNodeRect.width
|
|
259
|
+
}
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
}, {
|
|
264
|
+
key: "componentDidUpdate",
|
|
265
|
+
value: function componentDidUpdate() {
|
|
266
|
+
//eslint-disable-next-line
|
|
267
|
+
var domNode = _reactDom["default"].findDOMNode(this);
|
|
268
|
+
(0, _mathRendering.renderMath)(domNode);
|
|
269
|
+
}
|
|
270
|
+
}, {
|
|
271
|
+
key: "render",
|
|
272
|
+
value: function render() {
|
|
273
|
+
var _this3 = this;
|
|
274
|
+
var _this$props3 = this.props,
|
|
275
|
+
classes = _this$props3.classes,
|
|
276
|
+
choices = _this$props3.choices,
|
|
277
|
+
spellCheck = _this$props3.spellCheck,
|
|
278
|
+
uploadSoundSupport = _this$props3.uploadSoundSupport;
|
|
279
|
+
var _this$state = this.state,
|
|
280
|
+
respAreaMarkup = _this$state.respAreaMarkup,
|
|
281
|
+
toolbarStyle = _this$state.toolbarStyle;
|
|
282
|
+
var filteredDefaultPlugins = (_editableHtml.DEFAULT_PLUGINS || []).filter(function (p) {
|
|
283
|
+
return p !== 'table' && p !== 'bulleted-list' && p !== 'numbered-list';
|
|
284
|
+
});
|
|
285
|
+
var labelPlugins = {
|
|
286
|
+
audio: {
|
|
287
|
+
disabled: true
|
|
288
|
+
},
|
|
289
|
+
video: {
|
|
290
|
+
disabled: true
|
|
291
|
+
}
|
|
292
|
+
};
|
|
293
|
+
if (!toolbarStyle) {
|
|
294
|
+
return null;
|
|
295
|
+
}
|
|
296
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
297
|
+
style: _objectSpread(_objectSpread({}, toolbarStyle), {}, {
|
|
298
|
+
backgroundColor: '#E0E1E6'
|
|
299
|
+
}),
|
|
300
|
+
onMouseDown: this.onClickInside
|
|
301
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
302
|
+
className: classes.itemBuilder
|
|
303
|
+
}, /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
|
|
304
|
+
ref: function ref(_ref) {
|
|
305
|
+
if (_ref) {
|
|
306
|
+
_this3.editorRef = _ref;
|
|
307
|
+
}
|
|
308
|
+
},
|
|
309
|
+
autoFocus: true,
|
|
310
|
+
autoSave: true,
|
|
311
|
+
className: classes.respArea,
|
|
312
|
+
toolbarOpts: {
|
|
313
|
+
position: 'top',
|
|
314
|
+
alwaysVisible: false,
|
|
315
|
+
showDone: false,
|
|
316
|
+
doneOn: 'blur'
|
|
317
|
+
},
|
|
318
|
+
markup: respAreaMarkup,
|
|
319
|
+
onKeyDown: this.onKeyDown,
|
|
320
|
+
onChange: this.onRespAreaChange,
|
|
321
|
+
onDone: this.onDone,
|
|
322
|
+
placeholder: "Add Choice",
|
|
323
|
+
activePlugins: filteredDefaultPlugins,
|
|
324
|
+
pluginProps: labelPlugins,
|
|
325
|
+
onBlur: this.onBlur,
|
|
326
|
+
spellCheck: spellCheck,
|
|
327
|
+
uploadSoundSupport: uploadSoundSupport
|
|
328
|
+
}), /*#__PURE__*/_react["default"].createElement("i", {
|
|
329
|
+
style: {
|
|
330
|
+
cursor: 'pointer',
|
|
331
|
+
fontSize: '20px',
|
|
332
|
+
fontStyle: 'normal',
|
|
333
|
+
position: 'absolute',
|
|
334
|
+
top: '50%',
|
|
335
|
+
right: '15px',
|
|
336
|
+
transform: 'translate(0, -50%)'
|
|
337
|
+
},
|
|
338
|
+
contentEditable: false,
|
|
339
|
+
onMouseDown: function onMouseDown() {
|
|
340
|
+
return _this3.focusInput();
|
|
341
|
+
},
|
|
342
|
+
onClick: function onClick() {
|
|
343
|
+
return _this3.onAddChoice();
|
|
344
|
+
}
|
|
345
|
+
}, "+")), choices && /*#__PURE__*/_react["default"].createElement("div", {
|
|
346
|
+
className: classes.choicesHolder
|
|
347
|
+
}, choices.map(function (_ref2, index) {
|
|
348
|
+
var label = _ref2.label,
|
|
349
|
+
correct = _ref2.correct;
|
|
350
|
+
return /*#__PURE__*/_react["default"].createElement(MenuItem, {
|
|
351
|
+
key: index,
|
|
352
|
+
onClick: function onClick() {
|
|
353
|
+
return _this3.onSelectChoice(label, index);
|
|
354
|
+
},
|
|
355
|
+
onRemoveChoice: function onRemoveChoice() {
|
|
356
|
+
return _this3.onRemoveChoice(label, index);
|
|
357
|
+
},
|
|
358
|
+
value: label,
|
|
359
|
+
correct: correct
|
|
360
|
+
});
|
|
361
|
+
})));
|
|
362
|
+
}
|
|
363
|
+
}]);
|
|
364
|
+
return RespAreaToolbar;
|
|
365
|
+
}(_react["default"].Component);
|
|
366
|
+
exports.RespAreaToolbar = RespAreaToolbar;
|
|
367
|
+
(0, _defineProperty2["default"])(RespAreaToolbar, "propTypes", {
|
|
368
|
+
classes: _propTypes["default"].object,
|
|
369
|
+
node: _propTypes["default"].object,
|
|
370
|
+
uploadSoundSupport: _propTypes["default"].object,
|
|
371
|
+
onDone: _propTypes["default"].func,
|
|
372
|
+
choices: _propTypes["default"].array,
|
|
373
|
+
onAddChoice: _propTypes["default"].func.isRequired,
|
|
374
|
+
onRemoveChoice: _propTypes["default"].func.isRequired,
|
|
375
|
+
onSelectChoice: _propTypes["default"].func.isRequired,
|
|
376
|
+
onToolbarDone: _propTypes["default"].func.isRequired,
|
|
377
|
+
editor: _propTypes["default"].object.isRequired,
|
|
378
|
+
nodePath: _propTypes["default"].array.isRequired
|
|
379
|
+
});
|
|
380
|
+
var StyledRespAreaToolbar = (0, _styles.withStyles)({
|
|
381
|
+
respArea: {
|
|
382
|
+
backgroundColor: '#fff',
|
|
383
|
+
'& [data-slate-editor="true"]': {
|
|
384
|
+
minHeight: 'initial !important'
|
|
385
|
+
}
|
|
386
|
+
},
|
|
387
|
+
choicesHolder: {
|
|
388
|
+
display: 'flex',
|
|
389
|
+
flexDirection: 'column',
|
|
390
|
+
'& > div:last-child': {
|
|
391
|
+
border: 'none'
|
|
392
|
+
}
|
|
393
|
+
},
|
|
394
|
+
itemBuilder: {
|
|
395
|
+
padding: '8px',
|
|
396
|
+
position: 'relative'
|
|
397
|
+
}
|
|
398
|
+
})(RespAreaToolbar);
|
|
399
|
+
var _default = StyledRespAreaToolbar;
|
|
400
|
+
exports["default"] = _default;
|
|
401
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdERvbSIsIl9zbGF0ZVJlYWN0IiwiX3Byb3BUeXBlcyIsIl9lZGl0YWJsZUh0bWwiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9tYXRoUmVuZGVyaW5nIiwiX3N0eWxlcyIsIl9pc0VxdWFsIiwiX2lzRW1wdHkiLCJfY2xhc3NuYW1lczIiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0Iiwib3duS2V5cyIsIm9iamVjdCIsImVudW1lcmFibGVPbmx5Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsInN5bWJvbHMiLCJmaWx0ZXIiLCJzeW0iLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiX2NyZWF0ZVN1cGVyIiwiRGVyaXZlZCIsImhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiX2NyZWF0ZVN1cGVySW50ZXJuYWwiLCJTdXBlciIsIl9nZXRQcm90b3R5cGVPZjIiLCJyZXN1bHQiLCJOZXdUYXJnZXQiLCJjb25zdHJ1Y3RvciIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJzaGFtIiwiUHJveHkiLCJCb29sZWFuIiwidmFsdWVPZiIsImUiLCJNZW51SXRlbUNvbXAiLCJfUmVhY3QkQ29tcG9uZW50IiwiX2luaGVyaXRzMiIsIl9zdXBlciIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9sZW4iLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY29uY2F0IiwiX2Fzc2VydFRoaXNJbml0aWFsaXplZDIiLCJvblJlbW92ZUNob2ljZSIsInByb3BzIiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJfY3JlYXRlQ2xhc3MyIiwidmFsdWUiLCJyZW5kZXIiLCJfdGhpcyRwcm9wcyIsImNsYXNzZXMiLCJjb3JyZWN0Iiwib25DbGljayIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJjbGFzc25hbWVzIiwid3JhcHBlciIsInZhbHVlSG9sZGVyIiwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiLCJfX2h0bWwiLCJyZW1vdmVJY29uIiwib25SZW1vdmVDbGljayIsIlJlYWN0IiwiQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwiaXNSZXF1aXJlZCIsImJvb2wiLCJmdW5jIiwic3RyaW5nIiwiTWVudUl0ZW0iLCJ3aXRoU3R5bGVzIiwiYmFja2dyb3VuZCIsImJvcmRlckJvdHRvbSIsImJveFNpemluZyIsImRpc3BsYXkiLCJjdXJzb3IiLCJsaW5lSGVpZ2h0IiwicGFkZGluZyIsInBvc2l0aW9uIiwiZm9udFNpemUiLCJmb250U3R5bGUiLCJ0cmFuc2Zvcm0iLCJ0b3AiLCJyaWdodCIsInpJbmRleCIsIndvcmRCcmVhayIsImNyZWF0ZUVsZW1lbnRGcm9tSFRNTCIsImh0bWxTdHJpbmciLCJkaXYiLCJkb2N1bWVudCIsImlubmVySFRNTCIsInRyaW0iLCJSZXNwQXJlYVRvb2xiYXIiLCJfUmVhY3QkQ29tcG9uZW50MiIsIl9zdXBlcjIiLCJfdGhpczIiLCJfbGVuMiIsIl9rZXkyIiwicmVzcEFyZWFNYXJrdXAiLCJzZXRTdGF0ZSIsImVkaXRvclJlZiIsImZpbmlzaEVkaXRpbmciLCJ2YWwiLCJfdGhpczIkcHJvcHMiLCJub2RlIiwib25BZGRDaG9pY2UiLCJvbmx5VGV4dCIsInRleHRDb250ZW50IiwiaXNFbXB0eSIsImRhdGEiLCJpbmRleCIsIm5ld1ZhbHVlIiwiX3RoaXMyJHByb3BzMiIsIm5vZGVQYXRoIiwiZWRpdG9yIiwib25Ub29sYmFyRG9uZSIsIm9uU2VsZWN0Q2hvaWNlIiwidXBkYXRlIiwidHlwZSIsInBhdGgiLCJwcm9wZXJ0aWVzIiwibmV3UHJvcGVydGllcyIsIl90aGlzMiRwcm9wczMiLCJpc0VxdWFsIiwiZXZlbnQiLCJjbGlja2VkSW5zaWRlIiwiX3RoaXMyJHByb3BzNCIsImNob2ljZXMiLCJvbkNoZWNrIiwiY29ycmVjdFJlc3BvbnNlIiwiZmluZCIsImNob2ljZSIsInNsYXRlRWRpdG9yUmVmIiwicm9vdFJlZiIsInNsYXRlRWRpdG9yIiwiaW5wdXRSZWYiLCJlbGVtZW50IiwiZm9jdXMiLCJjb21wb25lbnREaWRNb3VudCIsIl90aGlzJHByb3BzMiIsImRvbU5vZGUiLCJSZWFjdEVkaXRvciIsInRvRE9NTm9kZSIsImRvbU5vZGVSZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiY2xvc2VzdCIsImVkaXRvclJlY3QiLCJsZWZ0IiwidG9vbGJhclN0eWxlIiwiaGVpZ2h0Iiwid2lkdGgiLCJjb21wb25lbnREaWRVcGRhdGUiLCJSZWFjdERPTSIsImZpbmRET01Ob2RlIiwicmVuZGVyTWF0aCIsIl90aGlzMyIsIl90aGlzJHByb3BzMyIsInNwZWxsQ2hlY2siLCJ1cGxvYWRTb3VuZFN1cHBvcnQiLCJfdGhpcyRzdGF0ZSIsInN0YXRlIiwiZmlsdGVyZWREZWZhdWx0UGx1Z2lucyIsIkRFRkFVTFRfUExVR0lOUyIsInAiLCJsYWJlbFBsdWdpbnMiLCJhdWRpbyIsImRpc2FibGVkIiwidmlkZW8iLCJzdHlsZSIsImJhY2tncm91bmRDb2xvciIsIm9uTW91c2VEb3duIiwib25DbGlja0luc2lkZSIsIml0ZW1CdWlsZGVyIiwicmVmIiwiYXV0b0ZvY3VzIiwiYXV0b1NhdmUiLCJyZXNwQXJlYSIsInRvb2xiYXJPcHRzIiwiYWx3YXlzVmlzaWJsZSIsInNob3dEb25lIiwiZG9uZU9uIiwibWFya3VwIiwib25LZXlEb3duIiwib25DaGFuZ2UiLCJvblJlc3BBcmVhQ2hhbmdlIiwib25Eb25lIiwicGxhY2Vob2xkZXIiLCJhY3RpdmVQbHVnaW5zIiwicGx1Z2luUHJvcHMiLCJvbkJsdXIiLCJjb250ZW50RWRpdGFibGUiLCJmb2N1c0lucHV0IiwiY2hvaWNlc0hvbGRlciIsIm1hcCIsIl9yZWYyIiwibGFiZWwiLCJleHBvcnRzIiwiYXJyYXkiLCJTdHlsZWRSZXNwQXJlYVRvb2xiYXIiLCJtaW5IZWlnaHQiLCJmbGV4RGlyZWN0aW9uIiwiYm9yZGVyIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi9zcmMvaW5saW5lLWRyb3Bkb3duLXRvb2xiYXIuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCB7IFJlYWN0RWRpdG9yIH0gZnJvbSAnc2xhdGUtcmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBFZGl0YWJsZUh0bWwgZnJvbSAnQHBpZS1saWIvZWRpdGFibGUtaHRtbCc7XG5pbXBvcnQgeyByZW5kZXJNYXRoIH0gZnJvbSAnQHBpZS1saWIvbWF0aC1yZW5kZXJpbmcnO1xuaW1wb3J0IHsgd2l0aFN0eWxlcyB9IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL3N0eWxlcyc7XG5pbXBvcnQgaXNFcXVhbCBmcm9tICdsb2Rhc2gvaXNFcXVhbCc7XG5pbXBvcnQgaXNFbXB0eSBmcm9tICdsb2Rhc2gvaXNFbXB0eSc7XG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCB7IERFRkFVTFRfUExVR0lOUyB9IGZyb20gJ0BwaWUtbGliL2VkaXRhYmxlLWh0bWwnO1xuXG5jbGFzcyBNZW51SXRlbUNvbXAgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBjb3JyZWN0OiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICAgIG9uQ2xpY2s6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgb25SZW1vdmVDaG9pY2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgdmFsdWU6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgfTtcblxuICBvblJlbW92ZUNsaWNrID0gKGUpID0+IHtcbiAgICBjb25zdCB7IG9uUmVtb3ZlQ2hvaWNlIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBvblJlbW92ZUNob2ljZSgpO1xuICB9O1xuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IGNsYXNzZXMsIGNvcnJlY3QsIG9uQ2xpY2ssIHZhbHVlIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc25hbWVzKGNsYXNzZXMud3JhcHBlciwgeyBbY2xhc3Nlcy5jb3JyZWN0XTogY29ycmVjdCB9KX0gb25DbGljaz17b25DbGlja30+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMudmFsdWVIb2xkZXJ9XG4gICAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3tcbiAgICAgICAgICAgIF9faHRtbDogdmFsdWUsXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICAgPGkgY2xhc3NOYW1lPXtjbGFzc2VzLnJlbW92ZUljb259IG9uQ2xpY2s9e3RoaXMub25SZW1vdmVDbGlja30+XG4gICAgICAgICAgeFxuICAgICAgICA8L2k+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG59XG5cbmNvbnN0IE1lbnVJdGVtID0gd2l0aFN0eWxlcyh7XG4gIHdyYXBwZXI6IHtcbiAgICBiYWNrZ3JvdW5kOiAnI2ZmZicsXG4gICAgYm9yZGVyQm90dG9tOiAnMXB4IHNvbGlkIGJsYWNrJyxcbiAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgICBkaXNwbGF5OiAnYmxvY2snLFxuICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgIGxpbmVIZWlnaHQ6ICczMHB4JyxcbiAgICBwYWRkaW5nOiAnMTBweCAyNXB4IDEwcHggMTBweCcsXG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gIH0sXG4gIGNvcnJlY3Q6IHtcbiAgICBiYWNrZ3JvdW5kOiAnI0M0RENGQScsXG4gIH0sXG4gIHJlbW92ZUljb246IHtcbiAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICBmb250U2l6ZTogJzIwcHgnLFxuICAgIGZvbnRTdHlsZTogJ25vcm1hbCcsXG4gICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlKDAsIC01MCUpJyxcbiAgICB0b3A6ICc1MCUnLFxuICAgIHJpZ2h0OiAnNXB4JyxcbiAgICB6SW5kZXg6IDMsXG4gIH0sXG4gIHZhbHVlSG9sZGVyOiB7XG4gICAgd29yZEJyZWFrOiAnYnJlYWstYWxsJyxcbiAgfSxcbn0pKE1lbnVJdGVtQ29tcCk7XG5cbmNvbnN0IGNyZWF0ZUVsZW1lbnRGcm9tSFRNTCA9IChodG1sU3RyaW5nKSA9PiB7XG4gIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gIGRpdi5pbm5lckhUTUwgPSAoaHRtbFN0cmluZyB8fCAnJykudHJpbSgpO1xuXG4gIHJldHVybiBkaXY7XG59O1xuXG5leHBvcnQgY2xhc3MgUmVzcEFyZWFUb29sYmFyIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIG5vZGU6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgdXBsb2FkU291bmRTdXBwb3J0OiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIG9uRG9uZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgY2hvaWNlczogUHJvcFR5cGVzLmFycmF5LFxuICAgIG9uQWRkQ2hvaWNlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIG9uUmVtb3ZlQ2hvaWNlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIG9uU2VsZWN0Q2hvaWNlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIG9uVG9vbGJhckRvbmU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgZWRpdG9yOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgbm9kZVBhdGg6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICB9O1xuXG4gIHN0YXRlID0ge1xuICAgIHJlc3BBcmVhTWFya3VwOiAnJyxcbiAgfTtcblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICBjb25zdCB7IG5vZGUsIGVkaXRvciB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBkb21Ob2RlID0gUmVhY3RFZGl0b3IudG9ET01Ob2RlKGVkaXRvciwgbm9kZSk7XG5cbiAgICBpZiAoZG9tTm9kZSkge1xuICAgICAgLy9lc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgIGNvbnN0IGRvbU5vZGVSZWN0ID0gZG9tTm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IGVkaXRvciA9IGRvbU5vZGUuY2xvc2VzdCgnW2RhdGEtc2xhdGUtZWRpdG9yXScpO1xuICAgICAgY29uc3QgZWRpdG9yUmVjdCA9IGVkaXRvci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IHRvcCA9IGRvbU5vZGVSZWN0LnRvcCAtIGVkaXRvclJlY3QudG9wO1xuICAgICAgY29uc3QgbGVmdCA9IGRvbU5vZGVSZWN0LmxlZnQgLSBlZGl0b3JSZWN0LmxlZnQ7XG5cbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICB0b29sYmFyU3R5bGU6IHtcbiAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICB0b3A6IGAke3RvcCArIGRvbU5vZGVSZWN0LmhlaWdodCArIDYwfXB4YCxcbiAgICAgICAgICBsZWZ0OiBgJHtsZWZ0ICsgMjV9cHhgLFxuICAgICAgICAgIHdpZHRoOiBkb21Ob2RlUmVjdC53aWR0aCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGNvbXBvbmVudERpZFVwZGF0ZSgpIHtcbiAgICAvL2VzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIGNvbnN0IGRvbU5vZGUgPSBSZWFjdERPTS5maW5kRE9NTm9kZSh0aGlzKTtcblxuICAgIHJlbmRlck1hdGgoZG9tTm9kZSk7XG4gIH1cblxuICBvblJlc3BBcmVhQ2hhbmdlID0gKHJlc3BBcmVhTWFya3VwKSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7IHJlc3BBcmVhTWFya3VwIH0pO1xuICB9O1xuXG4gIG9uQWRkQ2hvaWNlID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLmVkaXRvclJlZikge1xuICAgICAgdGhpcy5lZGl0b3JSZWYuZmluaXNoRWRpdGluZygpO1xuICAgIH1cbiAgfTtcblxuICBvbkRvbmUgPSAodmFsKSA9PiB7XG4gICAgY29uc3QgeyBub2RlLCBvbkFkZENob2ljZSB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBvbmx5VGV4dCA9IGNyZWF0ZUVsZW1lbnRGcm9tSFRNTCh2YWwpLnRleHRDb250ZW50LnRyaW0oKTtcblxuICAgIGlmICghaXNFbXB0eShvbmx5VGV4dCkpIHtcbiAgICAgIG9uQWRkQ2hvaWNlKG5vZGUuZGF0YS5pbmRleCwgdmFsKTtcbiAgICB9XG4gIH07XG5cbiAgb25TZWxlY3RDaG9pY2UgPSAobmV3VmFsdWUsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgeyBub2RlLCBub2RlUGF0aCwgZWRpdG9yLCBvblRvb2xiYXJEb25lLCBvblNlbGVjdENob2ljZSB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB1cGRhdGUgPSB7IC4uLm5vZGUuZGF0YSwgdmFsdWU6IG5ld1ZhbHVlIH07XG5cbiAgICBlZGl0b3IuYXBwbHkoe1xuICAgICAgdHlwZTogJ3NldF9ub2RlJyxcbiAgICAgIHBhdGg6IG5vZGVQYXRoLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBkYXRhOiBub2RlLmRhdGFcbiAgICAgIH0sXG4gICAgICBuZXdQcm9wZXJ0aWVzOiB7IGRhdGE6IHVwZGF0ZSB9XG4gICAgfSk7XG5cbiAgICBvblRvb2xiYXJEb25lKGZhbHNlKTtcbiAgICBvblNlbGVjdENob2ljZShpbmRleCk7XG4gIH07XG5cbiAgb25SZW1vdmVDaG9pY2UgPSAodmFsLCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHsgbm9kZSwgbm9kZVBhdGgsIGVkaXRvciwgb25Ub29sYmFyRG9uZSwgb25SZW1vdmVDaG9pY2UgfSA9IHRoaXMucHJvcHM7XG5cbiAgICBpZiAoaXNFcXVhbCh2YWwsIG5vZGUuZGF0YS52YWx1ZSkpIHtcbiAgICAgIGNvbnN0IHVwZGF0ZSA9IHsgLi4ubm9kZS5kYXRhLCB2YWx1ZTogbnVsbCB9O1xuXG4gICAgICBlZGl0b3IuYXBwbHkoe1xuICAgICAgICB0eXBlOiAnc2V0X25vZGUnLFxuICAgICAgICBwYXRoOiBub2RlUGF0aCxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIGRhdGE6IG5vZGUuZGF0YVxuICAgICAgICB9LFxuICAgICAgICBuZXdQcm9wZXJ0aWVzOiB7IGRhdGE6IHVwZGF0ZSB9XG4gICAgICB9KTtcblxuICAgICAgb25Ub29sYmFyRG9uZShmYWxzZSk7XG4gICAgfVxuXG4gICAgb25SZW1vdmVDaG9pY2UoaW5kZXgpO1xuICB9O1xuXG4gIG9uS2V5RG93biA9IChldmVudCkgPT4ge1xuICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgIHRoaXMub25BZGRDaG9pY2UoKTtcbiAgICAgIC8vIENhbmNlbGxpbmcgZXZlbnRcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH07XG5cbiAgb25CbHVyID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLmNsaWNrZWRJbnNpZGUpIHtcbiAgICAgIHRoaXMuY2xpY2tlZEluc2lkZSA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgbm9kZVBhdGgsIGNob2ljZXMsIG9uQ2hlY2ssIG9uVG9vbGJhckRvbmUsIGVkaXRvciB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBjb3JyZWN0UmVzcG9uc2UgPSAoY2hvaWNlcyB8fCBbXSkuZmluZCgoY2hvaWNlKSA9PiBjaG9pY2UuY29ycmVjdCk7XG5cbiAgICB0aGlzLm9uQWRkQ2hvaWNlKCk7XG5cbiAgICBpZiAoIWNob2ljZXMgfHwgKGNob2ljZXMgJiYgY2hvaWNlcy5sZW5ndGggPCAyKSB8fCAhY29ycmVjdFJlc3BvbnNlKSB7XG4gICAgICBvbkNoZWNrKCgpID0+IHtcbiAgICAgICAgZWRpdG9yLmFwcGx5KHtcbiAgICAgICAgICB0eXBlOiAncmVtb3ZlX25vZGUnLFxuICAgICAgICAgIHBhdGg6IG5vZGVQYXRoXG4gICAgICAgIH0pO1xuXG4gICAgICAgIG9uVG9vbGJhckRvbmUoZmFsc2UpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIG9uQ2xpY2tJbnNpZGUgPSAoKSA9PiB7XG4gICAgdGhpcy5jbGlja2VkSW5zaWRlID0gdHJ1ZTtcbiAgfTtcblxuICBmb2N1c0lucHV0ID0gKCkgPT4ge1xuICAgIC8vIHdlIG5lZWQgdG8gZm9jdXMgdGhlIGlucHV0IHNvIHRoYXQgbWF0aCBpcyBzYXZlZCBldmVuIHdpdGhvdXQgcHJlc3NpbmcgdGhlIGdyZWVuIGNoZWNrbWFya1xuICAgIGNvbnN0IHNsYXRlRWRpdG9yUmVmID0gdGhpcy5lZGl0b3JSZWYgJiYgdGhpcy5lZGl0b3JSZWYucm9vdFJlZiAmJiB0aGlzLmVkaXRvclJlZi5yb290UmVmLnNsYXRlRWRpdG9yO1xuICAgIGNvbnN0IGlucHV0UmVmID0gc2xhdGVFZGl0b3JSZWYgJiYgc2xhdGVFZGl0b3JSZWYuZWRpdG9yUmVmICYmIHNsYXRlRWRpdG9yUmVmLmVkaXRvclJlZi5lbGVtZW50O1xuXG4gICAgaWYgKGlucHV0UmVmKSB7XG4gICAgICBpbnB1dFJlZi5mb2N1cygpO1xuICAgIH1cbiAgfTtcblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyBjbGFzc2VzLCBjaG9pY2VzLCBzcGVsbENoZWNrLCB1cGxvYWRTb3VuZFN1cHBvcnQgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgeyByZXNwQXJlYU1hcmt1cCwgdG9vbGJhclN0eWxlIH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgY29uc3QgZmlsdGVyZWREZWZhdWx0UGx1Z2lucyA9IChERUZBVUxUX1BMVUdJTlMgfHwgW10pLmZpbHRlcihcbiAgICAgIChwKSA9PiBwICE9PSAndGFibGUnICYmIHAgIT09ICdidWxsZXRlZC1saXN0JyAmJiBwICE9PSAnbnVtYmVyZWQtbGlzdCcsXG4gICAgKTtcbiAgICBjb25zdCBsYWJlbFBsdWdpbnMgPSB7XG4gICAgICBhdWRpbzogeyBkaXNhYmxlZDogdHJ1ZSB9LFxuICAgICAgdmlkZW86IHsgZGlzYWJsZWQ6IHRydWUgfSxcbiAgICB9O1xuXG4gICAgaWYgKCF0b29sYmFyU3R5bGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2XG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgLi4udG9vbGJhclN0eWxlLFxuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJyNFMEUxRTYnLFxuICAgICAgICB9fVxuICAgICAgICBvbk1vdXNlRG93bj17dGhpcy5vbkNsaWNrSW5zaWRlfVxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5pdGVtQnVpbGRlcn0+XG4gICAgICAgICAgPEVkaXRhYmxlSHRtbFxuICAgICAgICAgICAgcmVmPXsocmVmKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChyZWYpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVkaXRvclJlZiA9IHJlZjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGF1dG9Gb2N1cz17dHJ1ZX1cbiAgICAgICAgICAgIGF1dG9TYXZlXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMucmVzcEFyZWF9XG4gICAgICAgICAgICB0b29sYmFyT3B0cz17e1xuICAgICAgICAgICAgICBwb3NpdGlvbjogJ3RvcCcsXG4gICAgICAgICAgICAgIGFsd2F5c1Zpc2libGU6IGZhbHNlLFxuICAgICAgICAgICAgICBzaG93RG9uZTogZmFsc2UsXG4gICAgICAgICAgICAgIGRvbmVPbjogJ2JsdXInLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG1hcmt1cD17cmVzcEFyZWFNYXJrdXB9XG4gICAgICAgICAgICBvbktleURvd249e3RoaXMub25LZXlEb3dufVxuICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMub25SZXNwQXJlYUNoYW5nZX1cbiAgICAgICAgICAgIG9uRG9uZT17dGhpcy5vbkRvbmV9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkFkZCBDaG9pY2VcIlxuICAgICAgICAgICAgYWN0aXZlUGx1Z2lucz17ZmlsdGVyZWREZWZhdWx0UGx1Z2luc31cbiAgICAgICAgICAgIHBsdWdpblByb3BzPXtsYWJlbFBsdWdpbnN9XG4gICAgICAgICAgICBvbkJsdXI9e3RoaXMub25CbHVyfVxuICAgICAgICAgICAgc3BlbGxDaGVjaz17c3BlbGxDaGVja31cbiAgICAgICAgICAgIHVwbG9hZFNvdW5kU3VwcG9ydD17dXBsb2FkU291bmRTdXBwb3J0fVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGlcbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgICAgICAgICAgICBmb250U2l6ZTogJzIwcHgnLFxuICAgICAgICAgICAgICBmb250U3R5bGU6ICdub3JtYWwnLFxuICAgICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgICAgdG9wOiAnNTAlJyxcbiAgICAgICAgICAgICAgcmlnaHQ6ICcxNXB4JyxcbiAgICAgICAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlKDAsIC01MCUpJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBjb250ZW50RWRpdGFibGU9e2ZhbHNlfVxuICAgICAgICAgICAgb25Nb3VzZURvd249eygpID0+IHRoaXMuZm9jdXNJbnB1dCgpfVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdGhpcy5vbkFkZENob2ljZSgpfVxuICAgICAgICAgID5cbiAgICAgICAgICAgICtcbiAgICAgICAgICA8L2k+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7Y2hvaWNlcyAmJiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMuY2hvaWNlc0hvbGRlcn0+XG4gICAgICAgICAgICB7Y2hvaWNlcy5tYXAoKHsgbGFiZWwsIGNvcnJlY3QgfSwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgPE1lbnVJdGVtXG4gICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0aGlzLm9uU2VsZWN0Q2hvaWNlKGxhYmVsLCBpbmRleCl9XG4gICAgICAgICAgICAgICAgb25SZW1vdmVDaG9pY2U9eygpID0+IHRoaXMub25SZW1vdmVDaG9pY2UobGFiZWwsIGluZGV4KX1cbiAgICAgICAgICAgICAgICB2YWx1ZT17bGFiZWx9XG4gICAgICAgICAgICAgICAgY29ycmVjdD17Y29ycmVjdH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxufVxuXG5jb25zdCBTdHlsZWRSZXNwQXJlYVRvb2xiYXIgPSB3aXRoU3R5bGVzKHtcbiAgcmVzcEFyZWE6IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZmZmJyxcbiAgICAnJiBbZGF0YS1zbGF0ZS1lZGl0b3I9XCJ0cnVlXCJdJzoge1xuICAgICAgbWluSGVpZ2h0OiAnaW5pdGlhbCAhaW1wb3J0YW50JyxcbiAgICB9LFxuICB9LFxuICBjaG9pY2VzSG9sZGVyOiB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICcmID4gZGl2Omxhc3QtY2hpbGQnOiB7XG4gICAgICBib3JkZXI6ICdub25lJyxcbiAgICB9LFxuICB9LFxuICBpdGVtQnVpbGRlcjoge1xuICAgIHBhZGRpbmc6ICc4cHgnLFxuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICB9LFxufSkoUmVzcEFyZWFUb29sYmFyKTtcblxuZXhwb3J0IGRlZmF1bHQgU3R5bGVkUmVzcEFyZWFUb29sYmFyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxTQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxXQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxVQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxhQUFBLEdBQUFDLHVCQUFBLENBQUFMLE9BQUE7QUFDQSxJQUFBTSxjQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxPQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxRQUFBLEdBQUFULHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBUyxR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
|