@sapui5/sap.fe.test 1.103.0 → 1.104.1
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/package.json +3 -4
- package/src/sap/fe/test/.library +1 -1
- package/src/sap/fe/test/BaseActions.js +17 -0
- package/src/sap/fe/test/JestTemplatingHelper.js +94 -3
- package/src/sap/fe/test/JestTemplatingHelper.ts +76 -1
- package/src/sap/fe/test/ListReport.js +6 -6
- package/src/sap/fe/test/ObjectPage.js +9 -1
- package/src/sap/fe/test/UI5MockHelper.js +13 -6
- package/src/sap/fe/test/UI5MockHelper.ts +13 -2
- package/src/sap/fe/test/api/DialogAssertions.js +1 -1
- package/src/sap/fe/test/api/DialogValueHelpAssertions.js +36 -0
- package/src/sap/fe/test/builder/MdcFilterBarBuilder.js +102 -104
- package/src/sap/fe/test/builder/VMBuilder.js +13 -13
- package/src/sap/fe/test/internal/ConsoleErrorChecker.js +241 -0
- package/src/sap/fe/test/internal/ConsoleErrorChecker.ts +206 -0
- package/src/sap/fe/test/internal/FEArrangements.js +28 -8
- package/src/sap/fe/test/library.js +1 -1
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2021 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define([], function () {
|
|
5
|
+
sap.ui.define(["sap/ui/model/odata/v4/ODataMetaModel"], function (ODataMetaModel) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var _exports = {};
|
|
@@ -11,9 +11,6 @@ sap.ui.define([], function () {
|
|
|
11
11
|
|
|
12
12
|
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
13
13
|
|
|
14
|
-
/**
|
|
15
|
-
* Mock class for a V4 Context
|
|
16
|
-
*/
|
|
17
14
|
var MockContext = /*#__PURE__*/function () {
|
|
18
15
|
function MockContext(oValues, oBinding) {
|
|
19
16
|
var _this = this;
|
|
@@ -140,6 +137,12 @@ sap.ui.define([], function () {
|
|
|
140
137
|
this.setAggregation = jest.fn();
|
|
141
138
|
this.filter = jest.fn();
|
|
142
139
|
this.sort = jest.fn();
|
|
140
|
+
this.getQueryOptionsFromParameters = jest.fn();
|
|
141
|
+
this.getPath = jest.fn();
|
|
142
|
+
this.isSuspended = jest.fn();
|
|
143
|
+
this.resume = jest.fn();
|
|
144
|
+
this.refresh = jest.fn();
|
|
145
|
+
this.suspend = jest.fn();
|
|
143
146
|
this.requestContexts = jest.fn(function () {
|
|
144
147
|
return Promise.resolve(_this4.aMockContexts);
|
|
145
148
|
});
|
|
@@ -254,6 +257,9 @@ sap.ui.define([], function () {
|
|
|
254
257
|
this.getModel = jest.fn(function () {
|
|
255
258
|
return _this7.mockModel;
|
|
256
259
|
});
|
|
260
|
+
this.setParameter = jest.fn();
|
|
261
|
+
this.execute = jest.fn().mockResolvedValue(true);
|
|
262
|
+
this.getGroupId = jest.fn();
|
|
257
263
|
this.mockModel = mockModel;
|
|
258
264
|
this.oMockContext = new MockContext(oContext || {}, this);
|
|
259
265
|
}
|
|
@@ -301,7 +307,8 @@ sap.ui.define([], function () {
|
|
|
301
307
|
});
|
|
302
308
|
});
|
|
303
309
|
this.getMetaPath = jest.fn(function (sPath) {
|
|
304
|
-
|
|
310
|
+
var metamodel = new ODataMetaModel();
|
|
311
|
+
return sPath ? metamodel.getMetaPath(sPath) : sPath;
|
|
305
312
|
});
|
|
306
313
|
this.getContext = jest.fn();
|
|
307
314
|
this.oMetaContext = new MockContext(oMetaData || {});
|
|
@@ -428,4 +435,4 @@ sap.ui.define([], function () {
|
|
|
428
435
|
_exports.mockMVC = mockMVC;
|
|
429
436
|
return _exports;
|
|
430
437
|
}, false);
|
|
431
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlVJNU1vY2tIZWxwZXIudHMiXSwibmFtZXMiOlsiTW9ja0NvbnRleHQiLCJvVmFsdWVzIiwib0JpbmRpbmciLCJpc0tlcHRBbGl2ZSIsImdldFByb3BlcnR5IiwiamVzdCIsImZuIiwia2V5IiwicmVxdWVzdFByb3BlcnR5IiwiUHJvbWlzZSIsInJlc29sdmUiLCJzZXRQcm9wZXJ0eSIsInZhbHVlIiwiZ2V0T2JqZWN0IiwicGF0aCIsInJlc3VsdCIsImluZGV4T2YiLCJwYXJ0cyIsInNwbGl0IiwicmVkdWNlIiwic3VtIiwicGFydCIsImdldFBhdGgiLCJnZXRCaW5kaW5nIiwiZ2V0TW9kZWwiLCJpc1RyYW5zaWVudCIsInNldEtlZXBBbGl2ZSIsImJvb2wiLCJfZm5PbkJlZm9yZURlc3Ryb3kiLCJfYlJlcXVlc3RNZXNzYWdlcyIsImlzS2VlcEFsaXZlIiwicmVxdWVzdFNpZGVFZmZlY3RzIiwicmVxdWVzdE9iamVjdCIsImlzQSIsInNDbGFzc05hbWUiLCJNb2NrVUk1RWxlbWVudCIsImJpbmRpbmdDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJtb2NrUmV0dXJuVmFsdWUiLCJnZXRCaW5kaW5nSW5mbyIsImRhdGEiLCJnZXRQYXJlbnQiLCJNb2NrQ29udHJvbCIsIk1vY2tFdmVudCIsInBhcmFtcyIsInNvdXJjZSIsImdldFBhcmFtZXRlciIsIm5hbWUiLCJnZXRTb3VyY2UiLCJNb2NrTGlzdEJpbmRpbmciLCJhQ29udGV4dHMiLCJtb2NrTW9kZWwiLCJzZXRBZ2dyZWdhdGlvbiIsImZpbHRlciIsInNvcnQiLCJyZXF1ZXN0Q29udGV4dHMiLCJhTW9ja0NvbnRleHRzIiwiZ2V0Q3VycmVudENvbnRleHRzIiwiZ2V0VXBkYXRlR3JvdXBJZCIsIm1hcCIsImNvbnRleHQiLCJzZXRNb2RlbCIsIm9Nb2RlbCIsIk1vY2tQcm9wZXJ0eUJpbmRpbmciLCJtb2NrUGF0aCIsImdldFZhbHVlIiwic2V0UGF0aCIsIk1vY2tDb21wb3NpdGVCaW5kaW5nIiwiYUJpbmRpbmdzIiwiZ2V0QmluZGluZ3MiLCJiaW5kaW5nIiwiTW9ja0NvbnRleHRCaW5kaW5nIiwib0NvbnRleHQiLCJnZXRCb3VuZENvbnRleHQiLCJvTW9ja0NvbnRleHQiLCJhdHRhY2hFdmVudE9uY2UiLCJnZXRJbnRlcm5hbE1vY2tDb250ZXh0IiwiTW9ja01ldGFNb2RlbCIsIm9NZXRhRGF0YSIsImdldE1ldGFDb250ZXh0Iiwic1BhdGgiLCIkcGF0aCIsIm9NZXRhQ29udGV4dCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwiZ2V0TWV0YVBhdGgiLCJnZXRDb250ZXh0IiwiTW9ja01vZGVsIiwibW9ja0xpc3RCaW5kaW5nIiwibW9ja0NvbnRleHRCaW5kaW5nIiwiYmluZExpc3QiLCJiaW5kQ29udGV4dCIsImdldE1ldGFNb2RlbCIsIm9NZXRhTW9kZWwiLCJnZXRLZWVwQWxpdmVDb250ZXh0IiwibW9kZWxGcm9tTGlzdEJpbmRpbmciLCJtb2RlbEZyb21Db250ZXh0QmluZGluZyIsInVuZGVmaW5lZCIsInNldE1ldGFNb2RlbCIsIk1vY2tWaWV3IiwiZ2V0Q29udHJvbGxlciIsImdldFZpZXdEYXRhIiwiZ2V0SWQiLCJNb2NrQ29udHJvbGxlciIsImdldFZpZXciLCJfcm91dGluZyIsIm5hdmlnYXRlVG9UYXJnZXQiLCJfZWRpdEZsb3ciLCJzeW5jVGFzayIsIl9zaWRlRWZmZWN0cyIsImhhbmRsZUZpZWxkQ2hhbmdlIiwibW9ja01WQyIsImV4aXN0aW5nIiwibW9kZWwiLCJ2aWV3IiwiY29udHJvbGxlciJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7OztBQUZBO0FBQ0E7QUFDQTtNQWVhQSxXO0FBRVoseUJBQTJCQyxPQUEzQixFQUFrREMsUUFBbEQsRUFBa0U7QUFBQTs7QUFBQSxXQUQxREMsV0FDMEQsR0FENUMsS0FDNEM7QUFBQSxXQU0zREMsV0FOMkQsR0FNN0NDLElBQUksQ0FBQ0MsRUFBTCxDQUFRLFVBQUNDLEdBQUQsRUFBaUI7QUFDN0MsZUFBTyxLQUFJLENB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RSxJQUFWLEtBQWtCLElBQUlmLFFBQUosRUFBL0I7QUFDQSxRQUFNZ0IsVUFBVSxHQUFHLENBQUFILFFBQVEsU0FBUixJQUFBQSxRQUFRLFdBQVIsWUFBQUEsUUFBUSxDQUFFRyxVQUFWLEtBQXdCLElBQUlaLGNBQUosRUFBM0M7QUFFQVcsSUFBQUEsSUFBSSxDQUFDZCxhQUFMLENBQW1CN0QsZUFBbkIsQ0FBbUM0RSxVQUFuQztBQUNBRCxJQUFBQSxJQUFJLENBQUN6RixRQUFMLENBQWNjLGVBQWQsQ0FBOEIwRSxLQUE5QjtBQUNBRSxJQUFBQSxVQUFVLENBQUNYLE9BQVgsQ0FBbUJqRSxlQUFuQixDQUFtQzJFLElBQW5DO0FBRUEsV0FBTztBQUFFRCxNQUFBQSxLQUFLLEVBQUxBLEtBQUY7QUFBU0MsTUFBQUEsSUFBSSxFQUFKQSxJQUFUO0FBQWVDLE1BQUFBLFVBQVUsRUFBVkE7QUFBZixLQUFQO0FBQ0EiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTW9jayBjbGFzcyBmb3IgYSBWNCBDb250ZXh0XG4gKi9cbmltcG9ydCB0eXBlIEV2ZW50IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgVUk1RWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbGxlciBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL0NvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIFZpZXcgZnJvbSBcInNhcC91aS9jb3JlL212Yy9WaWV3XCI7XG5pbXBvcnQgdHlwZSBDb21wb3NpdGVCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvQ29tcG9zaXRlQmluZGluZ1wiO1xuaW1wb3J0IHR5cGUgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YUNvbnRleHRCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFDb250ZXh0QmluZGluZ1wiO1xuaW1wb3J0IHR5cGUgT0RhdGFMaXN0QmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTGlzdEJpbmRpbmdcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCB0eXBlIE9EYXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1vZGVsXCI7XG5pbXBvcnQgdHlwZSBPRGF0YVByb3BlcnR5QmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhUHJvcGVydHlCaW5kaW5nXCI7XG5cbmV4cG9ydCBjbGFzcyBNb2NrQ29udGV4dCBpbXBsZW1lbnRzIFBhcnRpYWw8Q29udGV4dD4ge1xuXHRwcml2YXRlIGlzS2VwdEFsaXZlID0gZmFsc2U7XG5cdHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIG9WYWx1ZXM/OiBhbnksIHByaXZhdGUgb0JpbmRpbmc/OiBhbnkpIHt9XG5cblx0cHVibGljIGlzQShzQ2xhc3NOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gc0NsYXNzTmFtZSA9PT0gXCJzYXAudWkubW9kZWwub2RhdGEudjQuQ29udGV4dFwiO1xuXHR9XG5cblx0cHVibGljIGdldFByb3BlcnR5ID0gamVzdC5mbigoa2V5OiBzdHJpbmcpID0+IHtcblx0XHRyZXR1cm4gdGhpcy5vVmFsdWVzW2tleV07XG5cdH0pO1xuXHRwdWJsaWMgcmVxdWVzdFByb3BlcnR5ID0gamVzdC5mbigoa2V5OiBzdHJpbmcpID0+IHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMub1ZhbHVlc1trZXldKTtcblx0fSk7XG5cdHB1YmxpYyBzZXRQcm9wZXJ0eSA9IGplc3QuZm4oKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiB7XG5cdFx0dGhpcy5vVmFsdWVzW2tleV0gPSB2YWx1ZTtcblx0XHRyZXR1cm4gdGhpcy5vVmFsdWVzW2tleV07XG5cdH0pO1xuXG5cdHB1YmxpYyBnZXRPYmplY3QgPSBqZXN0LmZuKChwYXRoOiBzdHJpbmcpID0+IHtcblx0XHRsZXQgcmVzdWx0ID0gcGF0aCA/IHRoaXMub1ZhbHVlc1twYXRoXSA6IHRoaXMub1ZhbHVlcztcblxuXHRcdGlmICghcmVzdWx0ICYmIHBhdGggJiYgcGF0aC5pbmRleE9mKFwiL1wiKSA+IC0xKSB7XG5cdFx0XHRjb25zdCBwYXJ0cyA9IHBhdGguc3BsaXQoXCIvXCIpO1xuXHRcdFx0cmVzdWx0ID0gcGFydHMucmVkdWNlKChzdW0sIHBhcnQ6IGFueSkgPT4ge1xuXHRcdFx0XHRzdW0gPSBwYXJ0ID8gc3VtW3BhcnRdIDogc3VtO1xuXHRcdFx0XHRyZXR1cm4gc3VtO1xuXHRcdFx0fSwgdGhpcy5vVmFsdWVzKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9KTtcblx0cHVibGljIGdldFBhdGggPSBqZXN0LmZuKCgpID0+IHtcblx0XHRyZXR1cm4gdGhpcy5vVmFsdWVzW1wiJHBhdGhcIl07XG5cdH0pO1xuXG5cdHB1YmxpYyBnZXRCaW5kaW5nID0gamVzdC5mbigoKSA9PiB7XG5cdFx0cmV0dXJuIHRoaXMub0JpbmRpbmc7XG5cdH0pO1xuXHRwdWJsaWMgZ2V0TW9kZWwgPSBqZXN0LmZuKCgpID0+IHtcblx0XHRyZXR1cm4gdGhpcy5vQmluZGluZz8uZ2V0TW9kZWwoKSBhcyBPRGF0YU1vZGVsO1xuXHR9KTtcblx0cHVibGljIGlzVHJhbnNpZW50ID0gamVzdC5mbigpO1xuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cdHB1YmxpYyBzZXRLZWVwQWxpdmUgPSBqZXN0LmZuKChib29sOiBib29sZWFuLCBfZm5PbkJlZm9yZURlc3Ryb3k/OiBhbnksIF9iUmVxdWVzdE1lc3NhZ2VzPzogYm9vbGVhbikgPT4ge1xuXHRcdHRoaXMuaXNLZXB0QWxpdmUgPSBib29sO1xuXHR9KTtcblx0cHVibGljIGlzS2VlcEFsaXZlID0gamVzdC5mbigoKSA9PiB0aGlzLmlzS2VwdEFsaXZlKTtcblx0cHVibGljIHJlcXVlc3RTaWRlRWZmZWN0cyA9IGplc3QuZm4oKTtcblx0cHVibGljIHJlcXVlc3RPYmplY3QgPSBqZXN0LmZuKCk7XG59XG5cbmV4cG9ydCBjbGFzcyBNb2NrVUk1RWxlbWVudCBpbXBsZW1lbnRzIFBhcnRpYWw8VUk1RWxlbWVudD4ge1xuXHRba2V5OiBzdHJpbmddOiBhbnk7XG5cdHB1YmxpYyBiaW5kaW5nQ29udGV4dCA9IG5ldyBNb2NrQ29udGV4dCh7fSk7XG5cdHB1YmxpYyBnZXRCaW5kaW5nID0gamVzdC5mbigpO1xuXHRwdWJsaWMgZ2V0QmluZGluZ0NvbnRleHQgPSBqZXN0LmZuKCkubW9ja1JldHVyblZhbHVlKHRoaXMuYmluZGluZ0NvbnRleHQpO1xuXHRwdWJsaWMgZ2V0QmluZGluZ0luZm8gPSBqZXN0LmZuKCk7XG5cdHB1YmxpYyBkYXRhID0gamVzdC5mbigpO1xuXHRwdWJsaWMgZ2V0TW9kZWwgPSBqZXN0LmZuKCk7XG5cdHB1YmxpYyBnZXRQYXJlbnQgPSBqZXN0LmZuKCk7XG59XG5cbmV4cG9ydCBjbGFzcyBNb2NrQ29udHJvbCBleHRlbmRzIE1vY2tVSTVFbGVtZW50IGltcGxlbWVudHMgUGFydGlhbDxDb250cm9sPiB7XG5cdHB1YmxpYyBnZXRCaW5kaW5nQ29udGV4dDogamVzdC5Nb2NrPGFueSwgYW55PiA9IGplc3QuZm4oKTtcblx0cHVibGljIGdldE1vZGVsOiBqZXN0Lk1vY2s8YW55LCBhbnk+ID0gamVzdC5mbigpO1xufVxuXG5leHBvcnQgY2xhc3MgTW9ja0V2ZW50IGltcGxlbWVudHMgUGFydGlhbDxFdmVudD4ge1xuXHRwdWJsaWMgY29uc3RydWN0b3IocHVibGljIHBhcmFtczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9LCBwdWJsaWMgc291cmNlOiBNb2NrVUk1RWxlbWVudCA9IG5ldyBNb2NrVUk1RWxlbWVudCgpKSB7fVxuXG5cdHB1YmxpYyBnZXRQYXJhbWV0ZXIgPSBqZXN0LmZuKChuYW1lKSA9PiB0aGlzLnBhcmFtc1tuYW1lXSk7XG5cblx0cHVibGljIGdldFNvdXJjZSA9IGplc3QuZm4oKCkgPT4gdGhpcy5zb3VyY2UgYXMgYW55KTtcbn1cblxuLyoqXG4gKiBNb2NrIGNsYXNzIGZvciBPRGF0YSBWNCBMaXN0QmluZGluZ1xuICovXG5leHBvcnQgY2xhc3MgTW9ja0xpc3RCaW5kaW5nIGltcGxlbWVudHMgUGFydGlhbDxPRGF0YUxpc3RCaW5kaW5nPiB7XG5cdHByaXZhdGUgYU1vY2tDb250ZXh0czogTW9ja0NvbnRleHRbXTtcblxuXHRwdWJsaWMgY29uc3RydWN0b3IoYUNvbnRleHRzPzogYW55W10sIHByaXZhdGUgbW9ja01vZGVsPzogTW9ja01vZGVsKSB7XG5cdFx0YUNvbnRleHRzID0gYUNvbnRleHRzIHx8IFtdO1xuXG5cdFx0dGhpcy5hTW9ja0NvbnRleHRzID0gYUNvbnRleHRzLm1hcCgoY29udGV4dCkgPT4ge1xuXHRcdFx0cmV0dXJuIG5ldyBNb2NrQ29udGV4dChjb250ZXh0LCB0aGlzKTtcblx0XHR9KTtcblx0fVxuXG5cdHB1YmxpYyBpc0Eoc0NsYXNzTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHNDbGFzc05hbWUgPT09IFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTGlzdEJpbmRpbmdcIjtcblx0fVxuXG5cdHB1YmxpYyBzZXRNb2RlbChvTW9kZWw6IE1vY2tNb2RlbCkge1xuXHRcdHRoaXMubW9ja01vZGVsID0gb01vZGVsO1xuXHR9XG5cblx0Ly8gTW9ja2VkIEFQSVxuXHRwdWJsaWMgc2V0QWdncmVnYXRpb24gPSBqZXN0LmZuKCk7XG5cdHB1YmxpYyBmaWx0ZXIgPSBqZXN0LmZuKCk7XG5cdHB1YmxpYyBzb3J0ID0gamVzdC5mbigpO1xuXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcblx0cHVibGljIHJlcXVlc3RDb250ZXh0cyA9IGplc3QuZm4oKC4uLmFyZ3MpID0+IHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuYU1vY2tDb250ZXh0cyBhcyBhbnkgYXMgQ29udGV4dFtdKTtcblx0fSk7XG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcblx0cHVibGljIGdldEN1cnJlbnRDb250ZXh0cyA9IGplc3QuZm4oKC4uLmFyZ3MpID0+IHtcblx0XHRyZXR1cm4gdGhpcy5hTW9ja0NvbnRleHRzIGFzIGFueSBhcyBDb250ZXh0W107XG5cdH0pO1xuXHRwdWJsaWMgZ2V0TW9kZWwgPSBqZXN0LmZuKCgpID0+IHtcblx0XHRyZXR1cm4gdGhpcy5tb2NrTW9kZWwgYXMgYW55IGFzIE9EYXRhTW9kZWw7XG5cdH0pO1xuXHRwdWJsaWMgZ2V0VXBkYXRlR3JvdXBJZCA9IGplc3QuZm4oKCkgPT4gXCJhdXRvXCIpO1xufVxuXG5leHBvcnQgY2xhc3MgTW9ja1Byb3BlcnR5QmluZGluZyBpbXBsZW1lbnRzIFBhcnRpYWw8T0RhdGFQcm9wZXJ0eUJpbmRpbmc+IHtcblx0cHJpdmF0ZSBtb2NrTW9kZWwhOiBKU09OTW9kZWw7XG5cdHByaXZhdGUgbW9ja1BhdGghOiBzdHJpbmc7XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKG1vY2tNb2RlbDogSlNPTk1vZGVsLCBtb2NrUGF0aDogc3RyaW5nKSB7XG5cdFx0dGhpcy5zZXRNb2RlbChtb2NrTW9kZWwpO1xuXHRcdHRoaXMuc2V0UGF0aChtb2NrUGF0aCk7XG5cdH1cblxuXHRwdWJsaWMgaXNBKHNDbGFzc05hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBzQ2xhc3NOYW1lID09PSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YVByb3BlcnR5QmluZGluZ1wiO1xuXHR9XG5cblx0cHVibGljIHNldE1vZGVsKG9Nb2RlbDogSlNPTk1vZGVsKSB7XG5cdFx0dGhpcy5tb2NrTW9kZWwgPSBvTW9kZWw7XG5cdH1cblx0cHVibGljIGdldE1vZGVsID0gamVzdC5mbigoKSA9PiB7XG5cdFx0cmV0dXJuIHRoaXMubW9ja01vZGVsIGFzIGFueSBhcyBPRGF0YU1vZGVsO1xuXHR9KTtcblxuXHRwdWJsaWMgc2V0UGF0aChwYXRoOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcblx0XHR0aGlzLm1vY2tQYXRoID0gcGF0aCA/IHBhdGggOiBcIlwiO1xuXHR9XG5cdHB1YmxpYyBnZXRQYXRoID0gamVzdC5mbigoKSA9PiB7XG5cdFx0cmV0dXJuIHRoaXMubW9ja1BhdGg7XG5cdH0pO1xuXG5cdHB1YmxpYyBnZXRWYWx1ZSA9IGplc3QuZm4oKCkgPT4ge1xuXHRcdHJldHVybiB0aGlzPy5tb2NrTW9kZWw/LmdldFByb3BlcnR5KGAvJHt0aGlzLm1vY2tQYXRofWApO1xuXHR9KTtcbn1cblxuZXhwb3J0IGNsYXNzIE1vY2tDb21wb3NpdGVCaW5kaW5nIGltcGxlbWVudHMgUGFydGlhbDxDb21wb3NpdGVCaW5kaW5nPiB7XG5cdHByaXZhdGUgYUJpbmRpbmdzOiBNb2NrUHJvcGVydHlCaW5kaW5nW107XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKGFCaW5kaW5nczogTW9ja1Byb3BlcnR5QmluZGluZ1tdKSB7XG5cdFx0dGhpcy5hQmluZGluZ3MgPSBhQmluZGluZ3M7XG5cdH1cblxuXHRwdWJsaWMgaXNBKHNDbGFzc05hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBzQ2xhc3NOYW1lID09PSBcInNhcC51aS5tb2RlbC5Db21wb3NpdGVCaW5kaW5nXCI7XG5cdH1cblxuXHRwdWJsaWMgZ2V0QmluZGluZ3MgPSBqZXN0LmZuKCgpID0+IHtcblx0XHRyZXR1cm4gdGhpcy5hQmluZGluZ3M7XG5cdH0pO1xuXG5cdHB1YmxpYyBnZXRWYWx1ZSA9IGplc3QuZm4oKCkgPT4ge1xuXHRcdHJldHVybiB0aGlzLmFCaW5kaW5ncy5tYXAoKGJpbmRpbmcpID0+IGJpbmRpbmcuZ2V0VmFsdWUoKSk7XG5cdH0pO1xufVxuXG5leHBvcnQgY2xhc3MgTW9ja0NvbnRleHRCaW5kaW5nIGltcGxlbWVudHMgUGFydGlhbDxPRGF0YUNvbnRleHRCaW5kaW5nPiB7XG5cdHByaXZhdGUgb01vY2tDb250ZXh0OiBNb2NrQ29udGV4dDtcblx0cHJpdmF0ZSBpc0tlcHRBbGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG5cdHB1YmxpYyBjb25zdHJ1Y3RvcihvQ29udGV4dD86IGFueSwgcHJpdmF0ZSBtb2NrTW9kZWw/OiBNb2NrTW9kZWwpIHtcblx0XHR0aGlzLm9Nb2NrQ29udGV4dCA9IG5ldyBNb2NrQ29udGV4dChvQ29udGV4dCB8fCB7fSwgdGhpcyk7XG5cdH1cblxuXHRwdWJsaWMgaXNBKHNDbGFzc05hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBzQ2xhc3NOYW1lID09PSBcInNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YUNvbnRleHRCaW5kaW5nXCI7XG5cdH1cblx0cHVibGljIGdldEludGVybmFsTW9ja0NvbnRleHQoKTogTW9ja0NvbnRleHQge1xuXHRcdHJldHVybiB0aGlzLm9Nb2NrQ29udGV4dDtcblx0fVxuXHRwdWJsaWMgc2V0TW9kZWwob01vZGVsOiBNb2NrTW9kZWwpIHtcblx0XHR0aGlzLm1vY2tNb2RlbCA9IG9Nb2RlbDtcblx0fVxuXG5cdC8vIE1vY2tlZCBBUElcblx0cHVibGljIGdldEJvdW5kQ29udGV4dCA9IGplc3QuZm4oKCkgPT4ge1xuXHRcdHJldHVybiB0aGlzLm9Nb2NrQ29udGV4dCBhcyBhbnkgYXMgQ29udGV4dDtcblx0fSk7XG5cdHB1YmxpYyBhdHRhY2hFdmVudE9uY2UgPSBqZXN0LmZuKCk7XG5cdHB1YmxpYyBnZXRNb2RlbCA9IGplc3QuZm4oKCkgPT4ge1xuXHRcdHJldHVybiB0aGlzLm1vY2tNb2RlbCBhcyBhbnkgYXMgT0RhdGFNb2RlbDtcblx0fSk7XG59XG5cbi8qKlxuICogTW9jayBjbGFzcyBmb3IgT0RhdGEgVjQgTWV0YU1vZGVsXG4gKi9cbmV4cG9ydCBjbGFzcyBNb2NrTWV0YU1vZGVsIGltcGxlbWVudHMgUGFydGlhbDxPRGF0YU1ldGFNb2RlbD4ge1xuXHRwcml2YXRlIG9NZXRhQ29udGV4dDogTW9ja0NvbnRleHQ7XG5cdHJlcXVlc3RWYWx1ZUxpc3RJbmZvITogamVzdC5Nb2NrPGFueSwgYW55PjtcblxuXHRwdWJsaWMgY29uc3RydWN0b3Iob01ldGFEYXRhPzogYW55KSB7XG5cdFx0dGhpcy5vTWV0YUNvbnRleHQgPSBuZXcgTW9ja0NvbnRleHQob01ldGFEYXRhIHx8IHt9KTtcblx0fVxuXG5cdC8vIE1vY2tlZCBBUElcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuXHRwdWJsaWMgZ2V0TWV0YUNvbnRleHQgPSBqZXN0LmZuKChzUGF0aDogc3RyaW5nKSA9PiB7XG5cdFx0cmV0dXJuIG5ldyBNb2NrQ29udGV4dCh7ICRwYXRoOiBzUGF0aCB9KSBhcyBhbnkgYXMgQ29udGV4dDtcblx0fSk7XG5cdHB1YmxpYyBnZXRPYmplY3QgPSBqZXN0LmZuKChzUGF0aDogc3RyaW5nKSA9PiB7XG5cdFx0cmV0dXJuIHRoaXMub01ldGFDb250ZXh0LmdldFByb3BlcnR5KHNQYXRoKTtcblx0fSk7XG5cdHB1YmxpYyByZXF1ZXN0T2JqZWN0ID0gamVzdC5mbigpO1xuXHRwdWJsaWMgY3JlYXRlQmluZGluZ0NvbnRleHQgPSBqZXN0LmZuKChzUGF0aDogc3RyaW5nKSA9PiB7XG5cdFx0cmV0dXJuIG5ldyBNb2NrQ29udGV4dCh7ICRwYXRoOiBzUGF0aCB9KSBhcyBhbnkgYXMgQ29udGV4dDtcblx0fSk7XG5cdHB1YmxpYyBnZXRNZXRhUGF0aCA9IGplc3QuZm4oKHNQYXRoOiBzdHJpbmcpID0+IHtcblx0XHRyZXR1cm4gc1BhdGg7XG5cdH0pO1xuXHRwdWJsaWMgZ2V0Q29udGV4dCA9IGplc3QuZm4oKTtcbn1cblxuLyoqXG4gKiBNb2NrIGNsYXNzIGZvciBPRGF0YSBWNCBNb2RlbFxuICovXG5cbmV4cG9ydCBjbGFzcyBNb2NrTW9kZWwgaW1wbGVtZW50cyBQYXJ0aWFsPE9EYXRhTW9kZWw+IHtcblx0cHJpdmF0ZSBvTWV0YU1vZGVsPzogTW9ja01ldGFNb2RlbDtcblxuXHRwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBtb2NrTGlzdEJpbmRpbmc/OiBNb2NrTGlzdEJpbmRpbmcsIHByaXZhdGUgbW9ja0NvbnRleHRCaW5kaW5nPzogTW9ja0NvbnRleHRCaW5kaW5nKSB7XG5cdFx0aWYgKG1vY2tMaXN0QmluZGluZykge1xuXHRcdFx0bW9ja0xpc3RCaW5kaW5nLnNldE1vZGVsKHRoaXMpO1xuXHRcdH1cblx0XHRpZiAobW9ja0NvbnRleHRCaW5kaW5nKSB7XG5cdFx0XHRtb2NrQ29udGV4dEJpbmRpbmcuc2V0TW9kZWwodGhpcyk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gRmFjdG9yaWVzXG5cdHN0YXRpYyBtb2RlbEZyb21MaXN0QmluZGluZyhtb2NrTGlzdEJpbmRpbmc6IE1vY2tMaXN0QmluZGluZyk6IE1vY2tNb2RlbCB7XG5cdFx0cmV0dXJuIG5ldyBNb2NrTW9kZWwobW9ja0xpc3RCaW5kaW5nKTtcblx0fVxuXHRzdGF0aWMgbW9kZWxGcm9tQ29udGV4dEJpbmRpbmcobW9ja0NvbnRleHRCaW5kaW5nOiBNb2NrQ29udGV4dEJpbmRpbmcpOiBNb2NrTW9kZWwge1xuXHRcdHJldHVybiBuZXcgTW9ja01vZGVsKHVuZGVmaW5lZCwgbW9ja0NvbnRleHRCaW5kaW5nKTtcblx0fVxuXG5cdHB1YmxpYyBzZXRNZXRhTW9kZWwob01ldGFNb2RlbDogTW9ja01ldGFNb2RlbCkge1xuXHRcdHRoaXMub01ldGFNb2RlbCA9IG9NZXRhTW9kZWw7XG5cdH1cblxuXHQvLyBNb2NrZWQgQVBJXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcblx0cHVibGljIGJpbmRMaXN0ID0gamVzdC5mbigoLi4uYXJncykgPT4ge1xuXHRcdHJldHVybiB0aGlzLm1vY2tMaXN0QmluZGluZyBhcyBhbnkgYXMgT0RhdGFMaXN0QmluZGluZztcblx0fSk7XG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcblx0cHVibGljIGJpbmRDb250ZXh0ID0gamVzdC5mbigoLi4uYXJncykgPT4ge1xuXHRcdHJldHVybiB0aGlzLm1vY2tDb250ZXh0QmluZGluZyBhcyBhbnkgYXMgT0RhdGFDb250ZXh0QmluZGluZztcblx0fSk7XG5cdHB1YmxpYyBnZXRNZXRhTW9kZWwgPSBqZXN0LmZuKCgpID0+IHtcblx0XHRyZXR1cm4gdGhpcy5vTWV0YU1vZGVsIGFzIGFueSBhcyBPRGF0YU1ldGFNb2RlbDtcblx0fSk7XG5cblx0cHVibGljIGdldFByb3BlcnR5ID0gamVzdC5mbigpO1xuXHRwdWJsaWMgc2V0UHJvcGVydHkgPSBqZXN0LmZuKCk7XG5cdHB1YmxpYyByZXF1ZXN0T2JqZWN0ID0gamVzdC5mbigpO1xuXHRwdWJsaWMgZ2V0S2VlcEFsaXZlQ29udGV4dCA9IGplc3QuZm4oKTtcbn1cblxuZXhwb3J0IGNsYXNzIE1vY2tWaWV3IGltcGxlbWVudHMgUGFydGlhbDxWaWV3PiB7XG5cdHB1YmxpYyBnZXRDb250cm9sbGVyID0gamVzdC5mbigpO1xuXG5cdHB1YmxpYyBnZXRCaW5kaW5nQ29udGV4dCA9IGplc3QuZm4oKTtcblxuXHRwdWJsaWMgZ2V0TW9kZWwgPSBqZXN0LmZuKCk7XG5cblx0cHVibGljIGdldFZpZXdEYXRhID0gamVzdC5mbigpO1xuXG5cdHB1YmxpYyBpc0Eoc0NsYXNzTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHNDbGFzc05hbWUgPT09IFwic2FwLnVpLmNvcmUubXZjLlZpZXdcIjtcblx0fVxuXG5cdHB1YmxpYyBnZXRJZCA9IGplc3QuZm4oKTtcbn1cblxuZXhwb3J0IGNsYXNzIE1vY2tDb250cm9sbGVyIGltcGxlbWVudHMgUGFydGlhbDxDb250cm9sbGVyPiB7XG5cdHB1YmxpYyBnZXRWaWV3ID0gamVzdC5mbigpLm1vY2tSZXR1cm5WYWx1ZShuZXcgTW9ja1ZpZXcoKSk7XG5cblx0cHVibGljIF9yb3V0aW5nID0ge1xuXHRcdG5hdmlnYXRlVG9UYXJnZXQ6IGplc3QuZm4oKVxuXHR9O1xuXG5cdHB1YmxpYyBfZWRpdEZsb3cgPSB7XG5cdFx0c3luY1Rhc2s6IGplc3QuZm4oKVxuXHR9O1xuXG5cdHB1YmxpYyBfc2lkZUVmZmVjdHMgPSB7XG5cdFx0aGFuZGxlRmllbGRDaGFuZ2U6IGplc3QuZm4oKVxuXHR9O1xuXG5cdGlzQSA9IGplc3QuZm4oKS5tb2NrUmV0dXJuVmFsdWUoZmFsc2UpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1WQ01vY2sge1xuXHRtb2RlbDogTW9ja01vZGVsO1xuXHR2aWV3OiBNb2NrVmlldztcblx0Y29udHJvbGxlcjogTW9ja0NvbnRyb2xsZXI7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgbW9kZWwsIHZpZXcgYW5kIGNvbnRyb2xsZXIgbW9ja3MgdGhhdCByZWZlciB0byBlYWNoIG90aGVyLlxuICpcbiAqIEBwYXJhbSBleGlzdGluZyBPcHRpb25hbCBleGlzdGluZyBtb2NrZWQgaW5zdGFuY2VzIHRoYXQgc2hvdWxkIGJlIHVzZWRcbiAqIEByZXR1cm5zIE1vY2tlZCBtb2RlbCwgdmlldyBhbmQgY29udHJvbGxlciBpbnN0YW5jZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1vY2tNVkMoZXhpc3Rpbmc/OiBQYXJ0aWFsPE1WQ01vY2s+KTogTVZDTW9jayB7XG5cdGNvbnN0IG1vZGVsID0gZXhpc3Rpbmc/Lm1vZGVsIHx8IG5ldyBNb2NrTW9kZWwoKTtcblx0Y29uc3QgdmlldyA9IGV4aXN0aW5nPy52aWV3IHx8IG5ldyBNb2NrVmlldygpO1xuXHRjb25zdCBjb250cm9sbGVyID0gZXhpc3Rpbmc/LmNvbnRyb2xsZXIgfHwgbmV3IE1vY2tDb250cm9sbGVyKCk7XG5cblx0dmlldy5nZXRDb250cm9sbGVyLm1vY2tSZXR1cm5WYWx1ZShjb250cm9sbGVyKTtcblx0dmlldy5nZXRNb2RlbC5tb2NrUmV0dXJuVmFsdWUobW9kZWwpO1xuXHRjb250cm9sbGVyLmdldFZpZXcubW9ja1JldHVyblZhbHVlKHZpZXcpO1xuXG5cdHJldHVybiB7IG1vZGVsLCB2aWV3LCBjb250cm9sbGVyIH07XG59XG4iXX0=
|
|
438
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlVJNU1vY2tIZWxwZXIudHMiXSwibmFtZXMiOlsiTW9ja0NvbnRleHQiLCJvVmFsdWVzIiwib0JpbmRpbmciLCJpc0tlcHRBbGl2ZSIsImdldFByb3BlcnR5IiwiamVzdCIsImZuIiwia2V5IiwicmVxdWVzdFByb3BlcnR5IiwiUHJvbWlzZSIsInJlc29sdmUiLCJzZXRQcm9wZXJ0eSIsInZhbHVlIiwiZ2V0T2JqZWN0IiwicGF0aCIsInJlc3VsdCIsImluZGV4T2YiLCJwYXJ0cyIsInNwbGl0IiwicmVkdWNlIiwic3VtIiwicGFydCIsImdldFBhdGgiLCJnZXRCaW5kaW5nIiwiZ2V0TW9kZWwiLCJpc1RyYW5zaWVudCIsInNldEtlZXBBbGl2ZSIsImJvb2wiLCJfZm5PbkJlZm9yZURlc3Ryb3kiLCJfYlJlcXVlc3RNZXNzYWdlcyIsImlzS2VlcEFsaXZlIiwicmVxdWVzdFNpZGVFZmZlY3RzIiwicmVxdWVzdE9iamVjdCIsImlzQSIsInNDbGFzc05hbWUiLCJNb2NrVUk1RWxlbWVudCIsImJpbmRpbmdDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJtb2NrUmV0dXJuVmFsdWUiLCJnZXRCaW5kaW5nSW5mbyIsImRhdGEiLCJnZXRQYXJlbnQiLCJNb2NrQ29udHJvbCIsIk1vY2tFdmVudCIsInBhcmFtcyIsInNvdXJjZSIsImdldFBhcmFtZXRlciIsIm5hbWUiLCJnZXRTb3VyY2UiLCJNb2NrTGlzdEJpbmRpbmciLCJhQ29udGV4dHMiLCJtb2NrTW9kZWwiLCJzZXRBZ2dyZWdhdGlvbiIsImZpbHRlciIsInNvcnQiLCJnZXRRdWVyeU9wdGlvbnNGcm9tUGFyYW1ldGVycyIsImlzU3VzcGVuZGVkIiwicmVzdW1lIiwicmVmcmVzaCIsInN1c3BlbmQiLCJyZXF1ZXN0Q29udGV4dHMiLCJhTW9ja0NvbnRleHRzIiwiZ2V0Q3VycmVudENvbnRleHRzIiwiZ2V0VXBkYXRlR3JvdXBJZCIsIm1hcCIsImNvbnRleHQiLCJzZXRNb2RlbCIsIm9Nb2RlbCIsIk1vY2tQcm9wZXJ0eUJpbmRpbmciLCJtb2NrUGF0aCIsImdldFZhbHVlIiwic2V0UGF0aCIsIk1vY2tDb21wb3NpdGVCaW5kaW5nIiwiYUJpbmRpbmdzIiwiZ2V0QmluZGluZ3MiLCJiaW5kaW5nIiwiTW9ja0NvbnRleHRCaW5kaW5nIiwib0NvbnRleHQiLCJnZXRCb3VuZENvbnRleHQiLCJvTW9ja0NvbnRleHQiLCJhdHRhY2hFdmVudE9uY2UiLCJzZXRQYXJhbWV0ZXIiLCJleGVjdXRlIiwibW9ja1Jlc29sdmVkVmFsdWUiLCJnZXRHcm91cElkIiwiZ2V0SW50ZXJuYWxNb2NrQ29udGV4dCIsIk1vY2tNZXRhTW9kZWwiLCJvTWV0YURhdGEiLCJnZXRNZXRhQ29udGV4dCIsInNQYXRoIiwiJHBhdGgiLCJvTWV0YUNvbnRleHQiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsImdldE1ldGFQYXRoIiwibWV0YW1vZGVsIiwiT0RhdGFNZXRhTW9kZWwiLCJnZXRDb250ZXh0IiwiTW9ja01vZGVsIiwibW9ja0xpc3RCaW5kaW5nIiwibW9ja0NvbnRleHRCaW5kaW5nIiwiYmluZExpc3QiLCJiaW5kQ29udGV4dCIsImdldE1ldGFNb2RlbCIsIm9NZXRhTW9kZWwiLCJnZXRLZWVwQWxpdmVDb250ZXh0IiwibW9kZWxGcm9tTGlzdEJpbmRpbmciLCJtb2RlbEZyb21Db250ZXh0QmluZGluZyIsInVuZGVmaW5lZCIsInNldE1ldGFNb2RlbCIsIk1vY2tWaWV3IiwiZ2V0Q29udHJvbGxlciIsImdldFZpZXdEYXRhIiwiZ2V0SWQiLCJNb2NrQ29udHJvbGxlciIsImdldFZpZXciLCJfcm91dGluZyIsIm5hdmlnYXRlVG9UYXJnZXQiLCJfZWRpdEZsb3ciLCJzeW5jVGFzayIsIl9zaWRlRWZmZWN0cyIsImhhbmRsZUZpZWxkQ2hhbmdlIiwibW9ja01WQyIsImV4aXN0aW5nIiwibW9kZWwiLCJ2aWV3IiwiY29udHJvbGxlciJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7OztNQWVhQSxXO0FBRVoseUJB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Q2QsYUFBTCxDQUFtQnhFLGVBQW5CLENBQW1DdUYsVUFBbkM7QUFDQUQsSUFBQUEsSUFBSSxDQUFDcEcsUUFBTCxDQUFjYyxlQUFkLENBQThCcUYsS0FBOUI7QUFDQUUsSUFBQUEsVUFBVSxDQUFDWCxPQUFYLENBQW1CNUUsZUFBbkIsQ0FBbUNzRixJQUFuQztBQUVBLFdBQU87QUFBRUQsTUFBQUEsS0FBSyxFQUFMQSxLQUFGO0FBQVNDLE1BQUFBLElBQUksRUFBSkEsSUFBVDtBQUFlQyxNQUFBQSxVQUFVLEVBQVZBO0FBQWYsS0FBUDtBQUNBIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE1vY2sgY2xhc3MgZm9yIGEgVjQgQ29udGV4dFxuICovXG5pbXBvcnQgdHlwZSBFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIFVJNUVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcbmltcG9ydCB0eXBlIENvbnRyb2xsZXIgZnJvbSBcInNhcC91aS9jb3JlL212Yy9Db250cm9sbGVyXCI7XG5pbXBvcnQgdHlwZSBWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvVmlld1wiO1xuaW1wb3J0IHR5cGUgQ29tcG9zaXRlQmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL0NvbXBvc2l0ZUJpbmRpbmdcIjtcbmltcG9ydCB0eXBlIEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFDb250ZXh0QmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhQ29udGV4dEJpbmRpbmdcIjtcbmltcG9ydCB0eXBlIE9EYXRhTGlzdEJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YUxpc3RCaW5kaW5nXCI7XG5pbXBvcnQgT0RhdGFNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1ldGFNb2RlbFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTW9kZWxcIjtcbmltcG9ydCB0eXBlIE9EYXRhUHJvcGVydHlCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFQcm9wZXJ0eUJpbmRpbmdcIjtcblxuZXhwb3J0IGNsYXNzIE1vY2tDb250ZXh0IGltcGxlbWVudHMgUGFydGlhbDxDb250ZXh0PiB7XG5cdHByaXZhdGUgaXNLZXB0QWxpdmUgPSBmYWxzZTtcblx0cHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgb1ZhbHVlcz86IGFueSwgcHJpdmF0ZSBvQmluZGluZz86IGFueSkge31cblxuXHRwdWJsaWMgaXNBKHNDbGFzc05hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBzQ2xhc3NOYW1lID09PSBcInNhcC51aS5tb2RlbC5vZGF0YS52NC5Db250ZXh0XCI7XG5cdH1cblxuXHRwdWJsaWMgZ2V0UHJvcGVydHkgPSBqZXN0LmZuKChrZXk6IHN0cmluZykgPT4ge1xuXHRcdHJldHVybiB0aGlzLm9WYWx1ZXNba2V5XTtcblx0fSk7XG5cdHB1YmxpYyByZXF1ZXN0UHJvcGVydHkgPSBqZXN0LmZuKChrZXk6IHN0cmluZykgPT4ge1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5vVmFsdWVzW2tleV0pO1xuXHR9KTtcblx0cHVibGljIHNldFByb3BlcnR5ID0gamVzdC5mbigoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpID0+IHtcblx0XHR0aGlzLm9WYWx1ZXNba2V5XSA9IHZhbHVlO1xuXHRcdHJldHVybiB0aGlzLm9WYWx1ZXNba2V5XTtcblx0fSk7XG5cblx0cHVibGljIGdldE9iamVjdCA9IGplc3QuZm4oKHBhdGg6IHN0cmluZykgPT4ge1xuXHRcdGxldCByZXN1bHQgPSBwYXRoID8gdGhpcy5vVmFsdWVzW3BhdGhdIDogdGhpcy5vVmFsdWVzO1xuXG5cdFx0aWYgKCFyZXN1bHQgJiYgcGF0aCAmJiBwYXRoLmluZGV4T2YoXCIvXCIpID4gLTEpIHtcblx0XHRcdGNvbnN0IHBhcnRzID0gcGF0aC5zcGxpdChcIi9cIik7XG5cdFx0XHRyZXN1bHQgPSBwYXJ0cy5yZWR1Y2UoKHN1bSwgcGFydDogYW55KSA9PiB7XG5cdFx0XHRcdHN1bSA9IHBhcnQgPyBzdW1bcGFydF0gOiBzdW07XG5cdFx0XHRcdHJldHVybiBzdW07XG5cdFx0XHR9LCB0aGlzLm9WYWx1ZXMpO1xuXHRcdH1cblxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH0pO1xuXHRwdWJsaWMgZ2V0UGF0aCA9IGplc3QuZm4oKCkgPT4ge1xuXHRcdHJldHVybiB0aGlzLm9WYWx1ZXNbXCIkcGF0aFwiXTtcblx0fSk7XG5cblx0cHVibGljIGdldEJpbmRpbmcgPSBqZXN0LmZuKCgpID0+IHtcblx0XHRyZXR1cm4gdGhpcy5vQmluZGluZztcblx0fSk7XG5cdHB1YmxpYyBnZXRNb2RlbCA9IGplc3QuZm4oKCkgPT4ge1xuXHRcdHJldHVybiB0aGlzLm9CaW5kaW5nPy5nZXRNb2RlbCgpIGFzIE9EYXRhTW9kZWw7XG5cdH0pO1xuXHRwdWJsaWMgaXNUcmFuc2llbnQgPSBqZXN0LmZuKCk7XG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcblx0cHVibGljIHNldEtlZXBBbGl2ZSA9IGplc3QuZm4oKGJvb2w6IGJvb2xlYW4sIF9mbk9uQmVmb3JlRGVzdHJveT86IGFueSwgX2JSZXF1ZXN0TWVzc2FnZXM/OiBib29sZWFuKSA9PiB7XG5cdFx0dGhpcy5pc0tlcHRBbGl2ZSA9IGJvb2w7XG5cdH0pO1xuXHRwdWJsaWMgaXNLZWVwQWxpdmUgPSBqZXN0LmZuKCgpID0+IHRoaXMuaXNLZXB0QWxpdmUpO1xuXHRwdWJsaWMgcmVxdWVzdFNpZGVFZmZlY3RzID0gamVzdC5mbigpO1xuXHRwdWJsaWMgcmVxdWVzdE9iamVjdCA9IGplc3QuZm4oKTtcbn1cblxuZXhwb3J0IGNsYXNzIE1vY2tVSTVFbGVtZW50IGltcGxlbWVudHMgUGFydGlhbDxVSTVFbGVtZW50PiB7XG5cdFtrZXk6IHN0cmluZ106IGFueTtcblx0cHVibGljIGJpbmRpbmdDb250ZXh0ID0gbmV3IE1vY2tDb250ZXh0KHt9KTtcblx0cHVibGljIGdldEJpbmRpbmcgPSBqZXN0LmZuKCk7XG5cdHB1YmxpYyBnZXRCaW5kaW5nQ29udGV4dCA9IGplc3QuZm4oKS5tb2NrUmV0dXJuVmFsdWUodGhpcy5iaW5kaW5nQ29udGV4dCk7XG5cdHB1YmxpYyBnZXRCaW5kaW5nSW5mbyA9IGplc3QuZm4oKTtcblx0cHVibGljIGRhdGEgPSBqZXN0LmZuKCk7XG5cdHB1YmxpYyBnZXRNb2RlbCA9IGplc3QuZm4oKTtcblx0cHVibGljIGdldFBhcmVudCA9IGplc3QuZm4oKTtcbn1cblxuZXhwb3J0IGNsYXNzIE1vY2tDb250cm9sIGV4dGVuZHMgTW9ja1VJNUVsZW1lbnQgaW1wbGVtZW50cyBQYXJ0aWFsPENvbnRyb2w+IHtcblx0cHVibGljIGdldEJpbmRpbmdDb250ZXh0OiBqZXN0Lk1vY2s8YW55LCBhbnk+ID0gamVzdC5mbigpO1xuXHRwdWJsaWMgZ2V0TW9kZWw6IGplc3QuTW9jazxhbnksIGFueT4gPSBqZXN0LmZuKCk7XG59XG5cbmV4cG9ydCBjbGFzcyBNb2NrRXZlbnQgaW1wbGVtZW50cyBQYXJ0aWFsPEV2ZW50PiB7XG5cdHB1YmxpYyBjb25zdHJ1Y3RvcihwdWJsaWMgcGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge30sIHB1YmxpYyBzb3VyY2U6IE1vY2tVSTVFbGVtZW50ID0gbmV3IE1vY2tVSTVFbGVtZW50KCkpIHt9XG5cblx0cHVibGljIGdldFBhcmFtZXRlciA9IGplc3QuZm4oKG5hbWUpID0+IHRoaXMucGFyYW1zW25hbWVdKTtcblxuXHRwdWJsaWMgZ2V0U291cmNlID0gamVzdC5mbigoKSA9PiB0aGlzLnNvdXJjZSBhcyBhbnkpO1xufVxuXG4vKipcbiAqIE1vY2sgY2xhc3MgZm9yIE9EYXRhIFY0IExpc3RCaW5kaW5nXG4gKi9cbmV4cG9ydCBjbGFzcyBNb2NrTGlzdEJpbmRpbmcgaW1wbGVtZW50cyBQYXJ0aWFsPE9EYXRhTGlzdEJpbmRpbmc+IHtcblx0cHJpdmF0ZSBhTW9ja0NvbnRleHRzOiBNb2NrQ29udGV4dFtdO1xuXG5cdHB1YmxpYyBjb25zdHJ1Y3RvcihhQ29udGV4dHM/OiBhbnlbXSwgcHJpdmF0ZSBtb2NrTW9kZWw/OiBNb2NrTW9kZWwpIHtcblx0XHRhQ29udGV4dHMgPSBhQ29udGV4dHMgfHwgW107XG5cblx0XHR0aGlzLmFNb2NrQ29udGV4dHMgPSBhQ29udGV4dHMubWFwKChjb250ZXh0KSA9PiB7XG5cdFx0XHRyZXR1cm4gbmV3IE1vY2tDb250ZXh0KGNvbnRleHQsIHRoaXMpO1xuXHRcdH0pO1xuXHR9XG5cblx0cHVibGljIGlzQShzQ2xhc3NOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gc0NsYXNzTmFtZSA9PT0gXCJzYXAudWkubW9kZWwub2RhdGEudjQuT0RhdGFMaXN0QmluZGluZ1wiO1xuXHR9XG5cblx0cHVibGljIHNldE1vZGVsKG9Nb2RlbDogTW9ja01vZGVsKSB7XG5cdFx0dGhpcy5tb2NrTW9kZWwgPSBvTW9kZWw7XG5cdH1cblxuXHQvLyBNb2NrZWQgQVBJXG5cdHB1YmxpYyBzZXRBZ2dyZWdhdGlvbiA9IGplc3QuZm4oKTtcblx0cHVibGljIGZpbHRlciA9IGplc3QuZm4oKTtcblx0cHVibGljIHNvcnQgPSBqZXN0LmZuKCk7XG5cblx0cHVibGljIGdldFF1ZXJ5T3B0aW9uc0Zyb21QYXJhbWV0ZXJzID0gamVzdC5mbigpO1xuXHRwdWJsaWMgZ2V0UGF0aCA9IGplc3QuZm4oKTtcblx0cHVibGljIGlzU3VzcGVuZGVkID0gamVzdC5mbigpO1xuXHRwdWJsaWMgcmVzdW1lID0gamVzdC5mbigpO1xuXHRwdWJsaWMgcmVmcmVzaCA9IGplc3QuZm4oKTtcblx0cHVibGljIHN1c3BlbmQgPSBqZXN0LmZuKCk7XG5cblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuXHRwdWJsaWMgcmVxdWVzdENvbnRleHRzID0gamVzdC5mbigoLi4uYXJncykgPT4ge1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5hTW9ja0NvbnRleHRzIGFzIGFueSBhcyBDb250ZXh0W10pO1xuXHR9KTtcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuXHRwdWJsaWMgZ2V0Q3VycmVudENvbnRleHRzID0gamVzdC5mbigoLi4uYXJncykgPT4ge1xuXHRcdHJldHVybiB0aGlzLmFNb2NrQ29udGV4dHMgYXMgYW55IGFzIENvbnRleHRbXTtcblx0fSk7XG5cdHB1YmxpYyBnZXRNb2RlbCA9IGplc3QuZm4oKCkgPT4ge1xuXHRcdHJldHVybiB0aGlzLm1vY2tNb2RlbCBhcyBhbnkgYXMgT0RhdGFNb2RlbDtcblx0fSk7XG5cdHB1YmxpYyBnZXRVcGRhdGVHcm91cElkID0gamVzdC5mbigoKSA9PiBcImF1dG9cIik7XG59XG5cbmV4cG9ydCBjbGFzcyBNb2NrUHJvcGVydHlCaW5kaW5nIGltcGxlbWVudHMgUGFydGlhbDxPRGF0YVByb3BlcnR5QmluZGluZz4ge1xuXHRwcml2YXRlIG1vY2tNb2RlbCE6IEpTT05Nb2RlbDtcblx0cHJpdmF0ZSBtb2NrUGF0aCE6IHN0cmluZztcblxuXHRwdWJsaWMgY29uc3RydWN0b3IobW9ja01vZGVsOiBKU09OTW9kZWwsIG1vY2tQYXRoOiBzdHJpbmcpIHtcblx0XHR0aGlzLnNldE1vZGVsKG1vY2tNb2RlbCk7XG5cdFx0dGhpcy5zZXRQYXRoKG1vY2tQYXRoKTtcblx0fVxuXG5cdHB1YmxpYyBpc0Eoc0NsYXNzTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHNDbGFzc05hbWUgPT09IFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhUHJvcGVydHlCaW5kaW5nXCI7XG5cdH1cblxuXHRwdWJsaWMgc2V0TW9kZWwob01vZGVsOiBKU09OTW9kZWwpIHtcblx0XHR0aGlzLm1vY2tNb2RlbCA9IG9Nb2RlbDtcblx0fVxuXHRwdWJsaWMgZ2V0TW9kZWwgPSBqZXN0LmZuKCgpID0+IHtcblx0XHRyZXR1cm4gdGhpcy5tb2NrTW9kZWwgYXMgYW55IGFzIE9EYXRhTW9kZWw7XG5cdH0pO1xuXG5cdHB1YmxpYyBzZXRQYXRoKHBhdGg6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuXHRcdHRoaXMubW9ja1BhdGggPSBwYXRoID8gcGF0aCA6IFwiXCI7XG5cdH1cblx0cHVibGljIGdldFBhdGggPSBqZXN0LmZuKCgpID0+IHtcblx0XHRyZXR1cm4gdGhpcy5tb2NrUGF0aDtcblx0fSk7XG5cblx0cHVibGljIGdldFZhbHVlID0gamVzdC5mbigoKSA9PiB7XG5cdFx0cmV0dXJuIHRoaXM/Lm1vY2tNb2RlbD8uZ2V0UHJvcGVydHkoYC8ke3RoaXMubW9ja1BhdGh9YCk7XG5cdH0pO1xufVxuXG5leHBvcnQgY2xhc3MgTW9ja0NvbXBvc2l0ZUJpbmRpbmcgaW1wbGVtZW50cyBQYXJ0aWFsPENvbXBvc2l0ZUJpbmRpbmc+IHtcblx0cHJpdmF0ZSBhQmluZGluZ3M6IE1vY2tQcm9wZXJ0eUJpbmRpbmdbXTtcblxuXHRwdWJsaWMgY29uc3RydWN0b3IoYUJpbmRpbmdzOiBNb2NrUHJvcGVydHlCaW5kaW5nW10pIHtcblx0XHR0aGlzLmFCaW5kaW5ncyA9IGFCaW5kaW5ncztcblx0fVxuXG5cdHB1YmxpYyBpc0Eoc0NsYXNzTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHNDbGFzc05hbWUgPT09IFwic2FwLnVpLm1vZGVsLkNvbXBvc2l0ZUJpbmRpbmdcIjtcblx0fVxuXG5cdHB1YmxpYyBnZXRCaW5kaW5ncyA9IGplc3QuZm4oKCkgPT4ge1xuXHRcdHJldHVybiB0aGlzLmFCaW5kaW5ncztcblx0fSk7XG5cblx0cHVibGljIGdldFZhbHVlID0gamVzdC5mbigoKSA9PiB7XG5cdFx0cmV0dXJuIHRoaXMuYUJpbmRpbmdzLm1hcCgoYmluZGluZykgPT4gYmluZGluZy5nZXRWYWx1ZSgpKTtcblx0fSk7XG59XG5cbmV4cG9ydCBjbGFzcyBNb2NrQ29udGV4dEJpbmRpbmcgaW1wbGVtZW50cyBQYXJ0aWFsPE9EYXRhQ29udGV4dEJpbmRpbmc+IHtcblx0cHJpdmF0ZSBvTW9ja0NvbnRleHQ6IE1vY2tDb250ZXh0O1xuXHRwcml2YXRlIGlzS2VwdEFsaXZlOiBib29sZWFuID0gZmFsc2U7XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKG9Db250ZXh0PzogYW55LCBwcml2YXRlIG1vY2tNb2RlbD86IE1vY2tNb2RlbCkge1xuXHRcdHRoaXMub01vY2tDb250ZXh0ID0gbmV3IE1vY2tDb250ZXh0KG9Db250ZXh0IHx8IHt9LCB0aGlzKTtcblx0fVxuXG5cdHB1YmxpYyBpc0Eoc0NsYXNzTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHNDbGFzc05hbWUgPT09IFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhQ29udGV4dEJpbmRpbmdcIjtcblx0fVxuXHRwdWJsaWMgZ2V0SW50ZXJuYWxNb2NrQ29udGV4dCgpOiBNb2NrQ29udGV4dCB7XG5cdFx0cmV0dXJuIHRoaXMub01vY2tDb250ZXh0O1xuXHR9XG5cdHB1YmxpYyBzZXRNb2RlbChvTW9kZWw6IE1vY2tNb2RlbCkge1xuXHRcdHRoaXMubW9ja01vZGVsID0gb01vZGVsO1xuXHR9XG5cblx0Ly8gTW9ja2VkIEFQSVxuXHRwdWJsaWMgZ2V0Qm91bmRDb250ZXh0ID0gamVzdC5mbigoKSA9PiB7XG5cdFx0cmV0dXJuIHRoaXMub01vY2tDb250ZXh0IGFzIGFueSBhcyBDb250ZXh0O1xuXHR9KTtcblx0cHVibGljIGF0dGFjaEV2ZW50T25jZSA9IGplc3QuZm4oKTtcblx0cHVibGljIGdldE1vZGVsID0gamVzdC5mbigoKSA9PiB7XG5cdFx0cmV0dXJuIHRoaXMubW9ja01vZGVsIGFzIGFueSBhcyBPRGF0YU1vZGVsO1xuXHR9KTtcblx0cHVibGljIHNldFBhcmFtZXRlciA9IGplc3QuZm4oKTtcblx0cHVibGljIGV4ZWN1dGUgPSBqZXN0LmZuKCkubW9ja1Jlc29sdmVkVmFsdWUodHJ1ZSk7XG5cdHB1YmxpYyBnZXRHcm91cElkID0gamVzdC5mbigpO1xufVxuXG4vKipcbiAqIE1vY2sgY2xhc3MgZm9yIE9EYXRhIFY0IE1ldGFNb2RlbFxuICovXG5leHBvcnQgY2xhc3MgTW9ja01ldGFNb2RlbCBpbXBsZW1lbnRzIFBhcnRpYWw8T0RhdGFNZXRhTW9kZWw+IHtcblx0cHJpdmF0ZSBvTWV0YUNvbnRleHQ6IE1vY2tDb250ZXh0O1xuXHRyZXF1ZXN0VmFsdWVMaXN0SW5mbyE6IGplc3QuTW9jazxhbnksIGFueT47XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKG9NZXRhRGF0YT86IGFueSkge1xuXHRcdHRoaXMub01ldGFDb250ZXh0ID0gbmV3IE1vY2tDb250ZXh0KG9NZXRhRGF0YSB8fCB7fSk7XG5cdH1cblxuXHQvLyBNb2NrZWQgQVBJXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcblx0cHVibGljIGdldE1ldGFDb250ZXh0ID0gamVzdC5mbigoc1BhdGg6IHN0cmluZykgPT4ge1xuXHRcdHJldHVybiBuZXcgTW9ja0NvbnRleHQoeyAkcGF0aDogc1BhdGggfSkgYXMgYW55IGFzIENvbnRleHQ7XG5cdH0pO1xuXHRwdWJsaWMgZ2V0T2JqZWN0ID0gamVzdC5mbigoc1BhdGg6IHN0cmluZykgPT4ge1xuXHRcdHJldHVybiB0aGlzLm9NZXRhQ29udGV4dC5nZXRQcm9wZXJ0eShzUGF0aCk7XG5cdH0pO1xuXHRwdWJsaWMgcmVxdWVzdE9iamVjdCA9IGplc3QuZm4oKTtcblx0cHVibGljIGNyZWF0ZUJpbmRpbmdDb250ZXh0ID0gamVzdC5mbigoc1BhdGg6IHN0cmluZykgPT4ge1xuXHRcdHJldHVybiBuZXcgTW9ja0NvbnRleHQoeyAkcGF0aDogc1BhdGggfSkgYXMgYW55IGFzIENvbnRleHQ7XG5cdH0pO1xuXHRwdWJsaWMgZ2V0TWV0YVBhdGggPSBqZXN0LmZuKChzUGF0aDogc3RyaW5nKSA9PiB7XG5cdFx0Y29uc3QgbWV0YW1vZGVsID0gbmV3IE9EYXRhTWV0YU1vZGVsKCk7XG5cdFx0cmV0dXJuIHNQYXRoID8gbWV0YW1vZGVsLmdldE1ldGFQYXRoKHNQYXRoKSA6IHNQYXRoO1xuXHR9KTtcblx0cHVibGljIGdldENvbnRleHQgPSBqZXN0LmZuKCk7XG59XG5cbi8qKlxuICogTW9jayBjbGFzcyBmb3IgT0RhdGEgVjQgTW9kZWxcbiAqL1xuXG5leHBvcnQgY2xhc3MgTW9ja01vZGVsIGltcGxlbWVudHMgUGFydGlhbDxPRGF0YU1vZGVsPiB7XG5cdHByaXZhdGUgb01ldGFNb2RlbD86IE1vY2tNZXRhTW9kZWw7XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgbW9ja0xpc3RCaW5kaW5nPzogTW9ja0xpc3RCaW5kaW5nLCBwcml2YXRlIG1vY2tDb250ZXh0QmluZGluZz86IE1vY2tDb250ZXh0QmluZGluZykge1xuXHRcdGlmIChtb2NrTGlzdEJpbmRpbmcpIHtcblx0XHRcdG1vY2tMaXN0QmluZGluZy5zZXRNb2RlbCh0aGlzKTtcblx0XHR9XG5cdFx0aWYgKG1vY2tDb250ZXh0QmluZGluZykge1xuXHRcdFx0bW9ja0NvbnRleHRCaW5kaW5nLnNldE1vZGVsKHRoaXMpO1xuXHRcdH1cblx0fVxuXG5cdC8vIEZhY3Rvcmllc1xuXHRzdGF0aWMgbW9kZWxGcm9tTGlzdEJpbmRpbmcobW9ja0xpc3RCaW5kaW5nOiBNb2NrTGlzdEJpbmRpbmcpOiBNb2NrTW9kZWwge1xuXHRcdHJldHVybiBuZXcgTW9ja01vZGVsKG1vY2tMaXN0QmluZGluZyk7XG5cdH1cblx0c3RhdGljIG1vZGVsRnJvbUNvbnRleHRCaW5kaW5nKG1vY2tDb250ZXh0QmluZGluZzogTW9ja0NvbnRleHRCaW5kaW5nKTogTW9ja01vZGVsIHtcblx0XHRyZXR1cm4gbmV3IE1vY2tNb2RlbCh1bmRlZmluZWQsIG1vY2tDb250ZXh0QmluZGluZyk7XG5cdH1cblxuXHRwdWJsaWMgc2V0TWV0YU1vZGVsKG9NZXRhTW9kZWw6IE1vY2tNZXRhTW9kZWwpIHtcblx0XHR0aGlzLm9NZXRhTW9kZWwgPSBvTWV0YU1vZGVsO1xuXHR9XG5cblx0Ly8gTW9ja2VkIEFQSVxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cdHB1YmxpYyBiaW5kTGlzdCA9IGplc3QuZm4oKC4uLmFyZ3MpID0+IHtcblx0XHRyZXR1cm4gdGhpcy5tb2NrTGlzdEJpbmRpbmcgYXMgYW55IGFzIE9EYXRhTGlzdEJpbmRpbmc7XG5cdH0pO1xuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cdHB1YmxpYyBiaW5kQ29udGV4dCA9IGplc3QuZm4oKC4uLmFyZ3MpID0+IHtcblx0XHRyZXR1cm4gdGhpcy5tb2NrQ29udGV4dEJpbmRpbmcgYXMgYW55IGFzIE9EYXRhQ29udGV4dEJpbmRpbmc7XG5cdH0pO1xuXHRwdWJsaWMgZ2V0TWV0YU1vZGVsID0gamVzdC5mbigoKSA9PiB7XG5cdFx0cmV0dXJuIHRoaXMub01ldGFNb2RlbCBhcyBhbnkgYXMgT0RhdGFNZXRhTW9kZWw7XG5cdH0pO1xuXG5cdHB1YmxpYyBnZXRQcm9wZXJ0eSA9IGplc3QuZm4oKTtcblx0cHVibGljIHNldFByb3BlcnR5ID0gamVzdC5mbigpO1xuXHRwdWJsaWMgcmVxdWVzdE9iamVjdCA9IGplc3QuZm4oKTtcblx0cHVibGljIGdldEtlZXBBbGl2ZUNvbnRleHQgPSBqZXN0LmZuKCk7XG59XG5cbmV4cG9ydCBjbGFzcyBNb2NrVmlldyBpbXBsZW1lbnRzIFBhcnRpYWw8Vmlldz4ge1xuXHRwdWJsaWMgZ2V0Q29udHJvbGxlciA9IGplc3QuZm4oKTtcblxuXHRwdWJsaWMgZ2V0QmluZGluZ0NvbnRleHQgPSBqZXN0LmZuKCk7XG5cblx0cHVibGljIGdldE1vZGVsID0gamVzdC5mbigpO1xuXG5cdHB1YmxpYyBnZXRWaWV3RGF0YSA9IGplc3QuZm4oKTtcblxuXHRwdWJsaWMgaXNBKHNDbGFzc05hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBzQ2xhc3NOYW1lID09PSBcInNhcC51aS5jb3JlLm12Yy5WaWV3XCI7XG5cdH1cblxuXHRwdWJsaWMgZ2V0SWQgPSBqZXN0LmZuKCk7XG59XG5cbmV4cG9ydCBjbGFzcyBNb2NrQ29udHJvbGxlciBpbXBsZW1lbnRzIFBhcnRpYWw8Q29udHJvbGxlcj4ge1xuXHRwdWJsaWMgZ2V0VmlldyA9IGplc3QuZm4oKS5tb2NrUmV0dXJuVmFsdWUobmV3IE1vY2tWaWV3KCkpO1xuXG5cdHB1YmxpYyBfcm91dGluZyA9IHtcblx0XHRuYXZpZ2F0ZVRvVGFyZ2V0OiBqZXN0LmZuKClcblx0fTtcblxuXHRwdWJsaWMgX2VkaXRGbG93ID0ge1xuXHRcdHN5bmNUYXNrOiBqZXN0LmZuKClcblx0fTtcblxuXHRwdWJsaWMgX3NpZGVFZmZlY3RzID0ge1xuXHRcdGhhbmRsZUZpZWxkQ2hhbmdlOiBqZXN0LmZuKClcblx0fTtcblxuXHRpc0EgPSBqZXN0LmZuKCkubW9ja1JldHVyblZhbHVlKGZhbHNlKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNVkNNb2NrIHtcblx0bW9kZWw6IE1vY2tNb2RlbDtcblx0dmlldzogTW9ja1ZpZXc7XG5cdGNvbnRyb2xsZXI6IE1vY2tDb250cm9sbGVyO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIG1vZGVsLCB2aWV3IGFuZCBjb250cm9sbGVyIG1vY2tzIHRoYXQgcmVmZXIgdG8gZWFjaCBvdGhlci5cbiAqXG4gKiBAcGFyYW0gZXhpc3RpbmcgT3B0aW9uYWwgZXhpc3RpbmcgbW9ja2VkIGluc3RhbmNlcyB0aGF0IHNob3VsZCBiZSB1c2VkXG4gKiBAcmV0dXJucyBNb2NrZWQgbW9kZWwsIHZpZXcgYW5kIGNvbnRyb2xsZXIgaW5zdGFuY2VzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtb2NrTVZDKGV4aXN0aW5nPzogUGFydGlhbDxNVkNNb2NrPik6IE1WQ01vY2sge1xuXHRjb25zdCBtb2RlbCA9IGV4aXN0aW5nPy5tb2RlbCB8fCBuZXcgTW9ja01vZGVsKCk7XG5cdGNvbnN0IHZpZXcgPSBleGlzdGluZz8udmlldyB8fCBuZXcgTW9ja1ZpZXcoKTtcblx0Y29uc3QgY29udHJvbGxlciA9IGV4aXN0aW5nPy5jb250cm9sbGVyIHx8IG5ldyBNb2NrQ29udHJvbGxlcigpO1xuXG5cdHZpZXcuZ2V0Q29udHJvbGxlci5tb2NrUmV0dXJuVmFsdWUoY29udHJvbGxlcik7XG5cdHZpZXcuZ2V0TW9kZWwubW9ja1JldHVyblZhbHVlKG1vZGVsKTtcblx0Y29udHJvbGxlci5nZXRWaWV3Lm1vY2tSZXR1cm5WYWx1ZSh2aWV3KTtcblxuXHRyZXR1cm4geyBtb2RlbCwgdmlldywgY29udHJvbGxlciB9O1xufVxuIl19
|
|
@@ -11,7 +11,7 @@ import type JSONModel from "sap/ui/model/json/JSONModel";
|
|
|
11
11
|
import type Context from "sap/ui/model/odata/v4/Context";
|
|
12
12
|
import type ODataContextBinding from "sap/ui/model/odata/v4/ODataContextBinding";
|
|
13
13
|
import type ODataListBinding from "sap/ui/model/odata/v4/ODataListBinding";
|
|
14
|
-
import
|
|
14
|
+
import ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
|
|
15
15
|
import type ODataModel from "sap/ui/model/odata/v4/ODataModel";
|
|
16
16
|
import type ODataPropertyBinding from "sap/ui/model/odata/v4/ODataPropertyBinding";
|
|
17
17
|
|
|
@@ -118,6 +118,13 @@ export class MockListBinding implements Partial<ODataListBinding> {
|
|
|
118
118
|
public filter = jest.fn();
|
|
119
119
|
public sort = jest.fn();
|
|
120
120
|
|
|
121
|
+
public getQueryOptionsFromParameters = jest.fn();
|
|
122
|
+
public getPath = jest.fn();
|
|
123
|
+
public isSuspended = jest.fn();
|
|
124
|
+
public resume = jest.fn();
|
|
125
|
+
public refresh = jest.fn();
|
|
126
|
+
public suspend = jest.fn();
|
|
127
|
+
|
|
121
128
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
122
129
|
public requestContexts = jest.fn((...args) => {
|
|
123
130
|
return Promise.resolve(this.aMockContexts as any as Context[]);
|
|
@@ -210,6 +217,9 @@ export class MockContextBinding implements Partial<ODataContextBinding> {
|
|
|
210
217
|
public getModel = jest.fn(() => {
|
|
211
218
|
return this.mockModel as any as ODataModel;
|
|
212
219
|
});
|
|
220
|
+
public setParameter = jest.fn();
|
|
221
|
+
public execute = jest.fn().mockResolvedValue(true);
|
|
222
|
+
public getGroupId = jest.fn();
|
|
213
223
|
}
|
|
214
224
|
|
|
215
225
|
/**
|
|
@@ -236,7 +246,8 @@ export class MockMetaModel implements Partial<ODataMetaModel> {
|
|
|
236
246
|
return new MockContext({ $path: sPath }) as any as Context;
|
|
237
247
|
});
|
|
238
248
|
public getMetaPath = jest.fn((sPath: string) => {
|
|
239
|
-
|
|
249
|
+
const metamodel = new ODataMetaModel();
|
|
250
|
+
return sPath ? metamodel.getMetaPath(sPath) : sPath;
|
|
240
251
|
});
|
|
241
252
|
public getContext = jest.fn();
|
|
242
253
|
}
|
|
@@ -249,6 +249,42 @@ sap.ui.define(
|
|
|
249
249
|
DialogValueHelpAssertions.prototype.iCheckDefineConditions = function (mState) {
|
|
250
250
|
return _checkTabBuilder(this, "-VHP--defineCondition", mState);
|
|
251
251
|
};
|
|
252
|
+
/**
|
|
253
|
+
* Checks the dialog.
|
|
254
|
+
*
|
|
255
|
+
* @param {object} [mDialogState] Defines the expected state of the dialog
|
|
256
|
+
* @returns {object} The result of the {@link sap.ui.test.Opa5#waitFor} function, to be used for chained statements
|
|
257
|
+
* @public
|
|
258
|
+
*/
|
|
259
|
+
DialogValueHelpAssertions.prototype.iCheckState = function (mDialogState) {
|
|
260
|
+
if (this.getIdentifier().type === "ValueHelp" && mDialogState && mDialogState.title && Object.keys(mDialogState).length === 1) {
|
|
261
|
+
//TODO: check VH Dialog title
|
|
262
|
+
return this.prepareResult(
|
|
263
|
+
this.getBuilder()
|
|
264
|
+
.has(function (oControl) {
|
|
265
|
+
var sTitle = oControl.getParent && oControl.getParent() && oControl.getParent().getProperty("title");
|
|
266
|
+
return sTitle && sTitle.indexOf(mDialogState.title) >= 0;
|
|
267
|
+
})
|
|
268
|
+
//.hasState(mDialogState)
|
|
269
|
+
.description(Utils.formatMessage("Checking dialog '{0}' in state '{1}'", this.getIdentifier(), mDialogState))
|
|
270
|
+
.execute()
|
|
271
|
+
);
|
|
272
|
+
} else {
|
|
273
|
+
return this.prepareResult(
|
|
274
|
+
this.getBuilder()
|
|
275
|
+
.has(function (oControl) {
|
|
276
|
+
var sTitle = oControl.getTitle && oControl.getTitle();
|
|
277
|
+
if (mDialogState && sTitle === "Select: " + mDialogState.title) {
|
|
278
|
+
oControl.setTitle(mDialogState.title); //TODO testing
|
|
279
|
+
}
|
|
280
|
+
return true;
|
|
281
|
+
})
|
|
282
|
+
.hasState(mDialogState)
|
|
283
|
+
.description(Utils.formatMessage("Checking dialog '{0}' in state '{1}'", this.getIdentifier(), mDialogState))
|
|
284
|
+
.execute()
|
|
285
|
+
);
|
|
286
|
+
}
|
|
287
|
+
};
|
|
252
288
|
|
|
253
289
|
return DialogValueHelpAssertions;
|
|
254
290
|
}
|
|
@@ -3,110 +3,108 @@
|
|
|
3
3
|
(c) Copyright 2009-2021 SAP SE. All rights reserved
|
|
4
4
|
|
|
5
5
|
*/
|
|
6
|
-
sap.ui.define(
|
|
7
|
-
FEBuilder,
|
|
8
|
-
Utils,
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
);
|
|
6
|
+
sap.ui.define(
|
|
7
|
+
["./FEBuilder", "sap/fe/test/Utils", "sap/ui/test/OpaBuilder", "sap/fe/test/builder/DialogBuilder"],
|
|
8
|
+
function (FEBuilder, Utils, OpaBuilder, DialogBuilder) {
|
|
9
|
+
"use strict";
|
|
10
|
+
|
|
11
|
+
var FilterBarBuilder = function () {
|
|
12
|
+
return FEBuilder.apply(this, arguments);
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
FilterBarBuilder.create = function (oOpaInstance) {
|
|
16
|
+
return new FilterBarBuilder(oOpaInstance);
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
FilterBarBuilder.prototype = Object.create(FEBuilder.prototype);
|
|
20
|
+
FilterBarBuilder.prototype.constructor = FilterBarBuilder;
|
|
21
|
+
|
|
22
|
+
FilterBarBuilder.createAdaptationDialogBuilder = function (oOpaInstance) {
|
|
23
|
+
return DialogBuilder.create(oOpaInstance).hasAggregation("customHeader");
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
FilterBarBuilder.prototype.hasField = function (vFieldMatcher, mState, bReturnField) {
|
|
27
|
+
var aArguments = Utils.parseArguments([[Array, Object, Function], Object, Boolean], arguments);
|
|
28
|
+
vFieldMatcher = aArguments[0];
|
|
29
|
+
mState = aArguments[1];
|
|
30
|
+
bReturnField = aArguments[2];
|
|
31
|
+
|
|
32
|
+
if (mState) {
|
|
33
|
+
var vStatesMatcher = this.getStatesMatcher(mState);
|
|
34
|
+
if (mState.visible === false) {
|
|
35
|
+
// when checking for not visible, the either no field exists or existing field is not visible (like the provided state)
|
|
36
|
+
return this.hasSome(
|
|
37
|
+
OpaBuilder.Matchers.not(OpaBuilder.Matchers.aggregationMatcher("filterItems", vFieldMatcher)),
|
|
38
|
+
OpaBuilder.Matchers.aggregationMatcher("filterItems", [vStatesMatcher].concat(vFieldMatcher || []))
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
vFieldMatcher = [vStatesMatcher].concat(vFieldMatcher || []);
|
|
43
42
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
return this.has(function(oFilterBar) {
|
|
56
|
-
return !oFilterBar.getFilterItems().some(FEBuilder.Matchers.match(fnEditStateMatcher));
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
var aFilterItemsMatchers = [fnEditStateMatcher];
|
|
61
|
-
if (oEditState) {
|
|
62
|
-
aFilterItemsMatchers.push(
|
|
63
|
-
OpaBuilder.Matchers.hasAggregation("contentEdit", OpaBuilder.Matchers.properties("selectedKey", oEditState.id))
|
|
64
|
-
);
|
|
65
|
-
}
|
|
66
|
-
if (mState && Object.keys(mState).length) {
|
|
67
|
-
aFilterItemsMatchers.push(FEBuilder.Matchers.states(mState));
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
return this.hasAggregation("filterItems", aFilterItemsMatchers);
|
|
71
|
-
};
|
|
72
|
-
|
|
73
|
-
FilterBarBuilder.prototype.hasSearchField = function(sSearchText, mState) {
|
|
74
|
-
var aMatchers = [];
|
|
75
|
-
if (mState) {
|
|
76
|
-
if (mState.visible === false) {
|
|
77
|
-
return this.has(function(oFilterBar) {
|
|
78
|
-
return !oFilterBar.getBasicSearchField();
|
|
43
|
+
|
|
44
|
+
return bReturnField
|
|
45
|
+
? this.has(OpaBuilder.Matchers.aggregation("filterItems", vFieldMatcher)).has(FEBuilder.Matchers.atIndex(0))
|
|
46
|
+
: this.has(OpaBuilder.Matchers.aggregationMatcher("filterItems", vFieldMatcher));
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
FilterBarBuilder.prototype.hasEditingStatus = function (oEditState, mState) {
|
|
50
|
+
var fnEditStateMatcher = OpaBuilder.Matchers.resourceBundle("label", "sap.fe.macros", "FILTERBAR_EDITING_STATUS");
|
|
51
|
+
if (mState && "visible" in mState && mState.visible === false) {
|
|
52
|
+
return this.has(function (oFilterBar) {
|
|
53
|
+
return !oFilterBar.getFilterItems().some(FEBuilder.Matchers.match(fnEditStateMatcher));
|
|
79
54
|
});
|
|
80
55
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
56
|
+
|
|
57
|
+
var aFilterItemsMatchers = [fnEditStateMatcher];
|
|
58
|
+
if (oEditState) {
|
|
59
|
+
aFilterItemsMatchers.push(
|
|
60
|
+
OpaBuilder.Matchers.hasAggregation("contentEdit", OpaBuilder.Matchers.properties("selectedKey", oEditState.id))
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
if (mState && Object.keys(mState).length) {
|
|
64
|
+
aFilterItemsMatchers.push(FEBuilder.Matchers.states(mState));
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
return this.hasAggregation("filterItems", aFilterItemsMatchers);
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
FilterBarBuilder.prototype.hasSearchField = function (sSearchText, mState) {
|
|
71
|
+
var aMatchers = [];
|
|
72
|
+
if (mState) {
|
|
73
|
+
if (mState.visible === false) {
|
|
74
|
+
return this.has(function (oFilterBar) {
|
|
75
|
+
return !oFilterBar.getBasicSearchField();
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
aMatchers.push(FEBuilder.Matchers.states(mState));
|
|
79
|
+
}
|
|
80
|
+
if (sSearchText) {
|
|
81
|
+
aMatchers.push(OpaBuilder.Matchers.properties({ value: sSearchText }));
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
return this.hasAggregation("basicSearchField", aMatchers);
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
FilterBarBuilder.prototype.doChangeEditingStatus = function (vEditState) {
|
|
88
|
+
var fnEditStateMatcher = OpaBuilder.Matchers.resourceBundle("label", "sap.fe.macros", "FILTERBAR_EDITING_STATUS");
|
|
89
|
+
return this.doOnAggregation("filterItems", fnEditStateMatcher, OpaBuilder.Actions.enterText(vEditState.display));
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
FilterBarBuilder.prototype.doChangeSearch = function (sSearchText) {
|
|
93
|
+
return this.doOnAggregation("basicSearchField", OpaBuilder.Actions.enterText(sSearchText || ""));
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
FilterBarBuilder.prototype.doResetSearch = function () {
|
|
97
|
+
return this.doOnAggregation("basicSearchField", OpaBuilder.Actions.press("inner-reset"));
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
FilterBarBuilder.prototype.doSearch = function () {
|
|
101
|
+
return this.doPress("btnSearch");
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
FilterBarBuilder.prototype.doOpenSettings = function () {
|
|
105
|
+
return this.doPress("btnAdapt");
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
return FilterBarBuilder;
|
|
109
|
+
}
|
|
110
|
+
);
|
|
@@ -38,10 +38,10 @@ sap.ui.define(["./FEBuilder", "sap/ui/test/OpaBuilder", "sap/fe/test/Utils"], fu
|
|
|
38
38
|
function (oVMControl) {
|
|
39
39
|
return FEBuilder.create(this)
|
|
40
40
|
.hasId(oVMControl.getId())
|
|
41
|
-
.doPress("saveas")
|
|
41
|
+
.doPress("vm-saveas")
|
|
42
42
|
.success(
|
|
43
43
|
FEBuilder.create(this)
|
|
44
|
-
.hasId(oVMControl.getId() + "-savedialog")
|
|
44
|
+
.hasId(oVMControl.getId() + "-vm-savedialog")
|
|
45
45
|
.doOnChildren(
|
|
46
46
|
FEBuilder.create(this)
|
|
47
47
|
.hasId(/-name$/)
|
|
@@ -89,7 +89,7 @@ sap.ui.define(["./FEBuilder", "sap/ui/test/OpaBuilder", "sap/fe/test/Utils"], fu
|
|
|
89
89
|
|
|
90
90
|
return this.doPress().success(
|
|
91
91
|
function (oVMControl) {
|
|
92
|
-
return FEBuilder.create(this).hasId(oVMControl.getId()).doPress("mainsave").description(vGivenDescription).execute();
|
|
92
|
+
return FEBuilder.create(this).hasId(oVMControl.getId()).doPress("vm-mainsave").description(vGivenDescription).execute();
|
|
93
93
|
}.bind(this)
|
|
94
94
|
);
|
|
95
95
|
};
|
|
@@ -111,7 +111,7 @@ sap.ui.define(["./FEBuilder", "sap/ui/test/OpaBuilder", "sap/fe/test/Utils"], fu
|
|
|
111
111
|
return this.doPress().success(
|
|
112
112
|
function (oVMControl) {
|
|
113
113
|
return FEBuilder.create(this)
|
|
114
|
-
.hasId(oVMControl.getId() + "-list")
|
|
114
|
+
.hasId(oVMControl.getId() + "-vm-list")
|
|
115
115
|
.doOnAggregation("items", OpaBuilder.Matchers.properties({ text: sVariantName }), OpaBuilder.Actions.press())
|
|
116
116
|
.description(vGivenDescription)
|
|
117
117
|
.execute();
|
|
@@ -137,10 +137,10 @@ sap.ui.define(["./FEBuilder", "sap/ui/test/OpaBuilder", "sap/fe/test/Utils"], fu
|
|
|
137
137
|
function (oVMControl) {
|
|
138
138
|
return FEBuilder.create(this)
|
|
139
139
|
.hasId(oVMControl.getId())
|
|
140
|
-
.doPress("manage")
|
|
140
|
+
.doPress("vm-manage")
|
|
141
141
|
.success(
|
|
142
142
|
FEBuilder.create(this)
|
|
143
|
-
.hasId(oVMControl.getId() + "-managementTable")
|
|
143
|
+
.hasId(oVMControl.getId() + "-vm-managementTable")
|
|
144
144
|
.doOnChildren(
|
|
145
145
|
FEBuilder.create(this)
|
|
146
146
|
.hasType("sap.m.ColumnListItem")
|
|
@@ -156,7 +156,7 @@ sap.ui.define(["./FEBuilder", "sap/ui/test/OpaBuilder", "sap/fe/test/Utils"], fu
|
|
|
156
156
|
)
|
|
157
157
|
.doOnChildren(
|
|
158
158
|
FEBuilder.create(this)
|
|
159
|
-
.hasId(/-managementsave$/)
|
|
159
|
+
.hasId(/-vm-managementsave$/)
|
|
160
160
|
.hasType("sap.m.Button")
|
|
161
161
|
.doPress()
|
|
162
162
|
)
|
|
@@ -185,10 +185,10 @@ sap.ui.define(["./FEBuilder", "sap/ui/test/OpaBuilder", "sap/fe/test/Utils"], fu
|
|
|
185
185
|
function (oVMControl) {
|
|
186
186
|
return FEBuilder.create(this)
|
|
187
187
|
.hasId(oVMControl.getId())
|
|
188
|
-
.doPress("manage")
|
|
188
|
+
.doPress("vm-manage")
|
|
189
189
|
.success(
|
|
190
190
|
FEBuilder.create(this)
|
|
191
|
-
.hasId(oVMControl.getId() + "-managementTable")
|
|
191
|
+
.hasId(oVMControl.getId() + "-vm-managementTable")
|
|
192
192
|
.doOnChildren(
|
|
193
193
|
FEBuilder.create(this)
|
|
194
194
|
.hasType("sap.m.ColumnListItem")
|
|
@@ -199,7 +199,7 @@ sap.ui.define(["./FEBuilder", "sap/ui/test/OpaBuilder", "sap/fe/test/Utils"], fu
|
|
|
199
199
|
)
|
|
200
200
|
.success(
|
|
201
201
|
FEBuilder.create(this)
|
|
202
|
-
.hasId(oVMControl.getId() + "-managementsave")
|
|
202
|
+
.hasId(oVMControl.getId() + "-vm-managementsave")
|
|
203
203
|
.hasType("sap.m.Button")
|
|
204
204
|
.doPress()
|
|
205
205
|
)
|
|
@@ -225,10 +225,10 @@ sap.ui.define(["./FEBuilder", "sap/ui/test/OpaBuilder", "sap/fe/test/Utils"], fu
|
|
|
225
225
|
function (oVMControl) {
|
|
226
226
|
return FEBuilder.create(this)
|
|
227
227
|
.hasId(oVMControl.getId())
|
|
228
|
-
.doPress("manage")
|
|
228
|
+
.doPress("vm-manage")
|
|
229
229
|
.success(
|
|
230
230
|
FEBuilder.create(this)
|
|
231
|
-
.hasId(oVMControl.getId() + "-managementTable")
|
|
231
|
+
.hasId(oVMControl.getId() + "-vm-managementTable")
|
|
232
232
|
.doOnChildren(
|
|
233
233
|
FEBuilder.create(this)
|
|
234
234
|
.hasType("sap.m.ColumnListItem")
|
|
@@ -239,7 +239,7 @@ sap.ui.define(["./FEBuilder", "sap/ui/test/OpaBuilder", "sap/fe/test/Utils"], fu
|
|
|
239
239
|
)
|
|
240
240
|
.success(
|
|
241
241
|
FEBuilder.create(this)
|
|
242
|
-
.hasId(oVMControl.getId() + "-managementsave")
|
|
242
|
+
.hasId(oVMControl.getId() + "-vm-managementsave")
|
|
243
243
|
.hasType("sap.m.Button")
|
|
244
244
|
.doPress()
|
|
245
245
|
)
|