@lenne.tech/ng-base 0.3.4 → 0.3.5

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.
@@ -119,37 +119,16 @@ export class ScrollService {
119
119
  * Scroll done promise
120
120
  */
121
121
  scrollDone(options = {}) {
122
- // Init configuration
123
- const config = Object.assign({ doneFunction: undefined, timeout: undefined }, options);
124
- // Return promise for scroll done
125
- return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
126
- // Init variables
127
- let rejected = false;
128
- let timeoutId;
129
- // Set timeout handling if necessary
130
- if (config.timeout) {
131
- timeoutId = window.setTimeout(() => {
132
- rejected = true;
133
- reject(new Error('Timeout for scrollDone after:' + config.timeout));
134
- }, config.timeout);
135
- }
122
+ return __awaiter(this, void 0, void 0, function* () {
123
+ // Init configuration
124
+ const config = Object.assign({ doneFunction: undefined }, options);
136
125
  // Wait for scroll done
137
126
  yield this.scrollDoneDetection();
138
- // Resolve promise if not already rejected
139
- if (!rejected) {
140
- // Stop timeout if set
141
- if (timeoutId) {
142
- window.clearTimeout(timeoutId);
143
- }
144
- // Get result (if doneFunction is set)
145
- let result;
146
- if (config.doneFunction) {
147
- result = yield config.doneFunction();
148
- }
149
- // Scroll done
150
- resolve(result);
127
+ // Get result
128
+ if (config.doneFunction) {
129
+ return config.doneFunction();
151
130
  }
152
- }));
131
+ });
153
132
  }
