@lemon-fe/components 1.1.5 → 1.1.6
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/es/data-grid/cell-editors/date.js +6 -10
- package/es/data-grid/cell-editors/number.js +5 -9
- package/es/data-grid/cell-editors/text.js +6 -10
- package/es/data-grid/cell-editors/utils.d.ts +2 -5
- package/es/data-grid/cell-editors/utils.js +4 -34
- package/es/select-view/index.js +35 -5
- package/es/select-view/index.less +18 -0
- package/package.json +2 -2
|
@@ -1,20 +1,14 @@
|
|
|
1
|
-
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4
|
-
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
5
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
6
|
-
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
7
1
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
8
2
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
9
3
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
10
4
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
11
5
|
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
12
6
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
7
|
+
import { DatePicker } from 'antd';
|
|
13
8
|
import React, { useEffect, useRef } from 'react';
|
|
14
9
|
import { forwardRef, useImperativeHandle, useState } from 'react';
|
|
15
10
|
import { editorPrefixClass, navigateCell } from "./utils";
|
|
16
11
|
import EditorWrapper from "./wrapper";
|
|
17
|
-
import { DatePicker } from 'antd';
|
|
18
12
|
import moment from 'moment';
|
|
19
13
|
export default /*#__PURE__*/forwardRef(function DateEditor(props, ref) {
|
|
20
14
|
var _props$format = props.format,
|
|
@@ -54,9 +48,11 @@ export default /*#__PURE__*/forwardRef(function DateEditor(props, ref) {
|
|
|
54
48
|
return /*#__PURE__*/React.createElement(EditorWrapper, null, /*#__PURE__*/React.createElement(DatePicker, {
|
|
55
49
|
onKeyDown: function onKeyDown(e) {
|
|
56
50
|
if (isEdited.current) {
|
|
57
|
-
navigateCell(
|
|
58
|
-
event: e
|
|
59
|
-
|
|
51
|
+
navigateCell({
|
|
52
|
+
event: e.nativeEvent,
|
|
53
|
+
api: props.api,
|
|
54
|
+
onKeyDown: props.onKeyDown
|
|
55
|
+
});
|
|
60
56
|
}
|
|
61
57
|
},
|
|
62
58
|
style: {
|
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4
|
-
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
5
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
6
|
-
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
7
1
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
8
2
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
9
3
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
@@ -104,9 +98,11 @@ export default /*#__PURE__*/forwardRef(function NumberEditor(props, ref) {
|
|
|
104
98
|
return /*#__PURE__*/React.createElement(EditorWrapper, null, /*#__PURE__*/React.createElement("input", {
|
|
105
99
|
type: "number",
|
|
106
100
|
onKeyDown: function onKeyDown(e) {
|
|
107
|
-
|
|
108
|
-
event: e
|
|
109
|
-
|
|
101
|
+
navigateCell({
|
|
102
|
+
event: e.nativeEvent,
|
|
103
|
+
api: props.api,
|
|
104
|
+
onKeyDown: props.onKeyDown
|
|
105
|
+
});
|
|
110
106
|
},
|
|
111
107
|
disabled: disabled,
|
|
112
108
|
className: editorPrefixClass('text'),
|
|
@@ -1,20 +1,14 @@
|
|
|
1
|
-
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4
|
-
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
5
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
6
|
-
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
7
1
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
8
2
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
9
3
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
10
4
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
11
5
|
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
12
6
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
7
|
+
import { message } from 'antd';
|
|
13
8
|
import React, { useEffect, useMemo, useRef } from 'react';
|
|
14
9
|
import { forwardRef, useImperativeHandle, useState } from 'react';
|
|
15
10
|
import { editorPrefixClass, navigateCell } from "./utils";
|
|
16
11
|
import EditorWrapper from "./wrapper";
|
|
17
|
-
import { message } from 'antd';
|
|
18
12
|
export default /*#__PURE__*/forwardRef(function TextEditor(props, ref) {
|
|
19
13
|
var disabled = props.disabled,
|
|
20
14
|
maxLength = props.maxLength,
|
|
@@ -66,9 +60,11 @@ export default /*#__PURE__*/forwardRef(function TextEditor(props, ref) {
|
|
|
66
60
|
});
|
|
67
61
|
return /*#__PURE__*/React.createElement(EditorWrapper, null, /*#__PURE__*/React.createElement("input", {
|
|
68
62
|
onKeyDown: function onKeyDown(e) {
|
|
69
|
-
navigateCell(
|
|
70
|
-
event: e
|
|
71
|
-
|
|
63
|
+
navigateCell({
|
|
64
|
+
event: e.nativeEvent,
|
|
65
|
+
api: props.api,
|
|
66
|
+
onKeyDown: props.onKeyDown
|
|
67
|
+
});
|
|
72
68
|
},
|
|
73
69
|
disabled: disabled,
|
|
74
70
|
className: editorPrefixClass('text'),
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { Column, ColumnApi, GridApi, IRowNode } from '@ag-grid-community/core';
|
|
1
|
+
import type { GridApi } from '@ag-grid-community/core';
|
|
3
2
|
export declare const editorPrefixClass: (val?: string | undefined) => string;
|
|
4
3
|
export declare function navigateCell(params: {
|
|
5
4
|
api: GridApi;
|
|
6
|
-
columnApi: ColumnApi;
|
|
7
5
|
event: KeyboardEvent;
|
|
8
|
-
|
|
9
|
-
column: Column;
|
|
6
|
+
onKeyDown?: (e: KeyboardEvent) => void;
|
|
10
7
|
}): void;
|
|
@@ -3,43 +3,13 @@ export var editorPrefixClass = prefixClassName('grid-editor');
|
|
|
3
3
|
export function navigateCell(params) {
|
|
4
4
|
var api = params.api,
|
|
5
5
|
event = params.event,
|
|
6
|
-
|
|
7
|
-
column = params.column,
|
|
8
|
-
columnApi = params.columnApi;
|
|
6
|
+
onKeyDown = params.onKeyDown;
|
|
9
7
|
if (event.key === 'Enter') {
|
|
10
8
|
api.tabToNextCell();
|
|
11
9
|
return;
|
|
12
10
|
}
|
|
13
|
-
if (
|
|
14
|
-
|
|
15
|
-
}
|
|
16
|
-
var columns = columnApi.getAllDisplayedColumns();
|
|
17
|
-
var nextColumnIndex = columns.findIndex(function (item) {
|
|
18
|
-
return item === column;
|
|
19
|
-
});
|
|
20
|
-
if (nextColumnIndex < 0) {
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
23
|
-
var nextRowIndex = node.rowIndex;
|
|
24
|
-
var renderedRowCount = api.getModel().getRowCount();
|
|
25
|
-
switch (event.key) {
|
|
26
|
-
case 'ArrowUp':
|
|
27
|
-
nextRowIndex -= 1;
|
|
28
|
-
break;
|
|
29
|
-
case 'ArrowRight':
|
|
30
|
-
nextColumnIndex += 1;
|
|
31
|
-
break;
|
|
32
|
-
case 'ArrowDown':
|
|
33
|
-
nextRowIndex += 1;
|
|
34
|
-
break;
|
|
35
|
-
case 'ArrowLeft':
|
|
36
|
-
nextColumnIndex -= 1;
|
|
37
|
-
break;
|
|
38
|
-
default:
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
if (nextRowIndex < 0 || nextRowIndex >= renderedRowCount || nextColumnIndex < 0 || nextColumnIndex >= columns.length) {
|
|
42
|
-
return;
|
|
11
|
+
if (['ArrowUp', 'ArrowRight', 'ArrowDown', 'ArrowLeft'].includes(event.key)) {
|
|
12
|
+
api.stopEditing();
|
|
43
13
|
}
|
|
44
|
-
|
|
14
|
+
onKeyDown === null || onKeyDown === void 0 || onKeyDown(event);
|
|
45
15
|
}
|
package/es/select-view/index.js
CHANGED
|
@@ -17,9 +17,11 @@ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" !=
|
|
|
17
17
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
18
18
|
import { Form, Spin, Tabs } from 'antd';
|
|
19
19
|
import React, { useEffect, useMemo, useRef, useState } from 'react';
|
|
20
|
+
import { Resizable } from 'react-resizable';
|
|
20
21
|
import DataGrid from "../data-grid";
|
|
21
22
|
import Filter from "../filter";
|
|
22
23
|
import { mergeProp, prefixClassName } from "../utils";
|
|
24
|
+
import classNames from 'classnames';
|
|
23
25
|
import { get } from 'lodash';
|
|
24
26
|
export default function SelectView(props) {
|
|
25
27
|
var emptyValue = useMemo(function () {
|
|
@@ -70,6 +72,14 @@ export default function SelectView(props) {
|
|
|
70
72
|
_useState10 = _slicedToArray(_useState9, 2),
|
|
71
73
|
loading = _useState10[0],
|
|
72
74
|
setLoading = _useState10[1];
|
|
75
|
+
var _useState11 = useState(200),
|
|
76
|
+
_useState12 = _slicedToArray(_useState11, 2),
|
|
77
|
+
siderWidth = _useState12[0],
|
|
78
|
+
setSiderWidth = _useState12[1];
|
|
79
|
+
var _useState13 = useState(false),
|
|
80
|
+
_useState14 = _slicedToArray(_useState13, 2),
|
|
81
|
+
dragging = _useState14[0],
|
|
82
|
+
setDragging = _useState14[1];
|
|
73
83
|
var filterForm = mergeProp(Form.useForm()[0], filter === null || filter === void 0 ? void 0 : filter.form);
|
|
74
84
|
var cParams = (filter === null || filter === void 0 ? void 0 : filter.value) || params;
|
|
75
85
|
var getRowKey = function getRowKey(item) {
|
|
@@ -184,9 +194,29 @@ export default function SelectView(props) {
|
|
|
184
194
|
var renderList = function renderList() {
|
|
185
195
|
return /*#__PURE__*/React.createElement("div", {
|
|
186
196
|
className: prefix('layout')
|
|
187
|
-
}, siderNode !== null && /*#__PURE__*/React.createElement(
|
|
188
|
-
|
|
189
|
-
|
|
197
|
+
}, siderNode !== null && /*#__PURE__*/React.createElement(Resizable, {
|
|
198
|
+
axis: "x",
|
|
199
|
+
height: 0,
|
|
200
|
+
width: siderWidth,
|
|
201
|
+
onResizeStart: function onResizeStart() {
|
|
202
|
+
setDragging(true);
|
|
203
|
+
},
|
|
204
|
+
onResizeStop: function onResizeStop() {
|
|
205
|
+
setDragging(false);
|
|
206
|
+
},
|
|
207
|
+
onResize: function onResize(_, _ref2) {
|
|
208
|
+
var size = _ref2.size;
|
|
209
|
+
setSiderWidth(size.width);
|
|
210
|
+
},
|
|
211
|
+
handle: /*#__PURE__*/React.createElement("div", {
|
|
212
|
+
className: prefix('sider-resizable')
|
|
213
|
+
})
|
|
214
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
215
|
+
style: {
|
|
216
|
+
width: "".concat(siderWidth, "px")
|
|
217
|
+
},
|
|
218
|
+
className: classNames(prefix('sider'), _defineProperty({}, prefix('sider-resizing'), dragging))
|
|
219
|
+
}, siderNode)), /*#__PURE__*/React.createElement("div", {
|
|
190
220
|
className: prefix('main')
|
|
191
221
|
}, headerNode !== null && /*#__PURE__*/React.createElement("div", {
|
|
192
222
|
className: prefix('head')
|
|
@@ -201,8 +231,8 @@ export default function SelectView(props) {
|
|
|
201
231
|
onChange: handleChangeData,
|
|
202
232
|
preserveSelectedRowKeys: true
|
|
203
233
|
},
|
|
204
|
-
onRowDoubleClicked: function onRowDoubleClicked(
|
|
205
|
-
var node =
|
|
234
|
+
onRowDoubleClicked: function onRowDoubleClicked(_ref3) {
|
|
235
|
+
var node = _ref3.node;
|
|
206
236
|
if (!multiple && node.id && node.data) {
|
|
207
237
|
handleChangeData([node.id], [node.data], true);
|
|
208
238
|
}
|
|
@@ -28,10 +28,28 @@
|
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
&-sider {
|
|
31
|
+
position: relative;
|
|
31
32
|
width: 200px;
|
|
32
33
|
padding: @padding-md @padding-md @padding-md 0;
|
|
33
34
|
overflow: auto;
|
|
34
35
|
border-right: 1px solid @border-color-split;
|
|
36
|
+
|
|
37
|
+
&-resizable {
|
|
38
|
+
position: absolute;
|
|
39
|
+
top: 0;
|
|
40
|
+
right: -9px;
|
|
41
|
+
box-sizing: border-box;
|
|
42
|
+
width: 17px;
|
|
43
|
+
height: 100%;
|
|
44
|
+
padding: 0 8px;
|
|
45
|
+
background-color: @border-color-split;
|
|
46
|
+
background-clip: content-box;
|
|
47
|
+
cursor: col-resize;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
&:not(&-resizing) {
|
|
51
|
+
transition: width 0.2s;
|
|
52
|
+
}
|
|
35
53
|
}
|
|
36
54
|
|
|
37
55
|
&-main {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lemon-fe/components",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.6",
|
|
4
4
|
"description": "> TODO: description",
|
|
5
5
|
"homepage": "",
|
|
6
6
|
"license": "ISC",
|
|
@@ -62,5 +62,5 @@
|
|
|
62
62
|
"publishConfig": {
|
|
63
63
|
"registry": "https://registry.npmjs.org"
|
|
64
64
|
},
|
|
65
|
-
"gitHead": "
|
|
65
|
+
"gitHead": "c7d4df34f076bd59e43ec432dfd824c89a215cdc"
|
|
66
66
|
}
|