vap1 0.2.6 → 0.2.8
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/components/Box/Box.js +1 -6
- package/components/Box/SelectBar.js +3 -3
- package/components/SearchBar/ByField.js +20 -12
- package/components/SearchBar/ByKeyword.js +6 -18
- package/components/Tables/Components/ActionBar.js +6 -6
- package/components/Tables/Components/Actions.js +7 -7
- package/components/Tables/Util.js +2 -2
- package/components/Tables/VTable.js +10 -0
- package/components/Trees/ActionTree.js +33 -33
- package/components/Trees/STree.js +2 -2
- package/components/UForm/FormWrapper.js +1 -1
- package/components/UForm/UForm.js +9 -2
- package/components/UForm/UFormModal.js +3 -3
- package/components/UForm/UInfoModal.js +3 -3
- package/components/UForm/_FormUtils.js +4 -4
- package/components/UForm/_input.js +3 -3
- package/components/UForm/_register.d.ts +2 -0
- package/components/Upload/UploadFile.js +2 -2
- package/components/Upload/UploadImage.js +2 -2
- package/components/Upload/UploadModal.js +9 -9
- package/components/Upload/useUpload.js +4 -4
- package/components/_adapt/Layout.js +1 -1
- package/components/_common/DateRange.js +25 -3
- package/components/_common/MonthRange.js +3 -3
- package/hooks/useApiBase.js +9 -9
- package/package.json +1 -1
- package/utils/PageUtil.d.ts +1 -0
- package/utils/PageUtil.js +9 -1
- package/utils/Renders/ApiGetRender.js +5 -5
- package/utils/Renders/DictRender.js +6 -6
- package/utils/Renders/FileRender.d.ts +9 -1
- package/utils/Renders/FileRender.js +57 -14
- package/utils/Renders/ListRender.js +12 -12
- package/utils/Renders/StatusRender.js +2 -2
- package/utils/Renders/index.d.ts +1 -1
- package/utils/Renders/index.js +2 -1
- package/utils/_Support.d.ts +2 -2
- package/utils/screenful.js +2 -2
- package/components/_setup/AjaxSettings.d.ts +0 -9
- package/components/_setup/AjaxSettings.js +0 -43
- package/components/_setup/I18N/enUS.d.ts +0 -1
- package/components/_setup/I18N/enUS.js +0 -106
- package/components/_setup/I18N/index.d.ts +0 -3
- package/components/_setup/I18N/index.js +0 -5
- package/components/_setup/I18N/zhCN.d.ts +0 -3
- package/components/_setup/I18N/zhCN.js +0 -109
- package/components/_setup/I18N/zhHK.d.ts +0 -1
- package/components/_setup/I18N/zhHK.js +0 -107
- package/components/_setup/ICON/IconTypes.d.ts +0 -1
- package/components/_setup/ICON/IconTypes.js +0 -10
- package/components/_setup/SearchField/SearchFieldAdvance.d.ts +0 -1
- package/components/_setup/SearchField/SearchFieldAdvance.js +0 -68
- package/components/_setup/SearchField/SearchFieldDate.d.ts +0 -1
- package/components/_setup/SearchField/SearchFieldDate.js +0 -223
- package/components/_setup/SearchField/SearchFieldInput.d.ts +0 -3
- package/components/_setup/SearchField/SearchFieldInput.js +0 -31
- package/components/_setup/SearchField/SearchFieldSelect.d.ts +0 -1
- package/components/_setup/SearchField/SearchFieldSelect.js +0 -99
- package/components/_setup/SearchField/SearchFieldTree.d.ts +0 -1
- package/components/_setup/SearchField/SearchFieldTree.js +0 -162
- package/components/_setup/SelectBar/SelectList.d.ts +0 -1
- package/components/_setup/SelectBar/SelectList.js +0 -32
- package/components/_setup/SelectBar/SelectTree.d.ts +0 -1
- package/components/_setup/SelectBar/SelectTree.js +0 -42
- package/components/_setup/UForm/UFormAdvanceInput.d.ts +0 -1
- package/components/_setup/UForm/UFormAdvanceInput.js +0 -352
- package/components/_setup/UForm/UFormAdvanceSelect.d.ts +0 -0
- package/components/_setup/UForm/UFormAdvanceSelect.js +0 -26
- package/components/_setup/UForm/UFormCOTree.d.ts +0 -1
- package/components/_setup/UForm/UFormCOTree.js +0 -34
- package/components/_setup/UForm/UFormCrontab.d.ts +0 -1
- package/components/_setup/UForm/UFormCrontab.js +0 -215
- package/components/_setup/UForm/UFormDate.d.ts +0 -1
- package/components/_setup/UForm/UFormDate.js +0 -462
- package/components/_setup/UForm/UFormInput.d.ts +0 -1
- package/components/_setup/UForm/UFormInput.js +0 -197
- package/components/_setup/UForm/UFormJSON.d.ts +0 -1
- package/components/_setup/UForm/UFormJSON.js +0 -259
- package/components/_setup/UForm/UFormJSONTable.d.ts +0 -1
- package/components/_setup/UForm/UFormJSONTable.js +0 -195
- package/components/_setup/UForm/UFormOrg.d.ts +0 -1
- package/components/_setup/UForm/UFormOrg.js +0 -185
- package/components/_setup/UForm/UFormRole.d.ts +0 -1
- package/components/_setup/UForm/UFormRole.js +0 -58
- package/components/_setup/UForm/UFormSearch.d.ts +0 -0
- package/components/_setup/UForm/UFormSearch.js +0 -35
- package/components/_setup/UForm/UFormSelect.d.ts +0 -1
- package/components/_setup/UForm/UFormSelect.js +0 -231
- package/components/_setup/UForm/UFormTree.d.ts +0 -1
- package/components/_setup/UForm/UFormTree.js +0 -110
- package/components/_setup/UForm/UFormUpload.d.ts +0 -1
- package/components/_setup/UForm/UFormUpload.js +0 -201
- package/components/_setup/UForm/_utils.d.ts +0 -11
- package/components/_setup/UForm/_utils.js +0 -41
- package/components/_setup/index.d.ts +0 -22
- package/components/_setup/index.js +0 -26
- /package/components/{_setup/Const.d.ts → _i18n.d.ts} +0 -0
- /package/components/{_setup/Const.js → _i18n.js} +0 -0
|
@@ -1,352 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
-
if (k2 === undefined) k2 = k;
|
|
15
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
-
}
|
|
19
|
-
Object.defineProperty(o, k2, desc);
|
|
20
|
-
}) : (function(o, m, k, k2) {
|
|
21
|
-
if (k2 === undefined) k2 = k;
|
|
22
|
-
o[k2] = m[k];
|
|
23
|
-
}));
|
|
24
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
-
}) : function(o, v) {
|
|
27
|
-
o["default"] = v;
|
|
28
|
-
});
|
|
29
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
30
|
-
if (mod && mod.__esModule) return mod;
|
|
31
|
-
var result = {};
|
|
32
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
33
|
-
__setModuleDefault(result, mod);
|
|
34
|
-
return result;
|
|
35
|
-
};
|
|
36
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
37
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
38
|
-
if (!m) return o;
|
|
39
|
-
var i = m.call(o), r, ar = [], e;
|
|
40
|
-
try {
|
|
41
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
42
|
-
}
|
|
43
|
-
catch (error) { e = { error: error }; }
|
|
44
|
-
finally {
|
|
45
|
-
try {
|
|
46
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
47
|
-
}
|
|
48
|
-
finally { if (e) throw e.error; }
|
|
49
|
-
}
|
|
50
|
-
return ar;
|
|
51
|
-
};
|
|
52
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
53
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
54
|
-
};
|
|
55
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
56
|
-
var react_1 = __importStar(require("react"));
|
|
57
|
-
var lodash_1 = __importDefault(require("lodash"));
|
|
58
|
-
var Popover_1 = require("../../_adapt/Popover");
|
|
59
|
-
var Tag_1 = require("../../_adapt/Tag");
|
|
60
|
-
var Input_1 = require("../../_adapt/Input");
|
|
61
|
-
var InputNumber_1 = require("../../_adapt/InputNumber");
|
|
62
|
-
var Select_1 = require("../../_adapt/Select");
|
|
63
|
-
var Button_1 = require("../../_adapt/Button");
|
|
64
|
-
var index_1 = require("../../index");
|
|
65
|
-
var utils_1 = require("../../../utils");
|
|
66
|
-
var Const_1 = require("../Const");
|
|
67
|
-
var hooks_1 = require("../../../hooks");
|
|
68
|
-
var REG_IP4 = new RegExp("^(\\d{1,3})\.(\\d{1,3})+\.(\\d{1,3})\.(\\d{1,3})$");
|
|
69
|
-
var TYPED_INPUT = [
|
|
70
|
-
{ type: 'ip', validate: utils_1.StringUtil.isIP, tip: Const_1.V.ERR_NOT_IP, maxLength: 39 },
|
|
71
|
-
{ type: 'ip4', validate: utils_1.StringUtil.isIP4, tip: Const_1.V.ERR_NOT_IP4, maxLength: 15 },
|
|
72
|
-
{ type: 'ip6', validate: utils_1.StringUtil.isIP6, tip: Const_1.V.ERR_NOT_IP6, maxLength: 39 },
|
|
73
|
-
{ type: 'email', validate: utils_1.StringUtil.isEmail, tip: Const_1.V.ERR_NOT_EMAIL, maxLength: 64 },
|
|
74
|
-
{ type: 'phone', validate: utils_1.StringUtil.isPhone, tip: Const_1.V.ERR_NOT_PHONE, maxLength: 13 },
|
|
75
|
-
{ type: 'telephone', validate: utils_1.StringUtil.isTelePhone, tip: Const_1.V.ERR_NOT_PHONE, maxLength: 11 },
|
|
76
|
-
{ type: 'mobilephone', validate: utils_1.StringUtil.isMobilePhone, tip: Const_1.V.ERR_NOT_PHONE, maxLength: 13 },
|
|
77
|
-
{ type: 'idcard', validate: utils_1.StringUtil.isId, tip: Const_1.V.ERR_NOT_IDCARD, maxLength: 18 },
|
|
78
|
-
{ type: 'url', validate: utils_1.StringUtil.isURL, tip: Const_1.V.ERR_NOT_URL, maxLength: 128 },
|
|
79
|
-
{ type: 'mac', validate: utils_1.StringUtil.isMAC, tip: Const_1.V.ERR_NOT_MAC, maxLength: 24 },
|
|
80
|
-
];
|
|
81
|
-
TYPED_INPUT.map(function (item) {
|
|
82
|
-
(0, index_1.registerFormField)(item.type, function (props) {
|
|
83
|
-
var field = props.field, disabled = props.disabled, value = props.value, onChange = props.onChange;
|
|
84
|
-
var params = { disabled: disabled, placeholder: (0, index_1.getPlaceholder)(field), autoComplete: 'off' };
|
|
85
|
-
if (item.maxLength)
|
|
86
|
-
params.maxLength = item.maxLength;
|
|
87
|
-
if (field.ignore)
|
|
88
|
-
params.maxLength = null;
|
|
89
|
-
return react_1.default.createElement(Input_1.Input, __assign({}, params, field.config, { value: value === null ? undefined : value, onChange: function (evt) { return utils_1.PageUtil.stopEvent(evt, function () { return onChange(evt.target.value); }); } }));
|
|
90
|
-
}, {
|
|
91
|
-
rules: {
|
|
92
|
-
validator: function (rule, value, callback) {
|
|
93
|
-
if (value == '' || value == null)
|
|
94
|
-
return callback();
|
|
95
|
-
if (item.validate(value)) {
|
|
96
|
-
callback();
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
callback(utils_1.i18n.txt(item.tip));
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
});
|
|
104
|
-
});
|
|
105
|
-
(0, index_1.registerFormField)('port', function (props) {
|
|
106
|
-
var field = props.field, disabled = props.disabled, value = props.value, onChange = props.onChange;
|
|
107
|
-
var params = { placeholder: (0, index_1.getPlaceholder)(field), disabled: disabled, autoComplete: 'off', };
|
|
108
|
-
return react_1.default.createElement(InputNumber_1.InputNumber, __assign({}, params, field.config, { max: 65535, min: 1, className: 'i-number', value: value === null ? undefined : value, onChange: onChange }));
|
|
109
|
-
});
|
|
110
|
-
(0, index_1.registerFormField)('_port', function (props) {
|
|
111
|
-
var _a;
|
|
112
|
-
var field = props.field, disabled = props.disabled, value = props.value, onChange = props.onChange;
|
|
113
|
-
var params = { disabled: disabled };
|
|
114
|
-
if (field.placeholder) {
|
|
115
|
-
params.placeholder = field.placeholder;
|
|
116
|
-
}
|
|
117
|
-
else {
|
|
118
|
-
params.placeholder = field.title;
|
|
119
|
-
}
|
|
120
|
-
var val = undefined;
|
|
121
|
-
if (value !== null) {
|
|
122
|
-
if (((_a = field.config) === null || _a === void 0 ? void 0 : _a.valueFormat) == 'string') {
|
|
123
|
-
try {
|
|
124
|
-
val = parseInt(value);
|
|
125
|
-
}
|
|
126
|
-
catch (_b) {
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
else {
|
|
130
|
-
val = value;
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
return react_1.default.createElement(Input_1.Input.Group, { compact: true, className: 'i-port' },
|
|
134
|
-
react_1.default.createElement(InputNumber_1.InputNumber, __assign({}, params, { autoComplete: "off", value: val, min: 1, max: 65535, step: 1, style: { width: 120 }, onChange: function (val) {
|
|
135
|
-
var _a;
|
|
136
|
-
if (((_a = field.config) === null || _a === void 0 ? void 0 : _a.valueFormat) == 'string') {
|
|
137
|
-
onChange(val + '');
|
|
138
|
-
}
|
|
139
|
-
else {
|
|
140
|
-
onChange(val);
|
|
141
|
-
}
|
|
142
|
-
} })),
|
|
143
|
-
react_1.default.createElement(Popover_1.Popover, { title: "\u5E38\u7528\u7AEF\u53E3", content: react_1.default.createElement("div", { className: "i-port-popup" },
|
|
144
|
-
react_1.default.createElement(Tag_1.Tag, { color: "purple", onClick: function () { return onChange(80); } },
|
|
145
|
-
"http ",
|
|
146
|
-
react_1.default.createElement("b", null, "80")),
|
|
147
|
-
react_1.default.createElement(Tag_1.Tag, { color: "purple", onClick: function () { return onChange(443); } },
|
|
148
|
-
"https ",
|
|
149
|
-
react_1.default.createElement("b", null, "443")),
|
|
150
|
-
react_1.default.createElement(Tag_1.Tag, { color: "purple", onClick: function () { return onChange(8080); } },
|
|
151
|
-
"\u5E38\u7528\u7528www\u4EE3\u7406 ",
|
|
152
|
-
react_1.default.createElement("b", null, "8080")),
|
|
153
|
-
react_1.default.createElement(Tag_1.Tag, { color: "purple", onClick: function () { return onChange(1080); } },
|
|
154
|
-
"\u5E38\u7528Socket\u4EE3\u7406 ",
|
|
155
|
-
react_1.default.createElement("b", null, "1080")),
|
|
156
|
-
react_1.default.createElement(Tag_1.Tag, { color: "volcano", onClick: function () { return onChange(23); } },
|
|
157
|
-
"SMTP ",
|
|
158
|
-
react_1.default.createElement("b", null, "23")),
|
|
159
|
-
react_1.default.createElement(Tag_1.Tag, { color: "volcano", onClick: function () { return onChange(110); } },
|
|
160
|
-
"POP3 ",
|
|
161
|
-
react_1.default.createElement("b", null, "110")),
|
|
162
|
-
react_1.default.createElement(Tag_1.Tag, { color: "volcano", onClick: function () { return onChange(21); } },
|
|
163
|
-
"FTP ",
|
|
164
|
-
react_1.default.createElement("b", null, "21")),
|
|
165
|
-
react_1.default.createElement(Tag_1.Tag, { color: "volcano", onClick: function () { return onChange(22); } },
|
|
166
|
-
"SSH/SFTP ",
|
|
167
|
-
react_1.default.createElement("b", null, "22")),
|
|
168
|
-
react_1.default.createElement(Tag_1.Tag, { color: "volcano", onClick: function () { return onChange(23); } },
|
|
169
|
-
"Telnet ",
|
|
170
|
-
react_1.default.createElement("b", null, "23")),
|
|
171
|
-
react_1.default.createElement(Tag_1.Tag, { color: "geekblue", onClick: function () { return onChange(3306); } },
|
|
172
|
-
"MySql ",
|
|
173
|
-
react_1.default.createElement("b", null, "3306")),
|
|
174
|
-
react_1.default.createElement(Tag_1.Tag, { color: "geekblue", onClick: function () { return onChange(5432); } },
|
|
175
|
-
"PostgreSql ",
|
|
176
|
-
react_1.default.createElement("b", null, "5432")),
|
|
177
|
-
react_1.default.createElement(Tag_1.Tag, { color: "geekblue", onClick: function () { return onChange(1521); } },
|
|
178
|
-
"Oracle ",
|
|
179
|
-
react_1.default.createElement("b", null, "1521")),
|
|
180
|
-
react_1.default.createElement(Tag_1.Tag, { color: "geekblue", onClick: function () { return onChange(6379); } },
|
|
181
|
-
"Redis ",
|
|
182
|
-
react_1.default.createElement("b", null, "6379")),
|
|
183
|
-
react_1.default.createElement(Tag_1.Tag, { color: "geekblue", onClick: function () { return onChange(27017); } },
|
|
184
|
-
"MongoDB ",
|
|
185
|
-
react_1.default.createElement("b", null, "27017"))) },
|
|
186
|
-
react_1.default.createElement(Button_1.Button, { icon: 'select' }, "\u5E38\u7528\u7AEF\u53E3")));
|
|
187
|
-
// 1080 — SOCK Proxy
|
|
188
|
-
// 2049 — Network File System (NFS)
|
|
189
|
-
// 2181 — Apache ZooKeeper
|
|
190
|
-
// 2375 — Docker REST API (HTTP)
|
|
191
|
-
// 2376 — Docker REST API (HTTPS)
|
|
192
|
-
// 3306 — MySQL
|
|
193
|
-
// 3478 — STUN, TURN (NAT Traversal)
|
|
194
|
-
// 4000 — Phoenix, Jekyll
|
|
195
|
-
// 4001 — etcd
|
|
196
|
-
// 4200 — AngularJS
|
|
197
|
-
// 4567 — Sinatra
|
|
198
|
-
// 5000 — “The Other Development Framework Port.” Flask (Python) uses 5000 as the default development port. As does ASP.NET Core.
|
|
199
|
-
// 5222 — XMPP (Extensible Messaging and Presence Protocol)
|
|
200
|
-
// 5349 — STUN, TURN over TLS
|
|
201
|
-
// 5353 — Multicast DNS — Follows the same pattern as SMTP, occasionally being run on port 3535. Duplicates the privileged port (DNS uses 53).
|
|
202
|
-
// 5432 — PostgreSQL
|
|
203
|
-
// 5900 — VNC (using a remote frame buffer, RFB)
|
|
204
|
-
// 6000 — X11 (over the network). Common to take the display number and add it to 6000 (e.g., DISPLAY 6 would be served over 6006).
|
|
205
|
-
// 6379 — Redis
|
|
206
|
-
// 6660 — IRC (Internet Relay Chat)
|
|
207
|
-
// 6881 — BitTorrent
|
|
208
|
-
// 8000 — “Python Development Framework Port.” Includes Django and Python 3’s http.server.
|
|
209
|
-
// 8080 — “The HTTP web server port.” Like 5353 (Multicast DNS) and 3535 (SMTP), an unprivileged port to run an HTTP webserver.
|
|
210
|
-
// 8333 — Bitcoin
|
|
211
|
-
// 8888 — Jupyter Notebook,
|
|
212
|
-
// 8983 — Apache Solr
|
|
213
|
-
// 9000 — Used by various applications, but no central theme or extremely well-known application.
|
|
214
|
-
// 25565 — Minecraft
|
|
215
|
-
// 27017 — MongoDB
|
|
216
|
-
// 51820 — WireGuard
|
|
217
|
-
});
|
|
218
|
-
(0, index_1.registerFormField)('_ip4', function (props) {
|
|
219
|
-
var value = props.value, onChange = props.onChange, disabled = props.disabled;
|
|
220
|
-
var _a = __read((0, hooks_1.useSetState)({
|
|
221
|
-
one: undefined,
|
|
222
|
-
two: undefined,
|
|
223
|
-
three: undefined,
|
|
224
|
-
four: undefined,
|
|
225
|
-
}), 2), state = _a[0], setState = _a[1];
|
|
226
|
-
var setValue = function (value) {
|
|
227
|
-
var match = REG_IP4.exec(value);
|
|
228
|
-
if (match) {
|
|
229
|
-
setState({
|
|
230
|
-
one: parseInt(RegExp.$1),
|
|
231
|
-
two: parseInt(RegExp.$2),
|
|
232
|
-
three: parseInt(RegExp.$3),
|
|
233
|
-
four: parseInt(RegExp.$4)
|
|
234
|
-
});
|
|
235
|
-
}
|
|
236
|
-
};
|
|
237
|
-
var elOne = (0, react_1.useRef)(null);
|
|
238
|
-
var elTwo = (0, react_1.useRef)(null);
|
|
239
|
-
var elThree = (0, react_1.useRef)(null);
|
|
240
|
-
var elFour = (0, react_1.useRef)(null);
|
|
241
|
-
(0, react_1.useLayoutEffect)(function () {
|
|
242
|
-
if (value)
|
|
243
|
-
setValue(value);
|
|
244
|
-
}, []);
|
|
245
|
-
(0, react_1.useLayoutEffect)(function () {
|
|
246
|
-
setValue(props.value);
|
|
247
|
-
}, [props.value]);
|
|
248
|
-
var update = function () {
|
|
249
|
-
var one = state.one, two = state.two, three = state.three, four = state.four;
|
|
250
|
-
if (one == null || two == null || three == null || four == null) {
|
|
251
|
-
if (props.value != '') {
|
|
252
|
-
onChange('');
|
|
253
|
-
}
|
|
254
|
-
;
|
|
255
|
-
return;
|
|
256
|
-
}
|
|
257
|
-
onChange("".concat(one, ".").concat(two, ".").concat(three, ".").concat(four));
|
|
258
|
-
};
|
|
259
|
-
var one = function (one) {
|
|
260
|
-
if (typeof one == 'string' && lodash_1.default.endsWith(one, '.')) {
|
|
261
|
-
elTwo.current.focus();
|
|
262
|
-
//@ts-ignore
|
|
263
|
-
one = one.replace('.', '');
|
|
264
|
-
}
|
|
265
|
-
setState({ one: one }, function () {
|
|
266
|
-
update();
|
|
267
|
-
if (one > 100) {
|
|
268
|
-
elTwo.current.focus();
|
|
269
|
-
}
|
|
270
|
-
});
|
|
271
|
-
};
|
|
272
|
-
var two = function (two) {
|
|
273
|
-
if (typeof two == 'string' && lodash_1.default.endsWith(two, '.')) {
|
|
274
|
-
elThree.current.focus();
|
|
275
|
-
//@ts-ignore
|
|
276
|
-
two = two.replace('.', '');
|
|
277
|
-
}
|
|
278
|
-
setState({ two: two }, function () {
|
|
279
|
-
update();
|
|
280
|
-
if (two > 100) {
|
|
281
|
-
elThree.current.focus();
|
|
282
|
-
}
|
|
283
|
-
});
|
|
284
|
-
};
|
|
285
|
-
var three = function (three) {
|
|
286
|
-
if (typeof three == 'string' && lodash_1.default.endsWith(three, '.')) {
|
|
287
|
-
elFour.current.focus();
|
|
288
|
-
//@ts-ignore
|
|
289
|
-
three = three.replace('.', '');
|
|
290
|
-
}
|
|
291
|
-
setState({ three: three }, function () {
|
|
292
|
-
update();
|
|
293
|
-
if (three > 100) {
|
|
294
|
-
elFour.current.focus();
|
|
295
|
-
}
|
|
296
|
-
});
|
|
297
|
-
};
|
|
298
|
-
var four = function (four) {
|
|
299
|
-
if (typeof four == 'string' && lodash_1.default.endsWith(four, '.')) {
|
|
300
|
-
//@ts-ignore
|
|
301
|
-
four = four.replace('.', '');
|
|
302
|
-
elFour.current.blur();
|
|
303
|
-
}
|
|
304
|
-
setState({ four: four }, function () { return update(); });
|
|
305
|
-
};
|
|
306
|
-
var handle = function (evt, number, el) {
|
|
307
|
-
if (evt.key != 'Backspace') {
|
|
308
|
-
return;
|
|
309
|
-
}
|
|
310
|
-
if (number == null || number == '') {
|
|
311
|
-
el.focus();
|
|
312
|
-
}
|
|
313
|
-
};
|
|
314
|
-
var inputProps = { disabled: disabled, min: 0, max: 255 };
|
|
315
|
-
return react_1.default.createElement(Input_1.Input.Group, { className: 'i-ip' },
|
|
316
|
-
react_1.default.createElement(InputNumber_1.InputNumber, __assign({}, inputProps, { ref: elOne, value: state.one, style: { width: 60, borderRightColor: 'transparent', borderTopRightRadius: 0, borderBottomRightRadius: 0 }, onChange: function (num) { return one(num); } })),
|
|
317
|
-
react_1.default.createElement(InputNumber_1.InputNumber, __assign({}, inputProps, { ref: elTwo, value: state.two, style: { width: 60, borderLeftColor: 'transparent', borderRightColor: 'transparent', borderRadius: 0 }, onChange: function (num) { return two(num); }, onKeyDown: function (evt) { return handle(evt, two, elOne.current); } })),
|
|
318
|
-
react_1.default.createElement(InputNumber_1.InputNumber, __assign({}, inputProps, { ref: elThree, value: state.three, style: { width: 60, borderLeftColor: 'transparent', borderRightColor: 'transparent', borderRadius: 0 }, onChange: function (num) { return three(num); }, onKeyDown: function (evt) { return handle(evt, three, elTwo.current); } })),
|
|
319
|
-
react_1.default.createElement(InputNumber_1.InputNumber, __assign({}, inputProps, { ref: elFour, value: state.four, style: { width: 60, borderLeftColor: 'transparent', borderTopLeftRadius: 0, borderBottomLeftRadius: 0 }, onChange: function (num) { return four(num); }, onKeyDown: function (evt) { return handle(evt, four, elThree.current); } })));
|
|
320
|
-
});
|
|
321
|
-
(0, index_1.registerFormField)('_url', function (props) {
|
|
322
|
-
var value = props.value, disabled = props.disabled, onChange = props.onChange;
|
|
323
|
-
var path = '';
|
|
324
|
-
var prefix = 'http://';
|
|
325
|
-
if (value && lodash_1.default.startsWith(value, 'https://')) {
|
|
326
|
-
prefix = 'https://';
|
|
327
|
-
}
|
|
328
|
-
if (lodash_1.default.startsWith(value, prefix)) {
|
|
329
|
-
path = value.substring(prefix.length);
|
|
330
|
-
}
|
|
331
|
-
else {
|
|
332
|
-
path = value || '';
|
|
333
|
-
}
|
|
334
|
-
return react_1.default.createElement(Input_1.Input, { disabled: disabled, value: path, onChange: function (evt) { return onChange(prefix + evt.target.value); }, addonBefore: react_1.default.createElement(Select_1.Select, { style: { width: 90 }, value: prefix, onChange: function (fix) { return onChange(fix + path); } },
|
|
335
|
-
react_1.default.createElement(Select_1.Select.Option, { value: "http://" }, "http://"),
|
|
336
|
-
react_1.default.createElement(Select_1.Select.Option, { value: "https://" }, "https://")) });
|
|
337
|
-
}, {
|
|
338
|
-
rules: {
|
|
339
|
-
validator: function (rule, value, callback) {
|
|
340
|
-
if (value == '') {
|
|
341
|
-
callback();
|
|
342
|
-
return;
|
|
343
|
-
}
|
|
344
|
-
if (utils_1.StringUtil.isURL(value)) {
|
|
345
|
-
callback();
|
|
346
|
-
}
|
|
347
|
-
else {
|
|
348
|
-
callback(utils_1.i18n.txt(Const_1.V.ERR_NOT_URL));
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
|
-
}
|
|
352
|
-
});
|
|
File without changes
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
// registerInputType('transfer', class extends UFormInput {
|
|
2
|
-
// render() {
|
|
3
|
-
// const { field, disabled, value } = this.props;
|
|
4
|
-
// let selectKey = [];
|
|
5
|
-
// if (value) {
|
|
6
|
-
// selectKey = value.split(',').map(item => item.trim())
|
|
7
|
-
// }
|
|
8
|
-
// let params: any = { disabled }
|
|
9
|
-
// if (field.rule && _.find(field.rule, { required: true })) {
|
|
10
|
-
// params.allowClear = false;
|
|
11
|
-
// }
|
|
12
|
-
// return <Transfer
|
|
13
|
-
// showSearch
|
|
14
|
-
// {...params}
|
|
15
|
-
// {...field.config}
|
|
16
|
-
// dataSource={this.getOptions().map(item => ({ title: item.label, key: item.value, description: item.label }))}
|
|
17
|
-
// filterOption={(inputValue, option) => option.title.indexOf(inputValue) > -1}
|
|
18
|
-
// targetKeys={selectKey}
|
|
19
|
-
// render={item => item.title}
|
|
20
|
-
// onChange={(val: any) => this.onChange(val.join(','))}
|
|
21
|
-
// />
|
|
22
|
-
// }
|
|
23
|
-
// }, {
|
|
24
|
-
// breakCol: true,
|
|
25
|
-
// show: MULTI_CHOOSE_SHOW,
|
|
26
|
-
// })
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
var react_1 = __importDefault(require("react"));
|
|
18
|
-
var lodash_1 = __importDefault(require("lodash"));
|
|
19
|
-
var _register_1 = require("../../UForm/_register");
|
|
20
|
-
var COButton_1 = require("../../Trees/COTree/COButton");
|
|
21
|
-
var _input_1 = require("../../UForm/_input");
|
|
22
|
-
// CEMS ORG SELECT
|
|
23
|
-
(0, _register_1.registerFormField)('cems-org-button', function (props) {
|
|
24
|
-
var field = props.field, disabled = props.disabled, value = props.value, onChange = props.onChange;
|
|
25
|
-
var params = {
|
|
26
|
-
placeholder: (0, _input_1.getPlaceholder)(field, true),
|
|
27
|
-
disabled: disabled,
|
|
28
|
-
allowClear: true,
|
|
29
|
-
onChange: onChange
|
|
30
|
-
};
|
|
31
|
-
if (field.required || field.rules && lodash_1.default.find(field.rules, { required: true }))
|
|
32
|
-
params.allowClear = false;
|
|
33
|
-
return react_1.default.createElement(COButton_1.COButton, __assign({ dataType: field.dataType || 'string' }, params, field.config, { value: value }));
|
|
34
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,215 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
26
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
27
|
-
if (!m) return o;
|
|
28
|
-
var i = m.call(o), r, ar = [], e;
|
|
29
|
-
try {
|
|
30
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
31
|
-
}
|
|
32
|
-
catch (error) { e = { error: error }; }
|
|
33
|
-
finally {
|
|
34
|
-
try {
|
|
35
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
36
|
-
}
|
|
37
|
-
finally { if (e) throw e.error; }
|
|
38
|
-
}
|
|
39
|
-
return ar;
|
|
40
|
-
};
|
|
41
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
42
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
43
|
-
};
|
|
44
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
-
var react_1 = __importStar(require("react"));
|
|
46
|
-
var lodash_1 = __importDefault(require("lodash"));
|
|
47
|
-
var antd_1 = require("antd");
|
|
48
|
-
var UFormModal_1 = require("../../UForm/UFormModal");
|
|
49
|
-
var _register_1 = require("../../../components/UForm/_register");
|
|
50
|
-
var utils_1 = require("../../../utils");
|
|
51
|
-
var TXT = utils_1.i18n.fastRegister({
|
|
52
|
-
MON: '周一', TUE: '周二', WED: '周三', THU: '周四', FRI: '周五', SAT: '周六', SUN: '周日',
|
|
53
|
-
TITLE: '周期设置', YEAR: '年', MONTH: '月', WEEK: '周', DAY: '日', TIME: '时间',
|
|
54
|
-
EVERY: '每', EVERY_DAY: '每天', EVERY_MONTH: '每月', EVERY_WEEK: '每周', EVERY_YEAR: '每年',
|
|
55
|
-
}, {
|
|
56
|
-
MON: 'Monday', TUE: 'Tuesday', WED: 'Wednesday', THU: 'Thursday', FRI: 'Friday', SAT: 'Saturday', SUN: 'Sunday',
|
|
57
|
-
TITLE: 'Circye Setting', YEAR: 'Year', MONTH: 'Month', WEEK: 'Week', DAY: 'Day', TIME: 'Time',
|
|
58
|
-
EVERY: 'Every', EVERY_DAY: 'EveryDay', EVERY_MONTH: 'EveryMonth', EVERY_WEEK: 'EveryWeek', EVERY_YEAR: 'EveryYear',
|
|
59
|
-
});
|
|
60
|
-
var WEEK = [
|
|
61
|
-
{ ik: TXT.SUN, value: 'sun', idx: 0 },
|
|
62
|
-
{ ik: TXT.MON, value: 'mon', idx: 1 },
|
|
63
|
-
{ ik: TXT.TUE, value: 'tue', idx: 2 },
|
|
64
|
-
{ ik: TXT.WED, value: 'wed', idx: 3 },
|
|
65
|
-
{ ik: TXT.THU, value: 'thu', idx: 4 },
|
|
66
|
-
{ ik: TXT.FRI, value: 'fri', idx: 5 },
|
|
67
|
-
{ ik: TXT.SAT, value: 'sat', idx: 6 },
|
|
68
|
-
];
|
|
69
|
-
var WeekMap = new Map();
|
|
70
|
-
WEEK.map(function (item) {
|
|
71
|
-
WeekMap.set(item.idx, item);
|
|
72
|
-
WeekMap.set(item.value, item);
|
|
73
|
-
WeekMap.set(item.idx + '', item);
|
|
74
|
-
});
|
|
75
|
-
var getWeek = function (str) {
|
|
76
|
-
if (!WeekMap.has(str))
|
|
77
|
-
return 'sun';
|
|
78
|
-
return WeekMap.get(str).value;
|
|
79
|
-
};
|
|
80
|
-
var parseCrontab = function (str) {
|
|
81
|
-
var crontab = {
|
|
82
|
-
_type: 'day',
|
|
83
|
-
_month: undefined,
|
|
84
|
-
_week: undefined,
|
|
85
|
-
_day: undefined,
|
|
86
|
-
_time: undefined,
|
|
87
|
-
};
|
|
88
|
-
var arr = lodash_1.default.trim(str).split(/\s+/);
|
|
89
|
-
if (arr.length >= 6) {
|
|
90
|
-
crontab._time = "".concat(arr[2].length == 1 ? ('0' + arr[2]) : arr[2], ":").concat(arr[1].length == 1 ? ('0' + arr[1]) : arr[1], ":").concat(arr[0].length == 1 ? ('0' + arr[0]) : arr[0]);
|
|
91
|
-
crontab._day = (arr[3] == '*' || arr[3] == '?') ? undefined : arr[3];
|
|
92
|
-
crontab._month = (arr[4] == '*' || arr[4] == '?') ? undefined : arr[4];
|
|
93
|
-
crontab._week = (arr[5] == '*' || arr[5] == '?') ? undefined : getWeek(arr[5]);
|
|
94
|
-
}
|
|
95
|
-
if (crontab._month) {
|
|
96
|
-
crontab._type = 'year';
|
|
97
|
-
}
|
|
98
|
-
else if (crontab._week) {
|
|
99
|
-
crontab._type = 'week';
|
|
100
|
-
}
|
|
101
|
-
else if (crontab._day) {
|
|
102
|
-
crontab._type = 'month';
|
|
103
|
-
}
|
|
104
|
-
return crontab;
|
|
105
|
-
};
|
|
106
|
-
var crontab = function (data) {
|
|
107
|
-
var _month = data._month, _week = data._week, _day = data._day, _time = data._time, _type = data._type;
|
|
108
|
-
var _a = __read(['*', '*', '?'], 3), day = _a[0], month = _a[1], week = _a[2];
|
|
109
|
-
var times = lodash_1.default.trim(_time).split(':');
|
|
110
|
-
var _b = __read([parseInt(times[2]), parseInt(times[1]), parseInt(times[0])], 3), second = _b[0], minute = _b[1], hour = _b[2];
|
|
111
|
-
switch (_type) {
|
|
112
|
-
case 'day':
|
|
113
|
-
break;
|
|
114
|
-
case 'month':
|
|
115
|
-
day = _day;
|
|
116
|
-
break;
|
|
117
|
-
case 'year':
|
|
118
|
-
day = _day;
|
|
119
|
-
month = _month;
|
|
120
|
-
break;
|
|
121
|
-
case 'week':
|
|
122
|
-
day = '?';
|
|
123
|
-
week = getWeek(_week);
|
|
124
|
-
break;
|
|
125
|
-
}
|
|
126
|
-
return [second, minute, hour, day, month, week].join(' ');
|
|
127
|
-
};
|
|
128
|
-
var crontabStr = function (data) {
|
|
129
|
-
var _month = data._month, _week = data._week, _day = data._day, _time = data._time, _type = data._type;
|
|
130
|
-
switch (_type) {
|
|
131
|
-
case 'day':
|
|
132
|
-
return utils_1.i18n.txt(TXT.EVERY_DAY) + ' ' + _time;
|
|
133
|
-
case 'month':
|
|
134
|
-
return utils_1.i18n.txt(TXT.EVERY_MONTH) + ' ' + (parseInt(_day)) + utils_1.i18n.txt(TXT.DAY) + ' ' + _time;
|
|
135
|
-
case 'year':
|
|
136
|
-
return utils_1.i18n.txt(TXT.EVERY_YEAR) + ' ' + (parseInt(_month)) + utils_1.i18n.txt(TXT.MONTH) + (parseInt(_day)) + utils_1.i18n.txt(TXT.DAY) + ' ' + _time;
|
|
137
|
-
case 'week':
|
|
138
|
-
return utils_1.i18n.txt(TXT.EVERY) + utils_1.i18n.txt((WeekMap.get(_week).ik)) + ' ' + _time;
|
|
139
|
-
}
|
|
140
|
-
};
|
|
141
|
-
(0, _register_1.registerFormField)('crontab', function (props) {
|
|
142
|
-
var value = props.value, field = props.field, form = props.form, disabled = props.disabled;
|
|
143
|
-
var _a = __read((0, react_1.useState)(false), 2), open = _a[0], setOpen = _a[1];
|
|
144
|
-
var dayOptions = Array.from({ length: 31 }).map(function (d, i) { return ({ label: "".concat((i + 1), "\u53F7"), value: "".concat((i + 1)) }); });
|
|
145
|
-
var weekOptions = WEEK.map(function (item) { return ({ label: utils_1.i18n.txt(item.ik), value: item.value }); });
|
|
146
|
-
var monthOptions = Array.from({ length: 12 }).map(function (d, i) { return ({ label: "".concat(i + 1, "\u6708"), value: "".concat((i + 1)) }); });
|
|
147
|
-
var cron = {
|
|
148
|
-
_type: 'day',
|
|
149
|
-
_month: undefined,
|
|
150
|
-
_week: undefined,
|
|
151
|
-
_day: undefined,
|
|
152
|
-
_time: undefined,
|
|
153
|
-
};
|
|
154
|
-
var btn = utils_1.i18n.txt(TXT.TITLE);
|
|
155
|
-
if (value) {
|
|
156
|
-
cron = parseCrontab(value);
|
|
157
|
-
btn = crontabStr(cron);
|
|
158
|
-
}
|
|
159
|
-
return react_1.default.createElement(react_1.default.Fragment, null,
|
|
160
|
-
react_1.default.createElement(antd_1.Button, { style: { marginRight: 10 }, disabled: disabled, onClick: function () { return setOpen(true); } }, btn),
|
|
161
|
-
react_1.default.createElement(UFormModal_1.UFormModal, { title: utils_1.i18n.txt(TXT.TITLE), width: 560, open: open, data: cron, fields: [
|
|
162
|
-
{
|
|
163
|
-
title: '周期',
|
|
164
|
-
field: '_type',
|
|
165
|
-
type: 'radio',
|
|
166
|
-
rules: [{ required: true, }],
|
|
167
|
-
options: [
|
|
168
|
-
{ label: utils_1.i18n.txt(TXT.EVERY_DAY), value: 'day' },
|
|
169
|
-
{ label: utils_1.i18n.txt(TXT.EVERY_WEEK), value: 'week' },
|
|
170
|
-
{ label: utils_1.i18n.txt(TXT.EVERY_MONTH), value: 'month' },
|
|
171
|
-
{ label: utils_1.i18n.txt(TXT.EVERY_YEAR), value: 'year' }
|
|
172
|
-
],
|
|
173
|
-
link: [
|
|
174
|
-
{
|
|
175
|
-
field: '_month', call: function (txt) {
|
|
176
|
-
if (txt == 'year') {
|
|
177
|
-
return { show: true, required: true };
|
|
178
|
-
}
|
|
179
|
-
return { show: false, required: false };
|
|
180
|
-
}
|
|
181
|
-
},
|
|
182
|
-
{
|
|
183
|
-
field: '_week', call: function (txt) {
|
|
184
|
-
if (txt == 'week') {
|
|
185
|
-
return { show: true, required: true };
|
|
186
|
-
}
|
|
187
|
-
return { show: false, required: false };
|
|
188
|
-
}
|
|
189
|
-
},
|
|
190
|
-
{
|
|
191
|
-
field: '_day', call: function (txt) {
|
|
192
|
-
if (txt == 'year' || txt == 'month') {
|
|
193
|
-
return { show: true, required: true };
|
|
194
|
-
}
|
|
195
|
-
return { show: false, required: false };
|
|
196
|
-
}
|
|
197
|
-
},
|
|
198
|
-
]
|
|
199
|
-
},
|
|
200
|
-
{ title: '月', ik: TXT.MONTH, field: '_month', type: 'select', options: monthOptions, show: false },
|
|
201
|
-
{ title: '周', ik: TXT.WEEK, field: '_week', type: 'select', options: weekOptions, show: false },
|
|
202
|
-
{ title: '日', ik: TXT.DAY, field: '_day', type: 'select', options: dayOptions, show: false },
|
|
203
|
-
{ title: '时间', ik: TXT.TIME, field: '_time', type: 'time', rules: [{ required: true, message: '请填写时间', }] },
|
|
204
|
-
], onOk: function (data) {
|
|
205
|
-
var str = crontab(data);
|
|
206
|
-
setOpen(false);
|
|
207
|
-
props.onChange(str);
|
|
208
|
-
}, onCancel: function () { return setOpen(false); } }));
|
|
209
|
-
}, {
|
|
210
|
-
render: function (value) {
|
|
211
|
-
if (value == null)
|
|
212
|
-
return '';
|
|
213
|
-
return crontabStr(parseCrontab(value));
|
|
214
|
-
}
|
|
215
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|