react-hook-core 0.4.5 → 0.4.7

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/lib/com.js CHANGED
@@ -1,15 +1,37 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var React = require("react");
4
- var core_1 = require("./core");
1
+ "use strict"
2
+ Object.defineProperty(exports, "__esModule", { value: true })
3
+ var React = require("react")
4
+ var core_1 = require("./core")
5
5
  function PageSizeSelect(p) {
6
- var g = p.sizes;
7
- var s = (!g || g.length === 0 ? core_1.pageSizes : g);
8
- var opts = s.map(function (pgSize) { return React.createElement('option', { key: pgSize, value: pgSize }, pgSize); });
9
- return React.createElement('select', { id: p.id, name: p.name, defaultValue: p.size, onChange: p.onChange }, opts);
6
+ var g = p.sizes
7
+ var s = !g || g.length === 0 ? core_1.pageSizes : g
8
+ var opts = s.map(function (pgSize) {
9
+ return React.createElement("option", { key: pgSize, value: pgSize }, pgSize)
10
+ })
11
+ return React.createElement("select", { id: p.id, name: p.name, defaultValue: p.size, onChange: p.onChange }, opts)
10
12
  }
11
- exports.PageSizeSelect = PageSizeSelect;
13
+ exports.PageSizeSelect = PageSizeSelect
12
14
  function Search(p) {
13
- return (React.createElement(React.Fragment, null, React.createElement("label", { className: p.className }, p.pageSizeChanged && React.createElement(PageSizeSelect, { size: p.size, sizes: p.sizes, onChange: p.pageSizeChanged, name: p.name, id: p.id }), React.createElement("input", { type: 'text', id: 'q', name: 'q', value: p.value || '', onChange: p.onChange, maxLength: p.maxLength, placeholder: p.placeholder }), p.clear && React.createElement("button", { type: 'button', hidden: !p.value, className: 'btn-remove-text', onClick: p.clear }), p.toggle && React.createElement("button", { type: 'button', className: 'btn-filter', onClick: p.toggle }), p.search && React.createElement("button", { type: 'submit', className: 'btn-search', onClick: p.search }))));
15
+ return React.createElement(
16
+ React.Fragment,
17
+ null,
18
+ React.createElement(
19
+ "label",
20
+ { className: p.className },
21
+ p.pageSizeChanged && React.createElement(PageSizeSelect, { size: p.size, sizes: p.sizes, onChange: p.pageSizeChanged, name: p.name, id: p.id }),
22
+ React.createElement("input", {
23
+ type: "text",
24
+ id: "q",
25
+ name: "q",
26
+ value: p.value || "",
27
+ onChange: p.onChange,
28
+ maxLength: p.maxLength,
29
+ placeholder: p.placeholder,
30
+ }),
31
+ p.clear && React.createElement("button", { type: "button", hidden: !p.value, className: "btn-remove-text", onClick: p.clear }),
32
+ p.toggle && React.createElement("button", { type: "button", className: "btn-filter", onClick: p.toggle }),
33
+ p.search && React.createElement("button", { type: "submit", className: "btn-search", onClick: p.search }),
34
+ ),
35
+ )
14
36
  }
15
- exports.Search = Search;
37
+ exports.Search = Search
package/lib/core.js CHANGED
@@ -1,240 +1,186 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var formutil_1 = require("./formutil");
4
- exports.pageSizes = [12, 24, 60, 100, 120, 180, 300, 600];
1
+ "use strict"
2
+ Object.defineProperty(exports, "__esModule", { value: true })
3
+ var formutil_1 = require("./formutil")
4
+ exports.pageSizes = [12, 24, 60, 100, 120, 180, 300, 600]
5
5
  var resources = (function () {
6
- function resources() {
7
- }
8
- resources.phone = / |-|\.|\(|\)/g;
9
- resources._cache = {};
10
- resources.cache = true;
11
- resources.limit = 24;
12
- resources.pages = exports.pageSizes;
13
- resources.pageMaxSize = 7;
14
- return resources;
15
- }());
16
- exports.resources = resources;
17
- exports.size = exports.pageSizes;
6
+ function resources() {}
7
+ resources.phone = / |-|\.|\(|\)/g
8
+ resources._cache = {}
9
+ resources.cache = true
10
+ resources.fields = "fields"
11
+ resources.page = "page"
12
+ resources.limit = "limit"
13
+ resources.defaultLimit = 24
14
+ resources.limits = exports.pageSizes
15
+ resources.pageMaxSize = 7
16
+ return resources
17
+ })()
18
+ exports.resources = resources
19
+ exports.size = exports.pageSizes
18
20
  function getCurrencyCode(form) {
19
21
  if (form) {
20
- var x = form.getAttribute('currency-code');
22
+ var x = form.getAttribute("currency-code")
21
23
  if (x) {
22
- return x;
24
+ return x
23
25
  }
24
26
  }
25
- return undefined;
27
+ return undefined
26
28
  }
