@pie-lib/editable-html-tip-tap 1.0.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.json +32 -0
- package/CHANGELOG.md +2280 -0
- package/lib/__tests__/editor.test.js +470 -0
- package/lib/__tests__/serialization.test.js +246 -0
- package/lib/__tests__/utils.js +106 -0
- package/lib/block-tags.js +25 -0
- package/lib/constants.js +16 -0
- package/lib/editor.js +1356 -0
- package/lib/extensions/MediaView.js +112 -0
- package/lib/extensions/characters.js +65 -0
- package/lib/extensions/component.js +325 -0
- package/lib/extensions/css.js +252 -0
- package/lib/extensions/custom-toolbar-wrapper.js +124 -0
- package/lib/extensions/image.js +106 -0
- package/lib/extensions/math.js +330 -0
- package/lib/extensions/media.js +276 -0
- package/lib/extensions/responseArea.js +278 -0
- package/lib/index.js +1213 -0
- package/lib/old-index.js +269 -0
- package/lib/parse-html.js +16 -0
- package/lib/plugins/characters/custom-popper.js +73 -0
- package/lib/plugins/characters/index.js +305 -0
- package/lib/plugins/characters/utils.js +381 -0
- package/lib/plugins/css/icons/index.js +37 -0
- package/lib/plugins/css/index.js +390 -0
- package/lib/plugins/customPlugin/index.js +114 -0
- package/lib/plugins/html/icons/index.js +38 -0
- package/lib/plugins/html/index.js +81 -0
- package/lib/plugins/image/__tests__/component.test.js +51 -0
- package/lib/plugins/image/__tests__/image-toolbar-logic.test.js +56 -0
- package/lib/plugins/image/__tests__/image-toolbar.test.js +26 -0
- package/lib/plugins/image/__tests__/index.test.js +98 -0
- package/lib/plugins/image/__tests__/insert-image-handler.test.js +125 -0
- package/lib/plugins/image/__tests__/mock-change.js +25 -0
- package/lib/plugins/image/alt-dialog.js +129 -0
- package/lib/plugins/image/component.js +419 -0
- package/lib/plugins/image/image-toolbar.js +177 -0
- package/lib/plugins/image/index.js +263 -0
- package/lib/plugins/image/insert-image-handler.js +117 -0
- package/lib/plugins/index.js +413 -0
- package/lib/plugins/list/__tests__/index.test.js +79 -0
- package/lib/plugins/list/index.js +334 -0
- package/lib/plugins/math/__tests__/index.test.js +300 -0
- package/lib/plugins/math/index.js +454 -0
- package/lib/plugins/media/__tests__/index.test.js +71 -0
- package/lib/plugins/media/index.js +387 -0
- package/lib/plugins/media/media-dialog.js +709 -0
- package/lib/plugins/media/media-toolbar.js +101 -0
- package/lib/plugins/media/media-wrapper.js +93 -0
- package/lib/plugins/rendering/index.js +46 -0
- package/lib/plugins/respArea/drag-in-the-blank/choice.js +289 -0
- package/lib/plugins/respArea/drag-in-the-blank/index.js +94 -0
- package/lib/plugins/respArea/explicit-constructed-response/index.js +120 -0
- package/lib/plugins/respArea/icons/index.js +95 -0
- package/lib/plugins/respArea/index.js +341 -0
- package/lib/plugins/respArea/inline-dropdown/index.js +126 -0
- package/lib/plugins/respArea/math-templated/index.js +130 -0
- package/lib/plugins/respArea/utils.js +125 -0
- package/lib/plugins/table/CustomTablePlugin.js +133 -0
- package/lib/plugins/table/__tests__/index.test.js +442 -0
- package/lib/plugins/table/__tests__/table-toolbar.test.js +54 -0
- package/lib/plugins/table/icons/index.js +69 -0
- package/lib/plugins/table/index.js +483 -0
- package/lib/plugins/table/table-toolbar.js +187 -0
- package/lib/plugins/textAlign/icons/index.js +194 -0
- package/lib/plugins/textAlign/index.js +34 -0
- package/lib/plugins/toolbar/__tests__/default-toolbar.test.js +128 -0
- package/lib/plugins/toolbar/__tests__/editor-and-toolbar.test.js +51 -0
- package/lib/plugins/toolbar/__tests__/toolbar-buttons.test.js +54 -0
- package/lib/plugins/toolbar/__tests__/toolbar.test.js +120 -0
- package/lib/plugins/toolbar/default-toolbar.js +229 -0
- package/lib/plugins/toolbar/done-button.js +53 -0
- package/lib/plugins/toolbar/editor-and-toolbar.js +286 -0
- package/lib/plugins/toolbar/index.js +34 -0
- package/lib/plugins/toolbar/toolbar-buttons.js +194 -0
- package/lib/plugins/toolbar/toolbar.js +376 -0
- package/lib/plugins/utils.js +62 -0
- package/lib/serialization.js +677 -0
- package/lib/shared/alert-dialog.js +75 -0
- package/lib/theme.js +9 -0
- package/package.json +69 -0
- package/src/__tests__/editor.test.jsx +363 -0
- package/src/__tests__/serialization.test.js +291 -0
- package/src/__tests__/utils.js +36 -0
- package/src/block-tags.js +17 -0
- package/src/constants.js +7 -0
- package/src/editor.jsx +1197 -0
- package/src/extensions/characters.js +46 -0
- package/src/extensions/component.jsx +294 -0
- package/src/extensions/css.js +217 -0
- package/src/extensions/custom-toolbar-wrapper.jsx +100 -0
- package/src/extensions/image.js +55 -0
- package/src/extensions/math.js +259 -0
- package/src/extensions/media.js +182 -0
- package/src/extensions/responseArea.js +205 -0
- package/src/index.jsx +1462 -0
- package/src/old-index.jsx +162 -0
- package/src/parse-html.js +8 -0
- package/src/plugins/README.md +27 -0
- package/src/plugins/characters/custom-popper.js +48 -0
- package/src/plugins/characters/index.jsx +284 -0
- package/src/plugins/characters/utils.js +447 -0
- package/src/plugins/css/icons/index.jsx +17 -0
- package/src/plugins/css/index.jsx +340 -0
- package/src/plugins/customPlugin/index.jsx +85 -0
- package/src/plugins/html/icons/index.jsx +19 -0
- package/src/plugins/html/index.jsx +72 -0
- package/src/plugins/image/__tests__/__snapshots__/component.test.jsx.snap +51 -0
- package/src/plugins/image/__tests__/__snapshots__/image-toolbar-logic.test.jsx.snap +27 -0
- package/src/plugins/image/__tests__/__snapshots__/image-toolbar.test.jsx.snap +44 -0
- package/src/plugins/image/__tests__/component.test.jsx +41 -0
- package/src/plugins/image/__tests__/image-toolbar-logic.test.jsx +42 -0
- package/src/plugins/image/__tests__/image-toolbar.test.jsx +11 -0
- package/src/plugins/image/__tests__/index.test.js +95 -0
- package/src/plugins/image/__tests__/insert-image-handler.test.js +113 -0
- package/src/plugins/image/__tests__/mock-change.js +15 -0
- package/src/plugins/image/alt-dialog.jsx +82 -0
- package/src/plugins/image/component.jsx +343 -0
- package/src/plugins/image/image-toolbar.jsx +100 -0
- package/src/plugins/image/index.jsx +227 -0
- package/src/plugins/image/insert-image-handler.js +79 -0
- package/src/plugins/index.jsx +377 -0
- package/src/plugins/list/__tests__/index.test.js +54 -0
- package/src/plugins/list/index.jsx +305 -0
- package/src/plugins/math/__tests__/__snapshots__/index.test.jsx.snap +48 -0
- package/src/plugins/math/__tests__/index.test.jsx +245 -0
- package/src/plugins/math/index.jsx +379 -0
- package/src/plugins/media/__tests__/index.test.js +75 -0
- package/src/plugins/media/index.jsx +325 -0
- package/src/plugins/media/media-dialog.js +624 -0
- package/src/plugins/media/media-toolbar.jsx +56 -0
- package/src/plugins/media/media-wrapper.jsx +43 -0
- package/src/plugins/rendering/index.js +31 -0
- package/src/plugins/respArea/drag-in-the-blank/choice.jsx +215 -0
- package/src/plugins/respArea/drag-in-the-blank/index.jsx +70 -0
- package/src/plugins/respArea/explicit-constructed-response/index.jsx +92 -0
- package/src/plugins/respArea/icons/index.jsx +71 -0
- package/src/plugins/respArea/index.jsx +299 -0
- package/src/plugins/respArea/inline-dropdown/index.jsx +108 -0
- package/src/plugins/respArea/math-templated/index.jsx +104 -0
- package/src/plugins/respArea/utils.jsx +90 -0
- package/src/plugins/table/CustomTablePlugin.js +113 -0
- package/src/plugins/table/__tests__/__snapshots__/table-toolbar.test.jsx.snap +44 -0
- package/src/plugins/table/__tests__/index.test.jsx +401 -0
- package/src/plugins/table/__tests__/table-toolbar.test.jsx +42 -0
- package/src/plugins/table/icons/index.jsx +53 -0
- package/src/plugins/table/index.jsx +427 -0
- package/src/plugins/table/table-toolbar.jsx +136 -0
- package/src/plugins/textAlign/icons/index.jsx +114 -0
- package/src/plugins/textAlign/index.jsx +23 -0
- package/src/plugins/toolbar/__tests__/__snapshots__/default-toolbar.test.jsx.snap +923 -0
- package/src/plugins/toolbar/__tests__/__snapshots__/editor-and-toolbar.test.jsx.snap +20 -0
- package/src/plugins/toolbar/__tests__/__snapshots__/toolbar-buttons.test.jsx.snap +36 -0
- package/src/plugins/toolbar/__tests__/__snapshots__/toolbar.test.jsx.snap +46 -0
- package/src/plugins/toolbar/__tests__/default-toolbar.test.jsx +94 -0
- package/src/plugins/toolbar/__tests__/editor-and-toolbar.test.jsx +37 -0
- package/src/plugins/toolbar/__tests__/toolbar-buttons.test.jsx +51 -0
- package/src/plugins/toolbar/__tests__/toolbar.test.jsx +106 -0
- package/src/plugins/toolbar/default-toolbar.jsx +206 -0
- package/src/plugins/toolbar/done-button.jsx +38 -0
- package/src/plugins/toolbar/editor-and-toolbar.jsx +257 -0
- package/src/plugins/toolbar/index.jsx +23 -0
- package/src/plugins/toolbar/toolbar-buttons.jsx +138 -0
- package/src/plugins/toolbar/toolbar.jsx +338 -0
- package/src/plugins/utils.js +31 -0
- package/src/serialization.jsx +621 -0
- package/src/theme.js +1 -0
|
@@ -0,0 +1,177 @@
|
|
|
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"] = exports.ImageToolbar = 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 _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
15
|
+
|
|
16
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
17
|
+
|
|
18
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
19
|
+
|
|
20
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
21
|
+
|
|
22
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
23
|
+
|
|
24
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
25
|
+
|
|
26
|
+
var _react = _interopRequireDefault(require("react"));
|
|
27
|
+
|
|
28
|
+
var _debug = _interopRequireDefault(require("debug"));
|
|
29
|
+
|
|
30
|
+
var _reactDom = _interopRequireDefault(require("react-dom"));
|
|
31
|
+
|
|
32
|
+
var _styles = require("@material-ui/core/styles");
|
|
33
|
+
|
|
34
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
35
|
+
|
|
36
|
+
var _toolbarButtons = require("../toolbar/toolbar-buttons");
|
|
37
|
+
|
|
38
|
+
var _altDialog = _interopRequireDefault(require("./alt-dialog"));
|
|
39
|
+
|
|
40
|
+
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); }; }
|
|
41
|
+
|
|
42
|
+
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; } }
|
|
43
|
+
|
|
44
|
+
var log = (0, _debug["default"])('@pie-lib:editable-html:plugins:image:image-toolbar');
|
|
45
|
+
|
|
46
|
+
var AlignmentButton = function AlignmentButton(_ref) {
|
|
47
|
+
var alignment = _ref.alignment,
|
|
48
|
+
active = _ref.active,
|
|
49
|
+
onClick = _ref.onClick;
|
|
50
|
+
return /*#__PURE__*/_react["default"].createElement(_toolbarButtons.MarkButton, {
|
|
51
|
+
active: active,
|
|
52
|
+
onToggle: function onToggle() {
|
|
53
|
+
return onClick(alignment);
|
|
54
|
+
},
|
|
55
|
+
label: alignment
|
|
56
|
+
}, alignment);
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
AlignmentButton.propTypes = {
|
|
60
|
+
alignment: _propTypes["default"].string.isRequired,
|
|
61
|
+
active: _propTypes["default"].bool.isRequired,
|
|
62
|
+
onClick: _propTypes["default"].func.isRequired
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
var ImageToolbar = /*#__PURE__*/function (_React$Component) {
|
|
66
|
+
(0, _inherits2["default"])(ImageToolbar, _React$Component);
|
|
67
|
+
|
|
68
|
+
var _super = _createSuper(ImageToolbar);
|
|
69
|
+
|
|
70
|
+
function ImageToolbar() {
|
|
71
|
+
var _this;
|
|
72
|
+
|
|
73
|
+
(0, _classCallCheck2["default"])(this, ImageToolbar);
|
|
74
|
+
|
|
75
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
76
|
+
args[_key] = arguments[_key];
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
80
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onAltTextDone", function (newAlt) {
|
|
81
|
+
log('[onAltTextDone]: alt:', newAlt);
|
|
82
|
+
|
|
83
|
+
_this.props.onChange({
|
|
84
|
+
alt: newAlt
|
|
85
|
+
}, true);
|
|
86
|
+
});
|
|
87
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onAlignmentClick", function (alignment) {
|
|
88
|
+
log('[onAlignmentClick]: alignment:', alignment);
|
|
89
|
+
|
|
90
|
+
_this.props.onChange({
|
|
91
|
+
alignment: alignment
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "renderDialog", function () {
|
|
95
|
+
var alt = _this.props.alt;
|
|
96
|
+
var popoverEl = document.createElement('div');
|
|
97
|
+
|
|
98
|
+
var el = /*#__PURE__*/_react["default"].createElement(_altDialog["default"], {
|
|
99
|
+
alt: alt,
|
|
100
|
+
onDone: _this.onAltTextDone
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
_reactDom["default"].render(el, popoverEl);
|
|
104
|
+
|
|
105
|
+
document.body.appendChild(popoverEl);
|
|
106
|
+
});
|
|
107
|
+
return _this;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
(0, _createClass2["default"])(ImageToolbar, [{
|
|
111
|
+
key: "render",
|
|
112
|
+
value: function render() {
|
|
113
|
+
var _classNames,
|
|
114
|
+
_this2 = this;
|
|
115
|
+
|
|
116
|
+
var _this$props = this.props,
|
|
117
|
+
classes = _this$props.classes,
|
|
118
|
+
alignment = _this$props.alignment,
|
|
119
|
+
imageLoaded = _this$props.imageLoaded,
|
|
120
|
+
disableImageAlignmentButtons = _this$props.disableImageAlignmentButtons;
|
|
121
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
122
|
+
className: classes.holder
|
|
123
|
+
}, !disableImageAlignmentButtons && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(AlignmentButton, {
|
|
124
|
+
alignment: 'left',
|
|
125
|
+
active: alignment === 'left',
|
|
126
|
+
onClick: this.onAlignmentClick
|
|
127
|
+
}), /*#__PURE__*/_react["default"].createElement(AlignmentButton, {
|
|
128
|
+
alignment: 'center',
|
|
129
|
+
active: alignment === 'center',
|
|
130
|
+
onClick: this.onAlignmentClick
|
|
131
|
+
}), /*#__PURE__*/_react["default"].createElement(AlignmentButton, {
|
|
132
|
+
alignment: 'right',
|
|
133
|
+
active: alignment === 'right',
|
|
134
|
+
onClick: this.onAlignmentClick
|
|
135
|
+
})), /*#__PURE__*/_react["default"].createElement("span", {
|
|
136
|
+
className: (0, _classnames["default"])((_classNames = {}, (0, _defineProperty2["default"])(_classNames, classes.disabled, !imageLoaded), (0, _defineProperty2["default"])(_classNames, classes.altButton, !disableImageAlignmentButtons), _classNames)),
|
|
137
|
+
onMouseDown: function onMouseDown(event) {
|
|
138
|
+
return imageLoaded && _this2.renderDialog(event);
|
|
139
|
+
}
|
|
140
|
+
}, "Alt text"));
|
|
141
|
+
}
|
|
142
|
+
}]);
|
|
143
|
+
return ImageToolbar;
|
|
144
|
+
}(_react["default"].Component);
|
|
145
|
+
|
|
146
|
+
exports.ImageToolbar = ImageToolbar;
|
|
147
|
+
(0, _defineProperty2["default"])(ImageToolbar, "propTypes", {
|
|
148
|
+
onChange: _propTypes["default"].func.isRequired,
|
|
149
|
+
classes: _propTypes["default"].object.isRequired,
|
|
150
|
+
alignment: _propTypes["default"].string,
|
|
151
|
+
alt: _propTypes["default"].string,
|
|
152
|
+
imageLoaded: _propTypes["default"].bool,
|
|
153
|
+
disableImageAlignmentButtons: _propTypes["default"].bool
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
var styles = function styles(theme) {
|
|
157
|
+
return {
|
|
158
|
+
holder: {
|
|
159
|
+
paddingLeft: theme.spacing.unit,
|
|
160
|
+
display: 'flex',
|
|
161
|
+
alignItems: 'center'
|
|
162
|
+
},
|
|
163
|
+
disabled: {
|
|
164
|
+
opacity: 0.5
|
|
165
|
+
},
|
|
166
|
+
altButton: {
|
|
167
|
+
borderLeft: '1px solid grey',
|
|
168
|
+
paddingLeft: 8,
|
|
169
|
+
marginLeft: 4
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
var _default = (0, _styles.withStyles)(styles)(ImageToolbar);
|
|
175
|
+
|
|
176
|
+
exports["default"] = _default;
|
|
177
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wbHVnaW5zL2ltYWdlL2ltYWdlLXRvb2xiYXIuanN4Il0sIm5hbWVzIjpbImxvZyIsIkFsaWdubWVudEJ1dHRvbiIsImFsaWdubWVudCIsImFjdGl2ZSIsIm9uQ2xpY2siLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJzdHJpbmciLCJpc1JlcXVpcmVkIiwiYm9vbCIsImZ1bmMiLCJJbWFnZVRvb2xiYXIiLCJuZXdBbHQiLCJwcm9wcyIsIm9uQ2hhbmdlIiwiYWx0IiwicG9wb3ZlckVsIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiZWwiLCJvbkFsdFRleHREb25lIiwiUmVhY3RET00iLCJyZW5kZXIiLCJib2R5IiwiYXBwZW5kQ2hpbGQiLCJjbGFzc2VzIiwiaW1hZ2VMb2FkZWQiLCJkaXNhYmxlSW1hZ2VBbGlnbm1lbnRCdXR0b25zIiwiaG9sZGVyIiwib25BbGlnbm1lbnRDbGljayIsImRpc2FibGVkIiwiYWx0QnV0dG9uIiwiZXZlbnQiLCJyZW5kZXJEaWFsb2ciLCJSZWFjdCIsIkNvbXBvbmVudCIsIm9iamVjdCIsInN0eWxlcyIsInRoZW1lIiwicGFkZGluZ0xlZnQiLCJzcGFjaW5nIiwidW5pdCIsImRpc3BsYXkiLCJhbGlnbkl0ZW1zIiwib3BhY2l0eSIsImJvcmRlckxlZnQiLCJtYXJnaW5MZWZ0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOzs7Ozs7QUFFQSxJQUFNQSxHQUFHLEdBQUcsdUJBQU0sb0RBQU4sQ0FBWjs7QUFFQSxJQUFNQyxlQUFlLEdBQUcsU0FBbEJBLGVBQWtCLE9BQW9DO0FBQUEsTUFBakNDLFNBQWlDLFFBQWpDQSxTQUFpQztBQUFBLE1BQXRCQyxNQUFzQixRQUF0QkEsTUFBc0I7QUFBQSxNQUFkQyxPQUFjLFFBQWRBLE9BQWM7QUFDMUQsc0JBQ0UsZ0NBQUMsMEJBQUQ7QUFBWSxJQUFB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RUF0RCtCRSxrQkFBTUMsUzs7O2lDQUEzQnhCLFksZUFDUTtBQUNqQkcsRUFBQUEsUUFBUSxFQUFFUixzQkFBVUksSUFBVixDQUFlRixVQURSO0FBRWpCaUIsRUFBQUEsT0FBTyxFQUFFbkIsc0JBQVU4QixNQUFWLENBQWlCNUIsVUFGVDtBQUdqQk4sRUFBQUEsU0FBUyxFQUFFSSxzQkFBVUMsTUFISjtBQUlqQlEsRUFBQUEsR0FBRyxFQUFFVCxzQkFBVUMsTUFKRTtBQUtqQm1CLEVBQUFBLFdBQVcsRUFBRXBCLHNCQUFVRyxJQUxOO0FBTWpCa0IsRUFBQUEsNEJBQTRCLEVBQUVyQixzQkFBVUc7QUFOdkIsQzs7QUF3RHJCLElBQU00QixNQUFNLEdBQUcsU0FBVEEsTUFBUyxDQUFDQyxLQUFEO0FBQUEsU0FBWTtBQUN6QlYsSUFBQUEsTUFBTSxFQUFFO0FBQ05XLE1BQUFBLFdBQVcsRUFBRUQsS0FBSyxDQUFDRSxPQUFOLENBQWNDLElBRHJCO0FBRU5DLE1BQUFBLE9BQU8sRUFBRSxNQUZIO0FBR05DLE1BQUFBLFVBQVUsRUFBRTtBQUhOLEtBRGlCO0FBTXpCYixJQUFBQSxRQUFRLEVBQUU7QUFDUmMsTUFBQUEsT0FBTyxFQUFFO0FBREQsS0FOZTtBQVN6QmIsSUFBQUEsU0FBUyxFQUFFO0FBQ1RjLE1BQUFBLFVBQVUsRUFBRSxnQkFESDtBQUVUTixNQUFBQSxXQUFXLEVBQUUsQ0FGSjtBQUdUTyxNQUFBQSxVQUFVLEVBQUU7QUFISDtBQVRjLEdBQVo7QUFBQSxDQUFmOztlQWdCZSx3QkFBV1QsTUFBWCxFQUFtQjFCLFlBQW5CLEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCB7IHdpdGhTdHlsZXMgfSBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9zdHlsZXMnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5cbmltcG9ydCB7IE1hcmtCdXR0b24gfSBmcm9tICcuLi90b29sYmFyL3Rvb2xiYXItYnV0dG9ucyc7XG5pbXBvcnQgQWx0RGlhbG9nIGZyb20gJy4vYWx0LWRpYWxvZyc7XG5cbmNvbnN0IGxvZyA9IGRlYnVnKCdAcGllLWxpYjplZGl0YWJsZS1odG1sOnBsdWdpbnM6aW1hZ2U6aW1hZ2UtdG9vbGJhcicpO1xuXG5jb25zdCBBbGlnbm1lbnRCdXR0b24gPSAoeyBhbGlnbm1lbnQsIGFjdGl2ZSwgb25DbGljayB9KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPE1hcmtCdXR0b24gYWN0aXZlPXthY3RpdmV9IG9uVG9nZ2xlPXsoKSA9PiBvbkNsaWNrKGFsaWdubWVudCl9IGxhYmVsPXthbGlnbm1lbnR9PlxuICAgICAge2FsaWdubWVudH1cbiAgICA8L01hcmtCdXR0b24+XG4gICk7XG59O1xuXG5BbGlnbm1lbnRCdXR0b24ucHJvcFR5cGVzID0ge1xuICBhbGlnbm1lbnQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgYWN0aXZlOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICBvbkNsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxufTtcblxuZXhwb3J0IGNsYXNzIEltYWdlVG9vbGJhciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgIGFsaWdubWVudDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBhbHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgaW1hZ2VMb2FkZWQ6IFByb3BUeXBlcy5ib29sLFxuICAgIGRpc2FibGVJbWFnZUFsaWdubWVudEJ1dHRvbnM6IFByb3BUeXBlcy5ib29sLFxuICB9O1xuXG4gIG9uQWx0VGV4dERvbmUgPSAobmV3QWx0KSA9PiB7XG4gICAgbG9nKCdbb25BbHRUZXh0RG9uZV06IGFsdDonLCBuZXdBbHQpO1xuXG4gICAgdGhpcy5wcm9wcy5vbkNoYW5nZSh7IGFsdDogbmV3QWx0IH0sIHRydWUpO1xuICB9O1xuXG4gIG9uQWxpZ25tZW50Q2xpY2sgPSAoYWxpZ25tZW50KSA9PiB7XG4gICAgbG9nKCdbb25BbGlnbm1lbnRDbGlja106IGFsaWdubWVudDonLCBhbGlnbm1lbnQpO1xuICAgIHRoaXMucHJvcHMub25DaGFuZ2UoeyBhbGlnbm1lbnQgfSk7XG4gIH07XG5cbiAgcmVuZGVyRGlhbG9nID0gKCkgPT4ge1xuICAgIGNvbnN0IHsgYWx0IH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHBvcG92ZXJFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gICAgY29uc3QgZWwgPSA8QWx0RGlhbG9nIGFsdD17YWx0fSBvbkRvbmU9e3RoaXMub25BbHRUZXh0RG9uZX0gLz47XG5cbiAgICBSZWFjdERPTS5yZW5kZXIoZWwsIHBvcG92ZXJFbCk7XG5cbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHBvcG92ZXJFbCk7XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgY2xhc3NlcywgYWxpZ25tZW50LCBpbWFnZUxvYWRlZCwgZGlzYWJsZUltYWdlQWxpZ25tZW50QnV0dG9ucyB9ID0gdGhpcy5wcm9wcztcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMuaG9sZGVyfT5cbiAgICAgICAgeyFkaXNhYmxlSW1hZ2VBbGlnbm1lbnRCdXR0b25zICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPEFsaWdubWVudEJ1dHRvbiBhbGlnbm1lbnQ9eydsZWZ0J30gYWN0aXZlPXthbGlnbm1lbnQgPT09ICdsZWZ0J30gb25DbGljaz17dGhpcy5vbkFsaWdubWVudENsaWNrfSAvPlxuICAgICAgICAgICAgPEFsaWdubWVudEJ1dHRvbiBhbGlnbm1lbnQ9eydjZW50ZXInfSBhY3RpdmU9e2FsaWdubWVudCA9PT0gJ2NlbnRlcid9IG9uQ2xpY2s9e3RoaXMub25BbGlnbm1lbnRDbGlja30gLz5cbiAgICAgICAgICAgIDxBbGlnbm1lbnRCdXR0b24gYWxpZ25tZW50PXsncmlnaHQnfSBhY3RpdmU9e2FsaWdubWVudCA9PT0gJ3JpZ2h0J30gb25DbGljaz17dGhpcy5vbkFsaWdubWVudENsaWNrfSAvPlxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyh7XG4gICAgICAgICAgICBbY2xhc3Nlcy5kaXNhYmxlZF06ICFpbWFnZUxvYWRlZCxcbiAgICAgICAgICAgIFtjbGFzc2VzLmFsdEJ1dHRvbl06ICFkaXNhYmxlSW1hZ2VBbGlnbm1lbnRCdXR0b25zLFxuICAgICAgICAgIH0pfVxuICAgICAgICAgIG9uTW91c2VEb3duPXsoZXZlbnQpID0+IGltYWdlTG9hZGVkICYmIHRoaXMucmVuZGVyRGlhbG9nKGV2ZW50KX1cbiAgICAgICAgPlxuICAgICAgICAgIEFsdCB0ZXh0XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbn1cblxuY29uc3Qgc3R5bGVzID0gKHRoZW1lKSA9PiAoe1xuICBob2xkZXI6IHtcbiAgICBwYWRkaW5nTGVmdDogdGhlbWUuc3BhY2luZy51bml0LFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgfSxcbiAgZGlzYWJsZWQ6IHtcbiAgICBvcGFjaXR5OiAwLjUsXG4gIH0sXG4gIGFsdEJ1dHRvbjoge1xuICAgIGJvcmRlckxlZnQ6ICcxcHggc29saWQgZ3JleScsXG4gICAgcGFkZGluZ0xlZnQ6IDgsXG4gICAgbWFyZ2luTGVmdDogNCxcbiAgfSxcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCB3aXRoU3R5bGVzKHN0eWxlcykoSW1hZ2VUb29sYmFyKTtcbiJdfQ==
|
|
@@ -0,0 +1,263 @@
|
|
|
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"] = ImagePlugin;
|
|
9
|
+
exports.serialization = void 0;
|
|
10
|
+
|
|
11
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
12
|
+
|
|
13
|
+
var _slate = require("slate");
|
|
14
|
+
|
|
15
|
+
var _Image = _interopRequireDefault(require("@material-ui/icons/Image"));
|
|
16
|
+
|
|
17
|
+
var _component = _interopRequireDefault(require("./component"));
|
|
18
|
+
|
|
19
|
+
var _imageToolbar = _interopRequireDefault(require("./image-toolbar"));
|
|
20
|
+
|
|
21
|
+
var _insertImageHandler = _interopRequireDefault(require("./insert-image-handler"));
|
|
22
|
+
|
|
23
|
+
var _react = _interopRequireDefault(require("react"));
|
|
24
|
+
|
|
25
|
+
var _debug = _interopRequireDefault(require("debug"));
|
|
26
|
+
|
|
27
|
+
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; }
|
|
28
|
+
|
|
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
|
+
|
|
31
|
+
var log = (0, _debug["default"])('@pie-lib:editable-html:plugins:image');
|
|
32
|
+
|
|
33
|
+
function ImagePlugin(opts) {
|
|
34
|
+
var toolbar = opts.insertImageRequested && {
|
|
35
|
+
icon: /*#__PURE__*/_react["default"].createElement(_Image["default"], null),
|
|
36
|
+
ariaLabel: 'Insert Image',
|
|
37
|
+
onClick: function onClick(value, onChange) {
|
|
38
|
+
log('[toolbar] onClick');
|
|
39
|
+
|
|
40
|
+
var inline = _slate.Inline.create({
|
|
41
|
+
type: 'image',
|
|
42
|
+
isVoid: true,
|
|
43
|
+
data: {
|
|
44
|
+
loaded: false,
|
|
45
|
+
src: undefined
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
var change = value.change().insertInline(inline);
|
|
50
|
+
onChange(change);
|
|
51
|
+
opts.insertImageRequested(inline, function (onFinish, getValue) {
|
|
52
|
+
return new _insertImageHandler["default"](inline, onFinish, getValue, onChange);
|
|
53
|
+
});
|
|
54
|
+
},
|
|
55
|
+
supports: function supports(node) {
|
|
56
|
+
return node.object === 'inline' && node.type === 'image';
|
|
57
|
+
},
|
|
58
|
+
customToolbar: function customToolbar(node, value, onToolbarDone) {
|
|
59
|
+
var alignment = node.data.get('alignment');
|
|
60
|
+
var alt = node.data.get('alt');
|
|
61
|
+
var imageLoaded = node.data.get('loaded') !== false;
|
|
62
|
+
|
|
63
|
+
var onChange = function onChange(newValues, done) {
|
|
64
|
+
var update = _objectSpread(_objectSpread({}, node.data.toObject()), newValues);
|
|
65
|
+
|
|
66
|
+
var change = value.change().setNodeByKey(node.key, {
|
|
67
|
+
data: update
|
|
68
|
+
});
|
|
69
|
+
onToolbarDone(change, done);
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
var Tb = function Tb() {
|
|
73
|
+
return /*#__PURE__*/_react["default"].createElement(_imageToolbar["default"], {
|
|
74
|
+
disableImageAlignmentButtons: opts.disableImageAlignmentButtons,
|
|
75
|
+
alt: alt,
|
|
76
|
+
imageLoaded: imageLoaded,
|
|
77
|
+
alignment: alignment || 'left',
|
|
78
|
+
onChange: onChange
|
|
79
|
+
});
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
return Tb;
|
|
83
|
+
},
|
|
84
|
+
showDone: true
|
|
85
|
+
};
|
|
86
|
+
return {
|
|
87
|
+
name: 'image',
|
|
88
|
+
toolbar: toolbar,
|
|
89
|
+
deleteNode: function deleteNode(e, node, value, onChange) {
|
|
90
|
+
e.preventDefault();
|
|
91
|
+
|
|
92
|
+
if (opts.onDelete) {
|
|
93
|
+
var update = node.data.merge(_slate.Data.create({
|
|
94
|
+
deleteStatus: 'pending'
|
|
95
|
+
}));
|
|
96
|
+
var change = value.change().setNodeByKey(node.key, {
|
|
97
|
+
data: update
|
|
98
|
+
});
|
|
99
|
+
onChange(change);
|
|
100
|
+
opts.onDelete(node, function (err, v) {
|
|
101
|
+
if (!err) {
|
|
102
|
+
change = v.change().removeNodeByKey(node.key);
|
|
103
|
+
} else {
|
|
104
|
+
log('[error]: ', err);
|
|
105
|
+
change = v.change().setNodeByKey(node.key, node.data.merge(_slate.Data.create({
|
|
106
|
+
deleteStatus: 'failed'
|
|
107
|
+
})));
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
onChange(change);
|
|
111
|
+
});
|
|
112
|
+
} else {
|
|
113
|
+
var _change = value.change().removeNodeByKey(node.key);
|
|
114
|
+
|
|
115
|
+
onChange(_change);
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
stopReset: function stopReset(value) {
|
|
119
|
+
var imgPendingInsertion = value.document.findDescendant(function (n) {
|
|
120
|
+
if (n.type !== 'image') {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
return n.data.get('loaded') === false;
|
|
125
|
+
});
|
|
126
|
+
/** don't reset if there is an image pending insertion */
|
|
127
|
+
|
|
128
|
+
return imgPendingInsertion !== undefined && imgPendingInsertion !== null;
|
|
129
|
+
},
|
|
130
|
+
renderNode: function renderNode(props) {
|
|
131
|
+
if (props.node.type === 'image') {
|
|
132
|
+
var all = Object.assign({
|
|
133
|
+
onDelete: opts.onDelete,
|
|
134
|
+
onFocus: opts.onFocus,
|
|
135
|
+
onBlur: opts.onBlur,
|
|
136
|
+
maxImageWidth: opts.maxImageWidth,
|
|
137
|
+
maxImageHeight: opts.maxImageHeight
|
|
138
|
+
}, props);
|
|
139
|
+
return /*#__PURE__*/_react["default"].createElement(_component["default"], all);
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
normalizeNode: function normalizeNode(node) {
|
|
143
|
+
var textNodeMap = {};
|
|
144
|
+
var updateNodesArray = [];
|
|
145
|
+
var index = 0;
|
|
146
|
+
if (node.object !== 'document') return;
|
|
147
|
+
node.findDescendant(function (d) {
|
|
148
|
+
if (d.object === 'text') {
|
|
149
|
+
textNodeMap[index] = d;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
if (d.type === 'image') {
|
|
153
|
+
if (index > 0 && textNodeMap[index - 1] && textNodeMap[index - 1].text === '') {
|
|
154
|
+
updateNodesArray.push(textNodeMap[index - 1]);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
index++;
|
|
159
|
+
});
|
|
160
|
+
if (!updateNodesArray.length) return;
|
|
161
|
+
return function (change) {
|
|
162
|
+
change.withoutNormalization(function () {
|
|
163
|
+
updateNodesArray.forEach(function (n) {
|
|
164
|
+
return change.insertTextByKey(n.key, 0, ' ');
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
var serialization = {
|
|
173
|
+
deserialize: function deserialize(el
|
|
174
|
+
/*, next*/
|
|
175
|
+
) {
|
|
176
|
+
var name = el.tagName.toLowerCase();
|
|
177
|
+
if (name !== 'img') return;
|
|
178
|
+
log('deserialize: ', name);
|
|
179
|
+
var style = el.style || {
|
|
180
|
+
width: '',
|
|
181
|
+
height: '',
|
|
182
|
+
margin: '',
|
|
183
|
+
justifyContent: ''
|
|
184
|
+
};
|
|
185
|
+
var width = parseInt(style.width.replace('px', ''), 10) || null;
|
|
186
|
+
var height = parseInt(style.height.replace('px', ''), 10) || null;
|
|
187
|
+
var out = {
|
|
188
|
+
object: 'inline',
|
|
189
|
+
type: 'image',
|
|
190
|
+
isVoid: true,
|
|
191
|
+
data: {
|
|
192
|
+
src: el.getAttribute('src'),
|
|
193
|
+
width: width,
|
|
194
|
+
height: height,
|
|
195
|
+
margin: el.style.margin,
|
|
196
|
+
justifyContent: el.style.justifyContent,
|
|
197
|
+
alignment: el.getAttribute('alignment'),
|
|
198
|
+
alt: el.getAttribute('alt')
|
|
199
|
+
}
|
|
200
|
+
};
|
|
201
|
+
log('return object: ', out);
|
|
202
|
+
return out;
|
|
203
|
+
},
|
|
204
|
+
serialize: function serialize(object
|
|
205
|
+
/*, children*/
|
|
206
|
+
) {
|
|
207
|
+
if (object.type !== 'image') return;
|
|
208
|
+
var data = object.data;
|
|
209
|
+
var src = data.get('src');
|
|
210
|
+
var width = data.get('width');
|
|
211
|
+
var height = data.get('height');
|
|
212
|
+
var alignment = data.get('alignment') || 'left';
|
|
213
|
+
var margin = data.get('margin');
|
|
214
|
+
var justifyContent = data.get('margin');
|
|
215
|
+
var alt = data.get('alt');
|
|
216
|
+
var style = {};
|
|
217
|
+
|
|
218
|
+
if (width) {
|
|
219
|
+
style.width = "".concat(width, "px");
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
if (height) {
|
|
223
|
+
style.height = "".concat(height, "px");
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
style.margin = margin;
|
|
227
|
+
style.justifyContent = justifyContent;
|
|
228
|
+
|
|
229
|
+
if (alignment) {
|
|
230
|
+
switch (alignment) {
|
|
231
|
+
case 'left':
|
|
232
|
+
style.justifyContent = 'flex-start';
|
|
233
|
+
style.margin = '0';
|
|
234
|
+
break;
|
|
235
|
+
|
|
236
|
+
case 'center':
|
|
237
|
+
style.justifyContent = 'center';
|
|
238
|
+
style.margin = '0 auto';
|
|
239
|
+
break;
|
|
240
|
+
|
|
241
|
+
case 'right':
|
|
242
|
+
style.justifyContent = 'flex-end';
|
|
243
|
+
style.margin = 'auto 0 0 auto';
|
|
244
|
+
break;
|
|
245
|
+
|
|
246
|
+
default:
|
|
247
|
+
style.justifyContent = 'flex-start';
|
|
248
|
+
break;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
style.objectFit = 'contain';
|
|
253
|
+
var props = {
|
|
254
|
+
src: src,
|
|
255
|
+
style: style,
|
|
256
|
+
alignment: alignment,
|
|
257
|
+
alt: alt
|
|
258
|
+
};
|
|
259
|
+
return /*#__PURE__*/_react["default"].createElement("img", props);
|
|
260
|
+
}
|
|
261
|
+
};
|
|
262
|
+
exports.serialization = serialization;
|
|
263
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wbHVnaW5zL2ltYWdlL2luZGV4LmpzeCJdLCJuYW1lcyI6WyJsb2ciLCJJbWFnZVBsdWdpbiIsIm9wdHMiLCJ0b29sYmFyIiwiaW5zZXJ0SW1hZ2VSZXF1ZXN0ZWQiLCJpY29uIiwiYXJpYUxhYmVsIiwib25DbGljayIsInZhbHVlIiwib25DaGFuZ2UiLCJpbmxpbmUiLCJJbmxpbmUiLCJjcmVhdGUiLCJ0eXBlIiwiaXNWb2lkIiwiZGF0YSIsImxvYWRlZCIsInNyYyIsInVuZGVmaW5lZCIsImNoYW5nZSIsImluc2VydElubGluZSIsIm9uRmluaXNoIiwiZ2V0VmFsdWUiLCJJbnNlcnRJbWFnZUhhbmRsZXIiLCJzdXBwb3J0cyIsIm5vZGUiLCJvYmplY3QiLCJjdXN0b21Ub29sYmFyIiwib25Ub29sYmFyRG9uZSIsImFsaWdubWVudCIsImdldCIsImFsdCIsImltYWdlTG9hZGVkIiwibmV3VmFsdWVzIiwiZG9uZSIsInVwZGF0ZSIsInRvT2JqZWN0Iiwic2V0Tm9kZUJ5S2V5Iiwia2V5IiwiVGIiLCJkaXNhYmxlSW1hZ2VBbGlnbm1lbnRCdXR0b25zIiwic2hvd0RvbmUiLCJuYW1lIiwiZGVsZXRlTm9kZSIsImUiLCJwcmV2ZW50RGVmYXVsdCIsIm9uRGVsZXRlIiwibWVyZ2UiLCJEYXRhIiwiZGVsZXRlU3RhdHVzIiwiZXJyIiwidiIsInJlbW92ZU5vZGVCeUtleSIsInN0b3BSZXNldCIsImltZ1BlbmRpbmdJbnNlcnRpb24iLCJkb2N1bWVudCIsImZpbmREZXNjZW5kYW50IiwibiIsInJlbmRlck5vZGUiLCJwcm9wcyIsImFsbCIsIk9iamVjdCIsImFzc2lnbiIsIm9uRm9jdXMiLCJvbkJsdXIiLCJtYXhJbWFnZVdpZHRoIiwibWF4SW1hZ2VIZWlnaHQiLCJub3JtYWxpemVOb2RlIiwidGV4dE5vZGVNYXAiLCJ1cGRhdGVOb2Rlc0FycmF5IiwiaW5kZXgiLCJkIiwidGV4dCIsInB1c2giLCJsZW5ndGgiLCJ3aXRob3V0Tm9ybWFsaXphdGlvbiIsImZvckVhY2giLCJpbnNlcnRUZXh0QnlLZXkiLCJzZXJpYWxpemF0aW9uIiwiZGVzZXJpYWxpemUiLCJlbCIsInRhZ05hbWUiLCJ0b0xvd2VyQ2FzZSIsInN0eWxlIiwid2lkdGgiLCJoZWlnaHQiLCJtYXJnaW4iLCJqdXN0aWZ5Q29udGVudCIsInBhcnNlSW50IiwicmVwbGFjZSIsIm91dCIsImdldEF0dHJpYnV0ZSIsInNlcmlhbGl6ZSIsIm9iamVjdEZpdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUE7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7OztBQUVBLElBQU1BLEdBQUcsR0FBRyx1QkFBTSxzQ0FBTixDQUFaOztBQUVlLFNBQVNDLFdBQVQsQ0FBcUJDLElBQXJCLEVBQTJCO0FBQ3hDLE1BQU1DLE9BQU8sR0FBR0QsSUFBSSxDQUFDRSxvQkFBTCxJQUE2QjtBQUMzQ0MsSUFBQUEsSUFBSSxlQUFFLGdDQUFDLGlCQUFELE9BRHFDO0FBRTNDQyxJQUFBQSxTQUFTLEVBQUUsY0FGZ0M7QUFHM0NDLElBQUFBLE9BQU8sRUFBRSxpQkFBQ0MsS0FBRCxFQUFRQyxRQUFSLEVBQXFCO0FBQzVCVCxNQUFBQSxHQUFHLENBQUMsbUJBQUQsQ0FBSDs7QUFDQSxVQUFNVSxNQUFNLEdBQUdDLGNBQU9DLE1BQVAsQ0FBYztBQUMzQkMsUUFBQUEsSUFBSSxFQUFFLE9BRHFCO0FBRTNCQyxRQUFBQSxNQUFNLEVBQUUsSUFGbUI7QUFHM0JDLFFBQUFBLElBQUksRUFBRTtBQUNKQyxVQUFBQSxNQUFNLEVBQUUsS0FESjtBQUVKQyxVQUFBQSxHQUFHLEVBQUVDO0FBRkQ7QUFIcUIsT0FBZCxDQUFmOztBQVNBLFVBQU1DLE1BQU0sR0FBR1gsS0FBSyxDQUFDVyxNQUFOLEdBQWVDLFlBQWYsQ0FBNEJWLE1BQTVCLENBQWY7QUFFQUQsTUFBQUEsUUFBUSxDQUFDVSxNQUFELENBQVI7QUFDQWpCLE1BQUFBLElBQUksQ0FBQ0Usb0JBQUwsQ0FDRU0sTUFERixFQUVFLFVB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SEEsR0FEWTtBQUVaa0UsTUFBQUEsS0FBSyxFQUFMQSxLQUZZO0FBR1p0RCxNQUFBQSxTQUFTLEVBQVRBLFNBSFk7QUFJWkUsTUFBQUEsR0FBRyxFQUFIQTtBQUpZLEtBQWQ7QUFPQSx3QkFBTyx1Q0FBUzRCLEtBQVQsQ0FBUDtBQUNEO0FBaEYwQixDQUF0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGEsIElubGluZSB9IGZyb20gJ3NsYXRlJztcblxuaW1wb3J0IEltYWdlIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9JbWFnZSc7XG5pbXBvcnQgSW1hZ2VDb21wb25lbnQgZnJvbSAnLi9jb21wb25lbnQnO1xuaW1wb3J0IEltYWdlVG9vbGJhciBmcm9tICcuL2ltYWdlLXRvb2xiYXInO1xuaW1wb3J0IEluc2VydEltYWdlSGFuZGxlciBmcm9tICcuL2luc2VydC1pbWFnZS1oYW5kbGVyJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuXG5jb25zdCBsb2cgPSBkZWJ1ZygnQHBpZS1saWI6ZWRpdGFibGUtaHRtbDpwbHVnaW5zOmltYWdlJyk7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEltYWdlUGx1Z2luKG9wdHMpIHtcbiAgY29uc3QgdG9vbGJhciA9IG9wdHMuaW5zZXJ0SW1hZ2VSZXF1ZXN0ZWQgJiYge1xuICAgIGljb246IDxJbWFnZSAvPixcbiAgICBhcmlhTGFiZWw6ICdJbnNlcnQgSW1hZ2UnLFxuICAgIG9uQ2xpY2s6ICh2YWx1ZSwgb25DaGFuZ2UpID0+IHtcbiAgICAgIGxvZygnW3Rvb2xiYXJdIG9uQ2xpY2snKTtcbiAgICAgIGNvbnN0IGlubGluZSA9IElubGluZS5jcmVhdGUoe1xuICAgICAgICB0eXBlOiAnaW1hZ2UnLFxuICAgICAgICBpc1ZvaWQ6IHRydWUsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBsb2FkZWQ6IGZhbHNlLFxuICAgICAgICAgIHNyYzogdW5kZWZpbmVkLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGNoYW5nZSA9IHZhbHVlLmNoYW5nZSgpLmluc2VydElubGluZShpbmxpbmUpO1xuXG4gICAgICBvbkNoYW5nZShjaGFuZ2UpO1xuICAgICAgb3B0cy5pbnNlcnRJbWFnZVJlcXVlc3RlZChcbiAgICAgICAgaW5saW5lLFxuICAgICAgICAob25GaW5pc2gsIGdldFZhbHVlKSA9PiBuZXcgSW5zZXJ0SW1hZ2VIYW5kbGVyKGlubGluZSwgb25GaW5pc2gsIGdldFZhbHVlLCBvbkNoYW5nZSksXG4gICAgICApO1xuICAgIH0sXG4gICAgc3VwcG9ydHM6IChub2RlKSA9PiBub2RlLm9iamVjdCA9PT0gJ2lubGluZScgJiYgbm9kZS50eXBlID09PSAnaW1hZ2UnLFxuICAgIGN1c3RvbVRvb2xiYXI6IChub2RlLCB2YWx1ZSwgb25Ub29sYmFyRG9uZSkgPT4ge1xuICAgICAgY29uc3QgYWxpZ25tZW50ID0gbm9kZS5kYXRhLmdldCgnYWxpZ25tZW50Jyk7XG4gICAgICBjb25zdCBhbHQgPSBub2RlLmRhdGEuZ2V0KCdhbHQnKTtcbiAgICAgIGNvbnN0IGltYWdlTG9hZGVkID0gbm9kZS5kYXRhLmdldCgnbG9hZGVkJykgIT09IGZhbHNlO1xuICAgICAgY29uc3Qgb25DaGFuZ2UgPSAobmV3VmFsdWVzLCBkb25lKSA9PiB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZSA9IHtcbiAgICAgICAgICAuLi5ub2RlLmRhdGEudG9PYmplY3QoKSxcbiAgICAgICAgICAuLi5uZXdWYWx1ZXMsXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgY2hhbmdlID0gdmFsdWUuY2hhbmdlKCkuc2V0Tm9kZUJ5S2V5KG5vZGUua2V5LCB7IGRhdGE6IHVwZGF0ZSB9KTtcbiAgICAgICAgb25Ub29sYmFyRG9uZShjaGFuZ2UsIGRvbmUpO1xuICAgICAgfTtcblxuICAgICAgY29uc3QgVGIgPSAoKSA9PiAoXG4gICAgICAgIDxJbWFnZVRvb2xiYXJcbiAgICAgICAgICBkaXNhYmxlSW1hZ2VBbGlnbm1lbnRCdXR0b25zPXtvcHRzLmRpc2FibGVJbWFnZUFsaWdubWVudEJ1dHRvbnN9XG4gICAgICAgICAgYWx0PXthbHR9XG4gICAgICAgICAgaW1hZ2VMb2FkZWQ9e2ltYWdlTG9hZGVkfVxuICAgICAgICAgIGFsaWdubWVudD17YWxpZ25tZW50IHx8ICdsZWZ0J31cbiAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIC8+XG4gICAgICApO1xuICAgICAgcmV0dXJuIFRiO1xuICAgIH0sXG4gICAgc2hvd0RvbmU6IHRydWUsXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnaW1hZ2UnLFxuICAgIHRvb2xiYXIsXG4gICAgZGVsZXRlTm9kZTogKGUsIG5vZGUsIHZhbHVlLCBvbkNoYW5nZSkgPT4ge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgaWYgKG9wdHMub25EZWxldGUpIHtcbiAgICAgICAgY29uc3QgdXBkYXRlID0gbm9kZS5kYXRhLm1lcmdlKERhdGEuY3JlYXRlKHsgZGVsZXRlU3RhdHVzOiAncGVuZGluZycgfSkpO1xuXG4gICAgICAgIGxldCBjaGFuZ2UgPSB2YWx1ZS5jaGFuZ2UoKS5zZXROb2RlQnlLZXkobm9kZS5rZXksIHsgZGF0YTogdXBkYXRlIH0pO1xuXG4gICAgICAgIG9uQ2hhbmdlKGNoYW5nZSk7XG4gICAgICAgIG9wdHMub25EZWxldGUobm9kZSwgKGVyciwgdikgPT4ge1xuICAgICAgICAgIGlmICghZXJyKSB7XG4gICAgICAgICAgICBjaGFuZ2UgPSB2LmNoYW5nZSgpLnJlbW92ZU5vZGVCeUtleShub2RlLmtleSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxvZygnW2Vycm9yXTogJywgZXJyKTtcbiAgICAgICAgICAgIGNoYW5nZSA9IHYuY2hhbmdlKCkuc2V0Tm9kZUJ5S2V5KG5vZGUua2V5LCBub2RlLmRhdGEubWVyZ2UoRGF0YS5jcmVhdGUoeyBkZWxldGVTdGF0dXM6ICdmYWlsZWQnIH0pKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG9uQ2hhbmdlKGNoYW5nZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGNoYW5nZSA9IHZhbHVlLmNoYW5nZSgpLnJlbW92ZU5vZGVCeUtleShub2RlLmtleSk7XG4gICAgICAgIG9uQ2hhbmdlKGNoYW5nZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBzdG9wUmVzZXQ6ICh2YWx1ZSkgPT4ge1xuICAgICAgY29uc3QgaW1nUGVuZGluZ0luc2VydGlvbiA9IHZhbHVlLmRvY3VtZW50LmZpbmREZXNjZW5kYW50KChuKSA9PiB7XG4gICAgICAgIGlmIChuLnR5cGUgIT09ICdpbWFnZScpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG4uZGF0YS5nZXQoJ2xvYWRlZCcpID09PSBmYWxzZTtcbiAgICAgIH0pO1xuICAgICAgLyoqIGRvbid0IHJlc2V0IGlmIHRoZXJlIGlzIGFuIGltYWdlIHBlbmRpbmcgaW5zZXJ0aW9uICovXG4gICAgICByZXR1cm4gaW1nUGVuZGluZ0luc2VydGlvbiAhPT0gdW5kZWZpbmVkICYmIGltZ1BlbmRpbmdJbnNlcnRpb24gIT09IG51bGw7XG4gICAgfSxcbiAgICByZW5kZXJOb2RlKHByb3BzKSB7XG4gICAgICBpZiAocHJvcHMubm9kZS50eXBlID09PSAnaW1hZ2UnKSB7XG4gICAgICAgIGNvbnN0IGFsbCA9IE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAge1xuICAgICAgICAgICAgb25EZWxldGU6IG9wdHMub25EZWxldGUsXG4gICAgICAgICAgICBvbkZvY3VzOiBvcHRzLm9uRm9jdXMsXG4gICAgICAgICAgICBvbkJsdXI6IG9wdHMub25CbHVyLFxuICAgICAgICAgICAgbWF4SW1hZ2VXaWR0aDogb3B0cy5tYXhJbWFnZVdpZHRoLFxuICAgICAgICAgICAgbWF4SW1hZ2VIZWlnaHQ6IG9wdHMubWF4SW1hZ2VIZWlnaHQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwcm9wcyxcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIDxJbWFnZUNvbXBvbmVudCB7Li4uYWxsfSAvPjtcbiAgICAgIH1cbiAgICB9LFxuICAgIG5vcm1hbGl6ZU5vZGU6IChub2RlKSA9PiB7XG4gICAgICBjb25zdCB0ZXh0Tm9kZU1hcCA9IHt9O1xuICAgICAgY29uc3QgdXBkYXRlTm9kZXNBcnJheSA9IFtdO1xuICAgICAgbGV0IGluZGV4ID0gMDtcblxuICAgICAgaWYgKG5vZGUub2JqZWN0ICE9PSAnZG9jdW1lbnQnKSByZXR1cm47XG5cbiAgICAgIG5vZGUuZmluZERlc2NlbmRhbnQoKGQpID0+IHtcbiAgICAgICAgaWYgKGQub2JqZWN0ID09PSAndGV4dCcpIHtcbiAgICAgICAgICB0ZXh0Tm9kZU1hcFtpbmRleF0gPSBkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGQudHlwZSA9PT0gJ2ltYWdlJykge1xuICAgICAgICAgIGlmIChpbmRleCA+IDAgJiYgdGV4dE5vZGVNYXBbaW5kZXggLSAxXSAmJiB0ZXh0Tm9kZU1hcFtpbmRleCAtIDFdLnRleHQgPT09ICcnKSB7XG4gICAgICAgICAgICB1cGRhdGVOb2Rlc0FycmF5LnB1c2godGV4dE5vZGVNYXBbaW5kZXggLSAxXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaW5kZXgrKztcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIXVwZGF0ZU5vZGVzQXJyYXkubGVuZ3RoKSByZXR1cm47XG5cbiAgICAgIHJldHVybiAoY2hhbmdlKSA9PiB7XG4gICAgICAgIGNoYW5nZS53aXRob3V0Tm9ybWFsaXphdGlvbigoKSA9PiB7XG4gICAgICAgICAgdXBkYXRlTm9kZXNBcnJheS5mb3JFYWNoKChuKSA9PiBjaGFuZ2UuaW5zZXJ0VGV4dEJ5S2V5KG4ua2V5LCAwLCAnICcpKTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBzZXJpYWxpemF0aW9uID0ge1xuICBkZXNlcmlhbGl6ZShlbCAvKiwgbmV4dCovKSB7XG4gICAgY29uc3QgbmFtZSA9IGVsLnRhZ05hbWUudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAobmFtZSAhPT0gJ2ltZycpIHJldHVybjtcblxuICAgIGxvZygnZGVzZXJpYWxpemU6ICcsIG5hbWUpO1xuICAgIGNvbnN0IHN0eWxlID0gZWwuc3R5bGUgfHwgeyB3aWR0aDogJycsIGhlaWdodDogJycsIG1hcmdpbjogJycsIGp1c3RpZnlDb250ZW50OiAnJyB9O1xuICAgIGNvbnN0IHdpZHRoID0gcGFyc2VJbnQoc3R5bGUud2lkdGgucmVwbGFjZSgncHgnLCAnJyksIDEwKSB8fCBudWxsO1xuICAgIGNvbnN0IGhlaWdodCA9IHBhcnNlSW50KHN0eWxlLmhlaWdodC5yZXBsYWNlKCdweCcsICcnKSwgMTApIHx8IG51bGw7XG5cbiAgICBjb25zdCBvdXQgPSB7XG4gICAgICBvYmplY3Q6ICdpbmxpbmUnLFxuICAgICAgdHlwZTogJ2ltYWdlJyxcbiAgICAgIGlzVm9pZDogdHJ1ZSxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgc3JjOiBlbC5nZXRBdHRyaWJ1dGUoJ3NyYycpLFxuICAgICAgICB3aWR0aCxcbiAgICAgICAgaGVpZ2h0LFxuICAgICAgICBtYXJnaW46IGVsLnN0eWxlLm1hcmdpbixcbiAgICAgICAganVzdGlmeUNvbnRlbnQ6IGVsLnN0eWxlLmp1c3RpZnlDb250ZW50LFxuICAgICAgICBhbGlnbm1lbnQ6IGVsLmdldEF0dHJpYnV0ZSgnYWxpZ25tZW50JyksXG4gICAgICAgIGFsdDogZWwuZ2V0QXR0cmlidXRlKCdhbHQnKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgICBsb2coJ3JldHVybiBvYmplY3Q6ICcsIG91dCk7XG4gICAgcmV0dXJuIG91dDtcbiAgfSxcbiAgc2VyaWFsaXplKG9iamVjdCAvKiwgY2hpbGRyZW4qLykge1xuICAgIGlmIChvYmplY3QudHlwZSAhPT0gJ2ltYWdlJykgcmV0dXJuO1xuXG4gICAgY29uc3QgeyBkYXRhIH0gPSBvYmplY3Q7XG4gICAgY29uc3Qgc3JjID0gZGF0YS5nZXQoJ3NyYycpO1xuICAgIGNvbnN0IHdpZHRoID0gZGF0YS5nZXQoJ3dpZHRoJyk7XG4gICAgY29uc3QgaGVpZ2h0ID0gZGF0YS5nZXQoJ2hlaWdodCcpO1xuICAgIGNvbnN0IGFsaWdubWVudCA9IGRhdGEuZ2V0KCdhbGlnbm1lbnQnKSB8fCAnbGVmdCc7XG4gICAgY29uc3QgbWFyZ2luID0gZGF0YS5nZXQoJ21hcmdpbicpO1xuICAgIGNvbnN0IGp1c3RpZnlDb250ZW50ID0gZGF0YS5nZXQoJ21hcmdpbicpO1xuICAgIGNvbnN0IGFsdCA9IGRhdGEuZ2V0KCdhbHQnKTtcbiAgICBjb25zdCBzdHlsZSA9IHt9O1xuICAgIGlmICh3aWR0aCkge1xuICAgICAgc3R5bGUud2lkdGggPSBgJHt3aWR0aH1weGA7XG4gICAgfVxuXG4gICAgaWYgKGhlaWdodCkge1xuICAgICAgc3R5bGUuaGVpZ2h0ID0gYCR7aGVpZ2h0fXB4YDtcbiAgICB9XG5cbiAgICBzdHlsZS5tYXJnaW4gPSBtYXJnaW47XG4gICAgc3R5bGUuanVzdGlmeUNvbnRlbnQgPSBqdXN0aWZ5Q29udGVudDtcblxuICAgIGlmIChhbGlnbm1lbnQpIHtcbiAgICAgIHN3aXRjaCAoYWxpZ25tZW50KSB7XG4gICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgIHN0eWxlLmp1c3RpZnlDb250ZW50ID0gJ2ZsZXgtc3RhcnQnO1xuICAgICAgICAgIHN0eWxlLm1hcmdpbiA9ICcwJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnY2VudGVyJzpcbiAgICAgICAgICBzdHlsZS5qdXN0aWZ5Q29udGVudCA9ICdjZW50ZXInO1xuICAgICAgICAgIHN0eWxlLm1hcmdpbiA9ICcwIGF1dG8nO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgc3R5bGUuanVzdGlmeUNvbnRlbnQgPSAnZmxleC1lbmQnO1xuICAgICAgICAgIHN0eWxlLm1hcmdpbiA9ICdhdXRvIDAgMCBhdXRvJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBzdHlsZS5qdXN0aWZ5Q29udGVudCA9ICdmbGV4LXN0YXJ0JztcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzdHlsZS5vYmplY3RGaXQgPSAnY29udGFpbic7XG5cbiAgICBjb25zdCBwcm9wcyA9IHtcbiAgICAgIHNyYyxcbiAgICAgIHN0eWxlLFxuICAgICAgYWxpZ25tZW50LFxuICAgICAgYWx0LFxuICAgIH07XG5cbiAgICByZXR1cm4gPGltZyB7Li4ucHJvcHN9IC8+O1xuICB9LFxufTtcbiJdfQ==
|
|
@@ -0,0 +1,117 @@
|
|
|
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 _slate = require("slate");
|
|
15
|
+
|
|
16
|
+
var _debug = _interopRequireDefault(require("debug"));
|
|
17
|
+
|
|
18
|
+
var log = (0, _debug["default"])('@pie-lib:editable-html:image:insert-image-handler');
|
|
19
|
+
/**
|
|
20
|
+
* Handles user selection, insertion (or cancellation) of an image into the editor.
|
|
21
|
+
* @param {Block} placeholderBlock - a block that has been added to the editor as a place holder for the image
|
|
22
|
+
* @param {Function} onFinish - a function to call if uploading fails or succeeds
|
|
23
|
+
* @param {Function} getValue - a function to return the value of the editor
|
|
24
|
+
* @param {Function} onChange - callback to notify changes applied by the handler
|
|
25
|
+
* @param {Boolean} isPasted - a boolean that keeps track if the file is pasted
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
var InsertImageHandler = /*#__PURE__*/function () {
|
|
29
|
+
function InsertImageHandler(editor, onFinish) {
|
|
30
|
+
var isPasted = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
31
|
+
(0, _classCallCheck2["default"])(this, InsertImageHandler);
|
|
32
|
+
this.editor = editor;
|
|
33
|
+
this.onFinish = onFinish;
|
|
34
|
+
this.isPasted = isPasted;
|
|
35
|
+
this.chosenFile = null;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
(0, _createClass2["default"])(InsertImageHandler, [{
|
|
39
|
+
key: "cancel",
|
|
40
|
+
value: function cancel() {
|
|
41
|
+
log('insert cancelled');
|
|
42
|
+
|
|
43
|
+
try {
|
|
44
|
+
this.editor.commands.deleteNode('imageUploadNode');
|
|
45
|
+
this.onFinish(false);
|
|
46
|
+
} catch (err) {//
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}, {
|
|
50
|
+
key: "done",
|
|
51
|
+
value: function done(err, src) {
|
|
52
|
+
log('done: err:', err);
|
|
53
|
+
|
|
54
|
+
if (err) {
|
|
55
|
+
//eslint-disable-next-line
|
|
56
|
+
console.log(err);
|
|
57
|
+
this.onFinish(false);
|
|
58
|
+
} else {
|
|
59
|
+
this.editor.commands.updateAttributes('imageUploadNode', {
|
|
60
|
+
loaded: true,
|
|
61
|
+
src: src,
|
|
62
|
+
percent: 100
|
|
63
|
+
});
|
|
64
|
+
this.onFinish(true);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Notify handler that the user chose a file - will create a change with a preview in the editor.
|
|
69
|
+
*
|
|
70
|
+
* @param {File} file - the file that the user chose using a file input.
|
|
71
|
+
*/
|
|
72
|
+
|
|
73
|
+
}, {
|
|
74
|
+
key: "fileChosen",
|
|
75
|
+
value: function fileChosen(file) {
|
|
76
|
+
var _this = this;
|
|
77
|
+
|
|
78
|
+
if (!file) {
|
|
79
|
+
return;
|
|
80
|
+
} // Save the chosen file to this.chosenFile
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
this.chosenFile = file;
|
|
84
|
+
log('[fileChosen] file: ', file);
|
|
85
|
+
var reader = new FileReader();
|
|
86
|
+
|
|
87
|
+
reader.onload = function () {
|
|
88
|
+
var dataURL = reader.result;
|
|
89
|
+
|
|
90
|
+
_this.editor.commands.updateAttributes('imageUploadNode', {
|
|
91
|
+
src: dataURL
|
|
92
|
+
});
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
reader.readAsDataURL(file);
|
|
96
|
+
}
|
|
97
|
+
}, {
|
|
98
|
+
key: "progress",
|
|
99
|
+
value: function progress(percent, bytes, total) {
|
|
100
|
+
log('progress: ', percent, bytes, total);
|
|
101
|
+
this.editor.commands.updateAttributes('imageUploadNode', {
|
|
102
|
+
percent: percent
|
|
103
|
+
});
|
|
104
|
+
} // Add a getter method to retrieve the chosen file
|
|
105
|
+
|
|
106
|
+
}, {
|
|
107
|
+
key: "getChosenFile",
|
|
108
|
+
value: function getChosenFile() {
|
|
109
|
+
return this.chosenFile;
|
|
110
|
+
}
|
|
111
|
+
}]);
|
|
112
|
+
return InsertImageHandler;
|
|
113
|
+
}();
|
|
114
|
+
|
|
115
|
+
var _default = InsertImageHandler;
|
|
116
|
+
exports["default"] = _default;
|
|
117
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wbHVnaW5zL2ltYWdlL2luc2VydC1pbWFnZS1oYW5kbGVyLmpzIl0sIm5hbWVzIjpbImxvZyIsIkluc2VydEltYWdlSGFuZGxlciIsImVkaXRvciIsIm9uRmluaXNoIiwiaXNQYXN0ZWQiLCJjaG9zZW5GaWxlIiwiY29tbWFuZHMiLCJkZWxldGVOb2RlIiwiZXJyIiwic3JjIiwiY29uc29sZSIsInVwZGF0ZUF0dHJpYnV0ZXMiLCJsb2FkZWQiLCJwZXJjZW50IiwiZmlsZSIsInJlYWRlciIsIkZpbGVSZWFkZXIiLCJvbmxvYWQiLCJkYXRhVVJMIiwicmVzdWx0IiwicmVhZEFzRGF0YVVSTCIsImJ5dGVzIiwidG90YWwiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQSxJQUFNQSxHQUFHLEdBQUcsdUJBQU0sbURBQU4sQ0FBWjtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0lBQ01DLGtCO0FBQ0osOEJBQVlDLE1BQVosRUFBb0JDLFFBQXBCLEVBQWdEO0FBQUEsUUFBbEJDLFFBQWtCLHVFQUFQLEtBQU87QUFBQTtBQUM5QyxTQUFLRixNQUFMLEdBQWNBLE1BQWQ7QUFDQSxTQUFLQyxRQUFMLEdBQWdCQSxRQUFoQjtBQUNBLFNBQUtDLFFBQUwsR0FBZ0JBLFFBQWhCO0FBQ0EsU0FBS0MsVUFBTCxHQUFrQixJQUFsQjtBQUNEOzs7O1dBRUQsa0JBQVM7QUFDUEwsTUFBQUEsR0FBRyxDQUFDLGtCQUFELENBQUg7O0FBRUEsVUFBSTtBQUNGLGFBQUtFLE1BQUwsQ0FBWUksUUFBWixDQUFxQkMsVUFBckIsQ0FBZ0MsaUJBQWhDO0FBQ0EsYUFBS0osUUFBTCxDQUFjLEtBQWQ7QUFDRCxPQUhELENBR0UsT0FBT0ssR0FBUCxFQUFZLENBQ1o7QUFDRDtBQUNGOzs7V0FFRCxjQUFLQSxHQUFMLEVBQVVDLEdBQVYsRUFBZTtBQUNiVCxNQUFBQSxHQUFHLENBQUMsWUFBRCxFQUFlUSxHQUFmLENBQUg7O0FBQ0EsVUFBSUEsR0FBSixFQUFTO0FBQ1A7QUFDQUUsUUFBQUEsT0FBTyxDQUFDVixHQUFSLENBQVlRLEdBQVo7QUFDQSxhQUFLTCxRQUFMLENBQWMsS0FBZDtBQUNELE9BSkQsTUFJTztBQUNMLGFBQUtELE1BQUwsQ0FBWUksUUFBWixDQUFxQkssZ0JBQXJCLENBQXNDLGlCQUF0QyxFQUF5RDtBQUFFQyxVQUFBQSxNQUFNLEVBQUUsSUFBVjtBQUFnQkgsVUFBQUEsR0FBRyxFQUFIQSxHQUFoQjtBQUFxQkksVUFBQUEsT0FBTyxFQUFFO0FBQTlCLFNBQXpEO0FBQ0EsYUFBS1YsUUFBTCxDQUFjLElBQWQ7QUFDRDtBQUNGO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTs7OztXQUNFLG9CQUFXVyxJQUFYLEVBQWlCO0FBQUE7O0FBQ2YsVUFBSSxDQUFDQSxJQUFMLEVBQVc7QUFDVDtBQUNELE9BSGMsQ0FLZjs7O0FBQ0EsV0FBS1QsVUFBTCxHQUFrQlMsSUFBbEI7QUFFQWQsTUFBQUEsR0FBRyxDQUFDLHFCQUFELEVBQXdCYyxJQUF4QixDQUFIO0FBQ0EsVUFBTUMsTUFBTSxHQUFHLElBQUlDLFVBQUosRUFBZjs7QUFDQUQsTUFBQUEsTUFBTSxDQUFDRSxNQUFQLEdBQWdCLFlBQU07QUFDcEIsWUFBTUMsT0FBTyxHQUFHSCxNQUFNLENBQUNJLE1BQXZCOztBQUVBLFFBQUEsS0FBSSxDQUFDakIsTUFBTCxDQUFZSSxRQUFaLENBQXFCSyxnQkFBckIsQ0FBc0MsaUJBQXRDLEVBQXlEO0FBQUVGLFVBQUFBLEdBQUcsRUFBRVM7QUFBUCxTQUF6RDtBQUNELE9BSkQ7O0FBS0FILE1BQUFBLE1BQU0sQ0FBQ0ssYUFBUCxDQUFxQk4sSUFBckI7QUFDRDs7O1dBRUQsa0JBQVNELE9BQVQsRUFBa0JRLEtBQWxCLEVBQXlCQyxLQUF6QixFQUFnQztBQUM5QnRCLE1BQUFBLEdBQUcsQ0FBQyxZQUFELEVBQWVhLE9BQWYsRUFBd0JRLEtBQXhCLEVBQStCQyxLQUEvQixDQUFIO0FBQ0EsV0FBS3BCLE1BQUwsQ0FBWUksUUFBWixDQUFxQkssZ0JBQXJCLENBQXNDLGlCQUF0QyxFQUF5RDtBQUFFRSxRQUFBQSxPQUFPLEVBQVBBO0FBQUYsT0FBekQ7QUFDRCxLLENBRUQ7Ozs7V0FDQSx5QkFBZ0I7QUFDZCxhQUFPLEtBQUtSLFVBQVo7QUFDRDs7Ozs7ZUFHWUosa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRhIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcblxuY29uc3QgbG9nID0gZGVidWcoJ0BwaWUtbGliOmVkaXRhYmxlLWh0bWw6aW1hZ2U6aW5zZXJ0LWltYWdlLWhhbmRsZXInKTtcblxuLyoqXG4gKiBIYW5kbGVzIHVzZXIgc2VsZWN0aW9uLCBpbnNlcnRpb24gKG9yIGNhbmNlbGxhdGlvbikgb2YgYW4gaW1hZ2UgaW50byB0aGUgZWRpdG9yLlxuICogQHBhcmFtIHtCbG9ja30gcGxhY2Vob2xkZXJCbG9jayAtIGEgYmxvY2sgdGhhdCBoYXMgYmVlbiBhZGRlZCB0byB0aGUgZWRpdG9yIGFzIGEgcGxhY2UgaG9sZGVyIGZvciB0aGUgaW1hZ2VcbiAqIEBwYXJhbSB7RnVuY3Rpb259IG9uRmluaXNoIC0gYSBmdW5jdGlvbiB0byBjYWxsIGlmIHVwbG9hZGluZyBmYWlscyBvciBzdWNjZWVkc1xuICogQHBhcmFtIHtGdW5jdGlvbn0gZ2V0VmFsdWUgLSBhIGZ1bmN0aW9uIHRvIHJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGVkaXRvclxuICogQHBhcmFtIHtGdW5jdGlvbn0gb25DaGFuZ2UgLSBjYWxsYmFjayB0byBub3RpZnkgY2hhbmdlcyBhcHBsaWVkIGJ5IHRoZSBoYW5kbGVyXG4gKiBAcGFyYW0ge0Jvb2xlYW59IGlzUGFzdGVkIC0gYSBib29sZWFuIHRoYXQga2VlcHMgdHJhY2sgaWYgdGhlIGZpbGUgaXMgcGFzdGVkXG4gKi9cbmNsYXNzIEluc2VydEltYWdlSGFuZGxlciB7XG4gIGNvbnN0cnVjdG9yKGVkaXRvciwgb25GaW5pc2gsIGlzUGFzdGVkID0gZmFsc2UpIHtcbiAgICB0aGlzLmVkaXRvciA9IGVkaXRvcjtcbiAgICB0aGlzLm9uRmluaXNoID0gb25GaW5pc2g7XG4gICAgdGhpcy5pc1Bhc3RlZCA9IGlzUGFzdGVkO1xuICAgIHRoaXMuY2hvc2VuRmlsZSA9IG51bGw7XG4gIH1cblxuICBjYW5jZWwoKSB7XG4gICAgbG9nKCdpbnNlcnQgY2FuY2VsbGVkJyk7XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5lZGl0b3IuY29tbWFuZHMuZGVsZXRlTm9kZSgnaW1hZ2VVcGxvYWROb2RlJyk7XG4gICAgICB0aGlzLm9uRmluaXNoKGZhbHNlKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vXG4gICAgfVxuICB9XG5cbiAgZG9uZShlcnIsIHNyYykge1xuICAgIGxvZygnZG9uZTogZXJyOicsIGVycik7XG4gICAgaWYgKGVycikge1xuICAgICAgLy9lc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICB0aGlzLm9uRmluaXNoKGZhbHNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lZGl0b3IuY29tbWFuZHMudXBkYXRlQXR0cmlidXRlcygnaW1hZ2VVcGxvYWROb2RlJywgeyBsb2FkZWQ6IHRydWUsIHNyYywgcGVyY2VudDogMTAwIH0pO1xuICAgICAgdGhpcy5vbkZpbmlzaCh0cnVlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTm90aWZ5IGhhbmRsZXIgdGhhdCB0aGUgdXNlciBjaG9zZSBhIGZpbGUgLSB3aWxsIGNyZWF0ZSBhIGNoYW5nZSB3aXRoIGEgcHJldmlldyBpbiB0aGUgZWRpdG9yLlxuICAgKlxuICAgKiBAcGFyYW0ge0ZpbGV9IGZpbGUgLSB0aGUgZmlsZSB0aGF0IHRoZSB1c2VyIGNob3NlIHVzaW5nIGEgZmlsZSBpbnB1dC5cbiAgICovXG4gIGZpbGVDaG9zZW4oZmlsZSkge1xuICAgIGlmICghZmlsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFNhdmUgdGhlIGNob3NlbiBmaWxlIHRvIHRoaXMuY2hvc2VuRmlsZVxuICAgIHRoaXMuY2hvc2VuRmlsZSA9IGZpbGU7XG5cbiAgICBsb2coJ1tmaWxlQ2hvc2VuXSBmaWxlOiAnLCBmaWxlKTtcbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhVVJMID0gcmVhZGVyLnJlc3VsdDtcblxuICAgICAgdGhpcy5lZGl0b3IuY29tbWFuZHMudXBkYXRlQXR0cmlidXRlcygnaW1hZ2VVcGxvYWROb2RlJywgeyBzcmM6IGRhdGFVUkwgfSk7XG4gICAgfTtcbiAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcbiAgfVxuXG4gIHByb2dyZXNzKHBlcmNlbnQsIGJ5dGVzLCB0b3RhbCkge1xuICAgIGxvZygncHJvZ3Jlc3M6ICcsIHBlcmNlbnQsIGJ5dGVzLCB0b3RhbCk7XG4gICAgdGhpcy5lZGl0b3IuY29tbWFuZHMudXBkYXRlQXR0cmlidXRlcygnaW1hZ2VVcGxvYWROb2RlJywgeyBwZXJjZW50IH0pO1xuICB9XG5cbiAgLy8gQWRkIGEgZ2V0dGVyIG1ldGhvZCB0byByZXRyaWV2ZSB0aGUgY2hvc2VuIGZpbGVcbiAgZ2V0Q2hvc2VuRmlsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5jaG9zZW5GaWxlO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEluc2VydEltYWdlSGFuZGxlcjtcbiJdfQ==
|