@pie-element/extended-text-entry 6.6.3 → 6.7.0-annotations.1
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 +6 -14
- package/configure/CHANGELOG.md +6 -9
- package/configure/lib/__tests__/main.test.js +79 -0
- package/configure/lib/defaults.js +1 -1
- package/configure/lib/index.js +1 -1
- package/configure/lib/main.js +1 -1
- package/configure/package.json +3 -3
- package/controller/CHANGELOG.md +8 -0
- package/controller/lib/__tests__/index.test.js +402 -0
- package/controller/lib/defaults.js +67 -2
- package/controller/lib/index.js +26 -16
- package/controller/package.json +1 -1
- package/docs/demo/pie.manifest.json +11 -0
- package/docs/pie-schema.json +65 -0
- package/docs/pie-schema.json.md +47 -1
- package/lib/__tests__/index.test.js +49 -0
- package/lib/__tests__/main.test.js +55 -0
- package/lib/annotation/__tests__/annotation-editor.test.js +373 -0
- package/lib/annotation/__tests__/annotation-menu.test.js +69 -0
- package/lib/annotation/__tests__/freeform-editor.test.js +121 -0
- package/lib/annotation/annotation-editor.js +702 -0
- package/lib/annotation/annotation-menu.js +205 -0
- package/lib/annotation/annotation-utils.js +249 -0
- package/lib/annotation/freeform-editor.js +265 -0
- package/lib/index.js +28 -5
- package/lib/main.js +58 -21
- package/lib/main.js.map +1 -1
- package/lib/print.js +121 -0
- package/lib/print.js.map +1 -0
- package/package.json +11 -6
- package/LICENSE.md +0 -5
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports["default"] = void 0;
|
|
9
|
+
|
|
10
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
+
|
|
12
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
+
|
|
14
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
15
|
+
|
|
16
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
17
|
+
|
|
18
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
19
|
+
|
|
20
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
21
|
+
|
|
22
|
+
var _react = _interopRequireDefault(require("react"));
|
|
23
|
+
|
|
24
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
25
|
+
|
|
26
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
27
|
+
|
|
28
|
+
var _styles = require("@material-ui/core/styles");
|
|
29
|
+
|
|
30
|
+
var _core = require("@material-ui/core");
|
|
31
|
+
|
|
32
|
+
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
|
+
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
|
+
var styles = {
|
|
37
|
+
mainWrapper: {
|
|
38
|
+
width: '300px',
|
|
39
|
+
overflow: 'hidden',
|
|
40
|
+
borderRadius: '4px',
|
|
41
|
+
backgroundColor: '#ffffff',
|
|
42
|
+
border: '2px solid #d3d3d3'
|
|
43
|
+
},
|
|
44
|
+
annotationsWrapper: {
|
|
45
|
+
display: 'flex',
|
|
46
|
+
flexWrap: 'wrap'
|
|
47
|
+
},
|
|
48
|
+
controlsWrapper: {
|
|
49
|
+
display: 'flex',
|
|
50
|
+
flexWrap: 'wrap',
|
|
51
|
+
borderTop: '2px solid #d3d3d3'
|
|
52
|
+
},
|
|
53
|
+
button: {
|
|
54
|
+
width: '22%',
|
|
55
|
+
textAlign: 'center',
|
|
56
|
+
padding: '4px',
|
|
57
|
+
cursor: 'pointer',
|
|
58
|
+
borderBottom: '1px solid #d3d3d3',
|
|
59
|
+
'&:not(:nth-child(4n))': {
|
|
60
|
+
borderRight: '1px solid #d3d3d3'
|
|
61
|
+
},
|
|
62
|
+
'&:nth-child(4n)': {
|
|
63
|
+
flexGrow: 1
|
|
64
|
+
},
|
|
65
|
+
'&:hover': {
|
|
66
|
+
backgroundColor: '#d3d3d3'
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
positive: {
|
|
70
|
+
backgroundColor: 'rgb(153, 255, 153) !important',
|
|
71
|
+
'&:hover': {
|
|
72
|
+
filter: 'brightness(85%)'
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
negative: {
|
|
76
|
+
backgroundColor: 'rgb(255, 204, 238) !important',
|
|
77
|
+
'&:hover': {
|
|
78
|
+
filter: 'brightness(85%)'
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
holder: {
|
|
82
|
+
display: 'flex',
|
|
83
|
+
flexWrap: 'wrap',
|
|
84
|
+
borderTop: '2px solid #d3d3d3'
|
|
85
|
+
},
|
|
86
|
+
arrow: {
|
|
87
|
+
overflowX: 'unset',
|
|
88
|
+
overflowY: 'unset',
|
|
89
|
+
marginTop: '-16px',
|
|
90
|
+
'&::after': {
|
|
91
|
+
position: 'absolute',
|
|
92
|
+
left: 'calc(50% - 7px)',
|
|
93
|
+
// bottom: 0,
|
|
94
|
+
border: 'solid transparent',
|
|
95
|
+
content: '""',
|
|
96
|
+
height: 0,
|
|
97
|
+
width: 0,
|
|
98
|
+
pointerEvents: 'none',
|
|
99
|
+
borderWidth: '7px',
|
|
100
|
+
borderTopColor: 'black'
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
var AnnotationMenu = /*#__PURE__*/function (_React$Component) {
|
|
106
|
+
(0, _inherits2["default"])(AnnotationMenu, _React$Component);
|
|
107
|
+
|
|
108
|
+
var _super = _createSuper(AnnotationMenu);
|
|
109
|
+
|
|
110
|
+
function AnnotationMenu() {
|
|
111
|
+
(0, _classCallCheck2["default"])(this, AnnotationMenu);
|
|
112
|
+
return _super.apply(this, arguments);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
(0, _createClass2["default"])(AnnotationMenu, [{
|
|
116
|
+
key: "render",
|
|
117
|
+
value: function render() {
|
|
118
|
+
var _this$props = this.props,
|
|
119
|
+
anchorEl = _this$props.anchorEl,
|
|
120
|
+
annotations = _this$props.annotations,
|
|
121
|
+
classes = _this$props.classes,
|
|
122
|
+
isNewAnnotation = _this$props.isNewAnnotation,
|
|
123
|
+
onAnnotate = _this$props.onAnnotate,
|
|
124
|
+
onClose = _this$props.onClose,
|
|
125
|
+
onEdit = _this$props.onEdit,
|
|
126
|
+
onDelete = _this$props.onDelete,
|
|
127
|
+
onWrite = _this$props.onWrite,
|
|
128
|
+
open = _this$props.open;
|
|
129
|
+
return /*#__PURE__*/_react["default"].createElement(_core.Popover, {
|
|
130
|
+
anchorEl: anchorEl,
|
|
131
|
+
open: open,
|
|
132
|
+
onClose: onClose,
|
|
133
|
+
classes: {
|
|
134
|
+
paper: classes.arrow
|
|
135
|
+
},
|
|
136
|
+
elevation: 5,
|
|
137
|
+
anchorOrigin: {
|
|
138
|
+
vertical: 'top',
|
|
139
|
+
horizontal: 'center'
|
|
140
|
+
},
|
|
141
|
+
transformOrigin: {
|
|
142
|
+
vertical: 'bottom',
|
|
143
|
+
horizontal: 'center'
|
|
144
|
+
}
|
|
145
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
146
|
+
className: classes.mainWrapper
|
|
147
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
148
|
+
className: classes.annotationsWrapper
|
|
149
|
+
}, annotations.map(function (annotation, index) {
|
|
150
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
151
|
+
key: "annotation-".concat(index),
|
|
152
|
+
className: (0, _classnames["default"])(classes.button, annotation.type === 'positive' ? classes.positive : classes.negative),
|
|
153
|
+
onClick: function onClick() {
|
|
154
|
+
return onAnnotate(annotation);
|
|
155
|
+
}
|
|
156
|
+
}, annotation.label);
|
|
157
|
+
})), /*#__PURE__*/_react["default"].createElement("div", {
|
|
158
|
+
className: classes.controlsWrapper
|
|
159
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
160
|
+
className: classes.button,
|
|
161
|
+
onClick: onClose
|
|
162
|
+
}, "Cancel"), /*#__PURE__*/_react["default"].createElement("div", {
|
|
163
|
+
style: {
|
|
164
|
+
pointerEvents: 'none'
|
|
165
|
+
},
|
|
166
|
+
className: classes.button
|
|
167
|
+
}), isNewAnnotation ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
168
|
+
className: (0, _classnames["default"])(classes.button, classes.positive),
|
|
169
|
+
onClick: function onClick() {
|
|
170
|
+
return onWrite('positive');
|
|
171
|
+
}
|
|
172
|
+
}, "Write"), /*#__PURE__*/_react["default"].createElement("div", {
|
|
173
|
+
className: (0, _classnames["default"])(classes.button, classes.negative),
|
|
174
|
+
onClick: function onClick() {
|
|
175
|
+
return onWrite('negative');
|
|
176
|
+
}
|
|
177
|
+
}, "Write")) : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
178
|
+
className: classes.button,
|
|
179
|
+
onClick: onDelete
|
|
180
|
+
}, "Delete"), /*#__PURE__*/_react["default"].createElement("div", {
|
|
181
|
+
className: classes.button,
|
|
182
|
+
onClick: onEdit
|
|
183
|
+
}, "Edit")))));
|
|
184
|
+
}
|
|
185
|
+
}]);
|
|
186
|
+
return AnnotationMenu;
|
|
187
|
+
}(_react["default"].Component);
|
|
188
|
+
|
|
189
|
+
(0, _defineProperty2["default"])(AnnotationMenu, "propTypes", {
|
|
190
|
+
anchorEl: _propTypes["default"].object,
|
|
191
|
+
open: _propTypes["default"].bool,
|
|
192
|
+
annotations: _propTypes["default"].array,
|
|
193
|
+
isNewAnnotation: _propTypes["default"].bool,
|
|
194
|
+
onClose: _propTypes["default"].func,
|
|
195
|
+
onDelete: _propTypes["default"].func,
|
|
196
|
+
onEdit: _propTypes["default"].func,
|
|
197
|
+
onWrite: _propTypes["default"].func,
|
|
198
|
+
onAnnotate: _propTypes["default"].func
|
|
199
|
+
});
|
|
200
|
+
;
|
|
201
|
+
|
|
202
|
+
var _default = (0, _styles.withStyles)(styles)(AnnotationMenu);
|
|
203
|
+
|
|
204
|
+
exports["default"] = _default;
|
|
205
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hbm5vdGF0aW9uL2Fubm90YXRpb24tbWVudS5qc3giXSwibmFtZXMiOlsic3R5bGVzIiwibWFpbldyYXBwZXIiLCJ3aWR0aCIsIm92ZXJmbG93IiwiYm9yZGVyUmFkaXVzIiwiYmFja2dyb3VuZENvbG9yIiwiYm9yZGVyIiwiYW5ub3RhdGlvbnNXcmFwcGVyIiwiZGlzcGxheSIsImZsZXhXcmFwIiwiY29udHJvbHNXcmFwcGVyIiwiYm9yZGVyVG9wIiwiYnV0dG9uIiwidGV4dEFsaWduIiwicGFkZGluZyIsImN1cnNvciIsImJvcmRlckJvdHRvbSIsImJvcmRlclJpZ2h0IiwiZmxleEdyb3ciLCJwb3NpdGl2ZSIsImZpbHRlciIsIm5lZ2F0aXZlIiwiaG9sZGVyIiwiYXJyb3ciLCJvdmVyZmxvd1giLCJvdmVyZmxvd1kiLCJtYXJnaW5Ub3AiLCJwb3NpdGlvbiIsImxlZnQiLCJjb250ZW50IiwiaGVpZ2h0IiwicG9pbnRlckV2ZW50cyIsImJvcmRlcldpZHRoIiwiYm9yZGVyVG9wQ29sb3IiLCJBbm5vdGF0aW9uTWVudSIsInByb3BzIiwiYW5jaG9yRWwiLCJhbm5vdGF0aW9ucyIsImNsYXNzZXMiLCJpc05ld0Fubm90YXRpb24iLCJvbkFubm90YXRlIiwib25DbG9zZSIsIm9uRWRpdCIsIm9uRGVsZXRlIiwib25Xcml0ZSIsIm9wZW4iLCJwYXBlciIsInZlcnRpY2FsIiwiaG9yaXpvbnRhbCIsIm1hcCIsImFubm90YXRpb24iLCJpbmRleCIsInR5cGUiLCJsYWJlbCIsIlJlYWN0IiwiQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwib2JqZWN0IiwiYm9vbCIsImFycmF5IiwiZnVuYyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7OztBQUVBLElBQU1BLE1BQU0sR0FBRztBQUNiQyxFQUFBQSxXQUFXLEVBQUU7QUFDWEMsSUFBQUEsS0FBSyxFQUFFLE9BREk7QUFFWEMs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QW5CLEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgd2l0aFN0eWxlcyB9IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL3N0eWxlcyc7XG5pbXBvcnQgeyBQb3BvdmVyIH0gZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUnO1xuXG5jb25zdCBzdHlsZXMgPSB7XG4gIG1haW5XcmFwcGVyOiB7XG4gICAgd2lkdGg6ICczMDBweCcsXG4gICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgIGJvcmRlclJhZGl1czogJzRweCcsXG4gICAgYmFja2dyb3VuZENvbG9yOiAnI2ZmZmZmZicsXG4gICAgYm9yZGVyOiAnMnB4IHNvbGlkICNkM2QzZDMnXG4gIH0sXG4gIGFubm90YXRpb25zV3JhcHBlcjoge1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4V3JhcDogJ3dyYXAnLFxuICB9LFxuICBjb250cm9sc1dyYXBwZXI6IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZmxleFdyYXA6ICd3cmFwJyxcbiAgICBib3JkZXJUb3A6ICcycHggc29saWQgI2QzZDNkMydcbiAgfSxcbiAgYnV0dG9uOiB7XG4gICAgd2lkdGg6ICcyMiUnLFxuICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgcGFkZGluZzogJzRweCcsXG4gICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgYm9yZGVyQm90dG9tOiAnMXB4IHNvbGlkICNkM2QzZDMnLFxuICAgICcmOm5vdCg6bnRoLWNoaWxkKDRuKSknOiB7XG4gICAgICBib3JkZXJSaWdodDogJzFweCBzb2xpZCAjZDNkM2QzJyxcbiAgICB9LFxuICAgICcmOm50aC1jaGlsZCg0biknOiB7XG4gICAgICBmbGV4R3JvdzogMVxuICAgIH0sXG4gICAgJyY6aG92ZXInOiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZDNkM2QzJ1xuICAgIH0sXG4gIH0sXG4gIHBvc2l0aXZlOiB7XG4gICAgYmFja2dyb3VuZENvbG9yOiAncmdiKDE1MywgMjU1LCAxNTMpICFpbXBvcnRhbnQnLFxuICAgICcmOmhvdmVyJzoge1xuICAgICAgZmlsdGVyOiAnYnJpZ2h0bmVzcyg4NSUpJ1xuICAgIH1cbiAgfSxcbiAgbmVnYXRpdmU6IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICdyZ2IoMjU1LCAyMDQsIDIzOCkgIWltcG9ydGFudCcsXG4gICAgJyY6aG92ZXInOiB7XG4gICAgICBmaWx0ZXI6ICdicmlnaHRuZXNzKDg1JSknXG4gICAgfVxuICB9LFxuICBob2xkZXI6IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZmxleFdyYXA6ICd3cmFwJyxcbiAgICBib3JkZXJUb3A6ICcycHggc29saWQgI2QzZDNkMydcbiAgfSxcbiAgYXJyb3c6IHtcbiAgICBvdmVyZmxvd1g6ICd1bnNldCcsXG4gICAgb3ZlcmZsb3dZOiAndW5zZXQnLFxuICAgIG1hcmdpblRvcDogJy0xNnB4JyxcbiAgICAnJjo6YWZ0ZXInOiB7XG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgIGxlZnQ6ICdjYWxjKDUwJSAtIDdweCknLFxuICAgICAgLy8gYm90dG9tOiAwLFxuICAgICAgYm9yZGVyOiAnc29saWQgdHJhbnNwYXJlbnQnLFxuICAgICAgY29udGVudDogJ1wiXCInLFxuICAgICAgaGVpZ2h0OiAwLFxuICAgICAgd2lkdGg6IDAsXG4gICAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gICAgICBib3JkZXJXaWR0aDogJzdweCcsXG4gICAgICBib3JkZXJUb3BDb2xvcjogJ2JsYWNrJ1xuICAgIH1cbiAgfVxufTtcblxuY2xhc3MgQW5ub3RhdGlvbk1lbnUgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIGFuY2hvckVsOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICAgIGFubm90YXRpb25zOiBQcm9wVHlwZXMuYXJyYXksXG4gICAgaXNOZXdBbm5vdGF0aW9uOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvbkRlbGV0ZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25FZGl0OiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvbldyaXRlOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvbkFubm90YXRlOiBQcm9wVHlwZXMuZnVuYyxcbiAgfTtcblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge1xuICAgICAgYW5jaG9yRWwsXG4gICAgICBhbm5vdGF0aW9ucyxcbiAgICAgIGNsYXNzZXMsXG4gICAgICBpc05ld0Fubm90YXRpb24sXG4gICAgICBvbkFubm90YXRlLFxuICAgICAgb25DbG9zZSxcbiAgICAgIG9uRWRpdCxcbiAgICAgIG9uRGVsZXRlLFxuICAgICAgb25Xcml0ZSxcbiAgICAgIG9wZW5cbiAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgIHJldHVybiAoXG4gICAgICA8UG9wb3ZlclxuICAgICAgICBhbmNob3JFbD17YW5jaG9yRWx9XG4gICAgICAgIG9wZW49e29wZW59XG4gICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgIGNsYXNzZXM9e3twYXBlcjogY2xhc3Nlcy5hcnJvd319XG4gICAgICAgIGVsZXZhdGlvbj17NX1cbiAgICAgICAgYW5jaG9yT3JpZ2luPXt7XG4gICAgICAgICAgdmVydGljYWw6ICd0b3AnLFxuICAgICAgICAgIGhvcml6b250YWw6ICdjZW50ZXInLFxuICAgICAgICB9fVxuICAgICAgICB0cmFuc2Zvcm1PcmlnaW49e3tcbiAgICAgICAgICB2ZXJ0aWNhbDogJ2JvdHRvbScsXG4gICAgICAgICAgaG9yaXpvbnRhbDogJ2NlbnRlcicsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLm1haW5XcmFwcGVyfT5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5hbm5vdGF0aW9uc1dyYXBwZXJ9PlxuICAgICAgICAgICAge2Fubm90YXRpb25zLm1hcCgoYW5ub3RhdGlvbiwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGtleT17YGFubm90YXRpb24tJHtpbmRleH1gfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhcbiAgICAgICAgICAgICAgICAgIGNsYXNzZXMuYnV0dG9uLFxuICAgICAgICAgICAgICAgICAgYW5ub3RhdGlvbi50eXBlID09PSAncG9zaXRpdmUnID8gY2xhc3Nlcy5wb3NpdGl2ZSA6IGNsYXNzZXMubmVnYXRpdmVcbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uQW5ub3RhdGUoYW5ub3RhdGlvbil9XG4gICAgICAgICAgICAgID57YW5ub3RhdGlvbi5sYWJlbH08L2Rpdj5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLmNvbnRyb2xzV3JhcHBlcn0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5idXR0b259IG9uQ2xpY2s9e29uQ2xvc2V9PlxuICAgICAgICAgICAgICBDYW5jZWxcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17e3BvaW50ZXJFdmVudHM6ICdub25lJ319IGNsYXNzTmFtZT17Y2xhc3Nlcy5idXR0b259Lz5cbiAgICAgICAgICAgIHtpc05ld0Fubm90YXRpb24gPyAoXG4gICAgICAgICAgICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoY2xhc3Nlcy5idXR0b24sIGNsYXNzZXMucG9zaXRpdmUpfVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Xcml0ZSgncG9zaXRpdmUnKX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBXcml0ZVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhjbGFzc2VzLmJ1dHRvbiwgY2xhc3Nlcy5uZWdhdGl2ZSl9XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbldyaXRlKCduZWdhdGl2ZScpfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIFdyaXRlXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8UmVhY3QuRnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMuYnV0dG9ufSBvbkNsaWNrPXtvbkRlbGV0ZX0+XG4gICAgICAgICAgICAgICAgICBEZWxldGVcbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5idXR0b259IG9uQ2xpY2s9e29uRWRpdH0+XG4gICAgICAgICAgICAgICAgICBFZGl0XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvUG9wb3Zlcj5cbiAgICApO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCB3aXRoU3R5bGVzKHN0eWxlcykoQW5ub3RhdGlvbk1lbnUpO1xuIl19
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.getLabelElement = exports.getAnnotationElements = exports.isSideLabel = exports.clearSelection = exports.removeElemsWrapping = exports.getRangeDetails = exports.wrapRange = exports.getDOMNodes = void 0;
|
|
9
|
+
|
|
10
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
11
|
+
|
|
12
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
13
|
+
|
|
14
|
+
// returns DOM Nodes before the stopOffset
|
|
15
|
+
var getAllTextNodesBeforePosition = function getAllTextNodesBeforePosition(node, stopOffset, nodeArray) {
|
|
16
|
+
var nodes = nodeArray ? nodeArray : [];
|
|
17
|
+
var offset = nodes.reduce(function (acc, node) {
|
|
18
|
+
return acc + node.textContent.length;
|
|
19
|
+
}, 0);
|
|
20
|
+
var keepWalking = true;
|
|
21
|
+
|
|
22
|
+
if (offset > stopOffset) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
if (node) {
|
|
27
|
+
// 3 = HTML DOM node value for text nodes
|
|
28
|
+
if (node.nodeType === 3 && node.parentNode && !node.parentNode.hasAttribute('data-ann-id')) {
|
|
29
|
+
nodes.push(node);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
node = node.firstChild;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
while (node && keepWalking) {
|
|
36
|
+
keepWalking = getAllTextNodesBeforePosition(node, stopOffset, nodes);
|
|
37
|
+
node = node.nextSibling;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return nodes;
|
|
41
|
+
}; // returns DOM Nodes that overlap the start or end position
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
var getDOMNodes = function getDOMNodes(startOffset, endOffset, rootNode) {
|
|
45
|
+
var textNodesToEnd = getAllTextNodesBeforePosition(rootNode, endOffset);
|
|
46
|
+
var domNodes = [];
|
|
47
|
+
var start = 0;
|
|
48
|
+
textNodesToEnd.forEach(function (node) {
|
|
49
|
+
var end = start + node.textContent.length;
|
|
50
|
+
[startOffset, endOffset].forEach(function (offset) {
|
|
51
|
+
if (start <= offset && offset < end) {
|
|
52
|
+
domNodes.push({
|
|
53
|
+
node: node,
|
|
54
|
+
offset: offset - start
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
start = end;
|
|
59
|
+
});
|
|
60
|
+
return domNodes;
|
|
61
|
+
}; // returns [ textNodes, text ]
|
|
62
|
+
// textNodes = DOM Text Nodes between start range and end range node
|
|
63
|
+
// text = plain text in range
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
exports.getDOMNodes = getDOMNodes;
|
|
67
|
+
|
|
68
|
+
var getTextNodesBetween = function getTextNodesBetween(range) {
|
|
69
|
+
var rootNode = range.commonAncestorContainer,
|
|
70
|
+
startNode = range.startContainer,
|
|
71
|
+
endNode = range.endContainer,
|
|
72
|
+
startOffset = range.startOffset,
|
|
73
|
+
endOffset = range.endOffset;
|
|
74
|
+
var textNodes = [];
|
|
75
|
+
var pastStartNode = false;
|
|
76
|
+
var reachedEndNode = false;
|
|
77
|
+
var text = '';
|
|
78
|
+
|
|
79
|
+
var getTextNodes = function getTextNodes(node) {
|
|
80
|
+
var value = node.nodeValue,
|
|
81
|
+
childNodes = node.childNodes;
|
|
82
|
+
|
|
83
|
+
if (node === startNode && node === endNode) {
|
|
84
|
+
if (value) {
|
|
85
|
+
text += value.substring(startOffset, endOffset);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
pastStartNode = reachedEndNode = true;
|
|
89
|
+
} else if (node === startNode) {
|
|
90
|
+
if (value) {
|
|
91
|
+
text += value.substring(startOffset);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
pastStartNode = true;
|
|
95
|
+
} else if (node === endNode) {
|
|
96
|
+
if (value) {
|
|
97
|
+
text += value.substring(0, endOffset);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
reachedEndNode = true;
|
|
101
|
+
} else if (node && node.nodeType === 3 && node.parentNode && !node.parentNode.hasAttribute('data-ann-id')) {
|
|
102
|
+
// 3 = HTML DOM node value for text nodes
|
|
103
|
+
if (value && pastStartNode && !reachedEndNode) {
|
|
104
|
+
text += value;
|
|
105
|
+
textNodes.push(node);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
childNodes.forEach(function (childNode) {
|
|
110
|
+
if (!reachedEndNode) {
|
|
111
|
+
getTextNodes(childNode);
|
|
112
|
+
} else {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
getTextNodes(rootNode);
|
|
119
|
+
return [textNodes, text];
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
var surroundContent = function surroundContent(range) {
|
|
123
|
+
var wrapper = document.createElement('SPAN');
|
|
124
|
+
range.surroundContents(wrapper);
|
|
125
|
+
return wrapper;
|
|
126
|
+
}; // wrap each DOM Text Node in range into a span
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
var wrapRange = function wrapRange(range) {
|
|
130
|
+
if (range.startContainer === range.endContainer) {
|
|
131
|
+
return [surroundContent(range)];
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
var _getTextNodesBetween = getTextNodesBetween(range),
|
|
135
|
+
_getTextNodesBetween2 = (0, _slicedToArray2["default"])(_getTextNodesBetween, 1),
|
|
136
|
+
nodesBetween = _getTextNodesBetween2[0]; // wrap the start node
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
var startRange = document.createRange();
|
|
140
|
+
startRange.selectNodeContents(range.startContainer);
|
|
141
|
+
startRange.setStart(range.startContainer, range.startOffset);
|
|
142
|
+
var startWrapper = surroundContent(startRange); // wrap the end node
|
|
143
|
+
|
|
144
|
+
var endRange = document.createRange();
|
|
145
|
+
endRange.selectNode(range.endContainer);
|
|
146
|
+
endRange.setEnd(range.endContainer, range.endOffset);
|
|
147
|
+
var endWrapper = surroundContent(endRange); // wrap the nodes between start and end nodes, if any
|
|
148
|
+
|
|
149
|
+
var centerWrappers = nodesBetween.map(function (node) {
|
|
150
|
+
var wrapper = document.createElement('SPAN');
|
|
151
|
+
node.parentNode.insertBefore(wrapper, node);
|
|
152
|
+
wrapper.appendChild(node);
|
|
153
|
+
return wrapper;
|
|
154
|
+
});
|
|
155
|
+
return [startWrapper].concat((0, _toConsumableArray2["default"])(centerWrappers), [endWrapper]);
|
|
156
|
+
}; // returns text in range with start and end position in rootNode
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
exports.wrapRange = wrapRange;
|
|
160
|
+
|
|
161
|
+
var getRangeDetails = function getRangeDetails(range, rootNode) {
|
|
162
|
+
var rangeBefore = document.createRange();
|
|
163
|
+
rangeBefore.setStart(rootNode, 0);
|
|
164
|
+
rangeBefore.setEnd(range.startContainer, range.startOffset);
|
|
165
|
+
|
|
166
|
+
var _getTextNodesBetween3 = getTextNodesBetween(rangeBefore),
|
|
167
|
+
_getTextNodesBetween4 = (0, _slicedToArray2["default"])(_getTextNodesBetween3, 2),
|
|
168
|
+
text = _getTextNodesBetween4[1];
|
|
169
|
+
|
|
170
|
+
var _getTextNodesBetween5 = getTextNodesBetween(range),
|
|
171
|
+
_getTextNodesBetween6 = (0, _slicedToArray2["default"])(_getTextNodesBetween5, 2),
|
|
172
|
+
textSelected = _getTextNodesBetween6[1];
|
|
173
|
+
|
|
174
|
+
var start = text.length;
|
|
175
|
+
var end = start + textSelected.length;
|
|
176
|
+
return {
|
|
177
|
+
quote: textSelected,
|
|
178
|
+
start: start,
|
|
179
|
+
end: end
|
|
180
|
+
};
|
|
181
|
+
}; // removes the annotation spans without changing the content inside
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
exports.getRangeDetails = getRangeDetails;
|
|
185
|
+
|
|
186
|
+
var removeElemsWrapping = function removeElemsWrapping(elems, container) {
|
|
187
|
+
(elems || []).forEach(function (elem) {
|
|
188
|
+
var parent = elem.parentNode;
|
|
189
|
+
var childNodes = elem.childNodes;
|
|
190
|
+
var childNodesLength = childNodes.length;
|
|
191
|
+
|
|
192
|
+
if (childNodesLength > 0) {
|
|
193
|
+
for (var i = 0; i < childNodesLength; i++) {
|
|
194
|
+
parent.insertBefore(childNodes[0], elem);
|
|
195
|
+
}
|
|
196
|
+
} else {
|
|
197
|
+
parent.insertBefore(document.createTextNode(elem.textContent), elem);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
parent.removeChild(elem);
|
|
201
|
+
});
|
|
202
|
+
container.normalize();
|
|
203
|
+
}; // also used in select-text
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
exports.removeElemsWrapping = removeElemsWrapping;
|
|
207
|
+
|
|
208
|
+
var clearSelection = function clearSelection() {
|
|
209
|
+
if (document.getSelection) {
|
|
210
|
+
// for all new browsers (IE9+, Chrome, Firefox)
|
|
211
|
+
document.getSelection().removeAllRanges();
|
|
212
|
+
document.getSelection().addRange(document.createRange());
|
|
213
|
+
} else if (window.getSelection) {
|
|
214
|
+
// equals with the document.getSelection (MSDN info)
|
|
215
|
+
if (window.getSelection().removeAllRanges) {
|
|
216
|
+
// for all new browsers (IE9+, Chrome, Firefox)
|
|
217
|
+
window.getSelection().removeAllRanges();
|
|
218
|
+
window.getSelection().addRange(document.createRange());
|
|
219
|
+
} else if (window.getSelection().empty) {
|
|
220
|
+
// Chrome supports this as well
|
|
221
|
+
window.getSelection().empty();
|
|
222
|
+
}
|
|
223
|
+
} else if (document.selection) {
|
|
224
|
+
// IE8-
|
|
225
|
+
document.selection.empty();
|
|
226
|
+
}
|
|
227
|
+
}; // check if annotation label contains line breaks or its length >= 20 characters
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
exports.clearSelection = clearSelection;
|
|
231
|
+
|
|
232
|
+
var isSideLabel = function isSideLabel(text) {
|
|
233
|
+
return text.length >= 20 || text.search(/\n|\r|\r\n/) !== -1;
|
|
234
|
+
};
|
|
235
|
+
|
|
236
|
+
exports.isSideLabel = isSideLabel;
|
|
237
|
+
|
|
238
|
+
var getAnnotationElements = function getAnnotationElements(id) {
|
|
239
|
+
return Array.from(document.querySelectorAll("[data-id='".concat(id, "']")));
|
|
240
|
+
};
|
|
241
|
+
|
|
242
|
+
exports.getAnnotationElements = getAnnotationElements;
|
|
243
|
+
|
|
244
|
+
var getLabelElement = function getLabelElement(id) {
|
|
245
|
+
return document.querySelector("[data-ann-id='".concat(id, "']"));
|
|
246
|
+
};
|
|
247
|
+
|
|
248
|
+
exports.getLabelElement = getLabelElement;
|
|
249
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hbm5vdGF0aW9uL2Fubm90YXRpb24tdXRpbHMuanMiXSwibmFtZXMiOlsiZ2V0QWxsVGV4dE5vZGVzQmVmb3JlUG9zaXRpb24iLCJub2RlIiwic3RvcE9mZnNldCIsIm5vZGVBcnJheSIsIm5vZGVzIiwib2Zmc2V0IiwicmVkdWNlIiwiYWNjIiwidGV4dENvbnRlbnQiLCJsZW5ndGgiLCJrZWVwV2Fsa2luZyIsIm5vZGVUeXBlIiwicGFyZW50Tm9kZSIsImhhc0F0dHJpYnV0ZSIsInB1c2giLCJmaXJzdENoaWxkIiwibmV4dFNpYmxpbmciLCJnZXRET01Ob2RlcyIsInN0YXJ0T2Zmc2V0IiwiZW5kT2Zmc2V0Iiwicm9vdE5vZGUiLCJ0ZXh0Tm9kZXNUb0VuZCIsImRvbU5vZGVzIiwic3RhcnQiLCJmb3JFYWNoIiwiZW5kIiwiZ2V0VGV4dE5vZGVzQmV0d2VlbiIsInJhbmdlIiwiY29tbW9uQW5jZXN0b3JDb250YWluZXIiLCJzdGFydE5vZGUiLCJzdGFydENvbnRhaW5lciIsImVuZE5vZGUiLCJlbmRDb250YWluZXIiLCJ0ZXh0Tm9kZXMiLCJwYXN0U3RhcnROb2RlIiwicmVhY2hlZEVuZE5vZGUiLCJ0ZXh0IiwiZ2V0VGV4dE5vZGVzIiwidmFsdWUiLCJub2RlVmFsdWUiLCJjaGlsZE5vZGVzIiwic3Vic3RyaW5nIiwiY2hpbGROb2RlIiwic3Vycm91bmRDb250ZW50Iiwid3JhcHBlciIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInN1cnJvdW5kQ29udGVudHMiLCJ3cmFwUmFuZ2UiLCJub2Rlc0JldHdlZW4iLCJzdGFydFJhbmdlIiwiY3JlYXRlUmFuZ2UiLCJzZWxlY3ROb2RlQ29udGVudHMiLCJzZXRTdGFydCIsInN0YXJ0V3JhcHBlciIsImVuZFJhbmdlIiwic2VsZWN0Tm9kZSIsInNldEVuZCIsImVuZFdyYXBwZXIiLCJjZW50ZXJXcmFwcGVycyIsIm1hcCIsImluc2VydEJlZm9yZSIsImFwcGVuZENoaWxkIiwiZ2V0UmFuZ2VEZXRhaWxzIiwicmFuZ2VCZWZvcmUiLCJ0ZXh0U2VsZWN0ZWQiLCJxdW90ZSIsInJlbW92ZUVsZW1zV3JhcHBpbmciLCJlbGVtcyIsImNvbnRhaW5lciIsImVsZW0iLCJwYXJlbnQiLCJjaGlsZE5vZGVzTGVuZ3RoIiwiaSIsImNyZWF0ZVRleHROb2RlIiwicmVtb3ZlQ2hpbGQiLCJub3JtYWxpemUiLCJjbGVhclNlbGVjdGlvbiIsImdldFNlbGVjdGlvbiIsInJlbW92ZUFsbFJhbmdlcyIsImFkZFJhbmdlIiwid2luZG93IiwiZW1wdHkiLCJzZWxlY3Rpb24iLCJpc1NpZGVMYWJlbCIsInNlYXJjaCIsImdldEFubm90YXRpb25FbGVtZW50cyIsImlkIiwiQXJyYXkiLCJmcm9tIiwicXVlcnlTZWxlY3RvckFsbCIsImdldExhYmVsRWxlbWVudCIsInF1ZXJ5U2VsZWN0b3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBLElBQU1BLDZCQUE2QixHQUFHLFNBQWhDQSw2QkFBZ0MsQ0FBQ0MsSUFBRCxFQUFPQyxVQUFQLEVBQW1CQyxTQUFuQixFQUFpQztBQUNyRSxNQUFNQyxLQUFLLEdBQUlELFNBQUQsR0FBY0EsU0FBZCxHQUEwQixFQUF4QztBQUNBLE1BQU1FLE1BQU0sR0FBR0QsS0FBSyxDQUFDRSxNQUFOLENBQWEsVUFBQ0MsR0FBRCxFQUFNTixJQUFOO0FBQUEsV0FBZU0sR0FBRyxHQUFHTixJQUFJLENBQUNPLFdBQUwsQ0FBaUJDLE1BQXRDO0FBQUEsR0FBYixFQUEyRCxDQUEzRCxDQUFmO0FBQ0EsTUFBSUMsV0FBVyxHQUFHLElBQWxCOztBQUVBLE1BQUlMLE1BQU0sR0FBR0gsVUFBYixFQUF5QjtBQUN2QixXQUFPLEtBQVA7QUFDRDs7QUFFRCxNQUFJRCxJQUFKLEVBQVU7QUFDUjtBQUNBLFFBQUlBLElBQUksQ0FBQ1UsUUFBTCxLQUFrQixDQUFsQixJQUF1QlYsSUFBSSxDQUFDVyxVQUE1QixJQUEwQyxDQUFDWCxJQUFJLENBQUNXLFVBQUwsQ0FBZ0JDLFlBQWhCLENB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TUFJTyxJQUFJOEIsTUFBTSxDQUFDSCxZQUFQLEdBQXNCSSxLQUExQixFQUFpQztBQUN0QztBQUNBRCxNQUFBQSxNQUFNLENBQUNILFlBQVAsR0FBc0JJLEtBQXRCO0FBQ0Q7QUFDRixHQVZNLE1BVUEsSUFBSXJDLFFBQVEsQ0FBQ3NDLFNBQWIsRUFBd0I7QUFDN0I7QUFDQXRDLElBQUFBLFFBQVEsQ0FBQ3NDLFNBQVQsQ0FBbUJELEtBQW5CO0FBQ0Q7QUFDRixDQW5CTSxDLENBcUJQOzs7OztBQUNPLElBQU1FLFdBQVcsR0FBRyxTQUFkQSxXQUFjLENBQUFoRCxJQUFJO0FBQUEsU0FBSUEsSUFBSSxDQUFDM0IsTUFBTCxJQUFlLEVBQWYsSUFBcUIyQixJQUFJLENBQUNpRCxNQUFMLENBQVksWUFBWixNQUE4QixDQUFDLENBQXhEO0FBQUEsQ0FBeEI7Ozs7QUFFQSxJQUFNQyxxQkFBcUIsR0FBRyxTQUF4QkEscUJBQXdCLENBQUFDLEVBQUU7QUFBQSxTQUFJQyxLQUFLLENBQUNDLElBQU4sQ0FBVzVDLFFBQVEsQ0FBQzZDLGdCQUFULHFCQUF1Q0gsRUFBdkMsUUFBWCxDQUFKO0FBQUEsQ0FBaEM7Ozs7QUFFQSxJQUFNSSxlQUFlLEdBQUcsU0FBbEJBLGVBQWtCLENBQUFKLEVBQUU7QUFBQSxTQUFJMUMsUUFBUSxDQUFDK0MsYUFBVCx5QkFBd0NMLEVBQXhDLFFBQUo7QUFBQSxDQUExQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIHJldHVybnMgRE9NIE5vZGVzIGJlZm9yZSB0aGUgc3RvcE9mZnNldFxuY29uc3QgZ2V0QWxsVGV4dE5vZGVzQmVmb3JlUG9zaXRpb24gPSAobm9kZSwgc3RvcE9mZnNldCwgbm9kZUFycmF5KSA9PiB7XG4gIGNvbnN0IG5vZGVzID0gKG5vZGVBcnJheSkgPyBub2RlQXJyYXkgOiBbXTtcbiAgY29uc3Qgb2Zmc2V0ID0gbm9kZXMucmVkdWNlKChhY2MsIG5vZGUpID0+IGFjYyArIG5vZGUudGV4dENvbnRlbnQubGVuZ3RoLCAwKTtcbiAgbGV0IGtlZXBXYWxraW5nID0gdHJ1ZTtcblxuICBpZiAob2Zmc2V0ID4gc3RvcE9mZnNldCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChub2RlKSB7XG4gICAgLy8gMyA9IEhUTUwgRE9NIG5vZGUgdmFsdWUgZm9yIHRleHQgbm9kZXNcbiAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gMyAmJiBub2RlLnBhcmVudE5vZGUgJiYgIW5vZGUucGFyZW50Tm9kZS5oYXNBdHRyaWJ1dGUoJ2RhdGEtYW5uLWlkJykpIHtcbiAgICAgIG5vZGVzLnB1c2gobm9kZSk7XG4gICAgfVxuXG4gICAgbm9kZSA9IG5vZGUuZmlyc3RDaGlsZDtcbiAgfVxuXG4gIHdoaWxlKG5vZGUgJiYga2VlcFdhbGtpbmcpIHtcbiAgICBrZWVwV2Fsa2luZyA9IGdldEFsbFRleHROb2Rlc0JlZm9yZVBvc2l0aW9uKG5vZGUsIHN0b3BPZmZzZXQsIG5vZGVzKTtcbiAgICBub2RlID0gbm9kZS5uZXh0U2libGluZztcbiAgfVxuXG4gIHJldHVybiBub2Rlcztcbn07XG5cbi8vIHJldHVybnMgRE9NIE5vZGVzIHRoYXQgb3ZlcmxhcCB0aGUgc3RhcnQgb3IgZW5kIHBvc2l0aW9uXG5leHBvcnQgY29uc3QgZ2V0RE9NTm9kZXMgPSAoc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgcm9vdE5vZGUpID0+IHtcbiAgY29uc3QgdGV4dE5vZGVzVG9FbmQgPSBnZXRBbGxUZXh0Tm9kZXNCZWZvcmVQb3NpdGlvbihyb290Tm9kZSwgZW5kT2Zmc2V0KTtcbiAgY29uc3QgZG9tTm9kZXMgPSBbXTtcbiAgbGV0IHN0YXJ0ID0gMDtcblxuICB0ZXh0Tm9kZXNUb0VuZC5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgY29uc3QgZW5kID0gc3RhcnQgKyBub2RlLnRleHRDb250ZW50Lmxlbmd0aDtcblxuICAgIFtzdGFydE9mZnNldCwgZW5kT2Zmc2V0XS5mb3JFYWNoKChvZmZzZXQpID0+IHtcbiAgICAgIGlmIChzdGFydCA8PSBvZmZzZXQgJiYgb2Zmc2V0IDwgZW5kKSB7XG4gICAgICAgIGRvbU5vZGVzLnB1c2goe1xuICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgb2Zmc2V0OiBvZmZzZXQgLSBzdGFydFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHN0YXJ0ID0gZW5kO1xuICB9KTtcblxuICByZXR1cm4gZG9tTm9kZXM7XG59O1xuXG4vLyByZXR1cm5zIFsgdGV4dE5vZGVzLCB0ZXh0IF1cbi8vIHRleHROb2RlcyA9IERPTSBUZXh0IE5vZGVzIGJldHdlZW4gc3RhcnQgcmFuZ2UgYW5kIGVuZCByYW5nZSBub2RlXG4vLyB0ZXh0ID0gcGxhaW4gdGV4dCBpbiByYW5nZVxuY29uc3QgZ2V0VGV4dE5vZGVzQmV0d2VlbiA9IChyYW5nZSkgPT4ge1xuICBjb25zdCB7XG4gICAgY29tbW9uQW5jZXN0b3JDb250YWluZXI6IHJvb3ROb2RlLFxuICAgIHN0YXJ0Q29udGFpbmVyOiBzdGFydE5vZGUsXG4gICAgZW5kQ29udGFpbmVyOiBlbmROb2RlLFxuICAgIHN0YXJ0T2Zmc2V0LFxuICAgIGVuZE9mZnNldFxuICB9ID0gcmFuZ2U7XG4gIGNvbnN0IHRleHROb2RlcyA9IFtdO1xuICBsZXQgcGFzdFN0YXJ0Tm9kZSA9IGZhbHNlO1xuICBsZXQgcmVhY2hlZEVuZE5vZGUgPSBmYWxzZTtcbiAgbGV0IHRleHQgPSAnJztcblxuICBjb25zdCBnZXRUZXh0Tm9kZXMgPSAobm9kZSkgPT4ge1xuICAgIGNvbnN0IHsgbm9kZVZhbHVlOiB2YWx1ZSwgY2hpbGROb2RlcyB9ID0gbm9kZTtcblxuICAgIGlmKG5vZGUgPT09IHN0YXJ0Tm9kZSAmJiBub2RlID09PSBlbmROb2RlKSB7XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgdGV4dCArPSB2YWx1ZS5zdWJzdHJpbmcoc3RhcnRPZmZzZXQsIGVuZE9mZnNldCk7XG4gICAgICB9XG5cbiAgICAgIHBhc3RTdGFydE5vZGUgPSByZWFjaGVkRW5kTm9kZSA9IHRydWU7XG4gICAgfSBlbHNlIGlmKG5vZGUgPT09IHN0YXJ0Tm9kZSkge1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIHRleHQgKz0gdmFsdWUuc3Vic3RyaW5nKHN0YXJ0T2Zmc2V0KTtcbiAgICAgIH1cblxuICAgICAgcGFzdFN0YXJ0Tm9kZSA9IHRydWU7XG4gICAgfSBlbHNlIGlmKG5vZGUgPT09IGVuZE5vZGUpIHtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICB0ZXh0ICs9IHZhbHVlLnN1YnN0cmluZygwLCBlbmRPZmZzZXQpO1xuICAgICAgfVxuXG4gICAgICByZWFjaGVkRW5kTm9kZSA9IHRydWU7XG4gICAgfSBlbHNlIGlmKG5vZGUgJiYgbm9kZS5ub2RlVHlwZSA9PT0gMyAmJiBub2RlLnBhcmVudE5vZGUgJiYgIW5vZGUucGFyZW50Tm9kZS5oYXNBdHRyaWJ1dGUoJ2RhdGEtYW5uLWlkJykpIHtcbiAgICAgIC8vIDMgPSBIVE1MIERPTSBub2RlIHZhbHVlIGZvciB0ZXh0IG5vZGVzXG4gICAgICBpZiAodmFsdWUgJiYgcGFzdFN0YXJ0Tm9kZSAmJiAhcmVhY2hlZEVuZE5vZGUpIHtcbiAgICAgICAgdGV4dCArPSB2YWx1ZTtcbiAgICAgICAgdGV4dE5vZGVzLnB1c2gobm9kZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY2hpbGROb2Rlcy5mb3JFYWNoKChjaGlsZE5vZGUpID0+IHtcbiAgICAgIGlmICghcmVhY2hlZEVuZE5vZGUpIHtcbiAgICAgICAgZ2V0VGV4dE5vZGVzKGNoaWxkTm9kZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgZ2V0VGV4dE5vZGVzKHJvb3ROb2RlKTtcblxuICByZXR1cm4gW3RleHROb2RlcywgdGV4dF07XG59O1xuXG5jb25zdCBzdXJyb3VuZENvbnRlbnQgPSByYW5nZSA9PiB7XG4gIGNvbnN0IHdyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdTUEFOJyk7XG5cbiAgcmFuZ2Uuc3Vycm91bmRDb250ZW50cyh3cmFwcGVyKTtcblxuICByZXR1cm4gd3JhcHBlcjtcbn07XG5cbi8vIHdyYXAgZWFjaCBET00gVGV4dCBOb2RlIGluIHJhbmdlIGludG8gYSBzcGFuXG5leHBvcnQgY29uc3Qgd3JhcFJhbmdlID0gKHJhbmdlKSA9PiB7XG4gIGlmIChyYW5nZS5zdGFydENvbnRhaW5lciA9PT0gcmFuZ2UuZW5kQ29udGFpbmVyKSB7XG4gICAgcmV0dXJuIFsgc3Vycm91bmRDb250ZW50KHJhbmdlKSBdO1xuICB9XG5cbiAgY29uc3QgWyBub2Rlc0JldHdlZW4gXSA9IGdldFRleHROb2Rlc0JldHdlZW4ocmFuZ2UpO1xuXG4gIC8vIHdyYXAgdGhlIHN0YXJ0IG5vZGVcbiAgY29uc3Qgc3RhcnRSYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG5cbiAgc3RhcnRSYW5nZS5zZWxlY3ROb2RlQ29udGVudHMocmFuZ2Uuc3RhcnRDb250YWluZXIpO1xuICBzdGFydFJhbmdlLnNldFN0YXJ0KHJhbmdlLnN0YXJ0Q29udGFpbmVyLCByYW5nZS5zdGFydE9mZnNldCk7XG5cbiAgY29uc3Qgc3RhcnRXcmFwcGVyID0gc3Vycm91bmRDb250ZW50KHN0YXJ0UmFuZ2UpO1xuXG4gIC8vIHdyYXAgdGhlIGVuZCBub2RlXG4gIGNvbnN0IGVuZFJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcblxuICBlbmRSYW5nZS5zZWxlY3ROb2RlKHJhbmdlLmVuZENvbnRhaW5lcik7XG4gIGVuZFJhbmdlLnNldEVuZChyYW5nZS5lbmRDb250YWluZXIsIHJhbmdlLmVuZE9mZnNldCk7XG5cbiAgY29uc3QgZW5kV3JhcHBlciA9IHN1cnJvdW5kQ29udGVudChlbmRSYW5nZSk7XG5cbiAgLy8gd3JhcCB0aGUgbm9kZXMgYmV0d2VlbiBzdGFydCBhbmQgZW5kIG5vZGVzLCBpZiBhbnlcbiAgY29uc3QgY2VudGVyV3JhcHBlcnMgPSBub2Rlc0JldHdlZW4ubWFwKChub2RlKSA9PiB7XG4gICAgY29uc3Qgd3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ1NQQU4nKTtcblxuICAgIG5vZGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUod3JhcHBlciwgbm9kZSk7XG4gICAgd3JhcHBlci5hcHBlbmRDaGlsZChub2RlKTtcblxuICAgIHJldHVybiB3cmFwcGVyO1xuICB9KTtcblxuICByZXR1cm4gWyBzdGFydFdyYXBwZXIsIC4uLmNlbnRlcldyYXBwZXJzLCBlbmRXcmFwcGVyIF07XG59O1xuXG4vLyByZXR1cm5zIHRleHQgaW4gcmFuZ2Ugd2l0aCBzdGFydCBhbmQgZW5kIHBvc2l0aW9uIGluIHJvb3ROb2RlXG5leHBvcnQgY29uc3QgZ2V0UmFuZ2VEZXRhaWxzID0gKHJhbmdlLCByb290Tm9kZSkgPT4ge1xuICBjb25zdCByYW5nZUJlZm9yZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG5cbiAgcmFuZ2VCZWZvcmUuc2V0U3RhcnQocm9vdE5vZGUsIDApO1xuICByYW5nZUJlZm9yZS5zZXRFbmQocmFuZ2Uuc3RhcnRDb250YWluZXIsIHJhbmdlLnN0YXJ0T2Zmc2V0KTtcblxuICBjb25zdCBbICwgdGV4dCBdID0gZ2V0VGV4dE5vZGVzQmV0d2VlbihyYW5nZUJlZm9yZSk7XG4gIGNvbnN0IFsgLCB0ZXh0U2VsZWN0ZWQgXSA9IGdldFRleHROb2Rlc0JldHdlZW4ocmFuZ2UpO1xuICBjb25zdCBzdGFydCA9IHRleHQubGVuZ3RoO1xuICBjb25zdCBlbmQgPSBzdGFydCArIHRleHRTZWxlY3RlZC5sZW5ndGg7XG5cbiAgcmV0dXJuIHtcbiAgICBxdW90ZTogdGV4dFNlbGVjdGVkLFxuICAgIHN0YXJ0LFxuICAgIGVuZFxuICB9O1xufTtcblxuLy8gcmVtb3ZlcyB0aGUgYW5ub3RhdGlvbiBzcGFucyB3aXRob3V0IGNoYW5naW5nIHRoZSBjb250ZW50IGluc2lkZVxuZXhwb3J0IGNvbnN0IHJlbW92ZUVsZW1zV3JhcHBpbmcgPSAoZWxlbXMsIGNvbnRhaW5lcikgPT4ge1xuICAoZWxlbXMgfHwgW10pLmZvckVhY2goZWxlbSA9PiB7XG4gICAgY29uc3QgcGFyZW50ID0gZWxlbS5wYXJlbnROb2RlO1xuICAgIGNvbnN0IGNoaWxkTm9kZXMgPSBlbGVtLmNoaWxkTm9kZXM7XG4gICAgY29uc3QgY2hpbGROb2Rlc0xlbmd0aCA9IGNoaWxkTm9kZXMubGVuZ3RoO1xuXG4gICAgaWYgKGNoaWxkTm9kZXNMZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkTm9kZXNMZW5ndGg7IGkrKykge1xuICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGNoaWxkTm9kZXNbMF0sIGVsZW0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGVsZW0udGV4dENvbnRlbnQpLCBlbGVtKTtcbiAgICB9XG5cbiAgICBwYXJlbnQucmVtb3ZlQ2hpbGQoZWxlbSk7XG4gIH0pO1xuXG4gIGNvbnRhaW5lci5ub3JtYWxpemUoKTtcbn07XG5cbi8vIGFsc28gdXNlZCBpbiBzZWxlY3QtdGV4dFxuZXhwb3J0IGNvbnN0IGNsZWFyU2VsZWN0aW9uID0gKCkgPT4ge1xuICBpZiAoZG9jdW1lbnQuZ2V0U2VsZWN0aW9uKSB7XG4gICAgLy8gZm9yIGFsbCBuZXcgYnJvd3NlcnMgKElFOSssIENocm9tZSwgRmlyZWZveClcbiAgICBkb2N1bWVudC5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICBkb2N1bWVudC5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShkb2N1bWVudC5jcmVhdGVSYW5nZSgpKTtcbiAgfSBlbHNlIGlmICh3aW5kb3cuZ2V0U2VsZWN0aW9uKSB7XG4gICAgLy8gZXF1YWxzIHdpdGggdGhlIGRvY3VtZW50LmdldFNlbGVjdGlvbiAoTVNETiBpbmZvKVxuICAgIGlmICh3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKSB7XG4gICAgICAvLyBmb3IgYWxsIG5ldyBicm93c2VycyAoSUU5KywgQ2hyb21lLCBGaXJlZm94KVxuICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKGRvY3VtZW50LmNyZWF0ZVJhbmdlKCkpO1xuICAgIH0gZWxzZSBpZiAod2luZG93LmdldFNlbGVjdGlvbigpLmVtcHR5KSB7XG4gICAgICAvLyBDaHJvbWUgc3VwcG9ydHMgdGhpcyBhcyB3ZWxsXG4gICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuZW1wdHkoKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoZG9jdW1lbnQuc2VsZWN0aW9uKSB7XG4gICAgLy8gSUU4LVxuICAgIGRvY3VtZW50LnNlbGVjdGlvbi5lbXB0eSgpO1xuICB9XG59O1xuXG4vLyBjaGVjayBpZiBhbm5vdGF0aW9uIGxhYmVsIGNvbnRhaW5zIGxpbmUgYnJlYWtzIG9yIGl0cyBsZW5ndGggPj0gMjAgY2hhcmFjdGVyc1xuZXhwb3J0IGNvbnN0IGlzU2lkZUxhYmVsID0gdGV4dCA9PiB0ZXh0Lmxlbmd0aCA+PSAyMCB8fCB0ZXh0LnNlYXJjaCgvXFxufFxccnxcXHJcXG4vKSAhPT0gLTE7XG5cbmV4cG9ydCBjb25zdCBnZXRBbm5vdGF0aW9uRWxlbWVudHMgPSBpZCA9PiBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtkYXRhLWlkPScke2lkfSddYCkpO1xuXG5leHBvcnQgY29uc3QgZ2V0TGFiZWxFbGVtZW50ID0gaWQgPT4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgW2RhdGEtYW5uLWlkPScke2lkfSddYCk7XG4iXX0=
|