@syncfusion/ej2-filemanager 33.2.3 → 33.2.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/dist/ej2-filemanager.min.js +2 -2
- package/dist/ej2-filemanager.umd.min.js +2 -2
- package/dist/ej2-filemanager.umd.min.js.map +1 -1
- package/dist/es6/ej2-filemanager.es2015.js +120 -49
- package/dist/es6/ej2-filemanager.es2015.js.map +1 -1
- package/dist/es6/ej2-filemanager.es5.js +120 -49
- package/dist/es6/ej2-filemanager.es5.js.map +1 -1
- package/dist/global/ej2-filemanager.min.js +2 -2
- package/dist/global/ej2-filemanager.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/package.json +8 -8
- package/src/file-manager/actions/breadcrumb-bar.d.ts +5 -0
- package/src/file-manager/actions/breadcrumb-bar.js +41 -19
- package/src/file-manager/base/file-manager.d.ts +4 -0
- package/src/file-manager/base/file-manager.js +53 -16
- package/src/file-manager/base/interface.d.ts +1 -0
- package/src/file-manager/layout/large-icons-view.js +10 -6
- package/src/file-manager/pop-up/context-menu.js +16 -8
|
@@ -5457,9 +5457,11 @@ var LargeIconsView = /** @__PURE__ @class */ (function () {
|
|
|
5457
5457
|
}
|
|
5458
5458
|
}
|
|
5459
5459
|
}
|
|
5460
|
-
|
|
5461
|
-
|
|
5462
|
-
|
|
5460
|
+
if (this.parent.activeModule !== 'navigationpane') {
|
|
5461
|
+
var targetItem = this.getFocusedItem() || mappedItem || this.parent.visitedItem || this.getFirstItem();
|
|
5462
|
+
if (targetItem) {
|
|
5463
|
+
this.addFocus(targetItem);
|
|
5464
|
+
}
|
|
5463
5465
|
}
|
|
5464
5466
|
}
|
|
5465
5467
|
};
|
|
@@ -5697,13 +5699,15 @@ var LargeIconsView = /** @__PURE__ @class */ (function () {
|
|
|
5697
5699
|
}
|
|
5698
5700
|
};
|
|
5699
5701
|
LargeIconsView.prototype.destroy = function () {
|
|
5700
|
-
if (this.parent.isDestroyed) {
|
|
5701
|
-
return;
|
|
5702
|
-
}
|
|
5703
5702
|
this.removeEventListener();
|
|
5704
5703
|
if (this.listObj) {
|
|
5705
5704
|
this.unWireEvents();
|
|
5706
5705
|
}
|
|
5706
|
+
if (this.itemList) {
|
|
5707
|
+
this.itemList.forEach(function (el) {
|
|
5708
|
+
el.ondragstart = null;
|
|
5709
|
+
});
|
|
5710
|
+
}
|
|
5707
5711
|
this.startItem = null;
|
|
5708
5712
|
this.listElements = null;
|
|
5709
5713
|
};
|
|
@@ -6690,10 +6694,14 @@ var BreadCrumbBar = /** @__PURE__ @class */ (function () {
|
|
|
6690
6694
|
this.addressBarLink = '';
|
|
6691
6695
|
this.searchTimer = null;
|
|
6692
6696
|
this.searchWrapWidth = null;
|
|
6697
|
+
this.searchIcon = null;
|
|
6698
|
+
this.searchSibling = null;
|
|
6693
6699
|
this.parent = parent;
|
|
6694
6700
|
this.keyConfigs = {
|
|
6695
6701
|
enter: 'enter'
|
|
6696
6702
|
};
|
|
6703
|
+
this.boundSearchChangeHandler = this.searchChangeHandler.bind(this);
|
|
6704
|
+
this.boundOnKeyUp = this.onKeyUp.bind(this);
|
|
6697
6705
|
this.render();
|
|
6698
6706
|
}
|
|
6699
6707
|
BreadCrumbBar.prototype.onPropertyChanged = function (e) {
|
|
@@ -6718,8 +6726,15 @@ var BreadCrumbBar = /** @__PURE__ @class */ (function () {
|
|
|
6718
6726
|
}
|
|
6719
6727
|
};
|
|
6720
6728
|
BreadCrumbBar.prototype.render = function () {
|
|
6729
|
+
this.setBreadcrumbNavAttributes();
|
|
6721
6730
|
this.addEventListener();
|
|
6722
6731
|
};
|
|
6732
|
+
BreadCrumbBar.prototype.setBreadcrumbNavAttributes = function () {
|
|
6733
|
+
var navElement = this.parent && this.parent.breadCrumbNavElement;
|
|
6734
|
+
if (navElement) {
|
|
6735
|
+
navElement.setAttribute('aria-label', 'Breadcrumb');
|
|
6736
|
+
}
|
|
6737
|
+
};
|
|
6723
6738
|
BreadCrumbBar.prototype.onPathChange = function () {
|
|
6724
6739
|
var pathNames = this.parent.pathNames;
|
|
6725
6740
|
var paths = this.parent.path.split('/');
|
|
@@ -6740,7 +6755,6 @@ var BreadCrumbBar = /** @__PURE__ @class */ (function () {
|
|
|
6740
6755
|
addressbarLI.appendChild(icon);
|
|
6741
6756
|
}
|
|
6742
6757
|
addressbarLI.setAttribute('tabindex', '0');
|
|
6743
|
-
addressbarLI.setAttribute('role', 'link');
|
|
6744
6758
|
var pathLabel = pathNames.slice(0, i + 1).join(' / ');
|
|
6745
6759
|
addressbarLI.setAttribute('aria-label', pathLabel);
|
|
6746
6760
|
if (pathNamesLen - i === 1) {
|
|
@@ -6748,24 +6762,24 @@ var BreadCrumbBar = /** @__PURE__ @class */ (function () {
|
|
|
6748
6762
|
}
|
|
6749
6763
|
id = '';
|
|
6750
6764
|
addressATag = createElement('a', { className: LIST_TEXT });
|
|
6751
|
-
addressATag.setAttribute('role', '
|
|
6765
|
+
addressATag.setAttribute('role', 'link');
|
|
6752
6766
|
addressATag.innerText = pathNames[i];
|
|
6753
6767
|
addressbarLI.appendChild(addressATag);
|
|
6754
6768
|
addressbarUL.appendChild(addressbarLI);
|
|
6755
6769
|
}
|
|
6756
|
-
var ulElement = this.parent.
|
|
6770
|
+
var ulElement = this.parent.breadCrumbNavElement.querySelector('.e-addressbar-ul');
|
|
6757
6771
|
if (!isNullOrUndefined(ulElement)) {
|
|
6758
6772
|
if (!isNullOrUndefined(this.subMenuObj)) {
|
|
6759
6773
|
this.subMenuObj.destroy();
|
|
6760
6774
|
}
|
|
6761
6775
|
remove(ulElement);
|
|
6762
6776
|
}
|
|
6763
|
-
var searchWrap = this.parent.
|
|
6777
|
+
var searchWrap = this.parent.breadCrumbNavElement.querySelector('.e-search-wrap');
|
|
6764
6778
|
if (!searchWrap) {
|
|
6765
|
-
this.parent.
|
|
6779
|
+
this.parent.breadCrumbNavElement.insertBefore(addressbarUL, searchWrap);
|
|
6766
6780
|
}
|
|
6767
6781
|
else {
|
|
6768
|
-
this.parent.
|
|
6782
|
+
this.parent.breadCrumbNavElement.appendChild(addressbarUL);
|
|
6769
6783
|
}
|
|
6770
6784
|
this.updateBreadCrumbBar(addressbarUL);
|
|
6771
6785
|
}
|
|
@@ -6773,7 +6787,7 @@ var BreadCrumbBar = /** @__PURE__ @class */ (function () {
|
|
|
6773
6787
|
/* istanbul ignore next */
|
|
6774
6788
|
BreadCrumbBar.prototype.updateBreadCrumbBar = function (addresBarUL) {
|
|
6775
6789
|
var liElements = addresBarUL.querySelectorAll('li');
|
|
6776
|
-
var ulElement = this.parent.
|
|
6790
|
+
var ulElement = this.parent.breadCrumbNavElement.querySelector('.e-addressbar-ul');
|
|
6777
6791
|
var style = window.getComputedStyle(ulElement, null);
|
|
6778
6792
|
var pRight = parseFloat(style.getPropertyValue('padding-right'));
|
|
6779
6793
|
var pLeft = parseFloat(style.getPropertyValue('padding-left'));
|
|
@@ -6795,12 +6809,12 @@ var BreadCrumbBar = /** @__PURE__ @class */ (function () {
|
|
|
6795
6809
|
var searchInput = createElement('input', { id: id,
|
|
6796
6810
|
attrs: { autocomplete: 'off', 'aria-label': getLocaleText(this.parent, 'Search') } });
|
|
6797
6811
|
searchContainer.appendChild(searchInput);
|
|
6798
|
-
var searchEle = this.parent.
|
|
6812
|
+
var searchEle = this.parent.breadCrumbNavElement.querySelector('.e-search-wrap .e-input');
|
|
6799
6813
|
if (isNullOrUndefined(searchEle)) {
|
|
6800
|
-
this.parent.
|
|
6801
|
-
|
|
6802
|
-
EventHandler.add(
|
|
6803
|
-
searchInput.parentElement.insertBefore(
|
|
6814
|
+
this.parent.breadCrumbNavElement.appendChild(searchContainer);
|
|
6815
|
+
this.searchIcon = createElement('span', { className: 'e-icons e-fe-search' });
|
|
6816
|
+
EventHandler.add(this.searchIcon, 'click', this.onShowInput, this);
|
|
6817
|
+
searchInput.parentElement.insertBefore(this.searchIcon, searchInput);
|
|
6804
6818
|
this.searchObj = new TextBox({
|
|
6805
6819
|
value: '',
|
|
6806
6820
|
showClearButton: true,
|
|
@@ -6810,11 +6824,11 @@ var BreadCrumbBar = /** @__PURE__ @class */ (function () {
|
|
|
6810
6824
|
});
|
|
6811
6825
|
this.searchObj.appendTo('#' + this.parent.element.id + SEARCH_ID);
|
|
6812
6826
|
this.searchEventBind(this.parent.searchSettings.allowSearchOnTyping);
|
|
6813
|
-
|
|
6814
|
-
EventHandler.add(
|
|
6815
|
-
EventHandler.add(this.searchObj.element, 'keyup', this.
|
|
6827
|
+
this.searchSibling = this.searchObj.element.nextElementSibling;
|
|
6828
|
+
EventHandler.add(this.searchSibling, 'mousedown', this.boundSearchChangeHandler, this);
|
|
6829
|
+
EventHandler.add(this.searchObj.element, 'keyup', this.boundOnKeyUp, this);
|
|
6816
6830
|
}
|
|
6817
|
-
var searchWrap = this.parent.
|
|
6831
|
+
var searchWrap = this.parent.breadCrumbNavElement.querySelector('.e-search-wrap');
|
|
6818
6832
|
breadCrumbBarWidth = breadCrumbBarWidth - (this.searchWrapWidth ? this.searchWrapWidth : searchWrap.offsetWidth);
|
|
6819
6833
|
if (liElementsWidth > breadCrumbBarWidth) {
|
|
6820
6834
|
var i = liElements.length;
|
|
@@ -6852,10 +6866,10 @@ var BreadCrumbBar = /** @__PURE__ @class */ (function () {
|
|
|
6852
6866
|
break;
|
|
6853
6867
|
}
|
|
6854
6868
|
}
|
|
6855
|
-
this.parent.
|
|
6869
|
+
this.parent.breadCrumbNavElement.insertBefore(addressbarUL, searchWrap);
|
|
6856
6870
|
}
|
|
6857
6871
|
else {
|
|
6858
|
-
this.parent.
|
|
6872
|
+
this.parent.breadCrumbNavElement.insertBefore(addresBarUL, searchWrap);
|
|
6859
6873
|
}
|
|
6860
6874
|
};
|
|
6861
6875
|
/* istanbul ignore next */
|
|
@@ -6934,7 +6948,7 @@ var BreadCrumbBar = /** @__PURE__ @class */ (function () {
|
|
|
6934
6948
|
this.searchWrapWidth = null;
|
|
6935
6949
|
}
|
|
6936
6950
|
else {
|
|
6937
|
-
var searchWrap = this.parent.
|
|
6951
|
+
var searchWrap = this.parent.breadCrumbNavElement.querySelector('.e-search-wrap');
|
|
6938
6952
|
this.searchWrapWidth = searchWrap.offsetWidth;
|
|
6939
6953
|
addClass([this.parent.element], FILTER);
|
|
6940
6954
|
this.searchObj.element.focus();
|
|
@@ -7035,6 +7049,18 @@ var BreadCrumbBar = /** @__PURE__ @class */ (function () {
|
|
|
7035
7049
|
this.parent.off(dropInit, this.onDropInit);
|
|
7036
7050
|
this.parent.off(layoutRefresh, this.onResize);
|
|
7037
7051
|
this.parent.off(dropPath, this.onPathChange);
|
|
7052
|
+
if (this.parent.breadCrumbBarNavigation) {
|
|
7053
|
+
EventHandler.remove(this.parent.breadCrumbBarNavigation, 'click', this.addressPathClickHandler);
|
|
7054
|
+
}
|
|
7055
|
+
if (this.searchIcon) {
|
|
7056
|
+
EventHandler.remove(this.searchIcon, 'click', this.onShowInput);
|
|
7057
|
+
}
|
|
7058
|
+
if (this.searchSibling) {
|
|
7059
|
+
EventHandler.remove(this.searchSibling, 'mousedown', this.boundSearchChangeHandler);
|
|
7060
|
+
}
|
|
7061
|
+
if (this.searchObj && this.searchObj.element) {
|
|
7062
|
+
EventHandler.remove(this.searchObj.element, 'keyup', this.boundOnKeyUp);
|
|
7063
|
+
}
|
|
7038
7064
|
};
|
|
7039
7065
|
/* istanbul ignore next */
|
|
7040
7066
|
BreadCrumbBar.prototype.onDropInit = function (args) {
|
|
@@ -7225,10 +7251,16 @@ var ContextMenu = /** @__PURE__ @class */ (function () {
|
|
|
7225
7251
|
}
|
|
7226
7252
|
else if (!isNullOrUndefined(closest(target, 'tr.e-row'))) {
|
|
7227
7253
|
uid = this.targetElement.getAttribute('data-uid');
|
|
7228
|
-
|
|
7229
|
-
|
|
7230
|
-
|
|
7231
|
-
|
|
7254
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
7255
|
+
var gridObj = this.parent.detailsviewModule && this.parent.detailsviewModule.gridObj;
|
|
7256
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
7257
|
+
var rowObj = (!isNullOrUndefined(uid) && !isNullOrUndefined(gridObj)) ? gridObj.getRowObjectFromUID(uid) : null;
|
|
7258
|
+
if (!isNullOrUndefined(rowObj)) {
|
|
7259
|
+
data = rowObj.data;
|
|
7260
|
+
if (isNullOrUndefined(this.targetElement.getAttribute('aria-selected'))) {
|
|
7261
|
+
/* istanbul ignore next */
|
|
7262
|
+
gridObj.selectRows([parseInt(this.targetElement.getAttribute('aria-rowindex'), 10) - 1]);
|
|
7263
|
+
}
|
|
7232
7264
|
}
|
|
7233
7265
|
selected = true;
|
|
7234
7266
|
/* istanbul ignore next */
|
|
@@ -7424,10 +7456,12 @@ var ContextMenu = /** @__PURE__ @class */ (function () {
|
|
|
7424
7456
|
this.menuType = 'layout';
|
|
7425
7457
|
this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.layout.map(function (item) { return item.trim(); }));
|
|
7426
7458
|
this.contextMenu.dataBind();
|
|
7427
|
-
|
|
7428
|
-
|
|
7429
|
-
|
|
7430
|
-
|
|
7459
|
+
var largeIconsEle = closest(target, '#' + this.parent.element.id + LARGEICON_ID);
|
|
7460
|
+
var detailsViewEle = closest(target, '#' + this.parent.element.id + GRID_ID);
|
|
7461
|
+
if (!this.parent.allowMultiSelection || ((this.parent.view === 'LargeIcons' && !isNullOrUndefined(largeIconsEle) &&
|
|
7462
|
+
(largeIconsEle.getElementsByClassName(EMPTY).length !== 0))
|
|
7463
|
+
|| (this.parent.view === 'Details' && !isNullOrUndefined(detailsViewEle) &&
|
|
7464
|
+
(detailsViewEle.getElementsByClassName(EMPTY).length !== 0)))) {
|
|
7431
7465
|
this.disabledItems.push('SelectAll');
|
|
7432
7466
|
}
|
|
7433
7467
|
else {
|
|
@@ -8158,6 +8192,8 @@ var FileManager = /** @__PURE__ @class */ (function (_super) {
|
|
|
8158
8192
|
id: this.element.id + BREADCRUMBBAR_ID,
|
|
8159
8193
|
className: BREADCRUMBS
|
|
8160
8194
|
});
|
|
8195
|
+
this.breadCrumbNavElement = this.createElement('nav');
|
|
8196
|
+
this.breadCrumbBarNavigation.appendChild(this.breadCrumbNavElement);
|
|
8161
8197
|
contentWrap.appendChild(this.breadCrumbBarNavigation);
|
|
8162
8198
|
var gridWrap = this.createElement('div', {
|
|
8163
8199
|
id: this.element.id + GRID_ID
|
|
@@ -8657,41 +8693,74 @@ var FileManager = /** @__PURE__ @class */ (function (_super) {
|
|
|
8657
8693
|
return;
|
|
8658
8694
|
}
|
|
8659
8695
|
}
|
|
8696
|
+
var contentElem = this.viewElem.firstChild;
|
|
8697
|
+
var isLargeIcons = this.viewElem.classList.contains('e-large-icons');
|
|
8698
|
+
if (isLargeIcons) {
|
|
8699
|
+
this.dragContainer = (contentElem && contentElem.tagName === 'UL') ? contentElem : this.viewElem;
|
|
8700
|
+
}
|
|
8701
|
+
else {
|
|
8702
|
+
this.dragContainer = this.viewElem.firstChild;
|
|
8703
|
+
}
|
|
8704
|
+
if (!this.dragContainer) {
|
|
8705
|
+
return;
|
|
8706
|
+
}
|
|
8660
8707
|
event.preventDefault();
|
|
8661
|
-
this.
|
|
8662
|
-
|
|
8708
|
+
this.lastDragEvent = event;
|
|
8709
|
+
var ulRect = this.dragContainer.getBoundingClientRect();
|
|
8710
|
+
this.dragX = event.clientX - ulRect.left - this.dragContainer.clientLeft + this.dragContainer.scrollLeft;
|
|
8711
|
+
this.dragY = event.clientY - ulRect.top - this.dragContainer.clientTop + this.dragContainer.scrollTop;
|
|
8663
8712
|
if (!this.dragSelectElement) {
|
|
8664
8713
|
this.dragSelectElement = createElement('div', {
|
|
8665
8714
|
id: this.element.id + '_drag',
|
|
8666
|
-
className: 'e-filemanager e-drag-select'
|
|
8667
|
-
styles: 'left: ' + this.dragX + 'px;top: ' + this.dragY + 'px;'
|
|
8715
|
+
className: 'e-filemanager e-drag-select'
|
|
8668
8716
|
});
|
|
8669
|
-
|
|
8717
|
+
setStyleAttribute(this.dragSelectElement, {
|
|
8718
|
+
position: 'absolute',
|
|
8719
|
+
left: this.dragX + 'px',
|
|
8720
|
+
top: this.dragY + 'px',
|
|
8721
|
+
width: '0px',
|
|
8722
|
+
height: '0px',
|
|
8723
|
+
pointerEvents: 'none'
|
|
8724
|
+
});
|
|
8725
|
+
this.dragContainer.appendChild(this.dragSelectElement);
|
|
8726
|
+
this.dragContainer.style.position = 'relative';
|
|
8670
8727
|
}
|
|
8728
|
+
EventHandler.add(this.dragContainer, 'scroll', this.onDragScroll, this);
|
|
8671
8729
|
EventHandler.add(document, 'mouseup', this.onDragStop, this);
|
|
8672
|
-
EventHandler.add(this.
|
|
8730
|
+
EventHandler.add(this.dragContainer, 'mousemove', this.onDrag, this);
|
|
8673
8731
|
EventHandler.add(this.dragSelectElement, 'mousemove', this.onDrag, this);
|
|
8674
8732
|
}
|
|
8675
8733
|
};
|
|
8676
8734
|
FileManager.prototype.onDrag = function (event) {
|
|
8735
|
+
this.lastDragEvent = event;
|
|
8677
8736
|
event.stopPropagation();
|
|
8678
|
-
if (this.dragSelectElement) {
|
|
8679
|
-
var
|
|
8680
|
-
var
|
|
8737
|
+
if (this.dragSelectElement && this.dragContainer) {
|
|
8738
|
+
var ulRect = this.dragContainer.getBoundingClientRect();
|
|
8739
|
+
var currentX = event.clientX - ulRect.left - this.dragContainer.clientLeft + this.dragContainer.scrollLeft;
|
|
8740
|
+
var currentY = event.clientY - ulRect.top - this.dragContainer.clientTop + this.dragContainer.scrollTop;
|
|
8681
8741
|
setStyleAttribute(this.dragSelectElement, {
|
|
8682
|
-
|
|
8683
|
-
|
|
8742
|
+
left: Math.min(this.dragX, currentX) + 'px',
|
|
8743
|
+
top: Math.min(this.dragY, currentY) + 'px',
|
|
8744
|
+
height: Math.abs(currentY - this.dragY) + 'px',
|
|
8745
|
+
width: Math.abs(currentX - this.dragX) + 'px'
|
|
8684
8746
|
});
|
|
8685
8747
|
this.selectItems();
|
|
8686
8748
|
}
|
|
8687
|
-
else {
|
|
8688
|
-
EventHandler.remove(this.
|
|
8749
|
+
else if (this.dragContainer) {
|
|
8750
|
+
EventHandler.remove(this.dragContainer, 'mousemove', this.onDrag);
|
|
8689
8751
|
}
|
|
8690
8752
|
};
|
|
8753
|
+
FileManager.prototype.onDragScroll = function () {
|
|
8754
|
+
if (!this.dragSelectElement || !this.lastDragEvent) {
|
|
8755
|
+
return;
|
|
8756
|
+
}
|
|
8757
|
+
this.onDrag(this.lastDragEvent);
|
|
8758
|
+
};
|
|
8691
8759
|
FileManager.prototype.onDragStop = function () {
|
|
8692
|
-
|
|
8693
|
-
|
|
8694
|
-
EventHandler.remove(this.
|
|
8760
|
+
EventHandler.remove(document, 'mouseup', this.onDragStop);
|
|
8761
|
+
if (this.dragContainer) {
|
|
8762
|
+
EventHandler.remove(this.dragContainer, 'mousemove', this.onDrag);
|
|
8763
|
+
EventHandler.remove(this.dragContainer, 'scroll', this.onDragScroll);
|
|
8695
8764
|
}
|
|
8696
8765
|
if (this.dragSelectElement) {
|
|
8697
8766
|
EventHandler.remove(this.dragSelectElement, 'mousemove', this.onDrag);
|
|
@@ -8702,6 +8771,7 @@ var FileManager = /** @__PURE__ @class */ (function (_super) {
|
|
|
8702
8771
|
detach(this.dragSelectElement);
|
|
8703
8772
|
this.dragSelectElement = null;
|
|
8704
8773
|
}
|
|
8774
|
+
this.dragContainer = null;
|
|
8705
8775
|
};
|
|
8706
8776
|
FileManager.prototype.selectItems = function () {
|
|
8707
8777
|
var dragRect = this.dragSelectElement.getBoundingClientRect();
|
|
@@ -8992,6 +9062,7 @@ var FileManager = /** @__PURE__ @class */ (function (_super) {
|
|
|
8992
9062
|
removeClass([this.element], [RTL, MOBILE, CHECK_SELECT]);
|
|
8993
9063
|
this.element.innerHTML = '';
|
|
8994
9064
|
this.breadCrumbBarNavigation = null;
|
|
9065
|
+
this.breadCrumbNavElement = null;
|
|
8995
9066
|
this.activeElements = null;
|
|
8996
9067
|
this.virtualDragElement = null;
|
|
8997
9068
|
this.visitedItem = null;
|