154
133
  /**
155
134
  * Scroll done detecton
@@ -190,4 +169,4 @@ ScrollService.ctorParameters = () => [
190
169
  { type: undefined, decorators: [{ type: Inject, args: [BASE_MODULE_CONFIG,] }] },
191
170
  { type: ImageService }
192
171
  ];
193
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL3NyYy9saWIvYmFzZS9zZXJ2aWNlcy9zY3JvbGwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxrQkFBa0IsRUFBb0IsTUFBTSw0Q0FBNEMsQ0FBQztBQUNsRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBRS9DOztHQUVHO0FBSUgsTUFBTSxPQUFPLGFBQWE7SUE2Q3hCOztPQUVHO0lBQ0gsWUFDWSxNQUFjLEVBQ2MsWUFBOEIsRUFDMUQsWUFBMEI7UUFGMUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNjLGlCQUFZLEdBQVosWUFBWSxDQUFrQjtRQUMxRCxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQXBDdEM7Ozs7V0FJRztRQUNPLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBRWpDOzs7O1dBSUc7UUFDTyxnQkFBVyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBMEJ6QixNQUFNLE1BQU0sbUJBQ1YscUJBQXFCLEVBQUUsR0FBRyxFQUMxQixZQUFZLEVBQUUsR0FBRyxFQUNqQixrQkFBa0IsRUFBRSxHQUFHLElBQ3BCLFlBQVksQ0FDaEIsQ0FBQztRQUVGLElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDO1FBQ3BELElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQztRQUN4QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDO0lBQ3RELENBQUM7SUFFRDs7T0FFRztJQUNHLFFBQVEsQ0FDWixFQUFVLEVB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b3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBCQVNFX01PRFVMRV9DT05GSUcsIEJhc2VNb2R1bGVDb25maWcgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2Jhc2UtbW9kdWxlLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSW1hZ2VTZXJ2aWNlIH0gZnJvbSAnLi9pbWFnZS5zZXJ2aWNlJztcblxuLyoqXG4gKiBTY3JvbGwgc2VydmljZSBmb3IgYXV0b3Njcm9sbCB0byBzcGVjaWZpYyBmcmFnbWVudHNcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNjcm9sbFNlcnZpY2Uge1xuICAvKipcbiAgICogQ3VycmVudCBzY3JvbGwgcHJvbWlzZVxuICAgKlxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgc2Nyb2xsUHJvbWlzZTogUHJvbWlzZTx2b2lkPjtcblxuICAvKipcbiAgICogUmVzb2x2ZSBmdW5jdGlvbiBvZiBjdXJyZW50IHNjcm9sbCBwcm9taXNlXG4gICAqXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBzY3JvbGxQcm9taXNlUmVzb2x2ZTogKHZhbHVlOiB2b2lkIHwgUHJvbWlzZUxpa2U8dm9pZD4pID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIElzIGEgc2Nyb2xsIGxpc3RlbmVyIHNldFxuICAgKlxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgc2Nyb2xsTGlzdGVuZXIgPSBmYWxzZTtcblxuICAvKipcbiAgICogQ3VycmVudCBzY3JvbGwgdGltZXI7XG4gICAqXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBzY3JvbGxUaW1lciA9IC0xO1xuXG4gIC8qKlxuICAgKiBTY3JvbGwgb2Zmc2V0XG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2Nyb2xsT2Zmc2V0OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIERldGVjdGlvbiBvZmZzZXRcbiAgICogU2hvdWxkIGJlID49IHNjcm9sbE9mZnNldFxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRldGVjdGlvbk9mZnNldDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTYW1wbGluZyByYXRlIGZvciBzY3JvbGwgZG9uZSBkZXRlY3Rpb25cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBzY3JvbGxTYW1wbGluZ1JhdGU6IG51bWJlcjtcblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXJcbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcixcbiAgICBASW5qZWN0KEJBU0VfTU9EVUxFX0NPTkZJRykgcHJvdGVjdGVkIG1vZHVsZUNvbmZpZzogQmFzZU1vZHVsZUNvbmZpZyxcbiAgICBwcm90ZWN0ZWQgaW1hZ2VTZXJ2aWNlOiBJbWFnZVNlcnZpY2VcbiAgKSB7XG4gICAgY29uc3QgY29uZmlnID0ge1xuICAgICAgc2Nyb2xsRGV0ZWN0aW9uT2Zmc2V0OiAyMDAsXG4gICAgICBzY3JvbGxPZmZzZXQ6IDEwMCxcbiAgICAgIHNjcm9sbFNhbXBsaW5nUmF0ZTogMTAwLFxuICAgICAgLi4ubW9kdWxlQ29uZmlnLFxuICAgIH07XG5cbiAgICB0aGlzLmRldGVjdGlvbk9mZnNldCA9IGNvbmZpZy5zY3JvbGxEZXRlY3Rpb25PZmZzZXQ7XG4gICAgdGhpcy5zY3JvbGxPZmZzZXQgPSBjb25maWcuc2Nyb2xsT2Zmc2V0O1xuICAgIHRoaXMuc2Nyb2xsU2FtcGxpbmdSYXRlID0gY29uZmlnLnNjcm9sbFNhbXBsaW5nUmF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTY3JvbGwgdG8gc3RydWN0dXJlRWxlbWVudCB3aXRoIHNwZWNpZmljIElEXG4gICAqL1xuICBhc3luYyBzY3JvbGxUbyhcbiAgICBpZDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGNoZWNrVXJsPzogYm9vbGVhbjtcbiAgICAgIGxvYWRJbWFnZXNCZWZvcmU/OiBib29sZWFuO1xuICAgICAgcmVzZXRTdHlsZXM/OiBib29sZWFuO1xuICAgICAgc2V0T3ZlcmZsb3c/OiBib29sZWFuO1xuICAgICAgc3RvcFByb3BhZ2F0aW9uPzogYm9vbGVhbjtcbiAgICB9ID0ge31cbiAgKSB7XG4gICAgLy8gUHJlcGFyZSBjb25maWdcbiAgICBjb25zdCBjb25maWcgPSB7XG4gICAgICBjaGVja1VybDogdHJ1ZSxcbiAgICAgIGxvYWRJbWFnZXNCZWZvcmU6IHRydWUsXG4gICAgICByZXNldFN0eWxlczogZmFsc2UsXG4gICAgICBzZXRPdmVyZmxvdzogdHJ1ZSxcbiAgICAgIHN0b3BQcm9wYWdhdGlvbjogdHJ1ZSxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfTtcblxuICAgIC8vIENoZWNrIGN1cnJlbnQgVVJMXG4gICAgaWYgKGNvbmZpZy5jaGVja1VybCAmJiB0aGlzLnJvdXRlci51cmwgIT09ICcvJyAmJiAhdGhpcy5yb3V0ZXIudXJsLnN0YXJ0c1dpdGgoJy8jJykpIHtcbiAgICAgIGF3YWl0IHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLyddLCB7IGZyYWdtZW50OiBpZCB9KTtcbiAgICAgIHJldHVybiAhY29uZmlnLnN0b3BQcm9wYWdhdGlvbjtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiB0YXJnZXQgZWxlbWVudCBleGl0c1xuICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xuICAgIGlmICghZWwpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ01pc3Npbmcgc2Nyb2xsIGVsZW1lbnQgd2l0aCBJRDonLCBpZCk7XG4gICAgICByZXR1cm4gIWNvbmZpZy5zdG9wUHJvcGFnYXRpb247XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgaWYgYm9keSBvdmVyZmxvdyBpcyB2aXNpYmxlXG4gICAgLy8gVGhpcyBpcyBuZWNlc3NhcnkgZm9yIHNjcm9sbCBoYW5kbGluZ1xuICAgIGNvbnN0IGJvZHkgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdib2R5Jyk7XG4gICAgbGV0IHVuZG9PdmVyZmxvd0NoYW5nZXMgPSBmYWxzZTtcbiAgICBjb25zdCBzY3JvbGxCb2R5U3R5bGVzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShib2R5KSkpO1xuICAgIGlmIChjb25maWcuc2V0T3ZlcmZsb3cgJiYgKHNjcm9sbEJvZHlTdHlsZXMub3ZlcmZsb3dYICE9PSAndmlzaWJsZScgfHwgc2Nyb2xsQm9keVN0eWxlcy5vdmVyZmxvd1kgIT09ICd2aXNpYmxlJykpIHtcbiAgICAgIC8vIFNldCBib2R5IG92ZXJmbG93IHRvIHZpc2libGVcbiAgICAgIGNvbnNvbGUud2FybignU3R5bGUgb2YgYm9keSBlbGVtZW50IGZvciBvdmVyZmxvd1ggYW5kIG92ZXJmbG93WSB3aWxsIGJlIHNldCB0byBcInZpc2libGVcIiBmb3Igc2Nyb2xsaW5nIScpO1xuICAgICAgYm9keS5zdHlsZS5vdmVyZmxvd1ggPSAndmlzaWJsZSc7XG4gICAgICBib2R5LnN0eWxlLm92ZXJmbG93WSA9ICd2aXNpYmxlJztcbiAgICAgIHVuZG9PdmVyZmxvd0NoYW5nZXMgPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIExvYWQgaW1hZ2VzIGJlZm9yZSBzY3JvbGxpbmcgKG9uY2UpXG4gICAgaWYgKGNvbmZpZy5sb2FkSW1hZ2VzQmVmb3JlKSB7XG4gICAgICBhd2FpdCB0aGlzLmltYWdlU2VydmljZS5wcmVMb2FkSW1hZ2VzKCk7XG4gICAgfVxuXG4gICAgLy8gR2V0IGdldCBib3VuZGluZyByZWN0IG9mIHRhcmdldCBlbGVtZW50XG4gICAgY29uc3QgY29yZHMgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIC8vIFNjcm9sbCB0byBlbGVtZW50XG4gICAgd2luZG93LnNjcm9sbEJ5KHsgdG9wOiBjb3Jkcy50b3AgLSB0aGlzLnNjcm9sbE9mZnNldCwgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xuICAgIGF3YWl0IHRoaXMuc2Nyb2xsRG9uZSh7XG4gICAgICBkb25lRnVuY3Rpb246ICgpID0+IHtcbiAgICAgICAgLy8gVW5kbyBjaGFuZ2VzXG4gICAgICAgIGlmICh1bmRvT3ZlcmZsb3dDaGFuZ2VzICYmIGNvbmZpZy5yZXNldFN0eWxlcykge1xuICAgICAgICAgIGJvZHkuc3R5bGUub3ZlcmZsb3dYID0gc2Nyb2xsQm9keVN0eWxlcy5vdmVyZmxvd1g7XG4gICAgICAgICAgYm9keS5zdHlsZS5vdmVyZmxvd1kgPSBzY3JvbGxCb2R5U3R5bGVzLm92ZXJmbG93WTtcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ09yaWdpbmFsIHN0eWxlIG9mIGJvZHkgZWxlbWVudCBmb3Igb3ZlcmZsb3dYIGFuZCBvdmVyZmxvd1kgaXMgc2V0LicpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gUmV0dXJuIHN0b3AgcHJvcGFnYXRpb24gY29uZmlndXJhdGlvblxuICAgIHJldHVybiAhY29uZmlnLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgbGFzdCBhY3RpdmUgc3RydWN0dXJlRWxlbWVudFxuICAgKi9cbiAgZ2V0TGFzdEFjdGl2ZUVsZW1lbnQobGlzdD8pOiBzdHJpbmcge1xuICAgIGNvbnN0IGN1cnJlbnRTY3JvbGxQb3NpdGlvbiA9IHdpbmRvdy5zY3JvbGxZO1xuICAgIGNvbnN0IGVsZW1lbnRzV2l0aElkID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2lkXScpO1xuICAgIGxldCBsYXN0SWQgPSBudWxsO1xuICAgIGxldCBsYXN0UG9zaXRpb24gPSAwIC0gdGhpcy5kZXRlY3Rpb25PZmZzZXQgLSAxO1xuICAgIGVsZW1lbnRzV2l0aElkLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgIGNvbnN0IGNvcmRzID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IHRvcCA9IGNvcmRzLnRvcCArIHdpbmRvdy5wYWdlWU9mZnNldCAtIHRoaXMuZGV0ZWN0aW9uT2Zmc2V0O1xuICAgICAgaWYgKFxuICAgICAgICAoIWxpc3QgfHwgIWxpc3QubGVuZ3RoIHx8IGxpc3QuaW5jbHVkZXMoZWxlbWVudC5pZCkpICYmIC8vIEluIGxpc3RcbiAgICAgICAgdG9wIDwgY3VycmVudFNjcm9sbFBvc2l0aW9uICYmIC8vIEluIGFjdGl2ZSBhcmVhXG4gICAgICAgIGxhc3RQb3NpdGlvbiA8IHRvcCAvLyBIaWdoZXIgdGhhbiB0aGUgbGFzdCBvbmVcbiAgICAgICkge1xuICAgICAgICBsYXN0SWQgPSBlbGVtZW50LmlkO1xuICAgICAgICBsYXN0UG9zaXRpb24gPSB0b3A7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGxhc3RJZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBJRCBpcyBhY3RpdmVcbiAgICovXG4gIGlzQWN0aXZlKGlkLCBsaXN0PywgaXNGaXJzdD8pIHtcbiAgICBjb25zdCBsYXN0QWN0aXZlRWxlbWVudCA9IHRoaXMuZ2V0TGFzdEFjdGl2ZUVsZW1lbnQobGlzdCk7XG4gICAgcmV0dXJuIGlkID09PSBsYXN0QWN0aXZlRWxlbWVudCB8fCAobGFzdEFjdGl2ZUVsZW1lbnQgPT09IG51bGwgJiYgaXNGaXJzdCk7XG4gIH1cblxuICAvKipcbiAgICogU2Nyb2xsIGRvbmUgcHJvbWlzZVxuICAgKi9cbiAgcHVibGljIHNjcm9sbERvbmUob3B0aW9uczogeyBkb25lRnVuY3Rpb24/OiAoKSA9PiBQcm9taXNlPGFueT4gfCBhbnkgfCB2b2lkOyB0aW1lb3V0PzogbnVtYmVyIH0gPSB7fSk6IFByb21pc2U8YW55PiB7XG4gICAgLy8gSW5pdCBjb25maWd1cmF0aW9uXG4gICAgY29uc3QgY29uZmlnID0ge1xuICAgICAgZG9uZUZ1bmN0aW9uOiB1bmRlZmluZWQsXG4gICAgICB0aW1lb3V0OiB1bmRlZmluZWQsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH07XG5cbiAgICAvLyBSZXR1cm4gcHJvbWlzZSBmb3Igc2Nyb2xsIGRvbmVcbiAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgLy8gSW5pdCB2YXJpYWJsZXNcbiAgICAgIGxldCByZWplY3RlZCA9IGZhbHNlO1xuICAgICAgbGV0IHRpbWVvdXRJZDogbnVtYmVyO1xuXG4gICAgICAvLyBTZXQgdGltZW91dCBoYW5kbGluZyBpZiBuZWNlc3NhcnlcbiAgICAgIGlmIChjb25maWcudGltZW91dCkge1xuICAgICAgICB0aW1lb3V0SWQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgcmVqZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ1RpbWVvdXQgZm9yIHNjcm9sbERvbmUgYWZ0ZXI6JyArIGNvbmZpZy50aW1lb3V0KSk7XG4gICAgICAgIH0sIGNvbmZpZy50aW1lb3V0KTtcbiAgICAgIH1cblxuICAgICAgLy8gV2FpdCBmb3Igc2Nyb2xsIGRvbmVcbiAgICAgIGF3YWl0IHRoaXMuc2Nyb2xsRG9uZURldGVjdGlvbigpO1xuXG4gICAgICAvLyBSZXNvbHZlIHByb21pc2UgaWYgbm90IGFscmVhZHkgcmVqZWN0ZWRcbiAgICAgIGlmICghcmVqZWN0ZWQpIHtcbiAgICAgICAgLy8gU3RvcCB0aW1lb3V0IGlmIHNldFxuICAgICAgICBpZiAodGltZW91dElkKSB7XG4gICAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gR2V0IHJlc3VsdCAoaWYgZG9uZUZ1bmN0aW9uIGlzIHNldClcbiAgICAgICAgbGV0IHJlc3VsdDtcbiAgICAgICAgaWYgKGNvbmZpZy5kb25lRnVuY3Rpb24pIHtcbiAgICAgICAgICByZXN1bHQgPSBhd2FpdCBjb25maWcuZG9uZUZ1bmN0aW9uKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTY3JvbGwgZG9uZVxuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2Nyb2xsIGRvbmUgZGV0ZWN0b25cbiAgICpcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIHNjcm9sbERvbmVEZXRlY3Rpb24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gUmV0dXJuIGN1cnJlbnQgc2Nyb2xsIHByb21pc2UgKFNpbmdlbHRvbilcbiAgICBpZiAodGhpcy5zY3JvbGxQcm9taXNlKSB7XG4gICAgICByZXR1cm4gdGhpcy5zY3JvbGxQcm9taXNlO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBjdXJyZW50IHNjcm9sbCBwcm9taXNlXG4gICAgdGhpcy5zY3JvbGxQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIHRoaXMuc2Nyb2xsUHJvbWlzZVJlc29sdmUgPSByZXNvbHZlO1xuICAgICAgaWYgKHRoaXMuc2Nyb2xsVGltZXIgIT09IC0xKSB7XG4gICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5zY3JvbGxUaW1lcik7XG4gICAgICB9XG4gICAgICB0aGlzLnNjcm9sbFRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5zY3JvbGxEb25lRGV0ZWN0aW9uLmJpbmQodGhpcykpO1xuICAgICAgICB0aGlzLnNjcm9sbFByb21pc2UgPSB1bmRlZmluZWQ7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH0sIHRoaXMuc2Nyb2xsU2FtcGxpbmdSYXRlKTtcbiAgICB9KTtcblxuICAgIC8vIExpc2l0ZW5pbmcgdG8gc2Nyb2xsIGV2ZW50O1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLnNjcm9sbERvbmVEZXRlY3Rpb24uYmluZCh0aGlzKSk7XG5cbiAgICAvLyBSZXR1cm4gcHJvbWlzZVxuICAgIHJldHVybiB0aGlzLnNjcm9sbFByb21pc2U7XG4gIH1cbn1cbiJdfQ==
172
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL3NyYy9saWIvYmFzZS9zZXJ2aWNlcy9zY3JvbGwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxrQkFBa0IsRUFBb0IsTUFBTSw0Q0FBNEMsQ0FBQztBQUNsRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBRS9DOztHQUVHO0FBSUgsTUFBTSxPQUFPLGFBQWE7SUE2Q3hCOztPQUVHO0lBQ0gsWUFDWSxNQUFjLEVBQ2MsWUFBOEIsRUFDMUQsWUFBMEI7UUFGMUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNjLGlCQUFZLEdBQVosWUFBWSxDQUFrQjtRQUMxRCxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQXBDdEM7Ozs7V0FJRztRQUNPLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBRWpDOzs7O1dBSUc7UUFDTyxnQkFBVyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBMEJ6QixNQUFNLE1BQU0sbUJBQ1YscUJBQXFCLEVBQUUsR0FBRyxFQUMxQixZQUFZLEVBQUUsR0FBRyxFQUNqQixrQkFBa0IsRUFBRSxHQUFHLElBQ3BCLFlBQVksQ0FDaEIsQ0FBQztRQUVGLElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDO1FBQ3BELElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQztRQUN4QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDO0lBQ3RELENBQUM7SUFFRDs7T0FFRztJQUNHLFFBQVEsQ0FDWixFQUFVLEVB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QUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFdkUsaUJBQWlCO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDOzs7O1lBN05GLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBVFEsTUFBTTs0Q0E0RFYsTUFBTSxTQUFDLGtCQUFrQjtZQTFEckIsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEJBU0VfTU9EVUxFX0NPTkZJRywgQmFzZU1vZHVsZUNvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZXMvYmFzZS1tb2R1bGUtY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJbWFnZVNlcnZpY2UgfSBmcm9tICcuL2ltYWdlLnNlcnZpY2UnO1xuXG4vKipcbiAqIFNjcm9sbCBzZXJ2aWNlIGZvciBhdXRvc2Nyb2xsIHRvIHNwZWNpZmljIGZyYWdtZW50c1xuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2Nyb2xsU2VydmljZSB7XG4gIC8qKlxuICAgKiBDdXJyZW50IHNjcm9sbCBwcm9taXNlXG4gICAqXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBzY3JvbGxQcm9taXNlOiBQcm9taXNlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBSZXNvbHZlIGZ1bmN0aW9uIG9mIGN1cnJlbnQgc2Nyb2xsIHByb21pc2VcbiAgICpcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIHNjcm9sbFByb21pc2VSZXNvbHZlOiAodmFsdWU6IHZvaWQgfCBQcm9taXNlTGlrZTx2b2lkPikgPT4gdm9pZDtcblxuICAvKipcbiAgICogSXMgYSBzY3JvbGwgbGlzdGVuZXIgc2V0XG4gICAqXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBzY3JvbGxMaXN0ZW5lciA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBDdXJyZW50IHNjcm9sbCB0aW1lcjtcbiAgICpcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIHNjcm9sbFRpbWVyID0gLTE7XG5cbiAgLyoqXG4gICAqIFNjcm9sbCBvZmZzZXRcbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBzY3JvbGxPZmZzZXQ6IG51bWJlcjtcblxuICAvKipcbiAgICogRGV0ZWN0aW9uIG9mZnNldFxuICAgKiBTaG91bGQgYmUgPj0gc2Nyb2xsT2Zmc2V0XG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGV0ZWN0aW9uT2Zmc2V0OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFNhbXBsaW5nIHJhdGUgZm9yIHNjcm9sbCBkb25lIGRldGVjdGlvblxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNjcm9sbFNhbXBsaW5nUmF0ZTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplclxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHJvdXRlcjogUm91dGVyLFxuICAgIEBJbmplY3QoQkFTRV9NT0RVTEVfQ09ORklHKSBwcm90ZWN0ZWQgbW9kdWxlQ29uZmlnOiBCYXNlTW9kdWxlQ29uZmlnLFxuICAgIHByb3RlY3RlZCBpbWFnZVNlcnZpY2U6IEltYWdlU2VydmljZVxuICApIHtcbiAgICBjb25zdCBjb25maWcgPSB7XG4gICAgICBzY3JvbGxEZXRlY3Rpb25PZmZzZXQ6IDIwMCxcbiAgICAgIHNjcm9sbE9mZnNldDogMTAwLFxuICAgICAgc2Nyb2xsU2FtcGxpbmdSYXRlOiAxMDAsXG4gICAgICAuLi5tb2R1bGVDb25maWcsXG4gICAgfTtcblxuICAgIHRoaXMuZGV0ZWN0aW9uT2Zmc2V0ID0gY29uZmlnLnNjcm9sbERldGVjdGlvbk9mZnNldDtcbiAgICB0aGlzLnNjcm9sbE9mZnNldCA9IGNvbmZpZy5zY3JvbGxPZmZzZXQ7XG4gICAgdGhpcy5zY3JvbGxTYW1wbGluZ1JhdGUgPSBjb25maWcuc2Nyb2xsU2FtcGxpbmdSYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNjcm9sbCB0byBzdHJ1Y3R1cmVFbGVtZW50IHdpdGggc3BlY2lmaWMgSURcbiAgICovXG4gIGFzeW5jIHNjcm9sbFRvKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgY2hlY2tVcmw/OiBib29sZWFuO1xuICAgICAgbG9hZEltYWdlc0JlZm9yZT86IGJvb2xlYW47XG4gICAgICByZXNldFN0eWxlcz86IGJvb2xlYW47XG4gICAgICBzZXRPdmVyZmxvdz86IGJvb2xlYW47XG4gICAgICBzdG9wUHJvcGFnYXRpb24/OiBib29sZWFuO1xuICAgIH0gPSB7fVxuICApIHtcbiAgICAvLyBQcmVwYXJlIGNvbmZpZ1xuICAgIGNvbnN0IGNvbmZpZyA9IHtcbiAgICAgIGNoZWNrVXJsOiB0cnVlLFxuICAgICAgbG9hZEltYWdlc0JlZm9yZTogdHJ1ZSxcbiAgICAgIHJlc2V0U3R5bGVzOiBmYWxzZSxcbiAgICAgIHNldE92ZXJmbG93OiB0cnVlLFxuICAgICAgc3RvcFByb3BhZ2F0aW9uOiB0cnVlLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9O1xuXG4gICAgLy8gQ2hlY2sgY3VycmVudCBVUkxcbiAgICBpZiAoY29uZmlnLmNoZWNrVXJsICYmIHRoaXMucm91dGVyLnVybCAhPT0gJy8nICYmICF0aGlzLnJvdXRlci51cmwuc3RhcnRzV2l0aCgnLyMnKSkge1xuICAgICAgYXdhaXQgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvJ10sIHsgZnJhZ21lbnQ6IGlkIH0pO1xuICAgICAgcmV0dXJuICFjb25maWcuc3RvcFByb3BhZ2F0aW9uO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIHRhcmdldCBlbGVtZW50IGV4aXRzXG4gICAgY29uc3QgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7XG4gICAgaWYgKCFlbCkge1xuICAgICAgY29uc29sZS5lcnJvcignTWlzc2luZyBzY3JvbGwgZWxlbWVudCB3aXRoIElEOicsIGlkKTtcbiAgICAgIHJldHVybiAhY29uZmlnLnN0b3BQcm9wYWdhdGlvbjtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiBib2R5IG92ZXJmbG93IGlzIHZpc2libGVcbiAgICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSBmb3Igc2Nyb2xsIGhhbmRsaW5nXG4gICAgY29uc3QgYm9keSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2JvZHknKTtcbiAgICBsZXQgdW5kb092ZXJmbG93Q2hhbmdlcyA9IGZhbHNlO1xuICAgIGNvbnN0IHNjcm9sbEJvZHlTdHlsZXMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGJvZHkpKSk7XG4gICAgaWYgKGNvbmZpZy5zZXRPdmVyZmxvdyAmJiAoc2Nyb2xsQm9keVN0eWxlcy5vdmVyZmxvd1ggIT09ICd2aXNpYmxlJyB8fCBzY3JvbGxCb2R5U3R5bGVzLm92ZXJmbG93WSAhPT0gJ3Zpc2libGUnKSkge1xuICAgICAgLy8gU2V0IGJvZHkgb3ZlcmZsb3cgdG8gdmlzaWJsZVxuICAgICAgY29uc29sZS53YXJuKCdTdHlsZSBvZiBib2R5IGVsZW1lbnQgZm9yIG92ZXJmbG93WCBhbmQgb3ZlcmZsb3dZIHdpbGwgYmUgc2V0IHRvIFwidmlzaWJsZVwiIGZvciBzY3JvbGxpbmchJyk7XG4gICAgICBib2R5LnN0eWxlLm92ZXJmbG93WCA9ICd2aXNpYmxlJztcbiAgICAgIGJvZHkuc3R5bGUub3ZlcmZsb3dZID0gJ3Zpc2libGUnO1xuICAgICAgdW5kb092ZXJmbG93Q2hhbmdlcyA9IHRydWU7XG4gICAgfVxuXG4gICAgLy8gTG9hZCBpbWFnZXMgYmVmb3JlIHNjcm9sbGluZyAob25jZSlcbiAgICBpZiAoY29uZmlnLmxvYWRJbWFnZXNCZWZvcmUpIHtcbiAgICAgIGF3YWl0IHRoaXMuaW1hZ2VTZXJ2aWNlLnByZUxvYWRJbWFnZXMoKTtcbiAgICB9XG5cbiAgICAvLyBHZXQgZ2V0IGJvdW5kaW5nIHJlY3Qgb2YgdGFyZ2V0IGVsZW1lbnRcbiAgICBjb25zdCBjb3JkcyA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgLy8gU2Nyb2xsIHRvIGVsZW1lbnRcbiAgICB3aW5kb3cuc2Nyb2xsQnkoeyB0b3A6IGNvcmRzLnRvcCAtIHRoaXMuc2Nyb2xsT2Zmc2V0LCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gICAgYXdhaXQgdGhpcy5zY3JvbGxEb25lKHtcbiAgICAgIGRvbmVGdW5jdGlvbjogKCkgPT4ge1xuICAgICAgICAvLyBVbmRvIGNoYW5nZXNcbiAgICAgICAgaWYgKHVuZG9PdmVyZmxvd0NoYW5nZXMgJiYgY29uZmlnLnJlc2V0U3R5bGVzKSB7XG4gICAgICAgICAgYm9keS5zdHlsZS5vdmVyZmxvd1ggPSBzY3JvbGxCb2R5U3R5bGVzLm92ZXJmbG93WDtcbiAgICAgICAgICBib2R5LnN0eWxlLm92ZXJmbG93WSA9IHNjcm9sbEJvZHlTdHlsZXMub3ZlcmZsb3dZO1xuICAgICAgICAgIGNvbnNvbGUud2FybignT3JpZ2luYWwgc3R5bGUgb2YgYm9keSBlbGVtZW50IGZvciBvdmVyZmxvd1ggYW5kIG92ZXJmbG93WSBpcyBzZXQuJyk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBSZXR1cm4gc3RvcCBwcm9wYWdhdGlvbiBjb25maWd1cmF0aW9uXG4gICAgcmV0dXJuICFjb25maWcuc3RvcFByb3BhZ2F0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBsYXN0IGFjdGl2ZSBzdHJ1Y3R1cmVFbGVtZW50XG4gICAqL1xuICBnZXRMYXN0QWN0aXZlRWxlbWVudChsaXN0Pyk6IHN0cmluZyB7XG4gICAgY29uc3QgY3VycmVudFNjcm9sbFBvc2l0aW9uID0gd2luZG93LnNjcm9sbFk7XG4gICAgY29uc3QgZWxlbWVudHNXaXRoSWQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbaWRdJyk7XG4gICAgbGV0IGxhc3RJZCA9IG51bGw7XG4gICAgbGV0IGxhc3RQb3NpdGlvbiA9IDAgLSB0aGlzLmRldGVjdGlvbk9mZnNldCAtIDE7XG4gICAgZWxlbWVudHNXaXRoSWQuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgY29uc3QgY29yZHMgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3QgdG9wID0gY29yZHMudG9wICsgd2luZG93LnBhZ2VZT2Zmc2V0IC0gdGhpcy5kZXRlY3Rpb25PZmZzZXQ7XG4gICAgICBpZiAoXG4gICAgICAgICghbGlzdCB8fCAhbGlzdC5sZW5ndGggfHwgbGlzdC5pbmNsdWRlcyhlbGVtZW50LmlkKSkgJiYgLy8gSW4gbGlzdFxuICAgICAgICB0b3AgPCBjdXJyZW50U2Nyb2xsUG9zaXRpb24gJiYgLy8gSW4gYWN0aXZlIGFyZWFcbiAgICAgICAgbGFzdFBvc2l0aW9uIDwgdG9wIC8vIEhpZ2hlciB0aGFuIHRoZSBsYXN0IG9uZVxuICAgICAgKSB7XG4gICAgICAgIGxhc3RJZCA9IGVsZW1lbnQuaWQ7XG4gICAgICAgIGxhc3RQb3NpdGlvbiA9IHRvcDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gbGFzdElkO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIElEIGlzIGFjdGl2ZVxuICAgKi9cbiAgaXNBY3RpdmUoaWQsIGxpc3Q/LCBpc0ZpcnN0Pykge1xuICAgIGNvbnN0IGxhc3RBY3RpdmVFbGVtZW50ID0gdGhpcy5nZXRMYXN0QWN0aXZlRWxlbWVudChsaXN0KTtcbiAgICByZXR1cm4gaWQgPT09IGxhc3RBY3RpdmVFbGVtZW50IHx8IChsYXN0QWN0aXZlRWxlbWVudCA9PT0gbnVsbCAmJiBpc0ZpcnN0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTY3JvbGwgZG9uZSBwcm9taXNlXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc2Nyb2xsRG9uZShvcHRpb25zOiB7IGRvbmVGdW5jdGlvbj86ICgpID0+IGFueSB8IHZvaWQgfSA9IHt9KTogUHJvbWlzZTxhbnk+IHtcbiAgICAvLyBJbml0IGNvbmZpZ3VyYXRpb25cbiAgICBjb25zdCBjb25maWcgPSB7XG4gICAgICBkb25lRnVuY3Rpb246IHVuZGVmaW5lZCxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfTtcblxuICAgIC8vIFdhaXQgZm9yIHNjcm9sbCBkb25lXG4gICAgYXdhaXQgdGhpcy5zY3JvbGxEb25lRGV0ZWN0aW9uKCk7XG5cbiAgICAvLyBHZXQgcmVzdWx0XG4gICAgaWYgKGNvbmZpZy5kb25lRnVuY3Rpb24pIHtcbiAgICAgIHJldHVybiBjb25maWcuZG9uZUZ1bmN0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNjcm9sbCBkb25lIGRldGVjdG9uXG4gICAqXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBzY3JvbGxEb25lRGV0ZWN0aW9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIFJldHVybiBjdXJyZW50IHNjcm9sbCBwcm9taXNlIChTaW5nZWx0b24pXG4gICAgaWYgKHRoaXMuc2Nyb2xsUHJvbWlzZSkge1xuICAgICAgcmV0dXJuIHRoaXMuc2Nyb2xsUHJvbWlzZTtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgY3VycmVudCBzY3JvbGwgcHJvbWlzZVxuICAgIHRoaXMuc2Nyb2xsUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICB0aGlzLnNjcm9sbFByb21pc2VSZXNvbHZlID0gcmVzb2x2ZTtcbiAgICAgIGlmICh0aGlzLnNjcm9sbFRpbWVyICE9PSAtMSkge1xuICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuc2Nyb2xsVGltZXIpO1xuICAgICAgfVxuICAgICAgdGhpcy5zY3JvbGxUaW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuc2Nyb2xsRG9uZURldGVjdGlvbi5iaW5kKHRoaXMpKTtcbiAgICAgICAgdGhpcy5zY3JvbGxQcm9taXNlID0gdW5kZWZpbmVkO1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9LCB0aGlzLnNjcm9sbFNhbXBsaW5nUmF0ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBMaXNpdGVuaW5nIHRvIHNjcm9sbCBldmVudDtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5zY3JvbGxEb25lRGV0ZWN0aW9uLmJpbmQodGhpcykpO1xuXG4gICAgLy8gUmV0dXJuIHByb21pc2VcbiAgICByZXR1cm4gdGhpcy5zY3JvbGxQcm9taXNlO1xuICB9XG59XG4iXX0=
@@ -722,12 +722,9 @@ class ImageService {
722
722
  */