27
- exports.getCurrencyCode = getCurrencyCode;
29
+ exports.getCurrencyCode = getCurrencyCode
28
30
  function removePhoneFormat(phone) {
29
31
  if (phone) {
30
- return phone.replace(resources.phone, '');
31
- }
32
- else {
33
- return phone;
34
- }
35
- }
36
- exports.removePhoneFormat = removePhoneFormat;
37
- function getString(key, gv) {
38
- if (typeof gv === 'function') {
39
- return gv(key);
40
- }
41
- else {
42
- return gv[key];
43
- }
44
- }
45
- exports.getString = getString;
46
- function message(gv, msg, title, yes, no) {
47
- var m2 = (msg && msg.length > 0 ? getString(msg, gv) : '');
48
- var m = { message: m2, title: '' };
49
- if (title && title.length > 0) {
50
- m.title = getString(title, gv);
51
- }
52
- if (yes && yes.length > 0) {
53
- m.yes = getString(yes, gv);
54
- }
55
- if (no && no.length > 0) {
56
- m.no = getString(no, gv);
57
- }
58
- return m;
59
- }
60
- exports.message = message;
61
- function messageByHttpStatus(status, gv) {
62
- var k = 'error_' + status;
63
- var msg = getString(k, gv);
64
- if (!msg || msg.length === 0) {
65
- msg = getString('error_500', gv);
32
+ return phone.replace(resources.phone, "")
33
+ } else {
34
+ return phone
66
35
  }
67
- return msg;
68
36
  }
69
- exports.messageByHttpStatus = messageByHttpStatus;
37
+ exports.removePhoneFormat = removePhoneFormat
70
38
  function buildKeys(attributes) {
71
39
  if (!attributes) {
72
- return [];
40
+ return []
73
41
  }
74
- var ks = Object.keys(attributes);
75
- var ps = [];
42
+ var ks = Object.keys(attributes)
43
+ var ps = []
76
44
  for (var _i = 0, ks_1 = ks; _i < ks_1.length; _i++) {
77
- var k = ks_1[_i];
78
- var attr = attributes[k];
45
+ var k = ks_1[_i]
46
+ var attr = attributes[k]
79
47
  if (attr.key === true) {
80
- ps.push(k);
48
+ ps.push(k)
81
49
  }
82
50
  }
83
- return ps;
51
+ return ps
84
52
  }
85
- exports.buildKeys = buildKeys;
53
+ exports.buildKeys = buildKeys
86
54
  function buildId(p, keys) {
87
55
  if (!keys || keys.length === 0 || keys.length === 1) {
88
56
  if (keys && keys.length === 1) {
89
57
  if (p[keys[0]]) {
90
- return p[keys[0]];
58
+ return p[keys[0]]
91
59
  }
92
60
  }
93
- return p['id'];
61
+ return p["id"]
94
62
  }
95
- var id = {};
63
+ var id = {}
96
64
  for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {
97
- var key = keys_1[_i];
98
- var v = p[key];
65
+ var key = keys_1[_i]
66
+ var v = p[key]
99
67
  if (!v) {
100
- v = p[key];
68
+ v = p[key]
101
69
  if (!v) {
102
- return null;
70
+ return null
103
71
  }
104
72
  }
105
- id[key] = v;
73
+ id[key] = v
106
74
  }
107
- return id;
75
+ return id
108
76
  }
