UNPKG

23.8 kBJavaScriptView Raw
1(function (global, factory) {
2 typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react')) :
3 typeof define === 'function' && define.amd ? define(['exports', 'react'], factory) :
4 (global = global || self, factory(global.dataObjectHooks = {}, global.React));
5}(this, function (exports, react) { 'use strict';
6
7 function _typeof2(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof2(obj); }
8
9 function _typeof(obj) {
10 if (typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol") {
11 _typeof = function _typeof(obj) {
12 return _typeof2(obj);
13 };
14 } else {
15 _typeof = function _typeof(obj) {
16 return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : _typeof2(obj);
17 };
18 }
19
20 return _typeof(obj);
21 }
22
23 function getData(dataObject, filter) {
24 var data = window.af.data;
25 var dataHandler = new data.DataProviderHandler({
26 dataSourceId: dataObject.getDataSourceId(),
27 timeout: 30000
28 });
29 var fields = dataObject.getFields();
30 return new Promise(function (resolve, reject) {
31 var filterData = {
32 filterString: "",
33 whereClause: typeof filter === "string" ? filter : "",
34 whereObject: _typeof(filter) === "object" ? filter : null
35 };
36 dataHandler.retrieve(filterData, function (error, data) {
37 if (error !== null) {
38 reject(error);
39 } else {
40 var records = [];
41 var _iteratorNormalCompletion = true;
42 var _didIteratorError = false;
43 var _iteratorError = undefined;
44
45 try {
46 for (var _iterator = data[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
47 var item = _step.value;
48 var record = {};
49
50 for (var i = 0; i < item.length; i++) {
51 record[fields[i].name] = item[i];
52 }
53
54 records.push(record);
55 }
56 } catch (err) {
57 _didIteratorError = true;
58 _iteratorError = err;
59 } finally {
60 try {
61 if (!_iteratorNormalCompletion && _iterator.return != null) {
62 _iterator.return();
63 }
64 } finally {
65 if (_didIteratorError) {
66 throw _iteratorError;
67 }
68 }
69 }
70
71 resolve(records);
72 }
73 });
74 });
75 }
76
77 function _arrayWithHoles(arr) {
78 if (Array.isArray(arr)) return arr;
79 }
80
81 function _iterableToArrayLimit(arr, i) {
82 var _arr = [];
83 var _n = true;
84 var _d = false;
85 var _e = undefined;
86
87 try {
88 for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
89 _arr.push(_s.value);
90
91 if (i && _arr.length === i) break;
92 }
93 } catch (err) {
94 _d = true;
95 _e = err;
96 } finally {
97 try {
98 if (!_n && _i["return"] != null) _i["return"]();
99 } finally {
100 if (_d) throw _e;
101 }
102 }
103
104 return _arr;
105 }
106
107 function _nonIterableRest() {
108 throw new TypeError("Invalid attempt to destructure non-iterable instance");
109 }
110
111 function _slicedToArray(arr, i) {
112 return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();
113 }
114
115 function useCurrentIndex(dataObject) {
116 var _useState = react.useState(dataObject.getCurrentIndex()),
117 _useState2 = _slicedToArray(_useState, 2),
118 index = _useState2[0],
119 setIndex = _useState2[1];
120
121 react.useEffect(function () {
122 dataObject.attachEvent("onCurrentIndexChanged", setIndex);
123 setIndex(dataObject.getCurrentIndex());
124 return function () {
125 return dataObject.detachEvent("onCurrentIndexChanged", setIndex);
126 };
127 }, [dataObject]);
128 return index;
129 }
130
131 function _arrayWithoutHoles(arr) {
132 if (Array.isArray(arr)) {
133 for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {
134 arr2[i] = arr[i];
135 }
136
137 return arr2;
138 }
139 }
140
141 function _iterableToArray(iter) {
142 if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
143 }
144
145 function _nonIterableSpread() {
146 throw new TypeError("Invalid attempt to spread non-iterable instance");
147 }
148
149 function _toConsumableArray(arr) {
150 return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();
151 }
152
153 // A resusable array containing all data object events that should trigger an update
154 var dataUpdateEvents = ["onFieldChanged", "onRecordCreated", "onRecordDeleted", "onRecordRefreshed", "onAfterSave", "onCancelEdit", "onDataLoaded", "onPartialDataLoaded"];
155
156 function useCurrentRow(dataObject) {
157 var _useState = react.useState(dataObject.currentRow() || {}),
158 _useState2 = _slicedToArray(_useState, 2),
159 record = _useState2[0],
160 setRecord = _useState2[1];
161
162 var updateRecord = react.useCallback(function () {
163 return setRecord(dataObject.currentRow());
164 }, [dataObject]);
165 react.useEffect(function () {
166 var recordUpdateEvents = ["onCurrentIndexChanged"].concat(_toConsumableArray(dataUpdateEvents));
167 recordUpdateEvents.forEach(function (event) {
168 return dataObject.attachEvent(event, updateRecord);
169 });
170 updateRecord();
171 return function () {
172 return recordUpdateEvents.forEach(function (event) {
173 return dataObject.detachEvent(event, updateRecord);
174 });
175 };
176 }, [dataObject, updateRecord]);
177 return record;
178 }
179
180 function useData(dataObject) {
181 var _useState = react.useState(dataObject.getData()),
182 _useState2 = _slicedToArray(_useState, 2),
183 data = _useState2[0],
184 setData = _useState2[1];
185
186 var updateData = react.useCallback(function () {
187 var data = dataObject.getData(); // If current row is dirty, getData will still return the saved record
188
189 var idx = dataObject.getCurrentIndex();
190
191 if (idx >= 0) {
192 data[idx] = dataObject.currentRow();
193 }
194
195 setData(data);
196 }, [dataObject]);
197 react.useEffect(function () {
198 dataUpdateEvents.forEach(function (event) {
199 return dataObject.attachEvent(event, updateData);
200 });
201 updateData();
202 return function () {
203 return dataUpdateEvents.forEach(function (event) {
204 return dataObject.detachEvent(event, updateData);
205 });
206 };
207 }, [dataObject, updateData]);
208 return data;
209 }
210
211 function useDataLength(dataObject) {
212 var _useState = react.useState(function () {
213 return dataObject.getDataLength();
214 }),
215 _useState2 = _slicedToArray(_useState, 2),
216 length = _useState2[0],
217 setLength = _useState2[1];
218
219 react.useEffect(function () {
220 function update() {
221 setLength(dataObject.getDataLength());
222 }
223
224 dataObject.attachEvent("onRecordCreated", update);
225 dataObject.attachEvent("onRecordDeleted", update);
226 dataObject.attachEvent("onDataLoaded", update);
227 dataObject.attachEvent("onPartialDataLoaded", update);
228 update();
229 return function () {
230 dataObject.detachEvent("onRecordCreated", update);
231 dataObject.detachEvent("onRecordDeleted", update);
232 dataObject.detachEvent("onDataLoaded", update);
233 dataObject.detachEvent("onPartialDataLoaded", update);
234 };
235 }, [dataObject]);
236 return length;
237 }
238
239 var isArray = Array.isArray;
240 var keyList = Object.keys;
241 var hasProp = Object.prototype.hasOwnProperty;
242
243 var fastDeepEqual = function equal(a, b) {
244 if (a === b) return true;
245
246 if (a && b && typeof a == 'object' && typeof b == 'object') {
247 var arrA = isArray(a)
248 , arrB = isArray(b)
249 , i
250 , length
251 , key;
252
253 if (arrA && arrB) {
254 length = a.length;
255 if (length != b.length) return false;
256 for (i = length; i-- !== 0;)
257 if (!equal(a[i], b[i])) return false;
258 return true;
259 }
260
261 if (arrA != arrB) return false;
262
263 var dateA = a instanceof Date
264 , dateB = b instanceof Date;
265 if (dateA != dateB) return false;
266 if (dateA && dateB) return a.getTime() == b.getTime();
267
268 var regexpA = a instanceof RegExp
269 , regexpB = b instanceof RegExp;
270 if (regexpA != regexpB) return false;
271 if (regexpA && regexpB) return a.toString() == b.toString();
272
273 var keys = keyList(a);
274 length = keys.length;
275
276 if (length !== keyList(b).length)
277 return false;
278
279 for (i = length; i-- !== 0;)
280 if (!hasProp.call(b, keys[i])) return false;
281
282 for (i = length; i-- !== 0;) {
283 key = keys[i];
284 if (!equal(a[key], b[key])) return false;
285 }
286
287 return true;
288 }
289
290 return a!==a && b!==b;
291 };
292
293 function useFilter(dataObject, filter) {
294 var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "filterString";
295 react.useEffect(function () {
296 var current = dataObject.getParameter(type);
297
298 if (filter !== false) {
299 if (!fastDeepEqual(current, filter) || !dataObject.isDataLoaded() && !dataObject.isDataLoading()) {
300 dataObject.setParameter(type, filter);
301 dataObject.refreshDataSource();
302 }
303 }
304 }, [dataObject, filter, type]);
305 }
306
307 function useDataWithFilter(dataObject, filter) {
308 var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "filterString";
309 var data = useData(dataObject);
310 useFilter(dataObject, filter, type);
311 return data;
312 }
313
314 function useDirty(dataObject) {
315 var _useState = react.useState(dataObject.isDirty() || false),
316 _useState2 = _slicedToArray(_useState, 2),
317 isDirty = _useState2[0],
318 setDirty = _useState2[1];
319
320 react.useEffect(function () {
321 dataObject.attachEvent("onDirtyChanged", setDirty);
322 setDirty(dataObject.isDirty());
323 return function () {
324 dataObject.detachEvent("onDirtyChanged", setDirty);
325 };
326 }, [dataObject]);
327 return isDirty;
328 }
329
330 function useError(dataObject) {
331 var _useState = react.useState(null),
332 _useState2 = _slicedToArray(_useState, 2),
333 loadError = _useState2[0],
334 setError = _useState2[1];
335
336 react.useEffect(function () {
337 dataObject.attachEvent("onDataLoadFailed", setError);
338 return function () {
339 dataObject.detachEvent("onDataLoadFailed", setError);
340 };
341 }, [dataObject]);
342 return loadError;
343 }
344
345 function useFetchData(dataObject, filter) {
346 var _useState = react.useState([]),
347 _useState2 = _slicedToArray(_useState, 2),
348 data = _useState2[0],
349 setData = _useState2[1];
350
351 var _useState3 = react.useState(false),
352 _useState4 = _slicedToArray(_useState3, 2),
353 shouldUpdate = _useState4[0],
354 setShouldUpdate = _useState4[1];
355
356 var _useState5 = react.useState(filter !== false),
357 _useState6 = _slicedToArray(_useState5, 2),
358 isLoading = _useState6[0],
359 setIsLoading = _useState6[1];
360
361 var refresh = react.useCallback(function () {
362 setShouldUpdate(function (shouldUpdate) {
363 return !shouldUpdate;
364 });
365 }, []);
366 var refreshRows = react.useCallback(function (filter) {
367 var idField = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "PrimKey";
368 getData(dataObject, filter).then(function (records) {
369 var newData = _toConsumableArray(data);
370
371 var _iteratorNormalCompletion = true;
372 var _didIteratorError = false;
373 var _iteratorError = undefined;
374
375 try {
376 for (var _iterator = records[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
377 var record = _step.value;
378
379 for (var i = 0; i < newData.length; i++) {
380 var current = newData[i];
381
382 if (current[idField] === record[idField]) {
383 newData[i] = record;
384 }
385 }
386 }
387 } catch (err) {
388 _didIteratorError = true;
389 _iteratorError = err;
390 } finally {
391 try {
392 if (!_iteratorNormalCompletion && _iterator.return != null) {
393 _iterator.return();
394 }
395 } finally {
396 if (_didIteratorError) {
397 throw _iteratorError;
398 }
399 }
400 }
401
402 setData(newData);
403 });
404 }, [dataObject, data]);
405 react.useEffect(function () {
406 var isCancelled = false;
407
408 if (filter !== false) {
409 setIsLoading(true);
410 getData(dataObject, filter).then(function (data) {
411 if (!isCancelled) {
412 if (data.length > 0) {
413 setData(data);
414 } else {
415 setData([]);
416 }
417
418 setIsLoading(false);
419 }
420 });
421 }
422
423 return function () {
424 return isCancelled = true;
425 };
426 }, [dataObject, filter, shouldUpdate]);
427 return {
428 data: data,
429 refresh: refresh,
430 refreshRows: refreshRows,
431 isLoading: isLoading
432 };
433 }
434
435 function useFetchRecord(dataObject, filter) {
436 var _useFetchData = useFetchData(dataObject, filter),
437 isLoading = _useFetchData.isLoading,
438 data = _useFetchData.data,
439 refresh = _useFetchData.refresh;
440
441 var record = data.length > 0 ? data[0] : {};
442 return {
443 record: record,
444 refresh: refresh,
445 isLoading: isLoading
446 };
447 }
448
449 function useLoading(dataObject) {
450 var _useState = react.useState(dataObject.isDataLoading()),
451 _useState2 = _slicedToArray(_useState, 2),
452 isLoading = _useState2[0],
453 setLoading = _useState2[1];
454
455 function setIsLoading() {
456 setLoading(true);
457 }
458
459 function setIsNotLoading() {
460 setLoading(false);
461 }
462
463 react.useEffect(function () {
464 dataObject.attachEvent("onBeforeLoad", setIsLoading);
465 dataObject.attachEvent("onDataLoaded", setIsNotLoading);
466 dataObject.attachEvent("onDataLoadFailed", setIsNotLoading);
467 dataObject.attachEvent("onPartialDataLoaded", setIsNotLoading);
468 setLoading(dataObject.isDataLoading());
469 return function () {
470 dataObject.detachEvent("onBeforeLoad", setIsLoading);
471 dataObject.detachEvent("onDataLoaded", setIsNotLoading);
472 dataObject.detachEvent("onDataLoadFailed", setIsNotLoading);
473 dataObject.detachEvent("onPartialDataLoaded", setIsNotLoading);
474 };
475 }, [dataObject]);
476 return isLoading;
477 }
478
479 function getCurrentData(dataObject) {
480 return dataObject.getPagingComponent().getCurrentData() || [];
481 }
482
483 function usePagedData(dataObject) {
484 var _useState = react.useState(function () {
485 return getCurrentData(dataObject);
486 }),
487 _useState2 = _slicedToArray(_useState, 2),
488 currentData = _useState2[0],
489 setCurrentData = _useState2[1];
490
491 react.useEffect(function () {
492 function updateData() {
493 setCurrentData(_toConsumableArray(getCurrentData(dataObject)));
494 }
495
496 dataUpdateEvents.forEach(function (event) {
497 return dataObject.attachEvent(event, updateData);
498 });
499 var pagingComponent = dataObject.getPagingComponent();
500 pagingComponent.attach("on", "pageChange", updateData);
501 pagingComponent.attach("on", "pageRefresh", updateData);
502 updateData();
503 return function () {
504 dataUpdateEvents.forEach(function (event) {
505 return dataObject.detachEvent(event, updateData);
506 });
507 pagingComponent.detach("on", "pageChange", updateData);
508 pagingComponent.detach("on", "pageRefresh", updateData);
509 };
510 }, [dataObject]);
511 return currentData;
512 }
513
514 function usePagedDataWithFilter(dataObject, filter) {
515 var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "filterString";
516 var data = usePagedData(dataObject);
517 useFilter(dataObject, filter, type);
518 return data;
519 }
520
521 function usePaging(dataObject) {
522 var _useState = react.useState(function () {
523 return dataObject.getPagingComponent().getCurrentPage();
524 }),
525 _useState2 = _slicedToArray(_useState, 2),
526 page = _useState2[0],
527 setPage = _useState2[1];
528
529 var _useState3 = react.useState(function () {
530 return dataObject.getPagingComponent().getPageCount();
531 }),
532 _useState4 = _slicedToArray(_useState3, 2),
533 pageCount = _useState4[0],
534 setPageCount = _useState4[1];
535
536 react.useEffect(function () {
537 var paging = dataObject.getPagingComponent();
538
539 var updateCurrentPage = function updateCurrentPage() {
540 return setPage(paging.getCurrentPage());
541 };
542
543 var updatePageCount = function updatePageCount() {
544 return setPageCount(paging.getPageCount());
545 };
546
547 paging.attach("on", "pageChange", updateCurrentPage);
548 paging.attach("on", "pageCountChange", updatePageCount);
549 return function () {
550 paging.detach("on", "pageChange", updateCurrentPage);
551 paging.detach("on", "pageCountChange", updatePageCount);
552 };
553 }, [dataObject]);
554 return {
555 page: page,
556 pageCount: pageCount,
557 changePage: dataObject.getPagingComponent().changePage
558 };
559 }
560
561 function useParameter(dataObject, parameter) {
562 var _useState = react.useState(function () {
563 return dataObject.getParameter(parameter);
564 }),
565 _useState2 = _slicedToArray(_useState, 2),
566 value = _useState2[0],
567 setValue = _useState2[1];
568
569 react.useEffect(function () {
570 function update() {
571 setValue(dataObject.getParameter(parameter));
572 }
573
574 dataObject.attachEvent("onParameterUpdated", update);
575 update();
576 return function () {
577 dataObject.detachEvent("onParameterUpdated", update);
578 };
579 }, [dataObject, parameter]);
580 return value;
581 }
582
583 function usePermissions(dataObject) {
584 var _useState = react.useState(dataObject.isDeleteAllowed()),
585 _useState2 = _slicedToArray(_useState, 2),
586 allowDelete = _useState2[0],
587 setAllowDelete = _useState2[1];
588
589 var _useState3 = react.useState(dataObject.isInsertAllowed()),
590 _useState4 = _slicedToArray(_useState3, 2),
591 allowInsert = _useState4[0],
592 setAllowInsert = _useState4[1];
593
594 var _useState5 = react.useState(dataObject.isUpdateAllowed()),
595 _useState6 = _slicedToArray(_useState5, 2),
596 allowUpdate = _useState6[0],
597 setAllowUpdate = _useState6[1];
598
599 react.useEffect(function () {
600 var updateAllowDelete = function updateAllowDelete() {
601 return setAllowDelete(dataObject.isDeleteAllowed());
602 };
603
604 var updateAllowInsert = function updateAllowInsert() {
605 return setAllowInsert(dataObject.isInsertAllowed());
606 };
607
608 var updateAllowUpdate = function updateAllowUpdate() {
609 return setAllowUpdate(dataObject.isUpdateAllowed());
610 };
611
612 dataObject.attachEvent("onAllowDeleteChanged", updateAllowDelete);
613 dataObject.attachEvent("onAllowInsertChanged", updateAllowInsert);
614 dataObject.attachEvent("onAllowUpdateChanged", updateAllowUpdate);
615 updateAllowDelete();
616 updateAllowInsert();
617 updateAllowUpdate();
618 return function () {
619 dataObject.detachEvent("onAllowDeleteChanged", updateAllowDelete);
620 dataObject.detachEvent("onAllowInsertChanged", updateAllowInsert);
621 dataObject.detachEvent("onAllowUpdateChanged", updateAllowUpdate);
622 };
623 }, [dataObject]);
624 return {
625 allowDelete: allowDelete,
626 allowInsert: allowInsert,
627 allowUpdate: allowUpdate
628 };
629 }
630
631 function useDeepCompareMemoize(value) {
632 var ref = react.useRef();
633
634 if (!fastDeepEqual(value, ref.current)) {
635 ref.current = value;
636 }
637
638 return ref.current;
639 }
640
641 function useDeepCompareEffect(callback, dependencies) {
642 react.useEffect(callback, useDeepCompareMemoize(dependencies));
643 }
644 function useProcedure(procedure, params) {
645 var _useState = react.useState([]),
646 _useState2 = _slicedToArray(_useState, 2),
647 data = _useState2[0],
648 setData = _useState2[1];
649
650 var _useState3 = react.useState(null),
651 _useState4 = _slicedToArray(_useState3, 2),
652 error = _useState4[0],
653 setError = _useState4[1];
654
655 var _useState5 = react.useState(false),
656 _useState6 = _slicedToArray(_useState5, 2),
657 isExecuting = _useState6[0],
658 setIsExecuting = _useState6[1];
659
660 useDeepCompareEffect(function () {
661 var isAborted = false;
662
663 if (params && procedure) {
664 setIsExecuting(true);
665 procedure.execute(params, function (err, data) {
666 if (!isAborted) {
667 setIsExecuting(false);
668
669 if (err) {
670 setError(err);
671 setData([]);
672 } else {
673 setData(data);
674 setError(null);
675 }
676 }
677 });
678 }
679
680 return function () {
681 isAborted = true;
682 }; // eslint-disable-next-line react-hooks/exhaustive-deps
683 }, [procedure, params]);
684 return {
685 data: data,
686 error: error,
687 isExecuting: isExecuting
688 };
689 }
690
691 function useStatus(dataObject) {
692 var _useState = react.useState(false),
693 _useState2 = _slicedToArray(_useState, 2),
694 isSaving = _useState2[0],
695 setIsSaving = _useState2[1];
696
697 var _useState3 = react.useState(false),
698 _useState4 = _slicedToArray(_useState3, 2),
699 isDeleting = _useState4[0],
700 setIsDeleting = _useState4[1];
701
702 function setSaving() {
703 setIsSaving(true);
704 }
705
706 function setNotSaving() {
707 setIsSaving(false);
708 }
709
710 function setDeleting() {
711 setIsDeleting(true);
712 }
713
714 function setNotDeleting() {
715 setIsDeleting(false);
716 }
717
718 react.useEffect(function () {
719 dataObject.attachEvent("onBeforeSave", setSaving);
720 dataObject.attachEvent("onAfterSave", setNotSaving);
721 dataObject.attachEvent("onSaveFailed", setNotSaving);
722 dataObject.attachEvent("onRecordDeleting", setDeleting);
723 dataObject.attachEvent("onRecordDeleted", setNotDeleting);
724 return function () {
725 dataObject.detachEvent("onBeforeSave", setSaving);
726 dataObject.detachEvent("onAfterSave", setNotSaving);
727 dataObject.detachEvent("onSaveFailed", setNotSaving);
728 dataObject.detachEvent("onRecordDeleting", setDeleting);
729 dataObject.detachEvent("onRecordDeleted", setNotDeleting);
730 };
731 }, [dataObject]);
732 return {
733 isDeleting: isDeleting,
734 isSaving: isSaving
735 };
736 }
737
738 exports.getData = getData;
739 exports.useCurrentIndex = useCurrentIndex;
740 exports.useCurrentRow = useCurrentRow;
741 exports.useData = useData;
742 exports.useDataLength = useDataLength;
743 exports.useDataWithFilter = useDataWithFilter;
744 exports.useDirty = useDirty;
745 exports.useError = useError;
746 exports.useFetchData = useFetchData;
747 exports.useFetchRecord = useFetchRecord;
748 exports.useFilter = useFilter;
749 exports.useLoading = useLoading;
750 exports.usePagedData = usePagedData;
751 exports.usePagedDataWithFilter = usePagedDataWithFilter;
752 exports.usePaging = usePaging;
753 exports.useParameter = useParameter;
754 exports.usePermissions = usePermissions;
755 exports.useProcedure = useProcedure;
756 exports.useStatus = useStatus;
757
758 Object.defineProperty(exports, '__esModule', { value: true });
759
760}));