@pie-element/drawing-response 10.1.0 → 10.2.0-mui-update.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.
- package/CHANGELOG.md +66 -0
- package/configure/CHANGELOG.md +66 -0
- package/configure/lib/__tests__/image-container.test.js +176 -0
- package/configure/lib/__tests__/index.test.js +53 -0
- package/configure/lib/__tests__/root.test.js +84 -0
- package/configure/lib/button.js +24 -48
- package/configure/lib/button.js.map +1 -1
- package/configure/lib/defaults.js +3 -4
- package/configure/lib/defaults.js.map +1 -1
- package/configure/lib/image-container.js +239 -328
- package/configure/lib/image-container.js.map +1 -1
- package/configure/lib/index.js +116 -183
- package/configure/lib/index.js.map +1 -1
- package/configure/lib/root.js +195 -261
- package/configure/lib/root.js.map +1 -1
- package/configure/package.json +9 -7
- package/configure/src/__tests__/index.test.js +10 -4
- package/configure/src/button.jsx +14 -24
- package/configure/src/image-container.jsx +73 -77
- package/configure/src/index.js +12 -2
- package/configure/src/root.jsx +24 -25
- package/controller/CHANGELOG.md +24 -0
- package/controller/lib/__tests__/index.test.js +177 -0
- package/controller/lib/defaults.js +3 -4
- package/controller/lib/defaults.js.map +1 -1
- package/controller/lib/index.js +40 -66
- package/controller/lib/index.js.map +1 -1
- package/controller/package.json +1 -1
- package/docs/demo/pie.manifest.json +11 -0
- package/lib/__tests__/drawing-index-test.js +36 -0
- package/lib/drawing-response/__tests__/container.test.js +66 -0
- package/lib/drawing-response/__tests__/drawable-helper.test.js +23 -0
- package/lib/drawing-response/__tests__/drawing-main.test.js +684 -0
- package/lib/drawing-response/__tests__/factory.test.js +15 -0
- package/lib/drawing-response/button.js +36 -61
- package/lib/drawing-response/button.js.map +1 -1
- package/lib/drawing-response/constants.js +3 -4
- package/lib/drawing-response/constants.js.map +1 -1
- package/lib/drawing-response/container.js +271 -352
- package/lib/drawing-response/container.js.map +1 -1
- package/lib/drawing-response/drawable-circle.js +66 -105
- package/lib/drawing-response/drawable-circle.js.map +1 -1
- package/lib/drawing-response/drawable-eraser.js +51 -87
- package/lib/drawing-response/drawable-eraser.js.map +1 -1
- package/lib/drawing-response/drawable-free-path.js +57 -98
- package/lib/drawing-response/drawable-free-path.js.map +1 -1
- package/lib/drawing-response/drawable-helper.js +17 -29
- package/lib/drawing-response/drawable-helper.js.map +1 -1
- package/lib/drawing-response/drawable-image.js +31 -50
- package/lib/drawing-response/drawable-image.js.map +1 -1
- package/lib/drawing-response/drawable-line.js +61 -100
- package/lib/drawing-response/drawable-line.js.map +1 -1
- package/lib/drawing-response/drawable-main.js +274 -346
- package/lib/drawing-response/drawable-main.js.map +1 -1
- package/lib/drawing-response/drawable-palette.js +124 -167
- package/lib/drawing-response/drawable-palette.js.map +1 -1
- package/lib/drawing-response/drawable-rectangle.js +66 -105
- package/lib/drawing-response/drawable-rectangle.js.map +1 -1
- package/lib/drawing-response/drawable-text.js +202 -314
- package/lib/drawing-response/drawable-text.js.map +1 -1
- package/lib/drawing-response/drawable-transformer.js +37 -80
- package/lib/drawing-response/drawable-transformer.js.map +1 -1
- package/lib/drawing-response/factory.js +7 -20
- package/lib/drawing-response/factory.js.map +1 -1
- package/lib/drawing-response/icon.js +9 -25
- package/lib/drawing-response/icon.js.map +1 -1
- package/lib/drawing-response/index.js +75 -117
- package/lib/drawing-response/index.js.map +1 -1
- package/lib/index.js +52 -103
- package/lib/index.js.map +1 -1
- package/package.json +13 -11
- package/src/drawing-response/button.jsx +23 -34
- package/src/drawing-response/container.jsx +39 -40
- package/src/drawing-response/drawable-image.jsx +17 -20
- package/src/drawing-response/drawable-main.jsx +67 -60
- package/src/drawing-response/drawable-palette.jsx +48 -54
- package/src/drawing-response/drawable-text.jsx +26 -38
- package/src/drawing-response/index.jsx +21 -20
- package/src/index.js +17 -2
- package/LICENSE.md +0 -5
- package/configure/node_modules/debug/CHANGELOG.md +0 -395
- package/configure/node_modules/debug/LICENSE +0 -19
- package/configure/node_modules/debug/README.md +0 -437
- package/configure/node_modules/debug/node.js +0 -1
- package/configure/node_modules/debug/package.json +0 -51
- package/configure/node_modules/debug/src/browser.js +0 -180
- package/configure/node_modules/debug/src/common.js +0 -249
- package/configure/node_modules/debug/src/index.js +0 -12
- package/configure/node_modules/debug/src/node.js +0 -177
|
@@ -1,60 +1,43 @@
|
|
|
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
|
-
exports.generateId = exports
|
|
9
|
-
|
|
7
|
+
exports.generateId = exports.default = void 0;
|
|
10
8
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
-
|
|
12
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
|
-
|
|
14
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
15
|
-
|
|
16
9
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
17
|
-
|
|
18
10
|
var _react = _interopRequireDefault(require("react"));
|
|
19
|
-
|
|
20
11
|
var _reactKonva = require("react-konva");
|
|
21
|
-
|
|
22
12
|
var _translator = _interopRequireDefault(require("@pie-lib/translator"));
|
|
23
|
-
|
|
24
13
|
var _drawableTransformer = _interopRequireDefault(require("./drawable-transformer"));
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
var translator = _translator["default"].translator;
|
|
31
|
-
|
|
32
|
-
var generateId = function generateId() {
|
|
33
|
-
return Math.random().toString(36).substring(2) + new Date().getTime().toString(36);
|
|
34
|
-
};
|
|
35
|
-
|
|
14
|
+
const {
|
|
15
|
+
translator
|
|
16
|
+
} = _translator.default;
|
|
17
|
+
const generateId = () => Math.random().toString(36).substring(2) + new Date().getTime().toString(36);
|
|
36
18
|
exports.generateId = generateId;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
(0, _defineProperty2
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
19
|
+
class TextDrawable {
|
|
20
|
+
static getTextareaNode(id) {
|
|
21
|
+
return `textarea_${id}`;
|
|
22
|
+
}
|
|
23
|
+
static getTextNode(id) {
|
|
24
|
+
return `text_${id}`;
|
|
25
|
+
}
|
|
26
|
+
static getTransformerNode(id) {
|
|
27
|
+
return `transformer_${id}`;
|
|
28
|
+
}
|
|
29
|
+
constructor(props) {
|
|
30
|
+
(0, _defineProperty2.default)(this, "removeEventListeners", () => this.eventListenersDetachArray.forEach(fn => fn()));
|
|
31
|
+
(0, _defineProperty2.default)(this, "setAll", all => {
|
|
32
|
+
this.all = all;
|
|
33
|
+
this.props.forceUpdate();
|
|
52
34
|
});
|
|
53
|
-
(0, _defineProperty2
|
|
54
|
-
|
|
55
|
-
|
|
35
|
+
(0, _defineProperty2.default)(this, "addNewTextEntry", language => {
|
|
36
|
+
const all = this.all;
|
|
37
|
+
const id = generateId();
|
|
56
38
|
all.push({
|
|
57
39
|
id: id,
|
|
40
|
+
text: '',
|
|
58
41
|
isDefault: true,
|
|
59
42
|
label: translator.t('drawingResponse.onDoubleClick', {
|
|
60
43
|
lng: language
|
|
@@ -68,36 +51,26 @@ var TextDrawable = /*#__PURE__*/function () {
|
|
|
68
51
|
createdAt: new Date(),
|
|
69
52
|
type: 'text-entry'
|
|
70
53
|
});
|
|
71
|
-
|
|
72
|
-
_this.props.handleSessionChange();
|
|
73
|
-
});
|
|
74
|
-
(0, _defineProperty2["default"])(this, "handleMouseDown", function () {
|
|
75
|
-
return _this.props.toggleTextSelected(true);
|
|
76
|
-
});
|
|
77
|
-
(0, _defineProperty2["default"])(this, "handleMouseUp", function () {
|
|
78
|
-
return _this.props.toggleTextSelected(false);
|
|
54
|
+
this.props.handleSessionChange();
|
|
79
55
|
});
|
|
80
|
-
(0, _defineProperty2
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
56
|
+
(0, _defineProperty2.default)(this, "handleMouseDown", () => this.props.toggleTextSelected(true));
|
|
57
|
+
(0, _defineProperty2.default)(this, "handleMouseUp", () => this.props.toggleTextSelected(false));
|
|
58
|
+
(0, _defineProperty2.default)(this, "handleClick", (e, id) => {
|
|
59
|
+
const current = this.all.filter(item => item.id === id)[0];
|
|
85
60
|
current.transformerVisible = true;
|
|
86
|
-
|
|
87
|
-
_this.props.forceUpdate();
|
|
61
|
+
this.props.forceUpdate();
|
|
88
62
|
});
|
|
89
|
-
(0, _defineProperty2
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
textareaNode.value = isDefault ? '' : textNode.text();
|
|
63
|
+
(0, _defineProperty2.default)(this, "handleDblClick", (e, text) => {
|
|
64
|
+
const {
|
|
65
|
+
id,
|
|
66
|
+
isDefault
|
|
67
|
+
} = text;
|
|
68
|
+
this.toggleTextarea(id, true);
|
|
69
|
+
const textNode = this[TextDrawable.getTextNode(id)];
|
|
70
|
+
const textareaNode = this[TextDrawable.getTextareaNode(id)];
|
|
71
|
+
if (!textNode || !textareaNode) return;
|
|
72
|
+
const areaPosition = textNode.getAbsolutePosition();
|
|
73
|
+
textareaNode.value = text.text || '';
|
|
101
74
|
textareaNode.style.position = 'absolute';
|
|
102
75
|
textareaNode.style.top = areaPosition.y + 'px';
|
|
103
76
|
textareaNode.style.left = areaPosition.x + 'px';
|
|
@@ -116,269 +89,184 @@ var TextDrawable = /*#__PURE__*/function () {
|
|
|
116
89
|
textareaNode.style.transformOrigin = 'left top';
|
|
117
90
|
textareaNode.style.textAlign = textNode.align();
|
|
118
91
|
textareaNode.style.color = textNode.fill();
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
if (rotation) {
|
|
123
|
-
transform += 'rotateZ(' + rotation + 'deg)';
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
var px = 0;
|
|
127
|
-
var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;
|
|
128
|
-
|
|
129
|
-
if (isFirefox) {
|
|
130
|
-
px += 2 + Math.round(textNode.fontSize() / 20);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
transform += 'translateY(-' + px + 'px)';
|
|
134
|
-
textareaNode.style.transform = transform;
|
|
135
|
-
textareaNode.style.height = 'auto';
|
|
136
|
-
textareaNode.style.height = textareaNode.scrollHeight + 3 + 'px';
|
|
92
|
+
textareaNode.style.display = 'block';
|
|
93
|
+
let rotation = textNode.rotation();
|
|
94
|
+
textareaNode.style.transform = rotation ? `rotateZ(${rotation}deg)` : '';
|
|
137
95
|
textareaNode.focus();
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
_this.saveValue(id, textNode, textareaNode);
|
|
145
|
-
} // on esc do not set value back to node
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
if (e.keyCode === 27) {
|
|
149
|
-
_this.toggleTextarea(id, false);
|
|
96
|
+
const keyDownHandler = e => {
|
|
97
|
+
if (e.key === 'Enter' && !e.shiftKey) {
|
|
98
|
+
this.saveValue(id, textareaNode);
|
|
99
|
+
}
|
|
100
|
+
if (e.key === 'Escape') {
|
|
101
|
+
this.toggleTextarea(id, false);
|
|
150
102
|
}
|
|
151
103
|
};
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
_this.eventListenersDetachArray.push(function () {
|
|
156
|
-
return textareaNode.removeEventListener('keydown', keyDownHandler);
|
|
157
|
-
});
|
|
158
|
-
|
|
159
|
-
var blurHandler = function blurHandler() {
|
|
160
|
-
_this.showOnlyTextNodes();
|
|
161
|
-
|
|
162
|
-
_this.saveValue(id, textNode, textareaNode);
|
|
104
|
+
const blurHandler = () => {
|
|
105
|
+
this.showOnlyTextNodes();
|
|
106
|
+
this.saveValue(id, textareaNode);
|
|
163
107
|
};
|
|
164
|
-
|
|
108
|
+
textareaNode.addEventListener('keydown', keyDownHandler);
|
|
165
109
|
textareaNode.addEventListener('blur', blurHandler);
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
110
|
+
this.eventListenersDetachArray.push(() => {
|
|
111
|
+
textareaNode.removeEventListener('keydown', keyDownHandler);
|
|
112
|
+
textareaNode.removeEventListener('blur', blurHandler);
|
|
169
113
|
});
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
_this.props.forceUpdate();
|
|
114
|
+
this.initializeDefault(id, isDefault);
|
|
115
|
+
this.props.forceUpdate();
|
|
174
116
|
});
|
|
175
|
-
(0, _defineProperty2
|
|
176
|
-
|
|
177
|
-
width:
|
|
178
|
-
scaleX:
|
|
117
|
+
(0, _defineProperty2.default)(this, "handleTransform", (e, textNode) => {
|
|
118
|
+
this[textNode].setAttrs({
|
|
119
|
+
width: this[textNode].width() * this[textNode].scaleX(),
|
|
120
|
+
scaleX: this.props.scale
|
|
179
121
|
});
|
|
180
122
|
});
|
|
181
123
|
this.all = props && props.all || [];
|
|
182
124
|
this.eventListenersDetachArray = [];
|
|
183
125
|
}
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
textVisible: !value,
|
|
201
|
-
transformerVisible: !value,
|
|
202
|
-
textareaVisible: value
|
|
203
|
-
});
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
return item;
|
|
207
|
-
});
|
|
208
|
-
this.props.forceUpdate();
|
|
209
|
-
}
|
|
210
|
-
}, {
|
|
211
|
-
key: "initializeDefault",
|
|
212
|
-
value: function initializeDefault(id, isDefault) {
|
|
213
|
-
if (isDefault) {
|
|
214
|
-
var current = this.all.filter(function (item) {
|
|
215
|
-
return item.id === id;
|
|
216
|
-
})[0];
|
|
217
|
-
current.isDefault = false;
|
|
126
|
+
showOnlyTextNodes() {
|
|
127
|
+
this.all.map(item => {
|
|
128
|
+
item.textVisible = true;
|
|
129
|
+
item.transformerVisible = false;
|
|
130
|
+
item.textareaVisible = false;
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
toggleTextarea(id, value) {
|
|
134
|
+
this.all = this.all.map(item => {
|
|
135
|
+
if (item.id === id) {
|
|
136
|
+
return {
|
|
137
|
+
...item,
|
|
138
|
+
textVisible: !value,
|
|
139
|
+
transformerVisible: !value,
|
|
140
|
+
textareaVisible: value
|
|
141
|
+
};
|
|
218
142
|
}
|
|
143
|
+
return item;
|
|
144
|
+
});
|
|
145
|
+
this.props.forceUpdate();
|
|
146
|
+
}
|
|
147
|
+
initializeDefault(id, isDefault) {
|
|
148
|
+
if (isDefault) {
|
|
149
|
+
const current = this.all.filter(item => item.id === id)[0];
|
|
150
|
+
current.isDefault = false;
|
|
219
151
|
}
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
value
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
this.props.forceUpdate();
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
this.props.handleSessionChange();
|
|
152
|
+
}
|
|
153
|
+
saveValue(id, textareaNode) {
|
|
154
|
+
const value = textareaNode.value;
|
|
155
|
+
this.all = this.all.map(t => t.id === id ? {
|
|
156
|
+
...t,
|
|
157
|
+
text: value
|
|
158
|
+
} : t);
|
|
159
|
+
if (!value) {
|
|
160
|
+
this.all = this.all.filter(t => t.id !== id);
|
|
233
161
|
}
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
162
|
+
this.toggleTextarea(id, false);
|
|
163
|
+
this.props.handleSessionChange();
|
|
164
|
+
this.props.forceUpdate();
|
|
165
|
+
}
|
|
166
|
+
renderTextareas() {
|
|
167
|
+
return this.all.map(text => {
|
|
168
|
+
const {
|
|
169
|
+
id,
|
|
170
|
+
textareaVisible
|
|
171
|
+
} = text;
|
|
172
|
+
const textareaNode = `textarea_${id}`;
|
|
173
|
+
return /*#__PURE__*/_react.default.createElement("textarea", {
|
|
174
|
+
key: textareaNode,
|
|
175
|
+
ref: textarea => {
|
|
176
|
+
this[textareaNode] = textarea;
|
|
177
|
+
},
|
|
178
|
+
style: {
|
|
179
|
+
display: `${textareaVisible ? 'block' : 'none'}`
|
|
180
|
+
}
|
|
252
181
|
});
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
setInitialProps(props) {
|
|
185
|
+
if (!this.props) {
|
|
186
|
+
this.props = props;
|
|
253
187
|
}
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
188
|
+
}
|
|
189
|
+
render(props) {
|
|
190
|
+
this.setInitialProps(props);
|
|
191
|
+
if (props.stage) {
|
|
192
|
+
const newStage = props.stage;
|
|
193
|
+
|
|
194
|
+
// setting the handler only once
|
|
195
|
+
if (newStage !== this.stage) {
|
|
196
|
+
const stageClickHandler = e => {
|
|
197
|
+
if (e.target !== this.stage) {
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
this.showOnlyTextNodes();
|
|
201
|
+
this.props.forceUpdate();
|
|
202
|
+
};
|
|
203
|
+
newStage.on('click', stageClickHandler);
|
|
204
|
+
this.eventListenersDetachArray.push(() => newStage.off('click', stageClickHandler));
|
|
259
205
|
}
|
|
206
|
+
this.stage = newStage;
|
|
260
207
|
}
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
this.
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
208
|
+
return this.all.map(text => {
|
|
209
|
+
const {
|
|
210
|
+
id,
|
|
211
|
+
label,
|
|
212
|
+
x,
|
|
213
|
+
y,
|
|
214
|
+
width,
|
|
215
|
+
textVisible,
|
|
216
|
+
rotation,
|
|
217
|
+
transformerVisible
|
|
218
|
+
} = text;
|
|
219
|
+
const textNode = `text_${id}`;
|
|
220
|
+
const transformerNode = `transformer_${id}`;
|
|
221
|
+
let extraProps = {};
|
|
222
|
+
if (!props.disabled) {
|
|
223
|
+
extraProps = {
|
|
224
|
+
onClick: e => this.handleClick(e, id),
|
|
225
|
+
onTap: e => this.handleClick(e, id),
|
|
226
|
+
onDblClick: e => this.handleDblClick(e, text),
|
|
227
|
+
onDblTap: e => this.handleDblClick(e, text),
|
|
228
|
+
onTransform: e => this.handleTransform(e, textNode),
|
|
229
|
+
onTransformEnd: this.props.handleSessionChange,
|
|
230
|
+
onMouseDown: this.handleMouseDown,
|
|
231
|
+
onTouchStart: this.handleMouseDown,
|
|
232
|
+
onMouseUp: this.handleMouseUp,
|
|
233
|
+
onTouchEnd: this.handleMouseUp,
|
|
234
|
+
onDragEnd: this.props.handleSessionChange,
|
|
235
|
+
onMouseEnter: this.props.onMouseOverElement,
|
|
236
|
+
onMouseLeave: this.props.onMouseOutElement
|
|
237
|
+
};
|
|
289
238
|
}
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
onTouchStart: _this3.handleMouseDown,
|
|
324
|
-
onMouseUp: _this3.handleMouseUp,
|
|
325
|
-
onTouchEnd: _this3.handleMouseUp,
|
|
326
|
-
onDragEnd: _this3.props.handleSessionChange,
|
|
327
|
-
onMouseEnter: _this3.props.onMouseOverElement,
|
|
328
|
-
onMouseLeave: _this3.props.onMouseOutElement
|
|
329
|
-
};
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
if (rotation) {
|
|
333
|
-
extraProps.rotation = rotation;
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
return [/*#__PURE__*/_react["default"].createElement(_reactKonva.Text, (0, _extends2["default"])({
|
|
337
|
-
key: id,
|
|
338
|
-
bubbles: true,
|
|
339
|
-
id: id,
|
|
340
|
-
ref: function ref(text) {
|
|
341
|
-
_this3[textNode] = text;
|
|
342
|
-
},
|
|
343
|
-
text: text.text || label,
|
|
344
|
-
name: textNode,
|
|
345
|
-
x: x,
|
|
346
|
-
y: y,
|
|
347
|
-
width: width,
|
|
348
|
-
draggable: !props.disabled,
|
|
349
|
-
visible: textVisible,
|
|
350
|
-
fontSize: 16
|
|
351
|
-
}, extraProps)), transformerVisible && /*#__PURE__*/_react["default"].createElement(_drawableTransformer["default"], {
|
|
352
|
-
key: "transformer_".concat(id),
|
|
353
|
-
ref: function ref(text) {
|
|
354
|
-
_this3[transformerNode] = text;
|
|
355
|
-
},
|
|
356
|
-
selectedShapeName: textNode,
|
|
357
|
-
onMouseDown: _this3.handleMouseDown,
|
|
358
|
-
onTouchStart: _this3.handleMouseDown,
|
|
359
|
-
onMouseUp: _this3.handleMouseUp,
|
|
360
|
-
onTouchEnd: _this3.handleMouseUp
|
|
361
|
-
})];
|
|
362
|
-
});
|
|
363
|
-
}
|
|
364
|
-
}], [{
|
|
365
|
-
key: "getTextareaNode",
|
|
366
|
-
value: function getTextareaNode(id) {
|
|
367
|
-
return "textarea_".concat(id);
|
|
368
|
-
}
|
|
369
|
-
}, {
|
|
370
|
-
key: "getTextNode",
|
|
371
|
-
value: function getTextNode(id) {
|
|
372
|
-
return "text_".concat(id);
|
|
373
|
-
}
|
|
374
|
-
}, {
|
|
375
|
-
key: "getTransformerNode",
|
|
376
|
-
value: function getTransformerNode(id) {
|
|
377
|
-
return "transformer_".concat(id);
|
|
378
|
-
}
|
|
379
|
-
}]);
|
|
380
|
-
return TextDrawable;
|
|
381
|
-
}();
|
|
382
|
-
|
|
383
|
-
exports["default"] = TextDrawable;
|
|
384
|
-
//# sourceMappingURL=drawable-text.js.map
|
|
239
|
+
if (rotation) {
|
|
240
|
+
extraProps.rotation = rotation;
|
|
241
|
+
}
|
|
242
|
+
return [/*#__PURE__*/_react.default.createElement(_reactKonva.Text, (0, _extends2.default)({
|
|
243
|
+
key: id,
|
|
244
|
+
bubbles: true,
|
|
245
|
+
id: id,
|
|
246
|
+
ref: text => {
|
|
247
|
+
this[textNode] = text;
|
|
248
|
+
},
|
|
249
|
+
text: text.text || label,
|
|
250
|
+
name: textNode,
|
|
251
|
+
x: x,
|
|
252
|
+
y: y,
|
|
253
|
+
width: width,
|
|
254
|
+
draggable: !props.disabled,
|
|
255
|
+
visible: textVisible,
|
|
256
|
+
fontSize: 16
|
|
257
|
+
}, extraProps)), transformerVisible && /*#__PURE__*/_react.default.createElement(_drawableTransformer.default, {
|
|
258
|
+
key: `transformer_${id}`,
|
|
259
|
+
ref: text => {
|
|
260
|
+
this[transformerNode] = text;
|
|
261
|
+
},
|
|
262
|
+
selectedShapeName: textNode,
|
|
263
|
+
onMouseDown: this.handleMouseDown,
|
|
264
|
+
onTouchStart: this.handleMouseDown,
|
|
265
|
+
onMouseUp: this.handleMouseUp,
|
|
266
|
+
onTouchEnd: this.handleMouseUp
|
|
267
|
+
})];
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
exports.default = TextDrawable;
|
|
272
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdEtvbnZhIiwiX3RyYW5zbGF0b3IiLCJfZHJhd2FibGVUcmFuc2Zvcm1lciIsInRyYW5zbGF0b3IiLCJUcmFuc2xhdG9yIiwiZ2VuZXJhdGVJZCIsIk1hdGgiLCJyYW5kb20iLCJ0b1N0cmluZyIsInN1YnN0cmluZyIsIkRhdGUiLCJnZXRUaW1lIiwiZXhwb3J0cyIsIlRleHREcmF3YWJsZSIsImdldFRleHRhcmVhTm9kZSIsImlkIiwiZ2V0VGV4dE5vZGUiLCJnZXRUcmFuc2Zvcm1lck5vZGUiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiX2RlZmluZVByb3BlcnR5MiIsImRlZmF1bHQiLCJldmVudExpc3RlbmVyc0RldGFjaEFycmF5IiwiZm9yRWFjaCIsImZuIiwiYWxsIiwiZm9yY2VVcGRhdGUiLCJsYW5ndWFnZSIsInB1c2giLCJ0ZXh0IiwiaXNEZWZhdWx0IiwibGFiZWwiLCJ0IiwibG5nIiwid2lkdGgiLCJ4IiwibGVuZ3RoIiwieSIsInRleHRWaXNpYmxlIiwidHJhbnNmb3JtZXJWaXNpYmxlIiwidGV4dGFyZWFWaXNpYmxlIiwiY3JlYXRlZEF0IiwidHlwZSIsImhhbmRsZVNlc3Npb25DaGFuZ2UiLCJ0b2dnbGVUZXh0U2VsZWN0ZWQiLCJlIiwiY3VycmVudCIsImZpbHRlciIsIml0ZW0iLCJ0b2dnbGVUZXh0YXJlYSIsInRleHROb2RlIiwidGV4dGFyZWFOb2RlIiwiYXJlYVBvc2l0aW9uIiwiZ2V0QWJzb2x1dGVQb3NpdGlvbiIsInZhbHVlIiwic3R5bGUiLCJwb3NpdGlvbiIsInRvcCIsImxlZnQiLCJwYWRkaW5nIiwiaGVpZ2h0IiwiZm9udFNpemUiLCJib3JkZXIiLCJtYXJnaW4iLCJvdmVyZmxvdyIsImJhY2tncm91bmQiLCJvdXRsaW5lIiwicmVzaXplIiwibGluZUhlaWdodCIsImZvbnRGYW1pbHkiLCJ0cmFuc2Zvcm1PcmlnaW4iLCJ0ZXh0QWxpZ24iLCJhbGlnbiIsImNvbG9yIiwiZmlsbCIsImRpc3BsYXkiLCJyb3RhdGlvbiIsInRyYW5zZm9ybSIsImZvY3VzIiwia2V5RG93bkhhbmRsZXIiLCJrZXkiLCJzaGlmdEtleSIsInNhdmVWYWx1ZSIsImJsdXJIYW5kbGVyIiwic2hvd09ubHlUZXh0Tm9kZXMiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImluaXRpYWxpemVEZWZhdWx0Iiwic2V0QXR0cnMiLCJzY2FsZVgiLCJzY2FsZSIsIm1hcCIsInJlbmRlclRleHRhcmVhcyIsImNyZWF0ZUVsZW1lbnQiLCJyZWYiLCJ0ZXh0YXJlYSIsInNldEluaXRpYWxQcm9wcyIsInJlbmRlciIsInN0YWdlIiwibmV3U3RhZ2UiLCJzdGFnZUNsaWNrSGFuZGxlciIsInRhcmdldCIsIm9uIiwib2ZmIiwidHJhbnNmb3JtZXJOb2RlIiwiZXh0cmFQcm9wcyIsImRpc2FibGVkIiwib25DbGljayIsImhhbmRsZUNsaWNrIiwib25UYXAiLCJvbkRibENsaWNrIiwiaGFuZGxlRGJsQ2xpY2siLCJvbkRibFRhcCIsIm9uVHJhbnNmb3JtIiwiaGFuZGxlVHJhbnNmb3JtIiwib25UcmFuc2Zvcm1FbmQiLCJvbk1vdXNlRG93biIsImhhbmRsZU1vdXNlRG93biIsIm9uVG91Y2hTdGFydCIsIm9uTW91c2VVcCIsImhhbmRsZU1vdXNlVXAiLCJvblRvdWNoRW5kIiwib25EcmFnRW5kIiwib25Nb3VzZUVudGVyIiwib25Nb3VzZU92ZXJFbGVtZW50Iiwib25Nb3VzZUxlYXZlIiwib25Nb3VzZU91dEVsZW1lbnQiLCJUZXh0IiwiX2V4dGVuZHMyIiwiYnViYmxlcyIsIm5hbWUiLCJkcmFnZ2FibGUiLCJ2aXNpYmxlIiwic2VsZWN0ZWRTaGFwZU5hbWUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZHJhd2luZy1yZXNwb25zZS9kcmF3YWJsZS10ZXh0LmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgVGV4dCB9IGZyb20gJ3JlYWN0LWtvbnZhJztcbmltcG9ydCBUcmFuc2xhdG9yIGZyb20gJ0BwaWUtbGliL3RyYW5zbGF0b3InO1xuXG5jb25zdCB7IHRyYW5zbGF0b3IgfSA9IFRyYW5zbGF0b3I7XG5pbXBvcnQgVHJhbnNmb3JtZXIgZnJvbSAnLi9kcmF3YWJsZS10cmFuc2Zvcm1lcic7XG5cbmV4cG9ydCBjb25zdCBnZW5lcmF0ZUlkID0gKCkgPT4gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIpICsgbmV3IERhdGUoKS5nZXRUaW1lKCkudG9TdHJpbmcoMzYpO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZXh0RHJhd2FibGUge1xuICBzdGF0aWMgZ2V0VGV4dGFyZWFOb2RlKGlkKSB7XG4gICAgcmV0dXJuIGB0ZXh0YXJlYV8ke2lkfWA7XG4gIH1cblxuICBzdGF0aWMgZ2V0VGV4dE5vZGUoaWQpIHtcbiAgICByZXR1cm4gYHRleHRfJHtpZH1gO1xuICB9XG5cbiAgc3RhdGljIGdldFRyYW5zZm9ybWVyTm9kZShpZCkge1xuICAgIHJldHVybiBgdHJhbnNmb3JtZXJfJHtpZH1gO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICB0aGlzLmFsbCA9IChwcm9wcyAmJiBwcm9wcy5hbGwpIHx8IFtdO1xuICAgIHRoaXMuZXZlbnRMaXN0ZW5lcnNEZXRhY2hBcnJheSA9IFtdO1xuICB9XG5cbiAgcmVtb3ZlRXZlbnRMaXN0ZW5lcnMgPSAoKSA9PiB0aGlzLmV2ZW50TGlzdGVuZXJzRGV0YWNoQXJyYXkuZm9yRWFjaCgoZm4pID0+IGZuKCkpO1xuXG4gIHNldEFsbCA9IChhbGwpID0+IHtcbiAgICB0aGlzLmFsbCA9IGFsbDtcbiAgICB0aGlzLnByb3BzLmZvcmNlVXBkYXRlKCk7XG4gIH07XG5cbiAgYWRkTmV3VGV4dEVudHJ5ID0gKGxhbmd1YWdlKSA9PiB7XG4gICAgY29uc3QgYWxsID0gdGhpcy5hbGw7XG4gICAgY29uc3QgaWQgPSBnZW5lcmF0ZUlkKCk7XG5cbiAgICBhbGwucHVzaCh7XG4gICAgICBpZDogaWQsXG4gICAgICB0ZXh0OiAnJyxcbiAgICAgIGlzRGVmYXVsdDogdHJ1ZSxcbiAgICAgIGxhYmVsOiB0cmFuc2xhdG9yLnQoJ2RyYXdpbmdSZXNwb25zZS5vbkRvdWJsZUNsaWNrJywgeyBsbmc6IGxhbmd1YWdlIH0pLFxuICAgICAgd2lkdGg6IDIwMCxcbiAgICAgIHg6IChhbGwubGVuZ3RoICsgMSkgKiA1ICsgNTAsXG4gICAgICB5OiAoYWxsLmxlbmd0aCArIDEpICogNSArIDUwLFxuICAgICAgdGV4dFZpc2libGU6IHRydWUsXG4gICAgICB0cmFuc2Zvcm1lclZpc2libGU6IHRydWUsXG4gICAgICB0ZXh0YXJlYVZpc2libGU6IGZhbHNlLFxuICAgICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgdHlwZTogJ3RleHQtZW50cnknLFxuICAgIH0pO1xuXG4gICAgdGhpcy5wcm9wcy5oYW5kbGVTZXNzaW9uQ2hhbmdlKCk7XG4gIH07XG5cbiAgc2hvd09ubHlUZXh0Tm9kZXMoKSB7XG4gICAgdGhpcy5hbGwubWFwKChpdGVtKSA9PiB7XG4gICAgICBpdGVtLnRleHRWaXNpYmxlID0gdHJ1ZTtcbiAgICAgIGl0ZW0udHJhbnNmb3JtZXJWaXNpYmxlID0gZmFsc2U7XG4gICAgICBpdGVtLnRleHRhcmVhVmlzaWJsZSA9IGZhbHNlO1xuICAgIH0pO1xuICB9XG5cbiAgdG9nZ2xlVGV4dGFyZWEoaWQsIHZhbHVlKSB7XG4gICAgdGhpcy5hbGwgPSB0aGlzLmFsbC5tYXAoKGl0ZW0pID0+IHtcbiAgICAgIGlmIChpdGVtLmlkID09PSBpZCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgdGV4dFZpc2libGU6ICF2YWx1ZSxcbiAgICAgICAgICB0cmFuc2Zvcm1lclZpc2libGU6ICF2YWx1ZSxcbiAgICAgICAgICB0ZXh0YXJlYVZpc2libGU6IHZhbHVlLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfSk7XG4gICAgdGhpcy5wcm9wcy5mb3JjZVVwZGF0ZSgpO1xuICB9XG5cbiAgaW5pdGlhbGl6ZURlZmF1bHQoaWQsIGlzRGVmYXVsdCkge1xuICAgIGlmIChpc0RlZmF1bHQpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLmFsbC5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGlkKVswXTtcbiAgICAgIGN1cnJlbnQuaXNEZWZhdWx0ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgc2F2ZVZhbHVlKGlkLCB0ZXh0YXJlYU5vZGUpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRleHRhcmVhTm9kZS52YWx1ZTtcbiAgICB0aGlzLmFsbCA9IHRoaXMuYWxsLm1hcCgodCkgPT5cbiAgICAgIHQuaWQgPT09IGlkID8geyAuLi50LCB0ZXh0OiB2YWx1ZSB9IDogdFxuICAgICk7XG5cbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICB0aGlzLmFsbCA9IHRoaXMuYWxsLmZpbHRlcigodCkgPT4gdC5pZCAhPT0gaWQpO1xuICAgIH1cblxuICAgIHRoaXMudG9nZ2xlVGV4dGFyZWEoaWQsIGZhbHNlKTtcbiAgICB0aGlzLnByb3BzLmhhbmRsZVNlc3Npb25DaGFuZ2UoKTtcbiAgICB0aGlzLnByb3BzLmZvcmNlVXBkYXRlKCk7XG4gIH1cblxuICBoYW5kbGVNb3VzZURvd24gPSAoKSA9PiB0aGlzLnByb3BzLnRvZ2dsZVRleHRTZWxlY3RlZCh0cnVlKTtcbiAgaGFuZGxlTW91c2VVcCA9ICgpID0+IHRoaXMucHJvcHMudG9nZ2xlVGV4dFNlbGVjdGVkKGZhbHNlKTtcblxuICBoYW5kbGVDbGljayA9IChlLCBpZCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLmFsbC5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGlkKVswXTtcbiAgICBjdXJyZW50LnRyYW5zZm9ybWVyVmlzaWJsZSA9IHRydWU7XG4gICAgdGhpcy5wcm9wcy5mb3JjZVVwZGF0ZSgpO1xuICB9O1xuXG4gIGhhbmRsZURibENsaWNrID0gKGUsIHRleHQpID0+IHtcbiAgICBjb25zdCB7IGlkLCBpc0RlZmF1bHQgfSA9IHRleHQ7XG4gICAgdGhpcy50b2dnbGVUZXh0YXJlYShpZCwgdHJ1ZSk7XG5cbiAgICBjb25zdCB0ZXh0Tm9kZSA9IHRoaXNbVGV4dERyYXdhYmxlLmdldFRleHROb2RlKGlkKV07XG4gICAgY29uc3QgdGV4dGFyZWFOb2RlID0gdGhpc1tUZXh0RHJhd2FibGUuZ2V0VGV4dGFyZWFOb2RlKGlkKV07XG5cbiAgICBpZiAoIXRleHROb2RlIHx8ICF0ZXh0YXJlYU5vZGUpIHJldHVybjtcblxuICAgIGNvbnN0IGFyZWFQb3NpdGlvbiA9IHRleHROb2RlLmdldEFic29sdXRlUG9zaXRpb24oKTtcblxuICAgIHRleHRhcmVhTm9kZS52YWx1ZSA9IHRleHQudGV4dCB8fCAnJztcbiAgICB0ZXh0YXJlYU5vZGUuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgIHRleHRhcmVhTm9kZS5zdHlsZS50b3AgPSBhcmVhUG9zaXRpb24ueSArICdweCc7XG4gICAgdGV4dGFyZWFOb2RlLnN0eWxlLmxlZnQgPSBhcmVhUG9zaXRpb24ueCArICdweCc7XG4gICAgdGV4dGFyZWFOb2RlLnN0eWxlLndpZHRoID0gdGV4dE5vZGUud2lkdGgoKSAtIHRleHROb2RlLnBhZGRpbmcoKSAqIDIgKyAncHgnO1xuICAgIHRleHRhcmVhTm9kZS5zdHlsZS5oZWlnaHQgPSB0ZXh0Tm9kZS5oZWlnaHQoKSAtIHRleHROb2RlLnBhZGRpbmcoKSAqIDIgKyA1ICsgJ3B4JztcbiAgICB0ZXh0YXJlYU5vZGUuc3R5bGUuZm9udFNpemUgPSB0ZXh0Tm9kZS5mb250U2l6ZSgpICsgJ3B4JztcbiAgICB0ZXh0YXJlYU5vZGUuc3R5bGUuYm9yZGVyID0gJ25vbmUnO1xuICAgIHRleHRhcmVhTm9kZS5zdHlsZS5wYWRkaW5nID0gJzBweCc7XG4gICAgdGV4dGFyZWFOb2RlLnN0eWxlLm1hcmdpbiA9ICcwcHgnO1xuICAgIHRleHRhcmVhTm9kZS5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgIHRleHRhcmVhTm9kZS5zdHlsZS5iYWNrZ3JvdW5kID0gJ25vbmUnO1xuICAgIHRleHRhcmVhTm9kZS5zdHlsZS5vdXRsaW5lID0gJ25vbmUnO1xuICAgIHRleHRhcmVhTm9kZS5zdHlsZS5yZXNpemUgPSAnbm9uZSc7XG4gICAgdGV4dGFyZWFOb2RlLnN0eWxlLmxpbmVIZWlnaHQgPSB0ZXh0Tm9kZS5saW5lSGVpZ2h0KCk7XG4gICAgdGV4dGFyZWFOb2RlLnN0eWxlLmZvbnRGYW1pbHkgPSB0ZXh0Tm9kZS5mb250RmFtaWx5KCk7XG4gICAgdGV4dGFyZWFOb2RlLnN0eWxlLnRyYW5zZm9ybU9yaWdpbiA9ICdsZWZ0IHRvcCc7XG4gICAgdGV4dGFyZWFOb2RlLnN0eWxlLnRleHRBbGlnbiA9IHRleHROb2RlLmFsaWduKCk7XG4gICAgdGV4dGFyZWFOb2RlLnN0eWxlLmNvbG9yID0gdGV4dE5vZGUuZmlsbCgpO1xuICAgIHRleHRhcmVhTm9kZS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcblxuICAgIGxldCByb3RhdGlvbiA9IHRleHROb2RlLnJvdGF0aW9uKCk7XG4gICAgdGV4dGFyZWFOb2RlLnN0eWxlLnRyYW5zZm9ybSA9IHJvdGF0aW9uID8gYHJvdGF0ZVooJHtyb3RhdGlvbn1kZWcpYCA6ICcnO1xuXG4gICAgdGV4dGFyZWFOb2RlLmZvY3VzKCk7XG5cbiAgICBjb25zdCBrZXlEb3duSGFuZGxlciA9IChlKSA9PiB7XG4gICAgICBpZiAoZS5rZXkgPT09ICdFbnRlcicgJiYgIWUuc2hpZnRLZXkpIHtcbiAgICAgICAgdGhpcy5zYXZlVmFsdWUoaWQsIHRleHRhcmVhTm9kZSk7XG4gICAgICB9XG4gICAgICBpZiAoZS5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgIHRoaXMudG9nZ2xlVGV4dGFyZWEoaWQsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgYmx1ckhhbmRsZXIgPSAoKSA9PiB7XG4gICAgICB0aGlzLnNob3dPbmx5VGV4dE5vZGVzKCk7XG4gICAgICB0aGlzLnNhdmVWYWx1ZShpZCwgdGV4dGFyZWFOb2RlKTtcbiAgICB9O1xuXG4gICAgdGV4dGFyZWFOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBrZXlEb3duSGFuZGxlcik7XG4gICAgdGV4dGFyZWFOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCBibHVySGFuZGxlcik7XG5cbiAgICB0aGlzLmV2ZW50TGlzdGVuZXJzRGV0YWNoQXJyYXkucHVzaCgoKSA9PiB7XG4gICAgICB0ZXh0YXJlYU5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGtleURvd25IYW5kbGVyKTtcbiAgICAgIHRleHRhcmVhTm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKCdibHVyJywgYmx1ckhhbmRsZXIpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5pbml0aWFsaXplRGVmYXVsdChpZCwgaXNEZWZhdWx0KTtcbiAgICB0aGlzLnByb3BzLmZvcmNlVXBkYXRlKCk7XG4gIH07XG5cbiAgaGFuZGxlVHJhbnNmb3JtID0gKGUsIHRleHROb2RlKSA9PiB7XG4gICAgdGhpc1t0ZXh0Tm9kZV0uc2V0QXR0cnMoe1xuICAgICAgd2lkdGg6IHRoaXNbdGV4dE5vZGVdLndpZHRoKCkgKiB0aGlzW3RleHROb2RlXS5zY2FsZVgoKSxcbiAgICAgIHNjYWxlWDogdGhpcy5wcm9wcy5zY2FsZSxcbiAgICB9KTtcbiAgfTtcblxuICByZW5kZXJUZXh0YXJlYXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuYWxsLm1hcCgodGV4dCkgPT4ge1xuICAgICAgY29uc3QgeyBpZCwgdGV4dGFyZWFWaXNpYmxlIH0gPSB0ZXh0O1xuICAgICAgY29uc3QgdGV4dGFyZWFOb2RlID0gYHRleHRhcmVhXyR7aWR9YDtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAga2V5PXt0ZXh0YXJlYU5vZGV9XG4gICAgICAgICAgcmVmPXsodGV4dGFyZWEpID0+IHtcbiAgICAgICAgICAgIHRoaXNbdGV4dGFyZWFOb2RlXSA9IHRleHRhcmVhO1xuICAgICAgICAgIH19XG4gICAgICAgICAgc3R5bGU9e3sgZGlzcGxheTogYCR7dGV4dGFyZWFWaXNpYmxlID8gJ2Jsb2NrJyA6ICdub25lJ31gIH19XG4gICAgICAgIC8+XG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgc2V0SW5pdGlhbFByb3BzKHByb3BzKSB7XG4gICAgaWYgKCF0aGlzLnByb3BzKSB7XG4gICAgICB0aGlzLnByb3BzID0gcHJvcHM7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKHByb3BzKSB7XG4gICAgdGhpcy5zZXRJbml0aWFsUHJvcHMocHJvcHMpO1xuXG4gICAgaWYgKHByb3BzLnN0YWdlKSB7XG4gICAgICBjb25zdCBuZXdTdGFnZSA9IHByb3BzLnN0YWdlO1xuXG4gICAgICAvLyBzZXR0aW5nIHRoZSBoYW5kbGVyIG9ubHkgb25jZVxuICAgICAgaWYgKG5ld1N0YWdlICE9PSB0aGlzLnN0YWdlKSB7XG4gICAgICAgIGNvbnN0IHN0YWdlQ2xpY2tIYW5kbGVyID0gKGUpID0+IHtcbiAgICAgICAgICBpZiAoZS50YXJnZXQgIT09IHRoaXMuc3RhZ2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLnNob3dPbmx5VGV4dE5vZGVzKCk7XG4gICAgICAgICAgdGhpcy5wcm9wcy5mb3JjZVVwZGF0ZSgpO1xuICAgICAgICB9O1xuXG4gICAgICAgIG5ld1N0YWdlLm9uKCdjbGljaycsIHN0YWdlQ2xpY2tIYW5kbGVyKTtcblxuICAgICAgICB0aGlzLmV2ZW50TGlzdGVuZXJzRGV0YWNoQXJyYXkucHVzaCgoKSA9PiBuZXdTdGFnZS5vZmYoJ2NsaWNrJywgc3RhZ2VDbGlja0hhbmRsZXIpKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zdGFnZSA9IG5ld1N0YWdlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFsbC5tYXAoKHRleHQpID0+IHtcbiAgICAgIGNvbnN0IHsgaWQsIGxhYmVsLCB4LCB5LCB3aWR0aCwgdGV4dFZpc2libGUsIHJvdGF0aW9uLCB0cmFuc2Zvcm1lclZpc2libGUgfSA9IHRleHQ7XG5cbiAgICAgIGNvbnN0IHRleHROb2RlID0gYHRleHRfJHtpZH1gO1xuICAgICAgY29uc3QgdHJhbnNmb3JtZXJOb2RlID0gYHRyYW5zZm9ybWVyXyR7aWR9YDtcbiAgICAgIGxldCBleHRyYVByb3BzID0ge307XG5cbiAgICAgIGlmICghcHJvcHMuZGlzYWJsZWQpIHtcbiAgICAgICAgZXh0cmFQcm9wcyA9IHtcbiAgICAgICAgICBvbkNsaWNrOiAoZSkgPT4gdGhpcy5oYW5kbGVDbGljayhlLCBpZCksXG4gICAgICAgICAgb25UYXA6IChlKSA9PiB0aGlzLmhhbmRsZUNsaWNrKGUsIGlkKSxcbiAgICAgICAgICBvbkRibENsaWNrOiAoZSkgPT4gdGhpcy5oYW5kbGVEYmxDbGljayhlLCB0ZXh0KSxcbiAgICAgICAgICBvbkRibFRhcDogKGUpID0+IHRoaXMuaGFuZGxlRGJsQ2xpY2soZSwgdGV4dCksXG4gICAgICAgICAgb25UcmFuc2Zvcm06IChlKSA9PiB0aGlzLmhhbmRsZVRyYW5zZm9ybShlLCB0ZXh0Tm9kZSksXG4gICAgICAgICAgb25UcmFuc2Zvcm1FbmQ6IHRoaXMucHJvcHMuaGFuZGxlU2Vzc2lvbkNoYW5nZSxcbiAgICAgICAgICBvbk1vdXNlRG93bjogdGhpcy5oYW5kbGVNb3VzZURvd24sXG4gICAgICAgICAgb25Ub3VjaFN0YXJ0OiB0aGlzLmhhbmRsZU1vdXNlRG93bixcbiAgICAgICAgICBvbk1vdXNlVXA6IHRoaXMuaGFuZGxlTW91c2VVcCxcbiAgICAgICAgICBvblRvdWNoRW5kOiB0aGlzLmhhbmRsZU1vdXNlVXAsXG4gICAgICAgICAgb25EcmFnRW5kOiB0aGlzLnByb3BzLmhhbmRsZVNlc3Npb25DaGFuZ2UsXG4gICAgICAgICAgb25Nb3VzZUVudGVyOiB0aGlzLnByb3BzLm9uTW91c2VPdmVyRWxlbWVudCxcbiAgICAgICAgICBvbk1vdXNlTGVhdmU6IHRoaXMucHJvcHMub25Nb3VzZU91dEVsZW1lbnQsXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGlmIChyb3RhdGlvbikge1xuICAgICAgICBleHRyYVByb3BzLnJvdGF0aW9uID0gcm90YXRpb247XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBbXG4gICAgICAgIDxUZXh0XG4gICAgICAgICAga2V5PXtpZH1cbiAgICAgICAgICBidWJibGVzPXt0cnVlfVxuICAgICAgICAgIGlkPXtpZH1cbiAgICAgICAgICByZWY9eyh0ZXh0KSA9PiB7XG4gICAgICAgICAgICB0aGlzW3RleHROb2RlXSA9IHRleHQ7XG4gICAgICAgICAgfX1cbiAgICAgICAgICB0ZXh0PXt0ZXh0LnRleHQgfHwgbGFiZWx9XG4gICAgICAgICAgbmFtZT17dGV4dE5vZGV9XG4gICAgICAgICAgeD17eH1cbiAgICAgICAgICB5PXt5fVxuICAgICAgICAgIHdpZHRoPXt3aWR0aH1cbiAgICAgICAgICBkcmFnZ2FibGU9eyFwcm9wcy5kaXNhYmxlZH1cbiAgICAgICAgICB2aXNpYmxlPXt0ZXh0VmlzaWJsZX1cbiAgICAgICAgICBmb250U2l6ZT17MTZ9XG4gICAgICAgICAgey4uLmV4dHJhUHJvcHN9XG4gICAgICAgIC8+LFxuICAgICAgICB0cmFuc2Zvcm1lclZpc2libGUgJiYgKFxuICAgICAgICAgIDxUcmFuc2Zvcm1lclxuICAgICAgICAgICAga2V5PXtgdHJhbnNmb3JtZXJfJHtpZH1gfVxuICAgICAgICAgICAgcmVmPXsodGV4dCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzW3RyYW5zZm9ybWVyTm9kZV0gPSB0ZXh0O1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHNlbGVjdGVkU2hhcGVOYW1lPXt0ZXh0Tm9kZX1cbiAgICAgICAgICAgIG9uTW91c2VEb3duPXt0aGlzLmhhbmRsZU1vdXNlRG93bn1cbiAgICAgICAgICAgIG9uVG91Y2hTdGFydD17dGhpcy5oYW5kbGVNb3VzZURvd259XG4gICAgICAgICAgICBvbk1vdXNlVXA9e3RoaXMuaGFuZGxlTW91c2VVcH1cbiAgICAgICAgICAgIG9uVG91Y2hFbmQ9e3RoaXMuaGFuZGxlTW91c2VVcH1cbiAgICAgICAgICAvPlxuICAgICAgICApLFxuICAgICAgXTtcbiAgICB9KTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxXQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxXQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFHQSxJQUFBRyxvQkFBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBREEsTUFBTTtFQUFFSTtBQUFXLENBQUMsR0FBR0MsbUJBQVU7QUFHMUIsTUFBTUMsVUFBVSxHQUFHQSxDQUFBLEtBQU1DLElBQUksQ0FBQ0MsTUFBTSxDQUFDLENBQUMsQ0FBQ0MsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSUMsSUFBSSxDQUFDLENBQUMsQ0FBQ0MsT0FBTyxDQUFDLENBQUMsQ0FBQ0gsUUFBUSxDQUFDLEVBQUUsQ0FBQztBQUFDSSxPQUFBLENBQUFQLFVBQUEsR0FBQUEsVUFBQTtBQUU3RixNQUFNUSxZQUFZLENBQUM7RUFDaEMsT0FBT0MsZUFBZUEsQ0FBQ0MsRUFBRSxFQUFFO0lBQ3pCLE9BQU8sWUFBWUEsRUFBRSxFQUFFO0VBQ3pCO0VBRUEsT0FBT0MsV0FBV0EsQ0FBQ0QsRUFBRSxFQUFFO0lBQ3JCLE9BQU8sUUFBUUEsRUFBRSxFQUFFO0VBQ3JCO0VBRUEsT0FBT0Usa0JBQWtCQSxDQUFDRixFQUFFLEVBQUU7SUFDNUIsT0FBTyxlQUFlQSxFQUFFLEVBQUU7RUFDNUI7RUFFQUcsV0FBV0EsQ0FBQ0MsS0FBSyxFQUFFO0lBQUEsSUFBQUMsZ0JBQUEsQ0FBQUMsT0FBQSxnQ0FLSSxN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
|