109
- exports.buildId = buildId;
77
+ exports.buildId = buildId
110
78
  exports.datetimeToString = function (inputDate) {
111
- var date = new Date(inputDate);
112
- var year = date.getFullYear();
113
- var month = String(date.getMonth() + 1).padStart(2, '0');
114
- var day = String(date.getDate()).padStart(2, '0');
115
- var hours = String(date.getHours()).padStart(2, '0');
116
- var minutes = String(date.getMinutes()).padStart(2, '0');
117
- var seconds = String(date.getSeconds()).padStart(2, '0');
118
- return year + "-" + month + "-" + day + "T" + hours + ":" + minutes + ":" + seconds;
119
- };
79
+ var date = new Date(inputDate)
80
+ var year = date.getFullYear()
81
+ var month = String(date.getMonth() + 1).padStart(2, "0")
82
+ var day = String(date.getDate()).padStart(2, "0")
83
+ var hours = String(date.getHours()).padStart(2, "0")
84
+ var minutes = String(date.getMinutes()).padStart(2, "0")
85
+ var seconds = String(date.getSeconds()).padStart(2, "0")
86
+ return year + "-" + month + "-" + day + "T" + hours + ":" + minutes + ":" + seconds
87
+ }
120
88
  exports.dateToString = function (inputDate) {
121
- var year = inputDate.getFullYear();
122
- var month = String(inputDate.getMonth() + 1).padStart(2, '0');
123
- var day = String(inputDate.getDate()).padStart(2, '0');
124
- return year + "-" + month + "-" + day;
125
- };
89
+ var year = inputDate.getFullYear()
90
+ var month = String(inputDate.getMonth() + 1).padStart(2, "0")
91
+ var day = String(inputDate.getDate()).padStart(2, "0")
92
+ return year + "-" + month + "-" + day
93
+ }
126
94
  function initForm(form, initMat) {
127
95
  if (form) {
128
96
  setTimeout(function () {
129
97
  if (initMat) {
130
- initMat(form);
98
+ initMat(form)
131
99
  }
132
- formutil_1.focusFirstElement(form);
133
- }, 100);
134
- }
135
- return form;
136
- }
137
- exports.initForm = initForm;
138
- function error(err, gv, ae) {
139
- var title = getString('error', gv);
140
- var msg = getString('error_internal', gv);
141
- if (!err) {
142
- ae(msg, undefined, title);
143
- return;
144
- }
145
- var data = err && err.response ? err.response : err;
146
- if (data) {
147
- var status_1 = data.status;
148
- if (status_1 && !isNaN(status_1)) {
149
- msg = messageByHttpStatus(status_1, gv);
150
- }
151
- ae(msg, undefined, title);
152
- }
153
- else {
154
- ae(msg, undefined, title);
100
+ formutil_1.focusFirstElement(form)
101
+ }, 100)
155
102
  }
103
+ return form
156
104
  }
157
- exports.error = error;
105
+ exports.initForm = initForm
158
106
  function getName(d, n) {
159
- return (n && n.length > 0 ? n : d);
107
+ return n && n.length > 0 ? n : d
160
108
  }
