@wizishop/wizi-block 14.1.13-beta → 14.1.14-beta

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.
@@ -118,7 +118,7 @@ export class BlocksComponent {
118
118
  if (!this.allWiziblocksLoaded) {
119
119
  this.isLoading = true;
120
120
  }
121
- const wiziblocksList = document.getElementsByClassName('wb-component');
121
+ const wiziblocksList = document.getElementsByClassName('wb-blocks__container');
122
122
  const childElement = (wiziblocksList[wiziblocksList.length - 1]);
123
123
  const parent = (document.getElementsByClassName('wb-content')[0].getElementsByClassName('cdk-virtual-scroll-viewport')[0]);
124
124
  const parentViewableArea = {
@@ -129,19 +129,43 @@ export class BlocksComponent {
129
129
  const childBoundingClientRect = childElement.getBoundingClientRect();
130
130
  var isViewable = (childBoundingClientRect.top >= parentBoundingClientRect.top)
131
131
  && (childBoundingClientRect.bottom <= parentBoundingClientRect.top + parentViewableArea.height);
132
- if (!isViewable) {
132
+ const currentScroll = parent.scrollTop + parentViewableArea.height;
133
+ const maxHeightElement = (parent.getElementsByClassName('cdk-virtual-scroll-content-wrapper')[0]);
134
+ const maxHeight = maxHeightElement.offsetHeight;
135
+ console.log('is viewable ?');
136
+ console.log('child top ' + childBoundingClientRect.top);
137
+ console.log('child bottom ' + childBoundingClientRect.bottom);
138
+ console.log('parent top ' + parentBoundingClientRect.top);
139
+ console.log('parent height ' + parentViewableArea.height);
140
+ console.log(childBoundingClientRect.top >= parentBoundingClientRect.top);
141
+ console.log(childBoundingClientRect.bottom <= parentBoundingClientRect.top + parentViewableArea.height);
142
+ console.log('maxHeight ' + maxHeight);
143
+ console.log('current scroll ' + currentScroll);
144
+ console.log(currentScroll >= maxHeight);
145
+ if (isViewable || (currentScroll >= maxHeight)) {
146
+ // Second check if last element is viewable
147
+ setTimeout(() => {
148
+ let checkCurrentScroll = parent.scrollTop + parentViewableArea.height;
149
+ let checkMaxHeight = maxHeightElement.offsetHeight;
150
+ if ((checkCurrentScroll >= checkMaxHeight)) {
151
+ console.log('viewable');
152
+ this.isLoading = false;
153
+ this.allWiziblocksLoaded = true;
154
+ }
155
+ else {
156
+ console.log('not viewable after second check');
157
+ this.goToLastElement();
158
+ }
159
+ }, 100);
160
+ }
161
+ else {
162
+ console.log('not viewable');
133
163
  parent.scrollTop = (childBoundingClientRect.top + parent.scrollTop) - parentBoundingClientRect.top;
134
164
  if (!this.allWiziblocksLoaded) {
135
165
  this.goToLastElement();
136
166
  }
137
167
  }
138
- else {
139
- setTimeout(() => {
140
- this.isLoading = false;
141
- this.allWiziblocksLoaded = true;
142
- }, 100);
143
- }
144
- }, 200);
168
+ }, 250);
145
169
  }
146
170
  isHiddenBLocks(id) {
147
171
  if (this.dynamicHidden.includes(id)) {
@@ -170,4 +194,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
170
194
  }], selectedConfig: [{
171
195
  type: Input
172
196
  }] } });
