1 | "use strict";
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports["default"] = void 0;
|
7 |
|
8 | var _react = _interopRequireWildcard(require("react"));
|
9 |
|
10 | var _propTypes = _interopRequireDefault(require("prop-types"));
|
11 |
|
12 | var _function = _interopRequireDefault(require("react-pure-render/function"));
|
13 |
|
14 | var themes = _interopRequireWildcard(require("redux-devtools-themes"));
|
15 |
|
16 | var _reduxDevtools = require("redux-devtools");
|
17 |
|
18 | var _actions = require("./actions");
|
19 |
|
20 | var _reducers = _interopRequireDefault(require("./reducers"));
|
21 |
|
22 | var _LogMonitorButtonBar = _interopRequireDefault(require("./LogMonitorButtonBar"));
|
23 |
|
24 | var _LogMonitorEntryList = _interopRequireDefault(require("./LogMonitorEntryList"));
|
25 |
|
26 | var _lodash = _interopRequireDefault(require("lodash.debounce"));
|
27 |
|
28 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
29 |
|
30 | function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
|
31 |
|
32 | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
|
33 |
|
34 | function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
35 |
|
36 | function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
37 |
|
38 | function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
39 |
|
40 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
41 |
|
42 | function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
43 |
|
44 | function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
45 |
|
46 | function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
47 |
|
48 | function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
49 |
|
50 | function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
51 |
|
52 | function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
|
53 |
|
54 | function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
55 |
|
56 | function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
|
57 |
|
58 | function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
59 |
|
60 | function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
61 |
|
62 | var toggleAction = _reduxDevtools.ActionCreators.toggleAction,
|
63 | setActionsActive = _reduxDevtools.ActionCreators.setActionsActive;
|
64 | var styles = {
|
65 | container: {
|
66 | fontFamily: 'monaco, Consolas, Lucida Console, monospace',
|
67 | position: 'relative',
|
68 | overflowY: 'hidden',
|
69 | width: '100%',
|
70 | height: '100%',
|
71 | minWidth: 300,
|
72 | direction: 'ltr'
|
73 | },
|
74 | elements: {
|
75 | position: 'absolute',
|
76 | left: 0,
|
77 | right: 0,
|
78 | top: 0,
|
79 | bottom: 0,
|
80 | overflowX: 'hidden',
|
81 | overflowY: 'auto'
|
82 | }
|
83 | };
|
84 |
|
85 | var LogMonitor = function (_Component) {
|
86 | _inherits(LogMonitor, _Component);
|
87 |
|
88 | var _super = _createSuper(LogMonitor);
|
89 |
|
90 | function LogMonitor(props) {
|
91 | var _this;
|
92 |
|
93 | _classCallCheck(this, LogMonitor);
|
94 |
|
95 | _this = _super.call(this, props);
|
96 |
|
97 | _defineProperty(_assertThisInitialized(_this), "shouldComponentUpdate", _function["default"]);
|
98 |
|
99 | _defineProperty(_assertThisInitialized(_this), "updateScrollTop", (0, _lodash["default"])(function () {
|
100 | var node = _this.node;
|
101 |
|
102 | _this.props.dispatch((0, _actions.updateScrollTop)(node ? node.scrollTop : 0));
|
103 | }, 500));
|
104 |
|
105 | _this.handleToggleAction = _this.handleToggleAction.bind(_assertThisInitialized(_this));
|
106 | _this.handleToggleConsecutiveAction = _this.handleToggleConsecutiveAction.bind(_assertThisInitialized(_this));
|
107 | _this.getRef = _this.getRef.bind(_assertThisInitialized(_this));
|
108 | return _this;
|
109 | }
|
110 |
|
111 | _createClass(LogMonitor, [{
|
112 | key: "scroll",
|
113 | value: function scroll() {
|
114 | var node = this.node;
|
115 |
|
116 | if (!node) {
|
117 | return;
|
118 | }
|
119 |
|
120 | if (this.scrollDown) {
|
121 | var offsetHeight = node.offsetHeight,
|
122 | scrollHeight = node.scrollHeight;
|
123 | node.scrollTop = scrollHeight - offsetHeight;
|
124 | this.scrollDown = false;
|
125 | }
|
126 | }
|
127 | }, {
|
128 | key: "componentDidMount",
|
129 | value: function componentDidMount() {
|
130 | var node = this.node;
|
131 |
|
132 | if (!node || !this.props.monitorState) {
|
133 | return;
|
134 | }
|
135 |
|
136 | if (this.props.preserveScrollTop) {
|
137 | node.scrollTop = this.props.monitorState.initialScrollTop;
|
138 | node.addEventListener('scroll', this.updateScrollTop);
|
139 | } else {
|
140 | this.scrollDown = true;
|
141 | this.scroll();
|
142 | }
|
143 | }
|
144 | }, {
|
145 | key: "componentWillUnmount",
|
146 | value: function componentWillUnmount() {
|
147 | var node = this.node;
|
148 |
|
149 | if (node && this.props.preserveScrollTop) {
|
150 | node.removeEventListener('scroll', this.updateScrollTop);
|
151 | }
|
152 | }
|
153 | }, {
|
154 | key: "UNSAFE_componentWillReceiveProps",
|
155 | value: function UNSAFE_componentWillReceiveProps(nextProps) {
|
156 | var node = this.node;
|
157 |
|
158 | if (!node) {
|
159 | this.scrollDown = true;
|
160 | } else if (this.props.stagedActionIds.length < nextProps.stagedActionIds.length) {
|
161 | var scrollTop = node.scrollTop,
|
162 | offsetHeight = node.offsetHeight,
|
163 | scrollHeight = node.scrollHeight;
|
164 | this.scrollDown = Math.abs(scrollHeight - (scrollTop + offsetHeight)) < 20;
|
165 | } else {
|
166 | this.scrollDown = false;
|
167 | }
|
168 | }
|
169 | }, {
|
170 | key: "componentDidUpdate",
|
171 | value: function componentDidUpdate() {
|
172 | this.scroll();
|
173 | }
|
174 | }, {
|
175 | key: "handleToggleAction",
|
176 | value: function handleToggleAction(id) {
|
177 | this.props.dispatch(toggleAction(id));
|
178 | }
|
179 | }, {
|
180 | key: "handleToggleConsecutiveAction",
|
181 | value: function handleToggleConsecutiveAction(id) {
|
182 | var _this$props = this.props,
|
183 | monitorState = _this$props.monitorState,
|
184 | actionsById = _this$props.actionsById;
|
185 | var consecutiveToggleStartId = monitorState.consecutiveToggleStartId;
|
186 |
|
187 | if (consecutiveToggleStartId && actionsById[consecutiveToggleStartId]) {
|
188 | var skippedActionIds = this.props.skippedActionIds;
|
189 | var start = Math.min(consecutiveToggleStartId, id);
|
190 | var end = Math.max(consecutiveToggleStartId, id);
|
191 | var active = skippedActionIds.indexOf(consecutiveToggleStartId) > -1;
|
192 | this.props.dispatch(setActionsActive(start, end + 1, active));
|
193 | this.props.dispatch((0, _actions.startConsecutiveToggle)(null));
|
194 | } else if (id > 0) {
|
195 | this.props.dispatch((0, _actions.startConsecutiveToggle)(id));
|
196 | }
|
197 | }
|
198 | }, {
|
199 | key: "getTheme",
|
200 | value: function getTheme() {
|
201 | var theme = this.props.theme;
|
202 |
|
203 | if (typeof theme !== 'string') {
|
204 | return theme;
|
205 | }
|
206 |
|
207 | if (typeof themes[theme] !== 'undefined') {
|
208 | return themes[theme];
|
209 | }
|
210 |
|
211 |
|
212 | console.warn('DevTools theme ' + theme + ' not found, defaulting to nicinabox');
|
213 | return themes.nicinabox;
|
214 | }
|
215 | }, {
|
216 | key: "getRef",
|
217 | value: function getRef(node) {
|
218 | this.node = node;
|
219 | }
|
220 | }, {
|
221 | key: "render",
|
222 | value: function render() {
|
223 | var theme = this.getTheme();
|
224 | var consecutiveToggleStartId = this.props.monitorState.consecutiveToggleStartId;
|
225 | var _this$props2 = this.props,
|
226 | dispatch = _this$props2.dispatch,
|
227 | actionsById = _this$props2.actionsById,
|
228 | skippedActionIds = _this$props2.skippedActionIds,
|
229 | stagedActionIds = _this$props2.stagedActionIds,
|
230 | computedStates = _this$props2.computedStates,
|
231 | currentStateIndex = _this$props2.currentStateIndex,
|
232 | select = _this$props2.select,
|
233 | expandActionRoot = _this$props2.expandActionRoot,
|
234 | expandStateRoot = _this$props2.expandStateRoot,
|
235 | markStateDiff = _this$props2.markStateDiff;
|
236 | var entryListProps = {
|
237 | theme: theme,
|
238 | actionsById: actionsById,
|
239 | skippedActionIds: skippedActionIds,
|
240 | stagedActionIds: stagedActionIds,
|
241 | computedStates: computedStates,
|
242 | currentStateIndex: currentStateIndex,
|
243 | consecutiveToggleStartId: consecutiveToggleStartId,
|
244 | select: select,
|
245 | expandActionRoot: expandActionRoot,
|
246 | expandStateRoot: expandStateRoot,
|
247 | markStateDiff: markStateDiff,
|
248 | onActionClick: this.handleToggleAction,
|
249 | onActionShiftClick: this.handleToggleConsecutiveAction
|
250 | };
|
251 | return _react["default"].createElement("div", {
|
252 | style: _objectSpread(_objectSpread({}, styles.container), {}, {
|
253 | backgroundColor: theme.base00
|
254 | })
|
255 | }, !this.props.hideMainButtons && _react["default"].createElement(_LogMonitorButtonBar["default"], {
|
256 | theme: theme,
|
257 | dispatch: dispatch,
|
258 | hasStates: computedStates.length > 1,
|
259 | hasSkippedActions: skippedActionIds.length > 0
|
260 | }), _react["default"].createElement("div", {
|
261 | style: this.props.hideMainButtons ? styles.elements : _objectSpread(_objectSpread({}, styles.elements), {}, {
|
262 | top: 30
|
263 | }),
|
264 | ref: this.getRef
|
265 | }, _react["default"].createElement(_LogMonitorEntryList["default"], entryListProps)));
|
266 | }
|
267 | }]);
|
268 |
|
269 | return LogMonitor;
|
270 | }(_react.Component);
|
271 |
|
272 | exports["default"] = LogMonitor;
|
273 |
|
274 | _defineProperty(LogMonitor, "update", _reducers["default"]);
|
275 |
|
276 | _defineProperty(LogMonitor, "propTypes", {
|
277 | dispatch: _propTypes["default"].func,
|
278 | computedStates: _propTypes["default"].array,
|
279 | actionsById: _propTypes["default"].object,
|
280 | stagedActionIds: _propTypes["default"].array,
|
281 | skippedActionIds: _propTypes["default"].array,
|
282 | monitorState: _propTypes["default"].shape({
|
283 | initialScrollTop: _propTypes["default"].number,
|
284 | consecutiveToggleStartId: _propTypes["default"].number
|
285 | }),
|
286 | preserveScrollTop: _propTypes["default"].bool,
|
287 | select: _propTypes["default"].func,
|
288 | theme: _propTypes["default"].oneOfType([_propTypes["default"].object, _propTypes["default"].string]),
|
289 | expandActionRoot: _propTypes["default"].bool,
|
290 | expandStateRoot: _propTypes["default"].bool,
|
291 | markStateDiff: _propTypes["default"].bool,
|
292 | hideMainButtons: _propTypes["default"].bool
|
293 | });
|
294 |
|
295 | _defineProperty(LogMonitor, "defaultProps", {
|
296 | select: function select(state) {
|
297 | return state;
|
298 | },
|
299 | theme: 'nicinabox',
|
300 | preserveScrollTop: true,
|
301 | expandActionRoot: true,
|
302 | expandStateRoot: true,
|
303 | markStateDiff: false
|
304 | }); |
\ | No newline at end of file |