161
- exports.getName = getName;
109
+ exports.getName = getName
162
110
  function getModelName(form, name) {
163
111
  if (form) {
164
- var a = form.getAttribute('model-name');
112
+ var a = form.getAttribute("model-name")
165
113
  if (a && a.length > 0) {
166
- return a;
114
+ return a
167
115
  }
168
- var b = form.name;
116
+ var b = form.name
169
117
  if (b) {
170
- if (b.endsWith('Form')) {
171
- return b.substr(0, b.length - 4);
118
+ if (b.endsWith("Form")) {
119
+ return b.substr(0, b.length - 4)
172
120
  }
173
- return b;
121
+ return b
174
122
  }
175
123
  }
176
124
  if (name && name.length > 0) {
177
- return name;
125
+ return name
178
126
  }
179
- return '';
127
+ return ""
180
128
  }
181
- exports.getModelName = getModelName;
129
+ exports.getModelName = getModelName
182
130
  exports.scrollToFocus = function (e, isUseTimeOut) {
183
131
  try {
184
- var element = e.target;
185
- var form = element.form;
132
+ var element = e.target
133
+ var form = element.form
186
134
  if (form) {
187
- var container_1 = form.childNodes[1];
188
- var elementRect_1 = element.getBoundingClientRect();
189
- var absoluteElementTop = elementRect_1.top + window.pageYOffset;
190
- var middle_1 = absoluteElementTop - (window.innerHeight / 2);
191
- var scrollTop_1 = container_1.scrollTop;
192
- var timeOut = isUseTimeOut ? 300 : 0;
193
- var isChrome_1 = navigator.userAgent.search('Chrome') > 0;
135
+ var container_1 = form.childNodes[1]
136
+ var elementRect_1 = element.getBoundingClientRect()
137
+ var absoluteElementTop = elementRect_1.top + window.pageYOffset
138
+ var middle_1 = absoluteElementTop - window.innerHeight / 2
139
+ var scrollTop_1 = container_1.scrollTop
140
+ var timeOut = isUseTimeOut ? 300 : 0
141
+ var isChrome_1 = navigator.userAgent.search("Chrome") > 0
194
142
  setTimeout(function () {
195
143
  if (isChrome_1) {
196
- var scrollPosition = scrollTop_1 === 0 ? (elementRect_1.top + 64) : (scrollTop_1 + middle_1);
197
- container_1.scrollTo(0, Math.abs(scrollPosition));
198
- }
199
- else {
200
- container_1.scrollTo(0, Math.abs(scrollTop_1 + middle_1));
144
+ var scrollPosition = scrollTop_1 === 0 ? elementRect_1.top + 64 : scrollTop_1 + middle_1
145
+ container_1.scrollTo(0, Math.abs(scrollPosition))
146
+ } else {
147
+ container_1.scrollTo(0, Math.abs(scrollTop_1 + middle_1))
201
148
  }
202
- }, timeOut);
149
+ }, timeOut)
203
150
  }
151
+ } catch (e) {
152
+ console.log(e)
204
153
  }
205
- catch (e) {
206
- console.log(e);
207
- }
208
- };
154
+ }
209
155
  function showLoading(s) {
210
156
  if (s) {
211
- s.showLoading();
157
+ s.showLoading()
212
158
  }
213
159
  }
214
- exports.showLoading = showLoading;
160
+ exports.showLoading = showLoading
215
161
  function hideLoading(s) {
216
162
  if (s) {
217
- s.hideLoading();
163
+ s.hideLoading()
218
164
  }
219
165
  }
220
- exports.hideLoading = hideLoading;
166
+ exports.hideLoading = hideLoading
221
167
  function getRemoveError(u, rmErr) {
222
168
  if (rmErr) {
223
- return rmErr;
169
+ return rmErr
224
170
  }
225
- return (u && u.ui ? u.ui.removeError : undefined);
171
+ return u && u.ui ? u.ui.removeError : undefined
226
172
  }
227
- exports.getRemoveError = getRemoveError;
173
+ exports.getRemoveError = getRemoveError
228
174
  function removeFormError(u, f) {
229
175
  if (f && u && u.ui) {
230
- u.ui.removeFormError(f);
176
+ u.ui.removeFormError(f)
231
177
  }
232
178
  }
233
- exports.removeFormError = removeFormError;
179
+ exports.removeFormError = removeFormError
234
180
  function getValidateForm(u, vf) {
235
181
  if (vf) {
236
- return vf;
182
+ return vf
237
183
  }
238
- return (u && u.ui ? u.ui.validateForm : undefined);
184
+ return u && u.ui ? u.ui.validateForm : undefined
239
185
  }