173
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dpemktYmxvY2svc3JjL2xpYi9jb21wb25lbnRzL2Jsb2Nrcy9ibG9ja3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2l6aS1ibG9jay9zcmMvbGliL2NvbXBvbmVudHMvYmxvY2tzL2Jsb2Nrcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLHdCQUF3QixFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVuRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUNwRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBT3JGLE1BQU0sT0FBTyxlQUFlO0lBcUJ4QixZQUNZLGdCQUFrQyxFQUNsQyxRQUFrQyxFQUNsQyxjQUE4QixFQUM5QixhQUE0QixFQUM1QixxQkFBNEM7UUFKNUMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxhQUFRLEdBQVIsUUFBUSxDQUEwQjtRQUNsQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQXpCL0MsYUFBUSxHQUFlLEVBQUUsQ0FBQztRQUMxQixrQkFBYSxHQUFHLEVBQUUs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QUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7Z0JBQ3BDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQzthQUNYO1FBQ0wsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1osQ0FBQztJQUVELGNBQWMsQ0FBQyxFQUFFO1FBQ2IsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUNqQyxPQUFPLElBQUksQ0FBQztTQUNmO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUF5QjtRQUM1QixJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDckQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUN6RjthQUFNO1lBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDaEY7SUFDTCxDQUFDOzs0R0F6SlEsZUFBZTtnR0FBZixlQUFlLHFKQ2Y1QixpN0VBb0RBLGc4RUR2Q2dCLENBQUMsbUJBQW1CLENBQUMsbUJBQW1CLENBQUMsQ0FBQzsyRkFFN0MsZUFBZTtrQkFMM0IsU0FBUzsrQkFDSSxXQUFXLGNBRVQsQ0FBQyxtQkFBbUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDOzJPQUc3QyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDZGtEcmFnRHJvcCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgV2l6aUJsb2NrU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3dpemktYmxvY2suc2VydmljZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGlvbnNEdG8gfSBmcm9tICcuLi8uLi9kdG9zL2NvbmZpZ3MvdHJhbnNsYXRpb25zL3RyYW5zbGF0aW9ucy5kdG8nO1xuaW1wb3J0IHsgYW5pbWF0ZUxpc3RGcm9tTGVmdCB9IGZyb20gJy4uLy4uL3NoYXJlZC9hbmltYXRpb25zL2xpc3QvYW5pbWF0ZS1saXN0LWZyb20tbGVmdC5hbmltYXRpb24nO1xuaW1wb3J0IHsgQ29udGVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91dGlscy9jb250ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3V0aWxzL2NvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IEZPUk1fTkFNRV9XSURUSF9CTE9DSyB9IGZyb20gJy4uLy4uL2R0b3MvZm9ybXMvZm9ybXMuZHRvJztcbmltcG9ydCB7IEV4dGVybmFsQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3V0aWxzL2V4dGVybmFsLWNvbmZpZy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd3Yi1ibG9ja3MnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ibG9ja3MuY29tcG9uZW50Lmh0bWwnLFxuICAgIGFuaW1hdGlvbnM6IFthbmltYXRlTGlzdEZyb21MZWZ0KCcxMDBtcyBlYXNlLWluLW91dCcpXVxufSlcbmV4cG9ydCBjbGFzcyBCbG9ja3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIGNvbnRlbnRzOiBBcnJheTxhbnk+ID0gW107XG4gICAgQElucHV0KCkgZHluYW1pY0hpZGRlbiA9IFtdO1xuICAgIEBJbnB1dCgpIHNlbGVjdGVkQ29uZmlnOiBhbnk7XG5cbiAgICBoaWRlQ29uZmlnID0gZmFsc2U7XG5cbiAgICB0cmFuc2xhdGlvbjogVHJhbnNsYXRpb25zRHRvO1xuXG4gICAgcHJldmlldzogYm9vbGVhbjtcblxuICAgIGJsb2NrSG92ZXIgPSBmYWxzZTtcblxuICAgIGNvbmZpZ0FjdGl2ZSA9IGZhbHNlO1xuXG4gICAgcGFyc2VkQ29udGVudCA9IFtdO1xuXG4gICAgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBhbGxXaXppYmxvY2tzTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSB3aXppQmxvY2tTZXJ2aWNlOiBXaXppQmxvY2tTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgICAgIHByaXZhdGUgY29udGVudFNlcnZpY2U6IENvbnRlbnRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZXh0ZXJuYWxDb25maWdTZXJ2aWNlOiBFeHRlcm5hbENvbmZpZ1NlcnZpY2VcbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy50cmFuc2xhdGlvbiA9IHRoaXMud2l6aUJsb2NrU2VydmljZS5nZXRUcmFuc2xhdGlvbigpO1xuXG4gICAgICAgIHRoaXMuY29uZmlnU2VydmljZS5jb25maWdTaG93RXZlbnQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5oaWRlQ29uZmlnID0gdGhpcy5jb25maWdTZXJ2aWNlLmhpZGVDb25maWc7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNldEhpZGVDb25maWcoKSB7XG4gICAgICAgIHRoaXMuY29uZmlnU2VydmljZS5oaWRlQ29uZmlnID0gIXRoaXMuY29uZmlnU2VydmljZS5oaWRlQ29uZmlnO1xuICAgICAgICBpZiAodGhpcy5jb25maWdTZXJ2aWNlLmhpZGVDb25maWcpIHtcbiAgICAgICAgICAgIHRoaXMucGFyc2VkQ29udGVudCA9IHRoaXMuY29udGVudFNlcnZpY2UuZ2V0UGFyc2VkQ29udGVudCgpO1xuICAgICAgICAgICAgdGhpcy5wcmV2aWV3ID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucHJldmlldyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3dpdGNoSG92ZXIoZXZlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coZXZlbnQpO1xuICAgICAgICB0aGlzLmNvbmZpZ0FjdGl2ZSA9IGV2ZW50O1xuICAgIH1cblxuICAgIGFkZFRoaXMoaW5kZXgsIHR5cGUpIHtcbiAgICAgICAgdGhpcy53aXppQmxvY2tTZXJ2aWNlLmdldEJsb2Nrc1NlcnZpY2UoKS5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICAgICAgICBpZiAodi50eXBlKCkgPT09IHR5cGUpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHYuZ2V0Rm9ybSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNlRHRvID0gdi5nZXRGb3JtKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChiYXNlRHRvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiYXNlRHRvLnR5cGUgPSB2LnR5cGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGVudFNlcnZpY2Uuc2V0Q29udGVudHNXaXRoSW5kZXgoaW5kZXgsIGJhc2VEdG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2VEdG8uZm9ybXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZyA9IGJhc2VEdG87XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuaGlkZUNvbmZpZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhZGRUaGlzU2VsZWN0ZWQoc2VsZWN0ZWQsIHZlcmJvc2UpIHtcbiAgICAgICAgdGhpcy53aXppQmxvY2tTZXJ2aWNlLmdldEJsb2Nrc1NlcnZpY2UoKS5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICAgICAgICBpZiAodi50eXBlKCkgPT09IHNlbGVjdGVkLnR5cGUpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHYuZ2V0Rm9ybSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNlRHRvID0gdi5nZXRGb3JtKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChiYXNlRHRvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5leHRlcm5hbENvbmZpZ1NlcnZpY2UuZ2V0V2lkdGhCbG9jaygpICE9ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZUR0by5mb3Jtcy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LmlkID09IEZPUk1fTkFNRV9XSURUSF9CTE9DSykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC52YWx1ZSA9IHRoaXMuZXh0ZXJuYWxDb25maWdTZXJ2aWNlLmdldFdpZHRoQmxvY2soKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBiYXNlRHRvLnR5cGUgPSB2LnR5cGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGVudFNlcnZpY2Uuc2V0Q29udGVudHMoYmFzZUR0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdvVG9MYXN0RWxlbWVudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiYXNlRHRvLmZvcm1zLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnU2VydmljZS5jb25maWcgPSBiYXNlRHRvO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmhpZGVDb25maWcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0FkZCBhIGNvbnRlbnQnLCBiYXNlRHRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRHRvIGZvciBjb21wb25lbnQgJyArIHYudHlwZSgpICsgJyBub3QgZm91bmQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdGb3JtIGZvciBjb21wb25lbnQgJyArIHYudHlwZSgpICsgJyBub3QgZm91bmQnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ29Ub0xhc3RFbGVtZW50KCkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5hbGxXaXppYmxvY2tzTG9hZGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgd2l6aWJsb2Nrc0xpc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd3Yi1jb21wb25lbnQnKTtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkRWxlbWVudCA9ICh3aXppYmxvY2tzTGlzdFt3aXppYmxvY2tzTGlzdC5sZW5ndGggLSAxXSkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnQgPSAoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnd2ItY29udGVudCcpWzBdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCcpWzBdKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudFZpZXdhYmxlQXJlYSA9IHtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IHBhcmVudC5jbGllbnRIZWlnaHQsXG4gICAgICAgICAgICAgICAgd2lkdGg6IHBhcmVudC5jbGllbnRXaWR0aFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcGFyZW50Qm91bmRpbmdDbGllbnRSZWN0ID0gcGFyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgY29uc3QgY2hpbGRCb3VuZGluZ0NsaWVudFJlY3QgPSBjaGlsZEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICB2YXIgaXNWaWV3YWJsZSA9IChjaGlsZEJvdW5kaW5nQ2xpZW50UmVjdC50b3AgPj0gcGFyZW50Qm91bmRpbmdDbGllbnRSZWN0LnRvcClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAoY2hpbGRCb3VuZGluZ0NsaWVudFJlY3QuYm90dG9tIDw9IHBhcmVudEJvdW5kaW5nQ2xpZW50UmVjdC50b3AgKyBwYXJlbnRWaWV3YWJsZUFyZWEuaGVpZ2h0KTtcbiAgICAgICAgICAgIGlmICghaXNWaWV3YWJsZSkge1xuICAgICAgICAgICAgICAgIHBhcmVudC5zY3JvbGxUb3AgPSAoY2hpbGRCb3VuZGluZ0NsaWVudFJlY3QudG9wICsgcGFyZW50LnNjcm9sbFRvcCkgLSBwYXJlbnRCb3VuZGluZ0NsaWVudFJlY3QudG9wO1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5hbGxXaXppYmxvY2tzTG9hZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ29Ub0xhc3RFbGVtZW50KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGxXaXppYmxvY2tzTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCAyMDApO1xuICAgIH1cblxuICAgIGlzSGlkZGVuQkxvY2tzKGlkKSB7XG4gICAgICAgIGlmICh0aGlzLmR5bmFtaWNIaWRkZW4uaW5jbHVkZXMoaWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgb25Ecm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxhbnlbXT4pIHtcbiAgICAgICAgaWYgKGV2ZW50Lml0ZW0uZWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnaWQnKSkge1xuICAgICAgICAgICAgdGhpcy5hZGRUaGlzKGV2ZW50LmN1cnJlbnRJbmRleCwgZXZlbnQuaXRlbS5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdpZCcpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY29udGVudFNlcnZpY2UucmVvcmRlckNvbnRlbnRzKGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgY2xhc3M9XCJ3Yi1ibG9ja3NcIlxuICAgIGNka0Ryb3BMaXN0XG4gICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJvbkRyb3AoJGV2ZW50KVwiXG4gICAgaWQ9XCJibG9jay1jb250ZW50XCJcbiAgICAqbmdJZj1cImNvbnRlbnRzLmxlbmd0aCA+IDBcIlxuICAgIFtAYW5pbWF0ZUxpc3RGcm9tTGVmdF09XCJjb250ZW50cy5sZW5ndGhcIlxuICAgIFtuZ0NsYXNzXT1cInsgaG92ZXI6IGJsb2NrSG92ZXIgfVwiXG4+XG4gICAgPGFcbiAgICAgICAgY2xhc3M9XCJidXR0b24gaXMtaGlkZGVuLWJ1dHRvbiBpcy1kYW5nZXIgaXMtcm91bmRlZCBpcy10b29sdGlwLWluZm9cIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1kYW5nZXInOiBoaWRlQ29uZmlnLCAnaXMtZGFyayBpcy1vdXRsaW5lZCc6ICFoaWRlQ29uZmlnIH1cIlxuICAgICAgICAoY2xpY2spPVwic2V0SGlkZUNvbmZpZygpXCJcbiAgICAgICAgW253YlRvb2xUaXBdPVwiKCFoaWRlQ29uZmlnID8gJ3diLmJsb2Nrcy5odG1sLjEnIDogJ3diLmJsb2Nrcy5odG1sLjInKSB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIG53YlRvb2xUaXBQb3NpdGlvbj1cImxlZnRcIlxuICAgICAgICA+PGkgY2xhc3M9XCJmYWwgZmEtZXllXCIgKm5nSWY9XCIhaGlkZUNvbmZpZ1wiPjwvaT48aSBjbGFzcz1cImZhbCBmYS1leWUtc2xhc2hcIiAqbmdJZj1cImhpZGVDb25maWdcIj48L2lcbiAgICA+PC9hPlxuICAgIDx3Yi1wcmV2aWV3cyBbY29udGVudHNdPVwicGFyc2VkQ29udGVudFwiICpuZ0lmPVwicHJldmlldyAmJiBoaWRlQ29uZmlnXCI+PC93Yi1wcmV2aWV3cz5cbiAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0ICN2aXJ0dWFsU2Nyb2xsIGFwcGVuZE9ubHkgYXV0b3NpemUgbWluQnVmZmVyUHg9XCIwXCIgbWF4QnVmZmVyUHg9XCIxMDAwXCIgKm5nSWY9XCIhcHJldmlld1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwid2ItYmxvY2tzX19jb250YWluZXJcIiAqY2RrVmlydHVhbEZvcj1cImxldCBjb250ZW50IG9mIGNvbnRlbnRzXCIgY2RrRHJhZz5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cIndiLWNvbXBvbmVudFwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAnaXMtaW5hY3RpdmUnOiBoaWRlQ29uZmlnLFxuICAgICAgICAgICAgICAgICAgICAnYm9yZGVyLWdyZXknOiBpc0hpZGRlbkJMb2Nrcyhjb250ZW50LmJsb2NrLnV1aWQpLFxuICAgICAgICAgICAgICAgICAgICAnYm9yZGVyLWJsdWUnOiBzZWxlY3RlZENvbmZpZyA9PT0gY29udGVudC5ibG9jay51dWlkXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHdiLXN0cnVjdHVyZS10b29sc1xuICAgICAgICAgICAgICAgICAgICBbZHluYW1pY0hpZGRlblN0cnVjdHVyZV09XCJpc0hpZGRlbkJMb2Nrcyhjb250ZW50LmJsb2NrLnV1aWQpXCJcbiAgICAgICAgICAgICAgICAgICAgW3V1aWRdPVwiY29udGVudC5ibG9jay51dWlkXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzSG92ZXJdPVwiYmxvY2tIb3ZlclwiXG4gICAgICAgICAgICAgICAgICAgIFtpc0Fsd2F5c0hvdmVyXT1cInNlbGVjdGVkQ29uZmlnID09PSBjb250ZW50LmJsb2NrLnV1aWRcIlxuICAgICAgICAgICAgICAgICAgICAoY29uZmlnSXNBY3RpdmF0ZWQpPVwic3dpdGNoSG92ZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIGNka0RyYWdIYW5kbGVcbiAgICAgICAgICAgICAgICA+PC93Yi1zdHJ1Y3R1cmUtdG9vbHM+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndiLWNvbXBvbmVudF9fY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDx3Yi1jb250YWluZXItYmxvY2sgW2NvbnRlbnRdPVwiY29udGVudFwiPjwvd2ItY29udGFpbmVyLWJsb2NrPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuICAgIDxkaXYgY2xhc3M9XCJ3Yi1ibG9ja3NfX2xvYWRlclwiICpuZ0lmPVwiaXNMb2FkaW5nXCI+XG4gICAgICAgIDx3Yi1sb2FkZXIgW25nQ2xhc3NdPVwieyAnaXMtYWN0aXZlJzogaXNMb2FkaW5nIH1cIj48L3diLWxvYWRlcj5cbiAgICAgICAgPHA+e3sgJ3diLmxvYWRpbmcnIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwid2ItYmxvY2tzLWVtcHR5XCIgKm5nSWY9XCJjb250ZW50cy5sZW5ndGggPT09IDBcIj5cbiAgICA8aW1nIHNyYz1cImFzc2V0cy9ibG9ja3MvaW1hZ2VzL2ljb25zL0ljb25fRHJhZy5zdmdcIiAvPlxuICAgIDxwPnt7IHRyYW5zbGF0aW9uLnNlbGVjdF9jb21wb25lbnQgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgPHA+e3sgdHJhbnNsYXRpb24uZG9jX2NvbXBvbmVudCB8IHRyYW5zbGF0ZSB9fTwvcD5cbjwvZGl2PlxuIl19
197
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dpemktYmxvY2svc3JjL2xpYi9jb21wb25lbnRzL2Jsb2Nrcy9ibG9ja3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2l6aS1ibG9jay9zcmMvbGliL2NvbXBvbmVudHMvYmxvY2tzL2Jsb2Nrcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLHdCQUF3QixFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVuRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUNwRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBT3JGLE1BQU0sT0FBTyxlQUFlO0lBcUJ4QixZQUNZLGdCQUFrQyxFQUNsQyxRQUFrQyxFQUNsQyxjQUE4QixFQUM5QixhQUE0QixFQUM1QixxQkFBNEM7UUFKNUMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxhQUFRLEdBQVIsUUFBUSxDQUEwQjtRQUNsQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQXpCL0MsYUFBUSxHQUFlLEVBQUUsQ0FBQztRQUMxQixrQkFBYSxHQUFHLEVBQUUs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QyxtQkFBbUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDOzJGQUU3QyxlQUFlO2tCQUwzQixTQUFTOytCQUNJLFdBQVcsY0FFVCxDQUFDLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLENBQUM7Mk9BRzdDLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENka0RyYWdEcm9wIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBXaXppQmxvY2tTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvd2l6aS1ibG9jay5zZXJ2aWNlJztcbmltcG9ydCB7IFRyYW5zbGF0aW9uc0R0byB9IGZyb20gJy4uLy4uL2R0b3MvY29uZmlncy90cmFuc2xhdGlvbnMvdHJhbnNsYXRpb25zLmR0byc7XG5pbXBvcnQgeyBhbmltYXRlTGlzdEZyb21MZWZ0IH0gZnJvbSAnLi4vLi4vc2hhcmVkL2FuaW1hdGlvbnMvbGlzdC9hbmltYXRlLWxpc3QtZnJvbS1sZWZ0LmFuaW1hdGlvbic7XG5pbXBvcnQgeyBDb250ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3V0aWxzL2NvbnRlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXRpbHMvY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgRk9STV9OQU1FX1dJRFRIX0JMT0NLIH0gZnJvbSAnLi4vLi4vZHRvcy9mb3Jtcy9mb3Jtcy5kdG8nO1xuaW1wb3J0IHsgRXh0ZXJuYWxDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXRpbHMvZXh0ZXJuYWwtY29uZmlnLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3diLWJsb2NrcycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Jsb2Nrcy5jb21wb25lbnQuaHRtbCcsXG4gICAgYW5pbWF0aW9uczogW2FuaW1hdGVMaXN0RnJvbUxlZnQoJzEwMG1zIGVhc2UtaW4tb3V0JyldXG59KVxuZXhwb3J0IGNsYXNzIEJsb2Nrc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCkgY29udGVudHM6IEFycmF5PGFueT4gPSBbXTtcbiAgICBASW5wdXQoKSBkeW5hbWljSGlkZGVuID0gW107XG4gICAgQElucHV0KCkgc2VsZWN0ZWRDb25maWc6IGFueTtcblxuICAgIGhpZGVDb25maWcgPSBmYWxzZTtcblxuICAgIHRyYW5zbGF0aW9uOiBUcmFuc2xhdGlvbnNEdG87XG5cbiAgICBwcmV2aWV3OiBib29sZWFuO1xuXG4gICAgYmxvY2tIb3ZlciA9IGZhbHNlO1xuXG4gICAgY29uZmlnQWN0aXZlID0gZmFsc2U7XG5cbiAgICBwYXJzZWRDb250ZW50ID0gW107XG5cbiAgICBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGFsbFdpemlibG9ja3NMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHdpemlCbG9ja1NlcnZpY2U6IFdpemlCbG9ja1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICAgICAgcHJpdmF0ZSBjb250ZW50U2VydmljZTogQ29udGVudFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBleHRlcm5hbENvbmZpZ1NlcnZpY2U6IEV4dGVybmFsQ29uZmlnU2VydmljZVxuICAgICkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnRyYW5zbGF0aW9uID0gdGhpcy53aXppQmxvY2tTZXJ2aWNlLmdldFRyYW5zbGF0aW9uKCk7XG5cbiAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZ1Nob3dFdmVudCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmhpZGVDb25maWcgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuaGlkZUNvbmZpZztcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2V0SGlkZUNvbmZpZygpIHtcbiAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmhpZGVDb25maWcgPSAhdGhpcy5jb25maWdTZXJ2aWNlLmhpZGVDb25maWc7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZ1NlcnZpY2UuaGlkZUNvbmZpZykge1xuICAgICAgICAgICAgdGhpcy5wYXJzZWRDb250ZW50ID0gdGhpcy5jb250ZW50U2VydmljZS5nZXRQYXJzZWRDb250ZW50KCk7XG4gICAgICAgICAgICB0aGlzLnByZXZpZXcgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wcmV2aWV3ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzd2l0Y2hIb3ZlcihldmVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhldmVudCk7XG4gICAgICAgIHRoaXMuY29uZmlnQWN0aXZlID0gZXZlbnQ7XG4gICAgfVxuXG4gICAgYWRkVGhpcyhpbmRleCwgdHlwZSkge1xuICAgICAgICB0aGlzLndpemlCbG9ja1NlcnZpY2UuZ2V0QmxvY2tzU2VydmljZSgpLmZvckVhY2goKHYpID0+IHtcbiAgICAgICAgICAgIGlmICh2LnR5cGUoKSA9PT0gdHlwZSkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygdi5nZXRGb3JtID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2VEdG8gPSB2LmdldEZvcm0oKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2VEdG8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VEdG8udHlwZSA9IHYudHlwZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50U2VydmljZS5zZXRDb250ZW50c1dpdGhJbmRleChpbmRleCwgYmFzZUR0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmFzZUR0by5mb3Jtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnID0gYmFzZUR0bztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnU2VydmljZS5oaWRlQ29uZmlnID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFkZFRoaXNTZWxlY3RlZChzZWxlY3RlZCwgdmVyYm9zZSkge1xuICAgICAgICB0aGlzLndpemlCbG9ja1NlcnZpY2UuZ2V0QmxvY2tzU2VydmljZSgpLmZvckVhY2goKHYpID0+IHtcbiAgICAgICAgICAgIGlmICh2LnR5cGUoKSA9PT0gc2VsZWN0ZWQudHlwZSkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygdi5nZXRGb3JtID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2VEdG8gPSB2LmdldEZvcm0oKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2VEdG8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmV4dGVybmFsQ29uZmlnU2VydmljZS5nZXRXaWR0aEJsb2NrKCkgIT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlRHRvLmZvcm1zLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuaWQgPT0gRk9STV9OQU1FX1dJRFRIX0JMT0NLKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnZhbHVlID0gdGhpcy5leHRlcm5hbENvbmZpZ1NlcnZpY2UuZ2V0V2lkdGhCbG9jaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VEdG8udHlwZSA9IHYudHlwZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50U2VydmljZS5zZXRDb250ZW50cyhiYXNlRHRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ29Ub0xhc3RFbGVtZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2VEdG8uZm9ybXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZyA9IGJhc2VEdG87XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuaGlkZUNvbmZpZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnQWRkIGEgY29udGVudCcsIGJhc2VEdG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdEdG8gZm9yIGNvbXBvbmVudCAnICsgdi50eXBlKCkgKyAnIG5vdCBmb3VuZCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Zvcm0gZm9yIGNvbXBvbmVudCAnICsgdi50eXBlKCkgKyAnIG5vdCBmb3VuZCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnb1RvTGFzdEVsZW1lbnQoKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmFsbFdpemlibG9ja3NMb2FkZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB3aXppYmxvY2tzTGlzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3diLWJsb2Nrc19fY29udGFpbmVyJyk7XG4gICAgICAgICAgICBjb25zdCBjaGlsZEVsZW1lbnQgPSAod2l6aWJsb2Nrc0xpc3Rbd2l6aWJsb2Nrc0xpc3QubGVuZ3RoIC0gMV0pIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3diLWNvbnRlbnQnKVswXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQnKVswXSkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnRWaWV3YWJsZUFyZWEgPSB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBwYXJlbnQuY2xpZW50SGVpZ2h0LFxuICAgICAgICAgICAgICAgIHdpZHRoOiBwYXJlbnQuY2xpZW50V2lkdGhcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHBhcmVudEJvdW5kaW5nQ2xpZW50UmVjdCA9IHBhcmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkQm91bmRpbmdDbGllbnRSZWN0ID0gY2hpbGRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgdmFyIGlzVmlld2FibGUgPSAoY2hpbGRCb3VuZGluZ0NsaWVudFJlY3QudG9wID49IHBhcmVudEJvdW5kaW5nQ2xpZW50UmVjdC50b3ApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKGNoaWxkQm91bmRpbmdDbGllbnRSZWN0LmJvdHRvbSA8PSBwYXJlbnRCb3VuZGluZ0NsaWVudFJlY3QudG9wICsgcGFyZW50Vmlld2FibGVBcmVhLmhlaWdodCk7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50U2Nyb2xsID0gcGFyZW50LnNjcm9sbFRvcCArIHBhcmVudFZpZXdhYmxlQXJlYS5oZWlnaHQ7XG4gICAgICAgICAgICBjb25zdCBtYXhIZWlnaHRFbGVtZW50ID0gKHBhcmVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyJylbMF0pIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgY29uc3QgbWF4SGVpZ2h0ID0gbWF4SGVpZ2h0RWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnaXMgdmlld2FibGUgPycpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ2NoaWxkIHRvcCAnICsgY2hpbGRCb3VuZGluZ0NsaWVudFJlY3QudG9wKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdjaGlsZCBib3R0b20gJyArIGNoaWxkQm91bmRpbmdDbGllbnRSZWN0LmJvdHRvbSlcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdwYXJlbnQgdG9wICcgKyBwYXJlbnRCb3VuZGluZ0NsaWVudFJlY3QudG9wKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdwYXJlbnQgaGVpZ2h0ICcgKyBwYXJlbnRWaWV3YWJsZUFyZWEuaGVpZ2h0KTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGNoaWxkQm91bmRpbmdDbGllbnRSZWN0LnRvcCA+PSBwYXJlbnRCb3VuZGluZ0NsaWVudFJlY3QudG9wKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGNoaWxkQm91bmRpbmdDbGllbnRSZWN0LmJvdHRvbSA8PSBwYXJlbnRCb3VuZGluZ0NsaWVudFJlY3QudG9wICsgcGFyZW50Vmlld2FibGVBcmVhLmhlaWdodCk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdtYXhIZWlnaHQgJyArIG1heEhlaWdodCk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnY3VycmVudCBzY3JvbGwgJyArIGN1cnJlbnRTY3JvbGwpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coY3VycmVudFNjcm9sbCA+PSBtYXhIZWlnaHQpO1xuICAgICAgICAgICAgaWYgKGlzVmlld2FibGUgfHwgKGN1cnJlbnRTY3JvbGwgPj0gbWF4SGVpZ2h0KSkge1xuICAgICAgICAgICAgICAgIC8vIFNlY29uZCBjaGVjayBpZiBsYXN0IGVsZW1lbnQgaXMgdmlld2FibGVcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNoZWNrQ3VycmVudFNjcm9sbCA9IHBhcmVudC5zY3JvbGxUb3AgKyBwYXJlbnRWaWV3YWJsZUFyZWEuaGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICBsZXQgY2hlY2tNYXhIZWlnaHQgPSBtYXhIZWlnaHRFbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKChjaGVja0N1cnJlbnRTY3JvbGwgPj0gY2hlY2tNYXhIZWlnaHQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygndmlld2FibGUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsbFdpemlibG9ja3NMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ25vdCB2aWV3YWJsZSBhZnRlciBzZWNvbmQgY2hlY2snKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ29Ub0xhc3RFbGVtZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnbm90IHZpZXdhYmxlJyk7XG4gICAgICAgICAgICAgICAgcGFyZW50LnNjcm9sbFRvcCA9IChjaGlsZEJvdW5kaW5nQ2xpZW50UmVjdC50b3AgKyBwYXJlbnQuc2Nyb2xsVG9wKSAtIHBhcmVudEJvdW5kaW5nQ2xpZW50UmVjdC50b3A7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmFsbFdpemlibG9ja3NMb2FkZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nb1RvTGFzdEVsZW1lbnQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDI1MCk7XG4gICAgfVxuXG4gICAgaXNIaWRkZW5CTG9ja3MoaWQpIHtcbiAgICAgICAgaWYgKHRoaXMuZHluYW1pY0hpZGRlbi5pbmNsdWRlcyhpZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBvbkRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPGFueVtdPikge1xuICAgICAgICBpZiAoZXZlbnQuaXRlbS5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdpZCcpKSB7XG4gICAgICAgICAgICB0aGlzLmFkZFRoaXMoZXZlbnQuY3VycmVudEluZGV4LCBldmVudC5pdGVtLmVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2lkJykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jb250ZW50U2VydmljZS5yZW9yZGVyQ29udGVudHMoZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cIndiLWJsb2Nrc1wiXG4gICAgY2RrRHJvcExpc3RcbiAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uRHJvcCgkZXZlbnQpXCJcbiAgICBpZD1cImJsb2NrLWNvbnRlbnRcIlxuICAgICpuZ0lmPVwiY29udGVudHMubGVuZ3RoID4gMFwiXG4gICAgW0BhbmltYXRlTGlzdEZyb21MZWZ0XT1cImNvbnRlbnRzLmxlbmd0aFwiXG4gICAgW25nQ2xhc3NdPVwieyBob3ZlcjogYmxvY2tIb3ZlciB9XCJcbj5cbiAgICA8YVxuICAgICAgICBjbGFzcz1cImJ1dHRvbiBpcy1oaWRkZW4tYnV0dG9uIGlzLWRhbmdlciBpcy1yb3VuZGVkIGlzLXRvb2x0aXAtaW5mb1wiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWRhbmdlcic6IGhpZGVDb25maWcsICdpcy1kYXJrIGlzLW91dGxpbmVkJzogIWhpZGVDb25maWcgfVwiXG4gICAgICAgIChjbGljayk9XCJzZXRIaWRlQ29uZmlnKClcIlxuICAgICAgICBbbndiVG9vbFRpcF09XCIoIWhpZGVDb25maWcgPyAnd2IuYmxvY2tzLmh0bWwuMScgOiAnd2IuYmxvY2tzLmh0bWwuMicpIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgbndiVG9vbFRpcFBvc2l0aW9uPVwibGVmdFwiXG4gICAgICAgID48aSBjbGFzcz1cImZhbCBmYS1leWVcIiAqbmdJZj1cIiFoaWRlQ29uZmlnXCI+PC9pPjxpIGNsYXNzPVwiZmFsIGZhLWV5ZS1zbGFzaFwiICpuZ0lmPVwiaGlkZUNvbmZpZ1wiPjwvaVxuICAgID48L2E+XG4gICAgPHdiLXByZXZpZXdzIFtjb250ZW50c109XCJwYXJzZWRDb250ZW50XCIgKm5nSWY9XCJwcmV2aWV3ICYmIGhpZGVDb25maWdcIj48L3diLXByZXZpZXdzPlxuICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQgI3ZpcnR1YWxTY3JvbGwgYXBwZW5kT25seSBhdXRvc2l6ZSBtaW5CdWZmZXJQeD1cIjBcIiBtYXhCdWZmZXJQeD1cIjEwMDBcIiAqbmdJZj1cIiFwcmV2aWV3XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3Yi1ibG9ja3NfX2NvbnRhaW5lclwiICpjZGtWaXJ0dWFsRm9yPVwibGV0IGNvbnRlbnQgb2YgY29udGVudHNcIiBjZGtEcmFnPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwid2ItY29tcG9uZW50XCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICdpcy1pbmFjdGl2ZSc6IGhpZGVDb25maWcsXG4gICAgICAgICAgICAgICAgICAgICdib3JkZXItZ3JleSc6IGlzSGlkZGVuQkxvY2tzKGNvbnRlbnQuYmxvY2sudXVpZCksXG4gICAgICAgICAgICAgICAgICAgICdib3JkZXItYmx1ZSc6IHNlbGVjdGVkQ29uZmlnID09PSBjb250ZW50LmJsb2NrLnV1aWRcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8d2Itc3RydWN0dXJlLXRvb2xzXG4gICAgICAgICAgICAgICAgICAgIFtkeW5hbWljSGlkZGVuU3RydWN0dXJlXT1cImlzSGlkZGVuQkxvY2tzKGNvbnRlbnQuYmxvY2sudXVpZClcIlxuICAgICAgICAgICAgICAgICAgICBbdXVpZF09XCJjb250ZW50LmJsb2NrLnV1aWRcIlxuICAgICAgICAgICAgICAgICAgICBbaXNIb3Zlcl09XCJibG9ja0hvdmVyXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzQWx3YXlzSG92ZXJdPVwic2VsZWN0ZWRDb25maWcgPT09IGNvbnRlbnQuYmxvY2sudXVpZFwiXG4gICAgICAgICAgICAgICAgICAgIChjb25maWdJc0FjdGl2YXRlZCk9XCJzd2l0Y2hIb3ZlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgY2RrRHJhZ0hhbmRsZVxuICAgICAgICAgICAgICAgID48L3diLXN0cnVjdHVyZS10b29scz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2ItY29tcG9uZW50X19jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHdiLWNvbnRhaW5lci1ibG9jayBbY29udGVudF09XCJjb250ZW50XCI+PC93Yi1jb250YWluZXItYmxvY2s+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XG4gICAgPGRpdiBjbGFzcz1cIndiLWJsb2Nrc19fbG9hZGVyXCIgKm5nSWY9XCJpc0xvYWRpbmdcIj5cbiAgICAgICAgPHdiLWxvYWRlciBbbmdDbGFzc109XCJ7ICdpcy1hY3RpdmUnOiBpc0xvYWRpbmcgfVwiPjwvd2ItbG9hZGVyPlxuICAgICAgICA8cD57eyAnd2IubG9hZGluZycgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJ3Yi1ibG9ja3MtZW1wdHlcIiAqbmdJZj1cImNvbnRlbnRzLmxlbmd0aCA9PT0gMFwiPlxuICAgIDxpbWcgc3JjPVwiYXNzZXRzL2Jsb2Nrcy9pbWFnZXMvaWNvbnMvSWNvbl9EcmFnLnN2Z1wiIC8+XG4gICAgPHA+e3sgdHJhbnNsYXRpb24uc2VsZWN0X2NvbXBvbmVudCB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICA8cD57eyB0cmFuc2xhdGlvbi5kb2NfY29tcG9uZW50IHwgdHJhbnNsYXRlIH19PC9wPlxuPC9kaXY+XG4iXX0=
@@ -25108,7 +25108,7 @@ class BlocksComponent {
25108
25108
  if (!this.allWiziblocksLoaded) {
25109
25109
  this.isLoading = true;
25110
25110
  }
25111
- const wiziblocksList = document.getElementsByClassName('wb-component');
25111
+ const wiziblocksList = document.getElementsByClassName('wb-blocks__container');
25112
25112
  const childElement = (wiziblocksList[wiziblocksList.length - 1]);
25113
25113
  const parent = (document.getElementsByClassName('wb-content')[0].getElementsByClassName('cdk-virtual-scroll-viewport')[0]);
25114
25114
  const parentViewableArea = {
@@ -25119,19 +25119,43 @@ class BlocksComponent {
25119
25119
  const childBoundingClientRect = childElement.getBoundingClientRect();
25120
25120
  var isViewable = (childBoundingClientRect.top >= parentBoundingClientRect.top)
25121
25121
  && (childBoundingClientRect.bottom <= parentBoundingClientRect.top + parentViewableArea.height);
25122
- if (!isViewable) {
25122
+ const currentScroll = parent.scrollTop + parentViewableArea.height;
25123
+ const maxHeightElement = (parent.getElementsByClassName('cdk-virtual-scroll-content-wrapper')[0]);
25124
+ const maxHeight = maxHeightElement.offsetHeight;
25125
+ console.log('is viewable ?');
25126
+ console.log('child top ' + childBoundingClientRect.top);
25127
+ console.log('child bottom ' + childBoundingClientRect.bottom);
25128
+ console.log('parent top ' + parentBoundingClientRect.top);
25129
+ console.log('parent height ' + parentViewableArea.height);
25130
+ console.log(childBoundingClientRect.top >= parentBoundingClientRect.top);
25131
+ console.log(childBoundingClientRect.bottom <= parentBoundingClientRect.top + parentViewableArea.height);
25132
+ console.log('maxHeight ' + maxHeight);
25133
+ console.log('current scroll ' + currentScroll);
25134
+ console.log(currentScroll >= maxHeight);
25135
+ if (isViewable || (currentScroll >= maxHeight)) {
25136
+ // Second check if last element is viewable
25137
+ setTimeout(() => {
25138
+ let checkCurrentScroll = parent.scrollTop + parentViewableArea.height;
25139
+ let checkMaxHeight = maxHeightElement.offsetHeight;
25140
+ if ((checkCurrentScroll >= checkMaxHeight)) {
25141
+ console.log('viewable');
25142
+ this.isLoading = false;
25143
+ this.allWiziblocksLoaded = true;
25144
+ }
25145
+ else {
25146
+ console.log('not viewable after second check');
25147
+ this.goToLastElement();
25148
+ }
25149
+ }, 100);
25150
+ }
25151
+ else {
25152
+ console.log('not viewable');
25123
25153
  parent.scrollTop = (childBoundingClientRect.top + parent.scrollTop) - parentBoundingClientRect.top;
25124
25154
  if (!this.allWiziblocksLoaded) {
25125
25155
  this.goToLastElement();
25126
25156
  }
25127
25157
  }
25128
- else {
25129
- setTimeout(() => {
25130
- this.isLoading = false;
25131
- this.allWiziblocksLoaded = true;
25132
- }, 100);
25133
- }
25134
- }, 200);
25158
+ }, 250);
25135
25159
  }
25136
25160
  isHiddenBLocks(id) {
25137
25161
  if (this.dynamicHidden.includes(id)) {