@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,112 @@
|
|
|
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"] = MediaNodeView;
|
|
9
|
+
exports.insertDialog = void 0;
|
|
10
|
+
|
|
11
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
12
|
+
|
|
13
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
14
|
+
|
|
15
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
16
|
+
|
|
17
|
+
var _react = _interopRequireDefault(require("react"));
|
|
18
|
+
|
|
19
|
+
var _react2 = require("@tiptap/react");
|
|
20
|
+
|
|
21
|
+
var _mediaToolbar = _interopRequireDefault(require("../plugins/media/media-toolbar"));
|
|
22
|
+
|
|
23
|
+
var _mediaDialog = require("../plugins/media/media-dialog");
|
|
24
|
+
|
|
25
|
+
var _reactDom = _interopRequireDefault(require("react-dom"));
|
|
26
|
+
|
|
27
|
+
var _excluded = ["type", "callback", "opts"];
|
|
28
|
+
|
|
29
|
+
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; }
|
|
30
|
+
|
|
31
|
+
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; }
|
|
32
|
+
|
|
33
|
+
var removeDialogs = function removeDialogs() {
|
|
34
|
+
var prevDialogs = document.querySelectorAll('.insert-media-dialog');
|
|
35
|
+
prevDialogs.forEach(function (s) {
|
|
36
|
+
return s.remove();
|
|
37
|
+
});
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
var insertDialog = function insertDialog(props) {
|
|
41
|
+
var newEl = document.createElement('div');
|
|
42
|
+
var type = props.type,
|
|
43
|
+
callback = props.callback,
|
|
44
|
+
opts = props.opts,
|
|
45
|
+
rest = (0, _objectWithoutProperties2["default"])(props, _excluded);
|
|
46
|
+
var initialBodyOverflow = document.body.style.overflow;
|
|
47
|
+
removeDialogs();
|
|
48
|
+
newEl.className = 'insert-media-dialog';
|
|
49
|
+
document.body.style.overflow = 'hidden';
|
|
50
|
+
|
|
51
|
+
var handleClose = function handleClose(val, data) {
|
|
52
|
+
callback(val, data);
|
|
53
|
+
newEl.remove();
|
|
54
|
+
document.body.style.overflow = initialBodyOverflow;
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
var el = /*#__PURE__*/_react["default"].createElement(_mediaDialog.MediaDialog, (0, _extends2["default"])({}, rest, {
|
|
58
|
+
uploadSoundSupport: opts.uploadSoundSupport,
|
|
59
|
+
type: type,
|
|
60
|
+
disablePortal: true,
|
|
61
|
+
open: true,
|
|
62
|
+
handleClose: handleClose
|
|
63
|
+
}));
|
|
64
|
+
|
|
65
|
+
_reactDom["default"].render(el, newEl);
|
|
66
|
+
|
|
67
|
+
document.body.appendChild(newEl);
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
exports.insertDialog = insertDialog;
|
|
71
|
+
|
|
72
|
+
function MediaNodeView(_ref) {
|
|
73
|
+
var node = _ref.node,
|
|
74
|
+
updateAttributes = _ref.updateAttributes,
|
|
75
|
+
deleteNode = _ref.deleteNode;
|
|
76
|
+
var _node$attrs = node.attrs,
|
|
77
|
+
type = _node$attrs.type,
|
|
78
|
+
src = _node$attrs.src,
|
|
79
|
+
width = _node$attrs.width,
|
|
80
|
+
height = _node$attrs.height,
|
|
81
|
+
tag = _node$attrs.tag;
|
|
82
|
+
|
|
83
|
+
var handleEdit = function handleEdit() {
|
|
84
|
+
insertDialog(_objectSpread(_objectSpread({}, node.attrs), {}, {
|
|
85
|
+
edit: true,
|
|
86
|
+
callback: function callback(val, data) {
|
|
87
|
+
if (val) updateAttributes(data);
|
|
88
|
+
}
|
|
89
|
+
}));
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
return /*#__PURE__*/_react["default"].createElement(_react2.NodeViewWrapper, {
|
|
93
|
+
"data-type": type,
|
|
94
|
+
style: {
|
|
95
|
+
width: width,
|
|
96
|
+
height: height
|
|
97
|
+
}
|
|
98
|
+
}, tag === 'audio' ? /*#__PURE__*/_react["default"].createElement("audio", {
|
|
99
|
+
controls: true,
|
|
100
|
+
controlsList: "nodownload"
|
|
101
|
+
}, /*#__PURE__*/_react["default"].createElement("source", {
|
|
102
|
+
src: src
|
|
103
|
+
})) : /*#__PURE__*/_react["default"].createElement("iframe", {
|
|
104
|
+
src: src,
|
|
105
|
+
allowFullScreen: true,
|
|
106
|
+
frameBorder: "0"
|
|
107
|
+
}), /*#__PURE__*/_react["default"].createElement(_mediaToolbar["default"], {
|
|
108
|
+
onEdit: handleEdit,
|
|
109
|
+
onRemove: deleteNode
|
|
110
|
+
}));
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9leHRlbnNpb25zL01lZGlhVmlldy5qcyJdLCJuYW1lcyI6WyJyZW1vdmVEaWFsb2dzIiwicHJldkRpYWxvZ3MiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJmb3JFYWNoIiwicyIsInJlbW92ZSIsImluc2VydERpYWxvZyIsInByb3BzIiwibmV3RWwiLCJjcmVhdGVFbGVtZW50IiwidHlwZSIsImNhbGxiYWNrIiwib3B0cyIsInJlc3QiLCJpbml0aWFsQm9keU92ZXJmbG93IiwiYm9keSIsInN0eWxlIiwib3ZlcmZsb3ciLCJjbGFzc05hbWUiLCJoYW5kbGVDbG9zZSIsInZhbCIsImRhdGEiLCJlbCIsInVwbG9hZFNvdW5kU3VwcG9ydCIsIlJlYWN0RE9NIiwicmVuZGVyIiwiYXBwZW5kQ2hpbGQiLCJNZWRpYU5vZGVWaWV3Iiwibm9kZSIsInVwZGF0ZUF0dHJpYnV0ZXMiLCJkZWxldGVOb2RlIiwiYXR0cnMiLCJzcmMiLCJ3aWR0aCIsImhlaWdodCIsInRhZyIsImhhbmRsZUVkaXQiLCJlZGl0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7O0FBRUEsSUFBTUEsYUFBYSxHQUFHLFNBQWhCQSxhQUFnQixHQUFNO0FBQzFCLE1BQU1DLFdBQVcsR0FBR0MsUUFBUSxDQUFDQyxnQkFBVCxDQUEwQixzQkFBMUIsQ0FBcEI7QUFFQUYsRUFBQUEsV0FBVyxDQUFDRyxPQUFaLENBQW9CLFVBQUNDLENBQUQ7QUFBQSxXQUFPQSxDQUFDLENBQUNDLE1BQUYsRUFBUDtBQUFBLEdBQXBCO0FBQ0QsQ0FKRDs7QUFNTyxJQUFNQyxZQUFZLEdBQUcsU0FBZkEsWUFBZSxDQUFDQyxLQUFELEVBQVc7QUFDckMsTUFBTUMsS0FBSyxHQUFHUCxRQUFRLENBQUNRLGFBQVQsQ0FBdUIsS0FBdkIsQ0FBZDtBQUNBLE1BQVFDLElBQVIsR0FBMENILEtBQTFDLENBQVFHLElBQVI7QUFB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XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgTm9kZVZpZXdXcmFwcGVyIH0gZnJvbSAnQHRpcHRhcC9yZWFjdCc7XG5pbXBvcnQgTWVkaWFUb29sYmFyIGZyb20gJy4uL3BsdWdpbnMvbWVkaWEvbWVkaWEtdG9vbGJhcic7XG5pbXBvcnQgeyBNZWRpYURpYWxvZyB9IGZyb20gXCIuLi9wbHVnaW5zL21lZGlhL21lZGlhLWRpYWxvZ1wiO1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gXCJyZWFjdC1kb21cIjtcblxuY29uc3QgcmVtb3ZlRGlhbG9ncyA9ICgpID0+IHtcbiAgY29uc3QgcHJldkRpYWxvZ3MgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuaW5zZXJ0LW1lZGlhLWRpYWxvZycpO1xuXG4gIHByZXZEaWFsb2dzLmZvckVhY2goKHMpID0+IHMucmVtb3ZlKCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGluc2VydERpYWxvZyA9IChwcm9wcykgPT4ge1xuICBjb25zdCBuZXdFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBjb25zdCB7IHR5cGUsIGNhbGxiYWNrLCBvcHRzLCAuLi5yZXN0IH0gPSBwcm9wcztcbiAgY29uc3QgaW5pdGlhbEJvZHlPdmVyZmxvdyA9IGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3c7XG5cbiAgcmVtb3ZlRGlhbG9ncygpO1xuXG4gIG5ld0VsLmNsYXNzTmFtZSA9ICdpbnNlcnQtbWVkaWEtZGlhbG9nJztcbiAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuXG4gIGNvbnN0IGhhbmRsZUNsb3NlID0gKHZhbCwgZGF0YSkgPT4ge1xuICAgIGNhbGxiYWNrKHZhbCwgZGF0YSk7XG4gICAgbmV3RWwucmVtb3ZlKCk7XG4gICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9IGluaXRpYWxCb2R5T3ZlcmZsb3c7XG4gIH07XG5cbiAgY29uc3QgZWwgPSAoXG4gICAgPE1lZGlhRGlhbG9nXG4gICAgICB7Li4ucmVzdH1cbiAgICAgIHVwbG9hZFNvdW5kU3VwcG9ydD17b3B0cy51cGxvYWRTb3VuZFN1cHBvcnR9XG4gICAgICB0eXBlPXt0eXBlfVxuICAgICAgZGlzYWJsZVBvcnRhbD17dHJ1ZX1cbiAgICAgIG9wZW49e3RydWV9XG4gICAgICBoYW5kbGVDbG9zZT17aGFuZGxlQ2xvc2V9XG4gICAgLz5cbiAgKTtcblxuICBSZWFjdERPTS5yZW5kZXIoZWwsIG5ld0VsKTtcblxuICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG5ld0VsKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1lZGlhTm9kZVZpZXcoeyBub2RlLCB1cGRhdGVBdHRyaWJ1dGVzLCBkZWxldGVOb2RlIH0pIHtcbiAgY29uc3QgeyB0eXBlLCBzcmMsIHdpZHRoLCBoZWlnaHQsIHRhZyB9ID0gbm9kZS5hdHRycztcblxuICBjb25zdCBoYW5kbGVFZGl0ID0gKCkgPT4ge1xuICAgIGluc2VydERpYWxvZyh7XG4gICAgICAuLi5ub2RlLmF0dHJzLFxuICAgICAgZWRpdDogdHJ1ZSxcbiAgICAgIGNhbGxiYWNrOiAodmFsLCBkYXRhKSA9PiB7XG4gICAgICAgIGlmICh2YWwpIHVwZGF0ZUF0dHJpYnV0ZXMoZGF0YSk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPE5vZGVWaWV3V3JhcHBlciBkYXRhLXR5cGU9e3R5cGV9IHN0eWxlPXt7IHdpZHRoLCBoZWlnaHQgfX0+XG4gICAgICB7dGFnID09PSAnYXVkaW8nID8gKFxuICAgICAgICA8YXVkaW8gY29udHJvbHMgY29udHJvbHNMaXN0PVwibm9kb3dubG9hZFwiPlxuICAgICAgICAgIDxzb3VyY2Ugc3JjPXtzcmN9IC8+XG4gICAgICAgIDwvYXVkaW8+XG4gICAgICApIDogKFxuICAgICAgICA8aWZyYW1lIHNyYz17c3JjfSBhbGxvd0Z1bGxTY3JlZW4gZnJhbWVCb3JkZXI9XCIwXCIgLz5cbiAgICAgICl9XG5cbiAgICAgIDxNZWRpYVRvb2xiYXIgb25FZGl0PXtoYW5kbGVFZGl0fSBvblJlbW92ZT17ZGVsZXRlTm9kZX0gLz5cbiAgICA8L05vZGVWaWV3V3JhcHBlcj5cbiAgKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.ExplicitConstructedResponseNode = void 0;
|
|
9
|
+
|
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
|
11
|
+
|
|
12
|
+
var _react2 = require("@tiptap/react");
|
|
13
|
+
|
|
14
|
+
var _explicitConstructedResponse = _interopRequireDefault(require("../plugins/respArea/explicit-constructed-response"));
|
|
15
|
+
|
|
16
|
+
var _dragInTheBlank = _interopRequireDefault(require("../plugins/respArea/drag-in-the-blank"));
|
|
17
|
+
|
|
18
|
+
var _inlineDropdown = _interopRequireDefault(require("../plugins/respArea/inline-dropdown"));
|
|
19
|
+
|
|
20
|
+
// InlineNodes.js
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* ExplicitConstructedResponse Node
|
|
24
|
+
*/
|
|
25
|
+
var ExplicitConstructedResponseNode = _react2.Node.create({
|
|
26
|
+
name: 'explicit_constructed_response',
|
|
27
|
+
group: 'inline',
|
|
28
|
+
inline: true,
|
|
29
|
+
atom: true,
|
|
30
|
+
addAttributes: function addAttributes() {
|
|
31
|
+
return {
|
|
32
|
+
index: {
|
|
33
|
+
"default": null
|
|
34
|
+
},
|
|
35
|
+
value: {
|
|
36
|
+
"default": ''
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
},
|
|
40
|
+
parseHTML: function parseHTML() {
|
|
41
|
+
return [{
|
|
42
|
+
tag: 'span[data-type="explicit_constructed_response"]',
|
|
43
|
+
getAttrs: function getAttrs(el) {
|
|
44
|
+
return {
|
|
45
|
+
index: el.dataset.index,
|
|
46
|
+
value: el.dataset.value
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
}];
|
|
50
|
+
},
|
|
51
|
+
renderHTML: function renderHTML(_ref) {
|
|
52
|
+
var HTMLAttributes = _ref.HTMLAttributes;
|
|
53
|
+
return ['span', {
|
|
54
|
+
'data-type': 'explicit_constructed_response',
|
|
55
|
+
'data-index': HTMLAttributes.index,
|
|
56
|
+
'data-value': HTMLAttributes.value
|
|
57
|
+
}];
|
|
58
|
+
},
|
|
59
|
+
addNodeView: function addNodeView() {
|
|
60
|
+
return (0, _react2.ReactNodeViewRenderer)(_explicitConstructedResponse["default"]);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
exports.ExplicitConstructedResponseNode = ExplicitConstructedResponseNode;
|
|
65
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9leHRlbnNpb25zL2NoYXJhY3RlcnMuanMiXSwibmFtZXMiOlsiRXhwbGljaXRDb25zdHJ1Y3RlZFJlc3BvbnNlTm9kZSIsIk5vZGUiLCJjcmVhdGUiLCJuYW1lIiwiZ3JvdXAiLCJpbmxpbmUiLCJhdG9tIiwiYWRkQXR0cmlidXRlcyIsImluZGV4IiwidmFsdWUiLCJwYXJzZUhUTUwiLCJ0YWciLCJnZXRBdHRycyIsImVsIiwiZGF0YXNldCIsInJlbmRlckhUTUwiLCJIVE1MQXR0cmlidXRlcyIsImFkZE5vZGVWaWV3IiwiRXhwbGljaXRDb25zdHJ1Y3RlZFJlc3BvbnNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFMQTs7QUFPQTtBQUNBO0FBQ0E7QUFDTyxJQUFNQSwrQkFBK0IsR0FBR0MsYUFBS0MsTUFBTCxDQUFZO0FBQ3pEQyxFQUFBQSxJQUFJLEVBQUUsK0JBRG1EO0FBRXpEQyxFQUFBQSxLQUFLLEVBQUUsUUFGa0Q7QUFHekRDLEVBQUFBLE1BQU0sRUFBRSxJQUhpRDtBQUl6REMsRUFBQUEsSUFBSSxFQUFFLElBSm1EO0FBS3pEQyxFQUFBQSxhQUx5RCwyQkFLekM7QUFDZCxXQUFPO0FBQ0xDLE1BQUFBLEtBQUssRUFBRTtBQUFFLG1CQUFTO0FBQVgsT0FERjtBQUVMQyxNQUFBQSxLQUFLLEVBQUU7QUFBRSxtQkFBUztBQUFYO0FBRkYsS0FBUDtBQUlELEdBVndEO0FBV3pEQyxFQUFBQSxTQVh5RCx1QkFXN0M7QUFDVixXQUFPLENBQ0w7QUFDRUMsTUFBQUEsR0FBRyxFQUFFLGlEQURQO0FBRUVDLE1BQUFBLFFBQVEsRUFBRSxrQkFBQ0MsRUFBRDtBQUFBLGVBQVM7QUFDakJMLFVBQUFBLEtBQUssRUFBRUssRUFBRSxDQUFDQyxPQUFILENBQVdOLEtBREQ7QUFFakJDLFVBQUFBLEtBQUssRUFBRUksRUFBRSxDQUFDQyxPQUFILENBQVdMO0FBRkQsU0FBVDtBQUFBO0FBRlosS0FESyxDQUFQO0FBU0QsR0FyQndEO0FBc0J6RE0sRUFBQUEsVUF0QnlELDRCQXNCMUI7QUFBQSxRQUFsQkMsY0FBa0IsUUFBbEJBLGNBQWtCO0FBQzdCLFdBQU8sQ0FDTCxNQURLLEVBRUw7QUFDRSxtQkFBYSwrQkFEZjtBQUVFLG9CQUFjQSxjQUFjLENBQUNSLEtBRi9CO0FBR0Usb0JBQWNRLGNBQWMsQ0FBQ1A7QUFIL0IsS0FGSyxDQUFQO0FBUUQsR0EvQndEO0FBZ0N6RFEsRUFBQUEsV0FoQ3lELHlCQWdDM0M7QUFDWixXQUFPLG1DQUFzQkMsdUNBQXRCLENBQVA7QUFDRDtBQWxDd0QsQ0FBWixDQUF4QyIsInNvdXJjZXNDb250ZW50IjpbIi8vIElubGluZU5vZGVzLmpzXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgTm9kZSwgUmVhY3ROb2RlVmlld1JlbmRlcmVyIH0gZnJvbSAnQHRpcHRhcC9yZWFjdCc7XG5pbXBvcnQgRXhwbGljaXRDb25zdHJ1Y3RlZFJlc3BvbnNlIGZyb20gJy4uL3BsdWdpbnMvcmVzcEFyZWEvZXhwbGljaXQtY29uc3RydWN0ZWQtcmVzcG9uc2UnO1xuaW1wb3J0IERyYWdJblRoZUJsYW5rIGZyb20gJy4uL3BsdWdpbnMvcmVzcEFyZWEvZHJhZy1pbi10aGUtYmxhbmsnO1xuaW1wb3J0IElubGluZURyb3Bkb3duIGZyb20gJy4uL3BsdWdpbnMvcmVzcEFyZWEvaW5saW5lLWRyb3Bkb3duJztcblxuLyoqXG4gKiBFeHBsaWNpdENvbnN0cnVjdGVkUmVzcG9uc2UgTm9kZVxuICovXG5leHBvcnQgY29uc3QgRXhwbGljaXRDb25zdHJ1Y3RlZFJlc3BvbnNlTm9kZSA9IE5vZGUuY3JlYXRlKHtcbiAgbmFtZTogJ2V4cGxpY2l0X2NvbnN0cnVjdGVkX3Jlc3BvbnNlJyxcbiAgZ3JvdXA6ICdpbmxpbmUnLFxuICBpbmxpbmU6IHRydWUsXG4gIGF0b206IHRydWUsXG4gIGFkZEF0dHJpYnV0ZXMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGluZGV4OiB7IGRlZmF1bHQ6IG51bGwgfSxcbiAgICAgIHZhbHVlOiB7IGRlZmF1bHQ6ICcnIH0sXG4gICAgfTtcbiAgfSxcbiAgcGFyc2VIVE1MKCkge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHRhZzogJ3NwYW5bZGF0YS10eXBlPVwiZXhwbGljaXRfY29uc3RydWN0ZWRfcmVzcG9uc2VcIl0nLFxuICAgICAgICBnZXRBdHRyczogKGVsKSA9PiAoe1xuICAgICAgICAgIGluZGV4OiBlbC5kYXRhc2V0LmluZGV4LFxuICAgICAgICAgIHZhbHVlOiBlbC5kYXRhc2V0LnZhbHVlLFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgXTtcbiAgfSxcbiAgcmVuZGVySFRNTCh7IEhUTUxBdHRyaWJ1dGVzIH0pIHtcbiAgICByZXR1cm4gW1xuICAgICAgJ3NwYW4nLFxuICAgICAge1xuICAgICAgICAnZGF0YS10eXBlJzogJ2V4cGxpY2l0X2NvbnN0cnVjdGVkX3Jlc3BvbnNlJyxcbiAgICAgICAgJ2RhdGEtaW5kZXgnOiBIVE1MQXR0cmlidXRlcy5pbmRleCxcbiAgICAgICAgJ2RhdGEtdmFsdWUnOiBIVE1MQXR0cmlidXRlcy52YWx1ZSxcbiAgICAgIH0sXG4gICAgXTtcbiAgfSxcbiAgYWRkTm9kZVZpZXcoKSB7XG4gICAgcmV0dXJuIFJlYWN0Tm9kZVZpZXdSZW5kZXJlcihFeHBsaWNpdENvbnN0cnVjdGVkUmVzcG9uc2UpO1xuICB9LFxufSk7XG4iXX0=
|
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports["default"] = void 0;
|
|
11
|
+
|
|
12
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
13
|
+
|
|
14
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
|
+
|
|
16
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
17
|
+
|
|
18
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
19
|
+
|
|
20
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
21
|
+
|
|
22
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
23
|
+
|
|
24
|
+
var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
|
|
25
|
+
|
|
26
|
+
var _debug = _interopRequireDefault(require("debug"));
|
|
27
|
+
|
|
28
|
+
var _LinearProgress = _interopRequireDefault(require("@material-ui/core/LinearProgress"));
|
|
29
|
+
|
|
30
|
+
var _styles = require("@material-ui/core/styles");
|
|
31
|
+
|
|
32
|
+
var _react2 = require("@tiptap/react");
|
|
33
|
+
|
|
34
|
+
var _insertImageHandler = _interopRequireDefault(require("../plugins/image/insert-image-handler"));
|
|
35
|
+
|
|
36
|
+
var _imageToolbar = _interopRequireDefault(require("../plugins/image/image-toolbar"));
|
|
37
|
+
|
|
38
|
+
var _customToolbarWrapper = _interopRequireDefault(require("./custom-toolbar-wrapper"));
|
|
39
|
+
|
|
40
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
41
|
+
|
|
42
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
43
|
+
|
|
44
|
+
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; }
|
|
45
|
+
|
|
46
|
+
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; }
|
|
47
|
+
|
|
48
|
+
var log = (0, _debug["default"])('@pie-lib:editable-html:plugins:image:component');
|
|
49
|
+
|
|
50
|
+
var sizePx = function sizePx(s) {
|
|
51
|
+
return s ? "".concat(s, "px") : 'calc(20px)';
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
function ImageComponent(props) {
|
|
55
|
+
var node = props.node,
|
|
56
|
+
editor = props.editor,
|
|
57
|
+
classes = props.classes,
|
|
58
|
+
attributes = props.attributes,
|
|
59
|
+
onFocus = props.onFocus,
|
|
60
|
+
selected = props.selected,
|
|
61
|
+
options = props.options,
|
|
62
|
+
_props$maxImageWidth = props.maxImageWidth,
|
|
63
|
+
maxImageWidth = _props$maxImageWidth === void 0 ? 700 : _props$maxImageWidth,
|
|
64
|
+
_props$maxImageHeight = props.maxImageHeight,
|
|
65
|
+
maxImageHeight = _props$maxImageHeight === void 0 ? 900 : _props$maxImageHeight,
|
|
66
|
+
latex = props.latex,
|
|
67
|
+
handleChange = props.handleChange,
|
|
68
|
+
handleDone = props.handleDone;
|
|
69
|
+
var alt = node.attrs.alt;
|
|
70
|
+
|
|
71
|
+
var _useState = (0, _react.useState)(false),
|
|
72
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
73
|
+
showToolbar = _useState2[0],
|
|
74
|
+
setShowToolbar = _useState2[1];
|
|
75
|
+
|
|
76
|
+
var imgRef = (0, _react.useRef)(null);
|
|
77
|
+
var resizeRef = (0, _react.useRef)(null);
|
|
78
|
+
var toolbarRef = (0, _react.useRef)(null);
|
|
79
|
+
var getPercentFromWidth = (0, _react.useCallback)(function (width) {
|
|
80
|
+
var floored = width / imgRef.current.naturalWidth * 4;
|
|
81
|
+
return parseInt(floored.toFixed(0) * 25, 10);
|
|
82
|
+
}, []);
|
|
83
|
+
var applySizeData = (0, _react.useCallback)(function () {
|
|
84
|
+
if (!node.attrs.width || !imgRef.current) return;
|
|
85
|
+
|
|
86
|
+
var update = _objectSpread(_objectSpread({}, node.attrs), {}, {
|
|
87
|
+
resizePercent: getPercentFromWidth(node.attrs.width)
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
if (!(0, _isEqual["default"])(update, node.attrs)) {
|
|
91
|
+
editor.commands.updateAttributes('imageUploadNode', update);
|
|
92
|
+
}
|
|
93
|
+
}, [editor, node.attrs, getPercentFromWidth]);
|
|
94
|
+
(0, _react.useEffect)(function () {
|
|
95
|
+
setShowToolbar(selected);
|
|
96
|
+
}, [selected]);
|
|
97
|
+
(0, _react.useEffect)(function () {
|
|
98
|
+
options.imageHandling.insertImageRequested(node, function (finish) {
|
|
99
|
+
return new _insertImageHandler["default"](editor, finish);
|
|
100
|
+
});
|
|
101
|
+
applySizeData();
|
|
102
|
+
var resizeHandle = resizeRef.current;
|
|
103
|
+
|
|
104
|
+
if (resizeHandle) {
|
|
105
|
+
resizeHandle.addEventListener('mousedown', initResize, false);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
return function () {
|
|
109
|
+
if (resizeHandle) resizeHandle.removeEventListener('mousedown', initResize, false);
|
|
110
|
+
};
|
|
111
|
+
}, []);
|
|
112
|
+
(0, _react.useEffect)(function () {
|
|
113
|
+
applySizeData();
|
|
114
|
+
});
|
|
115
|
+
var loadImage = (0, _react.useCallback)(function () {
|
|
116
|
+
var box = imgRef.current;
|
|
117
|
+
if (!box) return;
|
|
118
|
+
|
|
119
|
+
if (!box.style.width || box.style.width === 'calc(20px)') {
|
|
120
|
+
var w = Math.min(box.naturalWidth, maxImageWidth);
|
|
121
|
+
var h = Math.min(box.naturalHeight, maxImageHeight);
|
|
122
|
+
box.style.width = "".concat(w, "px");
|
|
123
|
+
box.style.height = "".concat(h, "px");
|
|
124
|
+
var update = {
|
|
125
|
+
width: w,
|
|
126
|
+
height: h
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
if (!(0, _isEqual["default"])(update, node.attrs)) {
|
|
130
|
+
editor.commands.updateAttributes('imageUploadNode', update);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}, [editor, node.attrs, maxImageWidth, maxImageHeight]);
|
|
134
|
+
|
|
135
|
+
var updateAspect = function updateAspect(initial, next) {
|
|
136
|
+
var keepAspect = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
|
137
|
+
var resizeType = arguments.length > 3 ? arguments[3] : undefined;
|
|
138
|
+
|
|
139
|
+
if (keepAspect) {
|
|
140
|
+
var ratio = initial.width / initial.height;
|
|
141
|
+
if (resizeType === 'height') return {
|
|
142
|
+
width: next.height * ratio,
|
|
143
|
+
height: next.height
|
|
144
|
+
};
|
|
145
|
+
return {
|
|
146
|
+
width: next.width,
|
|
147
|
+
height: next.width / ratio
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
return next;
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
var startResize = (0, _react.useCallback)(function (e) {
|
|
155
|
+
var box = imgRef.current;
|
|
156
|
+
if (!box) return;
|
|
157
|
+
var bounds = e.target.getBoundingClientRect();
|
|
158
|
+
var initial = {
|
|
159
|
+
width: box.naturalWidth,
|
|
160
|
+
height: box.naturalHeight
|
|
161
|
+
};
|
|
162
|
+
var next = updateAspect(initial, {
|
|
163
|
+
width: e.clientX - bounds.left,
|
|
164
|
+
height: e.clientY - bounds.top
|
|
165
|
+
});
|
|
166
|
+
|
|
167
|
+
if (next.width > 50 && next.height > 50 && next.width <= 700 && next.height <= 900) {
|
|
168
|
+
box.style.width = "".concat(next.width, "px");
|
|
169
|
+
box.style.height = "".concat(next.height, "px");
|
|
170
|
+
var update = {
|
|
171
|
+
width: next.width,
|
|
172
|
+
height: next.height
|
|
173
|
+
};
|
|
174
|
+
|
|
175
|
+
if (!(0, _isEqual["default"])(update, node.attrs)) {
|
|
176
|
+
editor.commands.updateAttributes('imageUploadNode', update);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}, [editor, node.attrs]);
|
|
180
|
+
var onChange = (0, _react.useCallback)(function (newValues) {
|
|
181
|
+
editor.commands.updateAttributes('imageUploadNode', newValues);
|
|
182
|
+
}, [editor]);
|
|
183
|
+
var stopResize = (0, _react.useCallback)(function () {
|
|
184
|
+
window.removeEventListener('mousemove', startResize);
|
|
185
|
+
window.removeEventListener('mouseup', stopResize);
|
|
186
|
+
}, [startResize]);
|
|
187
|
+
var initResize = (0, _react.useCallback)(function () {
|
|
188
|
+
window.addEventListener('mousemove', startResize);
|
|
189
|
+
window.addEventListener('mouseup', stopResize);
|
|
190
|
+
}, [startResize, stopResize]);
|
|
191
|
+
var style = {
|
|
192
|
+
width: sizePx(node.attrs.width),
|
|
193
|
+
height: sizePx(node.attrs.height),
|
|
194
|
+
objectFit: 'contain'
|
|
195
|
+
};
|
|
196
|
+
var flexAlign = {
|
|
197
|
+
left: 'flex-start',
|
|
198
|
+
center: 'center',
|
|
199
|
+
right: 'flex-end'
|
|
200
|
+
}[node.attrs.alignment] || 'flex-start';
|
|
201
|
+
return /*#__PURE__*/_react["default"].createElement(_react2.NodeViewWrapper, null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
202
|
+
onFocus: onFocus,
|
|
203
|
+
className: (0, _classnames["default"])(classes.root, !node.attrs.loaded && classes.loading, node.attrs.deleteStatus === 'pending' && classes.pendingDelete),
|
|
204
|
+
style: {
|
|
205
|
+
justifyContent: flexAlign
|
|
206
|
+
}
|
|
207
|
+
}, /*#__PURE__*/_react["default"].createElement(_LinearProgress["default"], {
|
|
208
|
+
mode: "determinate",
|
|
209
|
+
value: node.attrs.percent || 0,
|
|
210
|
+
className: (0, _classnames["default"])(classes.progress, node.attrs.loaded && classes.hideProgress)
|
|
211
|
+
}), /*#__PURE__*/_react["default"].createElement("div", {
|
|
212
|
+
className: classes.imageContainer
|
|
213
|
+
}, /*#__PURE__*/_react["default"].createElement("img", (0, _extends2["default"])({}, attributes, {
|
|
214
|
+
ref: imgRef,
|
|
215
|
+
src: node.attrs.src,
|
|
216
|
+
className: (0, _classnames["default"])(classes.image, selected && classes.active),
|
|
217
|
+
style: style,
|
|
218
|
+
onLoad: loadImage,
|
|
219
|
+
alt: node.attrs.alt
|
|
220
|
+
})), /*#__PURE__*/_react["default"].createElement("div", {
|
|
221
|
+
ref: resizeRef,
|
|
222
|
+
className: (0, _classnames["default"])(classes.resize, 'resize')
|
|
223
|
+
}))), showToolbar && /*#__PURE__*/_react["default"].createElement("div", {
|
|
224
|
+
ref: toolbarRef,
|
|
225
|
+
style: {
|
|
226
|
+
position: 'absolute',
|
|
227
|
+
top: '100%',
|
|
228
|
+
left: 0,
|
|
229
|
+
zIndex: 20,
|
|
230
|
+
background: 'var(--editable-html-toolbar-bg, #efefef)',
|
|
231
|
+
boxShadow: '0px 1px 5px 0px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 3px 1px -2px rgba(0, 0, 0, 0.12)',
|
|
232
|
+
width: '100%'
|
|
233
|
+
}
|
|
234
|
+
}, /*#__PURE__*/_react["default"].createElement(_customToolbarWrapper["default"], (0, _extends2["default"])({
|
|
235
|
+
showDone: true
|
|
236
|
+
}, options), /*#__PURE__*/_react["default"].createElement(_imageToolbar["default"], {
|
|
237
|
+
disableImageAlignmentButtons: options.disableImageAlignmentButtons,
|
|
238
|
+
alt: node.attrs.alt,
|
|
239
|
+
imageLoaded: node.attrs.loaded,
|
|
240
|
+
alignment: node.attrs.alignment || 'left',
|
|
241
|
+
onChange: onChange
|
|
242
|
+
}))));
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
ImageComponent.propTypes = {
|
|
246
|
+
node: _propTypes["default"].object.isRequired,
|
|
247
|
+
editor: _propTypes["default"].object.isRequired,
|
|
248
|
+
classes: _propTypes["default"].object.isRequired,
|
|
249
|
+
attributes: _propTypes["default"].object,
|
|
250
|
+
onFocus: _propTypes["default"].func,
|
|
251
|
+
maxImageWidth: _propTypes["default"].number,
|
|
252
|
+
maxImageHeight: _propTypes["default"].number
|
|
253
|
+
};
|
|
254
|
+
|
|
255
|
+
var _default = (0, _styles.withStyles)(function (theme) {
|
|
256
|
+
return {
|
|
257
|
+
portal: {
|
|
258
|
+
position: 'absolute',
|
|
259
|
+
opacity: 0,
|
|
260
|
+
transition: 'opacity 200ms linear'
|
|
261
|
+
},
|
|
262
|
+
floatingButtonRow: {
|
|
263
|
+
backgroundColor: theme.palette.background.paper,
|
|
264
|
+
borderRadius: '1px',
|
|
265
|
+
display: 'flex',
|
|
266
|
+
padding: '10px',
|
|
267
|
+
border: "solid 1px ".concat(theme.palette.grey[200]),
|
|
268
|
+
boxShadow: '0px 1px 5px 0px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 3px 1px -2px rgba(0, 0, 0, 0.12)'
|
|
269
|
+
},
|
|
270
|
+
progress: {
|
|
271
|
+
position: 'absolute',
|
|
272
|
+
left: '0',
|
|
273
|
+
width: 'fit-content',
|
|
274
|
+
top: '0%',
|
|
275
|
+
transition: 'opacity 200ms linear'
|
|
276
|
+
},
|
|
277
|
+
hideProgress: {
|
|
278
|
+
opacity: 0
|
|
279
|
+
},
|
|
280
|
+
loading: {
|
|
281
|
+
opacity: 0.3
|
|
282
|
+
},
|
|
283
|
+
pendingDelete: {
|
|
284
|
+
opacity: 0.3
|
|
285
|
+
},
|
|
286
|
+
root: {
|
|
287
|
+
position: 'relative',
|
|
288
|
+
border: "solid 1px ".concat(theme.palette.common.white),
|
|
289
|
+
display: 'flex',
|
|
290
|
+
transition: 'opacity 200ms linear'
|
|
291
|
+
},
|
|
292
|
+
"delete": {
|
|
293
|
+
position: 'absolute',
|
|
294
|
+
right: 0
|
|
295
|
+
},
|
|
296
|
+
imageContainer: {
|
|
297
|
+
position: 'relative',
|
|
298
|
+
width: 'fit-content',
|
|
299
|
+
display: 'flex',
|
|
300
|
+
alignItems: 'center',
|
|
301
|
+
'&&:hover > .resize': {
|
|
302
|
+
display: 'block'
|
|
303
|
+
}
|
|
304
|
+
},
|
|
305
|
+
active: {
|
|
306
|
+
border: "solid 1px ".concat(theme.palette.primary.main)
|
|
307
|
+
},
|
|
308
|
+
resize: {
|
|
309
|
+
backgroundColor: theme.palette.primary.main,
|
|
310
|
+
cursor: 'col-resize',
|
|
311
|
+
height: '35px',
|
|
312
|
+
width: '5px',
|
|
313
|
+
borderRadius: 8,
|
|
314
|
+
marginLeft: '5px',
|
|
315
|
+
marginRight: '10px',
|
|
316
|
+
display: 'none'
|
|
317
|
+
},
|
|
318
|
+
drawableHeight: {
|
|
319
|
+
minHeight: 350
|
|
320
|
+
}
|
|
321
|
+
};
|
|
322
|
+
})(ImageComponent);
|
|
323
|
+
|
|
324
|
+
exports["default"] = _default;
|
|
325
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9leHRlbnNpb25zL2NvbXBvbmVudC5qc3giXSwibmFtZXMiOlsibG9nIiwic2l6ZVB4IiwicyIsIkltYWdlQ29tcG9uZW50IiwicHJvcHMiLCJub2RlIiwiZWRpdG9yIiwiY2xhc3NlcyIsImF0dHJpYnV0ZXMiLCJvbkZvY3VzIiwic2VsZWN0ZWQiLCJvcHRpb25zIiwibWF4SW1hZ2VXaWR0aCIsIm1heEltYWdlSGVpZ2h0IiwibGF0ZXgiLCJoYW5kbGVDaGFuZ2UiLCJoYW5kbGVEb25lIiwiYWx0IiwiYXR0cnMiLCJzaG93VG9vbGJhciIsInNldFNob3dUb29sYmFyIiwiaW1nUmVmIiwicmVzaXplUmVmIiwidG9vbGJhclJlZiIsImdldFBlcmNlbnRGcm9tV2lkdGgiLCJ3aWR0aCIsImZsb29yZWQiLCJjdXJyZW50IiwibmF0dXJhbFdpZHRoIiwicGFyc2VJbnQiLCJ0b0ZpeGVkIiwiYXBwbHlTaXplRGF0YSIsInVwZGF0ZSIsInJlc2l6ZVBlcmNlbnQiLCJjb21tYW5kcyIsInVwZGF0ZUF0dHJpYnV0ZXMiLCJpbWFnZUhhbmRsaW5nIiwiaW5zZXJ0SW1hZ2VSZXF1ZXN0ZWQiLCJmaW5pc2giLCJJbnNlcnRJbWFnZUhhbmRsZXIiLCJyZXNpemVIYW5kbGUiLCJhZGRFdmVudExpc3RlbmVyIiwiaW5pdFJlc2l6ZSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJsb2FkSW1hZ2UiLCJib3giLCJzdHlsZSIsInciLCJNYXRoIiwibWluIiwiaCIsIm5hdHVyYWxIZWlnaHQiLCJoZWlnaHQiLCJ1cGRhdGVBc3BlY3QiLCJpbml0aWFsIiwibmV4dCIsImtlZXBBc3BlY3QiLCJyZXNpemVUeXBlIiwicmF0aW8iLCJzdGFydFJlc2l6ZSIsImUiLCJib3VuZHMiLCJ0YXJnZXQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJjbGllbnRYIiwibGVmdCIsImNsaWVudFkiLCJ0b3AiLCJvbkNoYW5nZSIsIm5ld1ZhbHVlcyIsInN0b3BSZXNpemUiLCJ3aW5kb3ciLCJvYmplY3RGaXQiLCJmbGV4QWxpZ24iLCJjZW50ZXIiLCJyaWdodCIsImFsaWdubWVudCIsInJvb3QiLCJsb2FkZWQiLCJsb2FkaW5nIiwiZGVsZXRlU3RhdHVzIiwicGVuZGluZ0RlbGV0ZSIsImp1c3RpZnlDb250ZW50IiwicGVyY2VudCIsInByb2dyZXNzIiwiaGlkZVByb2dyZXNzIiwiaW1hZ2VDb250YWluZXIiLCJzcmMiLCJpbWFnZSIsImFjdGl2ZSIsInJlc2l6ZSIsInBvc2l0aW9uIiwiekluZGV4IiwiYmFja2dyb3VuZCIsImJveFNoYWRvdyIsImRpc2FibGVJbWFnZUFsaWdubWVudEJ1dHRvbnMiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJvYmplY3QiLCJpc1JlcXVpcmVkIiwiZnVuYyIsIm51bWJlciIsInRoZW1lIiwicG9ydGFsIiwib3BhY2l0eSIsInRyYW5zaXRpb24iLCJmbG9hdGluZ0J1dHRvblJvdyIsImJhY2tncm91bmRDb2xvciIsInBhbGV0dGUiLCJwYXBlciIsImJvcmRlclJhZGl1cyIsImRpc3BsYXkiLCJwYWRkaW5nIiwiYm9yZGVyIiwiZ3JleSIsImNvbW1vbiIsIndoaXRlIiwiYWxpZ25JdGVtcyIsInByaW1hcnkiLCJtYWluIiwiY3Vyc29yIiwibWFyZ2luTGVmdCIsIm1hcmdpblJpZ2h0IiwiZHJhd2FibGVIZWlnaHQiLCJtaW5IZWlnaHQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxHQUFHLEdBQUcsdUJBQU0sZ0RBQU4sQ0FBWjs7QUFFQSxJQUFNQyxNQUFNLEdBQUcsU0FBVEEsTUFBUyxDQUFDQyxDQUFEO0FBQUEsU0FBUUEsQ0FBQyxhQUFNQSxDQUFOLFVBQWMsWUFBdkI7QUFBQSxDQUFmOztBQUVBLFNBQVNDLGNBQVQsQ0FBd0JDLEtBQXhCLEVBQStCO0FBQzdCLE1BQ0VDLElBREYs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QUFjLEVBQUU7QUFDZEssTUFBQUEsUUFBUSxFQUFFLFVBREk7QUFFZGxFLE1BQUFBLEtBQUssRUFBRSxhQUZPO0FBR2RzRixNQUFBQSxPQUFPLEVBQUUsTUFISztBQUlkTSxNQUFBQSxVQUFVLEVBQUUsUUFKRTtBQU1kLDRCQUFzQjtBQUNwQk4sUUFBQUEsT0FBTyxFQUFFO0FBRFc7QUFOUixLQXpDb0I7QUFtRHBDdEIsSUFBQUEsTUFBTSxFQUFFO0FBQ053QixNQUFBQSxNQUFNLHNCQUFlWCxLQUFLLENBQUNNLE9BQU4sQ0FBY1UsT0FBZCxDQUFzQkMsSUFBckM7QUFEQSxLQW5ENEI7QUFzRHBDN0IsSUFBQUEsTUFBTSxFQUFFO0FBQ05pQixNQUFBQSxlQUFlLEVBQUVMLEtBQUssQ0FBQ00sT0FBTixDQUFjVSxPQUFkLENBQXNCQyxJQURqQztBQUVOQyxNQUFBQSxNQUFNLEVBQUUsWUFGRjtBQUdOcEUsTUFBQUEsTUFBTSxFQUFFLE1BSEY7QUFJTjNCLE1BQUFBLEtBQUssRUFBRSxLQUpEO0FBS05xRixNQUFBQSxZQUFZLEVBQUUsQ0FMUjtBQU1OVyxNQUFBQSxVQUFVLEVBQUUsS0FOTjtBQU9OQyxNQUFBQSxXQUFXLEVBQUUsTUFQUDtBQVFOWCxNQUFBQSxPQUFPLEVBQUU7QUFSSCxLQXRENEI7QUFnRXBDWSxJQUFBQSxjQUFjLEVBQUU7QUFDZEMsTUFBQUEsU0FBUyxFQUFFO0FBREc7QUFoRW9CLEdBQVo7QUFBQSxDQUFYLEVBbUVYekgsY0FuRVcsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VFZmZlY3QsIHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IGlzRXF1YWwgZnJvbSAnbG9kYXNoL2lzRXF1YWwnO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBMaW5lYXJQcm9ncmVzcyBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9MaW5lYXJQcm9ncmVzcyc7XG5pbXBvcnQgeyB3aXRoU3R5bGVzIH0gZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvc3R5bGVzJztcbmltcG9ydCB7IE5vZGVWaWV3V3JhcHBlciB9IGZyb20gJ0B0aXB0YXAvcmVhY3QnO1xuaW1wb3J0IEluc2VydEltYWdlSGFuZGxlciBmcm9tICcuLi9wbHVnaW5zL2ltYWdlL2luc2VydC1pbWFnZS1oYW5kbGVyJztcbmltcG9ydCBJbWFnZVRvb2xiYXIgZnJvbSAnLi4vcGx1Z2lucy9pbWFnZS9pbWFnZS10b29sYmFyJztcbmltcG9ydCBDdXN0b21Ub29sYmFyV3JhcHBlciBmcm9tIFwiLi9jdXN0b20tdG9vbGJhci13cmFwcGVyXCI7XG5cbmNvbnN0IGxvZyA9IGRlYnVnKCdAcGllLWxpYjplZGl0YWJsZS1odG1sOnBsdWdpbnM6aW1hZ2U6Y29tcG9uZW50Jyk7XG5cbmNvbnN0IHNpemVQeCA9IChzKSA9PiAocyA/IGAke3N9cHhgIDogJ2NhbGMoMjBweCknKTtcblxuZnVuY3Rpb24gSW1hZ2VDb21wb25lbnQocHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIG5vZGUsXG4gICAgZWRpdG9yLFxuICAgIGNsYXNzZXMsXG4gICAgYXR0cmlidXRlcyxcbiAgICBvbkZvY3VzLFxuICAgIHNlbGVjdGVkLFxuICAgIG9wdGlvbnMsXG4gICAgbWF4SW1hZ2VXaWR0aCA9IDcwMCxcbiAgICBtYXhJbWFnZUhlaWdodCA9IDkwMCxcbiAgICBsYXRleCxcbiAgICBoYW5kbGVDaGFuZ2UsXG4gICAgaGFuZGxlRG9uZSxcbiAgfSA9IHByb3BzO1xuICBjb25zdCB7IGFsdCB9ID0gbm9kZS5hdHRycztcblxuICBjb25zdCBbc2hvd1Rvb2xiYXIsIHNldFNob3dUb29sYmFyXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBpbWdSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IHJlc2l6ZVJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgdG9vbGJhclJlZiA9IHVzZVJlZihudWxsKTtcblxuICBjb25zdCBnZXRQZXJjZW50RnJvbVdpZHRoID0gdXNlQ2FsbGJhY2soKHdpZHRoKSA9PiB7XG4gICAgY29uc3QgZmxvb3JlZCA9ICh3aWR0aCAvIGltZ1JlZi5jdXJyZW50Lm5hdHVyYWxXaWR0aCkgKiA0O1xuICAgIHJldHVybiBwYXJzZUludChmbG9vcmVkLnRvRml4ZWQoMCkgKiAyNSwgMTApO1xuICB9LCBbXSk7XG5cbiAgY29uc3QgYXBwbHlTaXplRGF0YSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIW5vZGUuYXR0cnMud2lkdGggfHwgIWltZ1JlZi5jdXJyZW50KSByZXR1cm47XG5cbiAgICBjb25zdCB1cGRhdGUgPSB7XG4gICAgICAuLi5ub2RlLmF0dHJzLFxuICAgICAgcmVzaXplUGVyY2VudDogZ2V0UGVyY2VudEZyb21XaWR0aChub2RlLmF0dHJzLndpZHRoKSxcbiAgICB9O1xuXG4gICAgaWYgKCFpc0VxdWFsKHVwZGF0ZSwgbm9kZS5hdHRycykpIHtcbiAgICAgIGVkaXRvci5jb21tYW5kcy51cGRhdGVBdHRyaWJ1dGVzKCdpbWFnZVVwbG9hZE5vZGUnLCB1cGRhdGUpO1xuICAgIH1cbiAgfSwgW2VkaXRvciwgbm9kZS5hdHRycywgZ2V0UGVyY2VudEZyb21XaWR0aF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0U2hvd1Rvb2xiYXIoc2VsZWN0ZWQpO1xuICB9LCBbc2VsZWN0ZWRdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIG9wdGlvbnMuaW1hZ2VIYW5kbGluZy5pbnNlcnRJbWFnZVJlcXVlc3RlZChub2RlLCAoZmluaXNoKSA9PiBuZXcgSW5zZXJ0SW1hZ2VIYW5kbGVyKGVkaXRvciwgZmluaXNoKSk7XG4gICAgYXBwbHlTaXplRGF0YSgpO1xuXG4gICAgY29uc3QgcmVzaXplSGFuZGxlID0gcmVzaXplUmVmLmN1cnJlbnQ7XG4gICAgaWYgKHJlc2l6ZUhhbmRsZSkge1xuICAgICAgcmVzaXplSGFuZGxlLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGluaXRSZXNpemUsIGZhbHNlKTtcbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChyZXNpemVIYW5kbGUpIHJlc2l6ZUhhbmRsZS5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBpbml0UmVzaXplLCBmYWxzZSk7XG4gICAgfTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgYXBwbHlTaXplRGF0YSgpO1xuICB9KTtcblxuICBjb25zdCBsb2FkSW1hZ2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgYm94ID0gaW1nUmVmLmN1cnJlbnQ7XG4gICAgaWYgKCFib3gpIHJldHVybjtcblxuICAgIGlmICghYm94LnN0eWxlLndpZHRoIHx8IGJveC5zdHlsZS53aWR0aCA9PT0gJ2NhbGMoMjBweCknKSB7XG4gICAgICBjb25zdCB3ID0gTWF0aC5taW4oYm94Lm5hdHVyYWxXaWR0aCwgbWF4SW1hZ2VXaWR0aCk7XG4gICAgICBjb25zdCBoID0gTWF0aC5taW4oYm94Lm5hdHVyYWxIZWlnaHQsIG1heEltYWdlSGVpZ2h0KTtcblxuICAgICAgYm94LnN0eWxlLndpZHRoID0gYCR7d31weGA7XG4gICAgICBib3guc3R5bGUuaGVpZ2h0ID0gYCR7aH1weGA7XG5cbiAgICAgIGNvbnN0IHVwZGF0ZSA9IHsgd2lkdGg6IHcsIGhlaWdodDogaCB9O1xuICAgICAgaWYgKCFpc0VxdWFsKHVwZGF0ZSwgbm9kZS5hdHRycykpIHtcbiAgICAgICAgZWRpdG9yLmNvbW1hbmRzLnVwZGF0ZUF0dHJpYnV0ZXMoJ2ltYWdlVXBsb2FkTm9kZScsIHVwZGF0ZSk7XG4gICAgICB9XG4gICAgfVxuICB9LCBbZWRpdG9yLCBub2RlLmF0dHJzLCBtYXhJbWFnZVdpZHRoLCBtYXhJbWFnZUhlaWdodF0pO1xuXG4gIGNvbnN0IHVwZGF0ZUFzcGVjdCA9IChpbml0aWFsLCBuZXh0LCBrZWVwQXNwZWN0ID0gdHJ1ZSwgcmVzaXplVHlwZSkgPT4ge1xuICAgIGlmIChrZWVwQXNwZWN0KSB7XG4gICAgICBjb25zdCByYXRpbyA9IGluaXRpYWwud2lkdGggLyBpbml0aWFsLmhlaWdodDtcbiAgICAgIGlmIChyZXNpemVUeXBlID09PSAnaGVpZ2h0JykgcmV0dXJuIHsgd2lkdGg6IG5leHQuaGVpZ2h0ICogcmF0aW8sIGhlaWdodDogbmV4dC5oZWlnaHQgfTtcbiAgICAgIHJldHVybiB7IHdpZHRoOiBuZXh0LndpZHRoLCBoZWlnaHQ6IG5leHQud2lkdGggLyByYXRpbyB9O1xuICAgIH1cbiAgICByZXR1cm4gbmV4dDtcbiAgfTtcblxuICBjb25zdCBzdGFydFJlc2l6ZSA9IHVzZUNhbGxiYWNrKFxuICAgIChlKSA9PiB7XG4gICAgICBjb25zdCBib3ggPSBpbWdSZWYuY3VycmVudDtcbiAgICAgIGlmICghYm94KSByZXR1cm47XG5cbiAgICAgIGNvbnN0IGJvdW5kcyA9IGUudGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3QgaW5pdGlhbCA9IHsgd2lkdGg6IGJveC5uYXR1cmFsV2lkdGgsIGhlaWdodDogYm94Lm5hdHVyYWxIZWlnaHQgfTtcblxuICAgICAgY29uc3QgbmV4dCA9IHVwZGF0ZUFzcGVjdChpbml0aWFsLCB7XG4gICAgICAgIHdpZHRoOiBlLmNsaWVudFggLSBib3VuZHMubGVmdCxcbiAgICAgICAgaGVpZ2h0OiBlLmNsaWVudFkgLSBib3VuZHMudG9wLFxuICAgICAgfSk7XG5cbiAgICAgIGlmIChuZXh0LndpZHRoID4gNTAgJiYgbmV4dC5oZWlnaHQgPiA1MCAmJiBuZXh0LndpZHRoIDw9IDcwMCAmJiBuZXh0LmhlaWdodCA8PSA5MDApIHtcbiAgICAgICAgYm94LnN0eWxlLndpZHRoID0gYCR7bmV4dC53aWR0aH1weGA7XG4gICAgICAgIGJveC5zdHlsZS5oZWlnaHQgPSBgJHtuZXh0LmhlaWdodH1weGA7XG5cbiAgICAgICAgY29uc3QgdXBkYXRlID0geyB3aWR0aDogbmV4dC53aWR0aCwgaGVpZ2h0OiBuZXh0LmhlaWdodCB9O1xuICAgICAgICBpZiAoIWlzRXF1YWwodXBkYXRlLCBub2RlLmF0dHJzKSkge1xuICAgICAgICAgIGVkaXRvci5jb21tYW5kcy51cGRhdGVBdHRyaWJ1dGVzKCdpbWFnZVVwbG9hZE5vZGUnLCB1cGRhdGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBbZWRpdG9yLCBub2RlLmF0dHJzXSxcbiAgKTtcblxuICBjb25zdCBvbkNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChuZXdWYWx1ZXMpID0+IHtcbiAgICAgIGVkaXRvci5jb21tYW5kcy51cGRhdGVBdHRyaWJ1dGVzKCdpbWFnZVVwbG9hZE5vZGUnLCBuZXdWYWx1ZXMpO1xuICAgIH0sXG4gICAgW2VkaXRvcl0sXG4gICk7XG5cbiAgY29uc3Qgc3RvcFJlc2l6ZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgc3RhcnRSZXNpemUpO1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgc3RvcFJlc2l6ZSk7XG4gIH0sIFtzdGFydFJlc2l6ZV0pO1xuXG4gIGNvbnN0IGluaXRSZXNpemUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHN0YXJ0UmVzaXplKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHN0b3BSZXNpemUpO1xuICB9LCBbc3RhcnRSZXNpemUsIHN0b3BSZXNpemVdKTtcblxuICBjb25zdCBzdHlsZSA9IHtcbiAgICB3aWR0aDogc2l6ZVB4KG5vZGUuYXR0cnMud2lkdGgpLFxuICAgIGhlaWdodDogc2l6ZVB4KG5vZGUuYXR0cnMuaGVpZ2h0KSxcbiAgICBvYmplY3RGaXQ6ICdjb250YWluJyxcbiAgfTtcblxuICBjb25zdCBmbGV4QWxpZ24gPSB7IGxlZnQ6ICdmbGV4LXN0YXJ0JywgY2VudGVyOiAnY2VudGVyJywgcmlnaHQ6ICdmbGV4LWVuZCcgfVtub2RlLmF0dHJzLmFsaWdubWVudF0gfHwgJ2ZsZXgtc3RhcnQnO1xuXG4gIHJldHVybiAoXG4gICAgPE5vZGVWaWV3V3JhcHBlcj5cbiAgICAgIDxkaXZcbiAgICAgICAgb25Gb2N1cz17b25Gb2N1c31cbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKFxuICAgICAgICAgIGNsYXNzZXMucm9vdCxcbiAgICAgICAgICAhbm9kZS5hdHRycy5sb2FkZWQgJiYgY2xhc3Nlcy5sb2FkaW5nLFxuICAgICAgICAgIG5vZGUuYXR0cnMuZGVsZXRlU3RhdHVzID09PSAncGVuZGluZycgJiYgY2xhc3Nlcy5wZW5kaW5nRGVsZXRlLFxuICAgICAgICApfVxuICAgICAgICBzdHlsZT17eyBqdXN0aWZ5Q29udGVudDogZmxleEFsaWduIH19XG4gICAgICA+XG4gICAgICAgIDxMaW5lYXJQcm9ncmVzc1xuICAgICAgICAgIG1vZGU9XCJkZXRlcm1pbmF0ZVwiXG4gICAgICAgICAgdmFsdWU9e25vZGUuYXR0cnMucGVyY2VudCB8fCAwfVxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhjbGFzc2VzLnByb2dyZXNzLCBub2RlLmF0dHJzLmxvYWRlZCAmJiBjbGFzc2VzLmhpZGVQcm9ncmVzcyl9XG4gICAgICAgIC8+XG5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMuaW1hZ2VDb250YWluZXJ9PlxuICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgIHsuLi5hdHRyaWJ1dGVzfVxuICAgICAgICAgICAgcmVmPXtpbWdSZWZ9XG4gICAgICAgICAgICBzcmM9e25vZGUuYXR0cnMuc3JjfVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKGNsYXNzZXMuaW1hZ2UsIHNlbGVjdGVkICYmIGNsYXNzZXMuYWN0aXZlKX1cbiAgICAgICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgICAgICAgIG9uTG9hZD17bG9hZEltYWdlfVxuICAgICAgICAgICAgYWx0PXtub2RlLmF0dHJzLmFsdH1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxkaXYgcmVmPXtyZXNpemVSZWZ9IGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhjbGFzc2VzLnJlc2l6ZSwgJ3Jlc2l6ZScpfSAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7c2hvd1Rvb2xiYXIgJiYgKFxuICAgICAgICA8ZGl2XG4gICAgICAgICAgcmVmPXt0b29sYmFyUmVmfVxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgIHRvcDogJzEwMCUnLFxuICAgICAgICAgICAgbGVmdDogMCxcbiAgICAgICAgICAgIHpJbmRleDogMjAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tZWRpdGFibGUtaHRtbC10b29sYmFyLWJnLCAjZWZlZmVmKScsXG4gICAgICAgICAgICBib3hTaGFkb3c6XG4gICAgICAgICAgICAgICcwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMTIpJyxcbiAgICAgICAgICAgIHdpZHRoOiAnMTAwJSdcbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPEN1c3RvbVRvb2xiYXJXcmFwcGVyIHNob3dEb25lIHsuLi5vcHRpb25zfT5cbiAgICAgICAgICAgIDxJbWFnZVRvb2xiYXJcbiAgICAgICAgICAgICAgZGlzYWJsZUltYWdlQWxpZ25tZW50QnV0dG9ucz17b3B0aW9ucy5kaXNhYmxlSW1hZ2VBbGlnbm1lbnRCdXR0b25zfVxuICAgICAgICAgICAgICBhbHQ9e25vZGUuYXR0cnMuYWx0fVxuICAgICAgICAgICAgICBpbWFnZUxvYWRlZD17bm9kZS5hdHRycy5sb2FkZWR9XG4gICAgICAgICAgICAgIGFsaWdubWVudD17bm9kZS5hdHRycy5hbGlnbm1lbnQgfHwgJ2xlZnQnfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvQ3VzdG9tVG9vbGJhcldyYXBwZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cbiAgICA8L05vZGVWaWV3V3JhcHBlcj5cbiAgKTtcbn1cblxuSW1hZ2VDb21wb25lbnQucHJvcFR5cGVzID0ge1xuICBub2RlOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGVkaXRvcjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGF0dHJpYnV0ZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9uRm9jdXM6IFByb3BUeXBlcy5mdW5jLFxuICBtYXhJbWFnZVdpZHRoOiBQcm9wVHlwZXMubnVtYmVyLFxuICBtYXhJbWFnZUhlaWdodDogUHJvcFR5cGVzLm51bWJlcixcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhTdHlsZXMoKHRoZW1lKSA9PiAoe1xuICBwb3J0YWw6IHtcbiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICBvcGFjaXR5OiAwLFxuICAgIHRyYW5zaXRpb246ICdvcGFjaXR5IDIwMG1zIGxpbmVhcicsXG4gIH0sXG4gIGZsb2F0aW5nQnV0dG9uUm93OiB7XG4gICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5wYWxldHRlLmJhY2tncm91bmQucGFwZXIsXG4gICAgYm9yZGVyUmFkaXVzOiAnMXB4JyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgcGFkZGluZzogJzEwcHgnLFxuICAgIGJvcmRlcjogYHNvbGlkIDFweCAke3RoZW1lLnBhbGV0dGUuZ3JleVsyMDBdfWAsXG4gICAgYm94U2hhZG93OlxuICAgICAgJzBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4xMiknLFxuICB9LFxuICBwcm9ncmVzczoge1xuICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgIGxlZnQ6ICcwJyxcbiAgICB3aWR0aDogJ2ZpdC1jb250ZW50JyxcbiAgICB0b3A6ICcwJScsXG4gICAgdHJhbnNpdGlvbjogJ29wYWNpdHkgMjAwbXMgbGluZWFyJyxcbiAgfSxcbiAgaGlkZVByb2dyZXNzOiB7XG4gICAgb3BhY2l0eTogMCxcbiAgfSxcbiAgbG9hZGluZzoge1xuICAgIG9wYWNpdHk6IDAuMyxcbiAgfSxcbiAgcGVuZGluZ0RlbGV0ZToge1xuICAgIG9wYWNpdHk6IDAuMyxcbiAgfSxcbiAgcm9vdDoge1xuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgIGJvcmRlcjogYHNvbGlkIDFweCAke3RoZW1lLnBhbGV0dGUuY29tbW9uLndoaXRlfWAsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIHRyYW5zaXRpb246ICdvcGFjaXR5IDIwMG1zIGxpbmVhcicsXG4gIH0sXG4gIGRlbGV0ZToge1xuICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgIHJpZ2h0OiAwLFxuICB9LFxuICBpbWFnZUNvbnRhaW5lcjoge1xuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgIHdpZHRoOiAnZml0LWNvbnRlbnQnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcblxuICAgICcmJjpob3ZlciA+IC5yZXNpemUnOiB7XG4gICAgICBkaXNwbGF5OiAnYmxvY2snLFxuICAgIH0sXG4gIH0sXG4gIGFjdGl2ZToge1xuICAgIGJvcmRlcjogYHNvbGlkIDFweCAke3RoZW1lLnBhbGV0dGUucHJpbWFyeS5tYWlufWAsXG4gIH0sXG4gIHJlc2l6ZToge1xuICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUucGFsZXR0ZS5wcmltYXJ5Lm1haW4sXG4gICAgY3Vyc29yOiAnY29sLXJlc2l6ZScsXG4gICAgaGVpZ2h0OiAnMzVweCcsXG4gICAgd2lkdGg6ICc1cHgnLFxuICAgIGJvcmRlclJhZGl1czogOCxcbiAgICBtYXJnaW5MZWZ0OiAnNXB4JyxcbiAgICBtYXJnaW5SaWdodDogJzEwcHgnLFxuICAgIGRpc3BsYXk6ICdub25lJyxcbiAgfSxcbiAgZHJhd2FibGVIZWlnaHQ6IHtcbiAgICBtaW5IZWlnaHQ6IDM1MCxcbiAgfSxcbn0pKShJbWFnZUNvbXBvbmVudCk7XG4iXX0=
|