240
- exports.getValidateForm = getValidateForm;
186
+ exports.getValidateForm = getValidateForm
package/lib/diff.js CHANGED
@@ -1,54 +1,52 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var reflect_1 = require("./reflect");
1
+ "use strict"
2
+ Object.defineProperty(exports, "__esModule", { value: true })
3
+ var reflect_1 = require("./reflect")
4
4
  function formatDiffModel(obj, formatFields) {
5
5
  if (!obj) {
6
- return obj;
6
+ return obj
7
7
  }
8
- var obj2 = reflect_1.clone(obj);
8
+ var obj2 = reflect_1.clone(obj)
9
9
  if (!obj2.origin) {
10
- obj2.origin = {};
11
- }
12
- else {
13
- if (typeof obj2.origin === 'string') {
14
- obj2.origin = JSON.parse(obj2.origin);
10
+ obj2.origin = {}
11
+ } else {
12
+ if (typeof obj2.origin === "string") {
13
+ obj2.origin = JSON.parse(obj2.origin)
15
14
  }
16
- if (formatFields && typeof obj2.origin === 'object' && !Array.isArray(obj2.origin)) {
17
- obj2.origin = formatFields(obj2.origin);
15
+ if (formatFields && typeof obj2.origin === "object" && !Array.isArray(obj2.origin)) {
16
+ obj2.origin = formatFields(obj2.origin)
18
17
  }
19
18
  }
20
19
  if (!obj2.value) {
21
- obj2.value = {};
22
- }
23
- else {
24
- if (typeof obj2.value === 'string') {
25
- obj2.value = JSON.parse(obj2.value);
20
+ obj2.value = {}
21
+ } else {
22
+ if (typeof obj2.value === "string") {
23
+ obj2.value = JSON.parse(obj2.value)
26
24
  }
27
- if (formatFields && typeof obj2.value === 'object' && !Array.isArray(obj2.value)) {
28
- obj2.value = formatFields(obj2.value);
25
+ if (formatFields && typeof obj2.value === "object" && !Array.isArray(obj2.value)) {
26
+ obj2.value = formatFields(obj2.value)
29
27
  }
30
28
  }
31
- return obj2;
29
+ return obj2
32
30
  }
33
- exports.formatDiffModel = formatDiffModel;
31
+ exports.formatDiffModel = formatDiffModel
34
32
  function getDataFields(form) {
35
- var results = [];
33
+ var results = []
36
34
  if (!form) {
37
- return results;
35
+ return results
38
36
  }
39
- var attributeValue = form.getAttribute('data-field');
37
+ var attributeValue = form.getAttribute("data-field")
40
38
  if (attributeValue && attributeValue.length > 0) {
41
- results.push(form);
39
+ results.push(form)
42
40
  }
43
- var childNodes = form.childNodes;
41
+ var childNodes = form.childNodes
44
42
  if (childNodes.length > 0) {
45
43
  for (var i = 0; i < childNodes.length; i++) {
46
- var childNode = childNodes[i];
44
+ var childNode = childNodes[i]
47
45
  if (childNode.nodeType === Node.ELEMENT_NODE) {
48
- results = results.concat(getDataFields(childNode));
46
+ results = results.concat(getDataFields(childNode))
49
47
  }
50
48
  }
51
49
  }
52
- return results;
50
+ return results
53
51
  }
54
- exports.getDataFields = getDataFields;
52
+ exports.getDataFields = getDataFields
package/lib/edit.js CHANGED
@@ -1,136 +1,78 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var core_1 = require("./core");
4
- function build(attributes, name) {
5
- if (!attributes) {
6
- return undefined;
7
- }
8
- if (core_1.resources.cache && name && name.length > 0) {
9
- var meta = core_1.resources._cache[name];
10
- if (!meta) {
11
- meta = buildMetaModel(attributes);
12
- core_1.resources._cache[name] = meta;
13
- }
14
- return meta;
15
- }
16
- else {
17
- return buildMetaModel(attributes);
18
- }
19
- }
20
- exports.build = build;
21
- function buildMetaModel(attributes) {
22
- if (!attributes) {
23
- return {};
24
- }
25
- var md = {};
26
- var pks = new Array();
27
- var keys = Object.keys(attributes);
28
- for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {
29
- var key = keys_1[_i];
30
- var attr = attributes[key];
31
- if (attr) {
32
- if (attr.version) {
33
- md.version = key;
34
- }
35
- if (attr.key === true) {
36
- pks.push(key);
37
- }
38
- }
39
- }
40
- md.keys = pks;
41
- return md;
42
- }
1
+ "use strict"
2
+ Object.defineProperty(exports, "__esModule", { value: true })
43
3
  function createModel(attributes) {
44
- var obj = {};
4
+ var obj = {}
45
5
  if (!attributes) {
46
- return obj;
6
+ return obj
47
7
  }
48
- var attrs = Object.keys(attributes);
8
+ var attrs = Object.keys(attributes)
49
9
  for (var _i = 0, attrs_1 = attrs; _i < attrs_1.length; _i++) {
50
- var k = attrs_1[_i];
51
- var attr = attributes[k];
10
+ var k = attrs_1[_i]
11
+ var attr = attributes[k]
52
12
  if (attr.name) {
53
13
  switch (attr.type) {
54
- case 'string':
55
- case 'text':
56
- obj[attr.name] = '';
57
- break;
58
- case 'integer':
59
- case 'number':
60
- obj[attr.name] = 0;
61
- break;
62
- case 'array':
63
- obj[attr.name] = [];
64
- break;
65
- case 'boolean':
66
- obj[attr.name] = false;
67
- break;
68
- case 'date':
69
- obj[attr.name] = new Date();
70
- break;
71
- case 'object':
14
+ case "string":
15
+ case "text":
16
+ obj[attr.name] = ""
17
+ break
18
+ case "integer":
19
+ case "number":
20
+ obj[attr.name] = 0
21
+ break
22
+ case "array":
23
+ obj[attr.name] = []
24
+ break
25
+ case "boolean":
26
+ obj[attr.name] = false
27
+ break
28
+ case "date":
29
+ obj[attr.name] = new Date()
30
+ break
31
+ case "object":
72
32
  if (attr.typeof) {
73
- var object = createModel(attr.typeof);
74
- obj[attr.name] = object;
75
- break;
76
- }
77
- else {
78
- obj[attr.name] = {};
79
- break;
33
+ var object = createModel(attr.typeof)
34
+ obj[attr.name] = object
35
+ break
36
+ } else {
37
+ obj[attr.name] = {}
38
+ break
80
39
  }
81
- case 'ObjectId':
82
- obj[attr.name] = null;
83
- break;
40
+ case "ObjectId":
41
+ obj[attr.name] = null
42
+ break
84
43
  default:
85
- obj[attr.name] = '';
86
- break;
44
+ obj[attr.name] = ""
45
+ break
87
46
  }
88
47
  }
89
48
  }
90
- return obj;
91
- }
92
- exports.createModel = createModel;
93
- function handleVersion(obj, version) {
94
- if (obj && version && version.length > 0) {
95
- var v = obj[version];
96
- if (v && typeof v === 'number') {
97
- obj[version] = v + 1;
98
- }
99
- else {
100
- obj[version] = 1;
101
- }
102
- }
49
+ return obj
103
50
  }
104
- exports.handleVersion = handleVersion;
51
+ exports.createModel = createModel
105
52
  function isSuccessful(x) {
106
53
  if (Array.isArray(x)) {
107
- return false;
54
+ return false
55
+ } else if (typeof x === "object") {
56
+ return true
57
+ } else if (typeof x === "number" && x > 0) {
58
+ return true
108
59
  }
109
- else if (typeof x === 'object') {
110
- return true;
111
- }
112
- else if (typeof x === 'number' && x > 0) {
113
- return true;
114
- }
115
- return false;
60
+ return false
116
61
  }
117
- exports.isSuccessful = isSuccessful;
62
+ exports.isSuccessful = isSuccessful
118
63
  function afterSaved(res, form, resource, showFormError, alertSuccess, alertError, navigate) {
119
64
  if (Array.isArray(res)) {
120
- showFormError(form, res);
121
- }
122
- else if (isSuccessful(res)) {
65
+ showFormError(form, res)
66
+ } else if (isSuccessful(res)) {
123
67
  alertSuccess(resource.msg_save_success, function () {
124
68
  if (navigate) {
125
- navigate(-1);
69
+ navigate(-1)
126
70
  }
127
- });
128
- }
129
- else if (res === 0) {
130
- alertError(resource.error_not_found);
131
- }
132
- else {
133
- alertError(resource.error_conflict);
71
+ })
72
+ } else if (res === 0) {
73
+ alertError(resource.error_not_found)
74
+ } else {
75
+ alertError(resource.error_conflict)
134
76
  }
135
77
  }
136
- exports.afterSaved = afterSaved;
78
+ exports.afterSaved = afterSaved