723
723
  preLoadImages(options) {
724
724
  // Init configuration
725
- const config = Object.assign({ doneFunnction: undefined, elements: document, regExp: undefined, timeout: undefined }, options);
725
+ const config = Object.assign({ doneFunnction: undefined, elements: document, regExp: undefined }, options);
726
726
  return new Promise((resolve) => {
727
727
  var _a;
728
- // Init variables
729
- let resolved = false;
730
- let timeoutId;
731
728
  // Convert element(s) into array
732
729
  if (!Array.isArray(config.elements)) {
733
730
  // NodeList or HTMLCollection
@@ -747,48 +744,33 @@ class ImageService {
747
744
  images = images.concat(Array.from(element.getElementsByTagName('img')));
748
745
  });
749
746
  // Prepare images
750
- for (const image of images) {
747
+ for (let image of images) {
751
748
  const src = image.getAttribute('src');
752
749
  // Check if changes are necessary and possible
753
750
  if ((image.complete && image.naturalHeight !== 0) || // already laoded
754
- image.getAttribute('loading') !== 'lazy' || // loading attribute !== lazy
755
751
  !src || // Image has no src
756
752
  ((_a = config.regExp) === null || _a === void 0 ? void 0 : _a.test(src)) // Test if src matches regular expression
757
753
  ) {
758
754
  continue;
759
755
  }
760
756
  // Replace lazy loading image with immediately loading image
761
- const newImage = document.createElement('img');
762
- Array.from(image.attributes).forEach((attr) => {
763
- if (attr.name !== 'loading' && attr.name !== 'src') {
764
- newImage.setAttribute(attr.name, attr.value);
765
- }
766
- });
767
- image.replaceWith(newImage);
757
+ if (image.getAttribute('loading') === 'lazy') {
758
+ const newImage = document.createElement('img');
759
+ Array.from(image.attributes).forEach((attr) => {
760
+ if (attr.name !== 'loading' && attr.name !== 'src') {
761
+ newImage.setAttribute(attr.name, attr.value);
762
+ }
763
+ });
764
+ image.replaceWith(newImage);
765
+ image = newImage;
766
+ }
768
767
  // Wait for laoding
769
- promises.push(this.loadImage(newImage, src));
770
- }
771
- if (config.timeout) {
772
- timeoutId = setTimeout(() => __awaiter(this, void 0, void 0, function* () {
773
- resolved = true;
774
- if (config.doneFunnction) {
775
- yield config.doneFunction();
776
- }
777
- resolve(undefined);
778
- }));
768
+ promises.push(this.loadImage(image, src));
779
769
  }
780
770
  // Wait until all images loaded
781
771
  Promise.all(promises)
782
772
  .catch((e) => console.error('Error during image loading', e))
783
773
  .finally(() => __awaiter(this, void 0, void 0, function* () {
784
- // Check if already resolved
785
- if (resolved) {
786
- return;
787
- }
788
- // Stop timeout
789
- if (timeoutId) {
790
- clearTimeout(timeoutId);
791
- }
792
774
  // Return result
793
775
  let result;
794
776
  if (config.doneFunnction) {
@@ -831,28 +813,16 @@ class MatchHeightDirective {
831
813
  this.el = el;
832
814
  this.imageService = imageService;
833
815
  // Replace lazy loading images with immediate loading images
834
- this.loadLazyImages = true;
816
+ this.loadImages = true;
835
817
  this.isBrowser = isPlatformBrowser(platformId);
836
818
  }
837
819
  onResize() {
838
820
  this.matchHeight(this.el.nativeElement, this.ltMatchHeight);
839
821
  }
840
- ngAfterViewChecked() {
822
+ ngOnInit() {
841
823
  this.matchHeight(this.el.nativeElement, this.ltMatchHeight);
842
824
  }
843
825
  matchHeight(parent, target) {
844
- if (this.isBrowser) {
845
- // Timeout is set to force Angular to wait for all actions and only continue once the process has run through.
846
- // Otherwise, an infinite loop will occur.
847
- setTimeout(() => {
848
- this.matchHeightHelper(parent, target);
849
- }, 1);
850
- }
851
- else {
852
- this.matchHeightHelper(parent, target);
853
- }
854
- }
855
- matchHeightHelper(parent, target) {
856
826
  return __awaiter(this, void 0, void 0, function* () {
857
827
  if (!parent) {
858
828
  return;
@@ -871,7 +841,7 @@ class MatchHeightDirective {
871
841
  continue;
872
842
  }
873
843
  // Load images of children
874
- if (this.loadLazyImages) {
844
+ if (this.loadImages) {
875
845
  yield this.imageService.preLoadImages({ elements: children });
876
846
  }
877
847
  // reset all children height
@@ -905,7 +875,7 @@ MatchHeightDirective.ctorParameters = () => [
905
875
  ];
906
876
  MatchHeightDirective.propDecorators = {
907
877
  ltMatchHeight: [{ type: Input }],
908
- loadLazyImages: [{ type: Input }],
878
+ loadImages: [{ type: Input }],
909
879
  onResize: [{ type: HostListener, args: ['window:resize',] }]
910
880
  };
911
881
 
@@ -2269,37 +2239,16 @@ class ScrollService {
2269
2239
  * Scroll done promise
2270
2240
  */
2271
2241
  scrollDone(options = {}) {
2272
- // Init configuration
2273
- const config = Object.assign({ doneFunction: undefined, timeout: undefined }, options);
2274
- // Return promise for scroll done
2275
- return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
2276
- // Init variables
2277
- let rejected = false;
2278
- let timeoutId;
2279
- // Set timeout handling if necessary
2280
- if (config.timeout) {
2281
- timeoutId = window.setTimeout(() => {
2282
- rejected = true;
2283
- reject(new Error('Timeout for scrollDone after:' + config.timeout));
2284
- }, config.timeout);
2285
- }
2242
+ return __awaiter(this, void 0, void 0, function* () {
2243
+ // Init configuration
2244
+ const config = Object.assign({ doneFunction: undefined }, options);
2286
2245
  // Wait for scroll done
2287
2246
  yield this.scrollDoneDetection();
2288
- // Resolve promise if not already rejected
2289
- if (!rejected) {
2290
- // Stop timeout if set
2291
- if (timeoutId) {
2292
- window.clearTimeout(timeoutId);
2293
- }
2294
- // Get result (if doneFunction is set)
2295
- let result;
2296
- if (config.doneFunction) {
2297
- result = yield config.doneFunction();
2298
- }
2299
- // Scroll done
2300
- resolve(result);
2247
+ // Get result
2248
+ if (config.doneFunction) {
2249
+ return config.doneFunction();
2301
2250
  }
2302
- }));
2251
+ });
2303
2252
  }
2304
2253
  /**
2305
2254
  * Scroll done detecton