@pepperi-addons/ngx-lib 0.4.2-beta.321 → 0.4.2-beta.323

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.
Files changed (26) hide show
  1. package/core/common/services/addon.service.d.ts +3 -0
  2. package/esm2020/core/common/services/addon.service.mjs +58 -13
  3. package/esm2020/core/common/services/utilities.service.mjs +8 -13
  4. package/esm2020/group-buttons/group-buttons.component.mjs +19 -6
  5. package/esm2020/list/list.component.mjs +23 -6
  6. package/esm2020/remote-loader/remote-loader-element.component.mjs +57 -1
  7. package/fesm2015/pepperi-addons-ngx-lib-group-buttons.mjs +18 -5
  8. package/fesm2015/pepperi-addons-ngx-lib-group-buttons.mjs.map +1 -1
  9. package/fesm2015/pepperi-addons-ngx-lib-list.mjs +23 -5
  10. package/fesm2015/pepperi-addons-ngx-lib-list.mjs.map +1 -1
  11. package/fesm2015/pepperi-addons-ngx-lib-remote-loader.mjs +61 -5
  12. package/fesm2015/pepperi-addons-ngx-lib-remote-loader.mjs.map +1 -1
  13. package/fesm2015/pepperi-addons-ngx-lib.mjs +65 -24
  14. package/fesm2015/pepperi-addons-ngx-lib.mjs.map +1 -1
  15. package/fesm2020/pepperi-addons-ngx-lib-group-buttons.mjs +18 -5
  16. package/fesm2020/pepperi-addons-ngx-lib-group-buttons.mjs.map +1 -1
  17. package/fesm2020/pepperi-addons-ngx-lib-list.mjs +22 -5
  18. package/fesm2020/pepperi-addons-ngx-lib-list.mjs.map +1 -1
  19. package/fesm2020/pepperi-addons-ngx-lib-remote-loader.mjs +56 -1
  20. package/fesm2020/pepperi-addons-ngx-lib-remote-loader.mjs.map +1 -1
  21. package/fesm2020/pepperi-addons-ngx-lib.mjs +64 -24
  22. package/fesm2020/pepperi-addons-ngx-lib.mjs.map +1 -1
  23. package/group-buttons/group-buttons.component.d.ts +4 -2
  24. package/list/list.component.d.ts +5 -0
  25. package/package.json +1 -1
  26. package/remote-loader/remote-loader-element.component.d.ts +1 -0
@@ -1,5 +1,6 @@
1
1
  import { Component, EventEmitter, Input, Optional, Output } from '@angular/core';
2
2
  import { loadRemoteModule } from '@angular-architects/module-federation';
3
+ import { PepAddonService } from '@pepperi-addons/ngx-lib';
3
4
  import * as i0 from "@angular/core";
4
5
  import * as i1 from "@pepperi-addons/ngx-lib";
5
6
  import * as i2 from "./remote-loader.service";
@@ -21,6 +22,7 @@ export class PepRemoteLoaderElementComponent {
21
22
  this._elementName = '';
22
23
  this._blockType = '';
23
24
  this._alreadyLoaded = false;
25
+ this._routeUrlSubscription = null;
24
26
  }
25
27
  populateProps() {
26
28
  for (const prop in this.props) {
@@ -62,6 +64,11 @@ export class PepRemoteLoaderElementComponent {
62
64
  this.populateProps();
63
65
  }
64
66
  ngOnDestroy() {
67
+ this._routeUrlSubscription?.unsubscribe();
68
+ this._routeUrlSubscription = null;
69
+ if (this._blockType === 'SettingsBlock' && this._elementName) {
70
+ this.pepAddonService.disconnectInternalRouter(this._elementName);
71
+ }
65
72
  if (this.element) {
66
73
  try {
67
74
  if (this.events) {
@@ -175,6 +182,30 @@ export class PepRemoteLoaderElementComponent {
175
182
  this.pepAddonService.setAddonStaticFolder(publicPath, this.options.addonId);
176
183
  }
177
184
  }
185
+ // The remote reads window.location once, synchronously, during its own bootstrap —
186
+ // its internal router-sync (see e.g. @angular-architects/module-federation-tools'
187
+ // connectRouter) assumes a path relative to real root, and uses whatever shape it
188
+ // sees to decide which leading segments are its own fixed "container route" vs. a
189
+ // later-replaceable child segment. If this shell is served under its own base href
190
+ // (e.g. dev-only /angular — see angular.json's baseHref/servePath), briefly present
191
+ // the remote with the base-stripped path for the duration of this one-time load, so
192
+ // it locks in the same container-route shape it would see at real root (e.g. under
193
+ // React) — then restore the real address immediately after. Safe: this component
194
+ // isn't rendering anything until the promise resolves anyway, and replaceState never
195
+ // fires popstate, so this shell's own Router never observes the swap.
196
+ const isSettingsBlock = this._blockType === 'SettingsBlock';
197
+ const originalUrl = `${location.pathname}${location.search}${location.hash}`;
198
+ const strippedPath = PepAddonService.stripBaseHref(location.pathname);
199
+ const shouldSwapUrl = isSettingsBlock && strippedPath !== location.pathname;
200
+ // Bypass this shell's own base-href-restoring history guard (see bootstrap.ts) for
201
+ // this one, deliberate swap — otherwise it silently reverts it before the remote
202
+ // ever reads location.pathname.
203
+ const win = window;
204
+ if (shouldSwapUrl) {
205
+ win.__pepAllowRawHistoryWrite = true;
206
+ history.replaceState(history.state, '', `${strippedPath}${location.search}${location.hash}`);
207
+ win.__pepAllowRawHistoryWrite = false;
208
+ }
178
209
  // debugger;
179
210
  // this.loadRemoteScript(this.options['remoteEntry']).then(() => {
180
211
  loadRemoteModule(this.options).then((m) => {
@@ -186,8 +217,33 @@ export class PepRemoteLoaderElementComponent {
186
217
  // Fix internal routing bug.
187
218
  if (this._blockType === 'SettingsBlock') {
188
219
  this.pepAddonService.connectInternalRouter(this._elementName);
220
+ // Angular reuses this SAME component instance across a child-segment-only
221
+ // route change (e.g. settings_block/:uuid/:slug's own '**' child route going
222
+ // from .../pages to .../{pageKey}) — ngAfterContentInit only fires once, so
223
+ // without this the addon's own internal router is only ever told the location
224
+ // at initial mount, and never learns about a later in-place navigation. this
225
+ // .route.url (unlike .snapshot) emits again on exactly that kind of change.
226
+ if (this.route) {
227
+ this._routeUrlSubscription = this.route.url.subscribe(() => {
228
+ this.pepAddonService.connectInternalRouter(this._elementName);
229
+ });
230
+ }
189
231
  }
190
232
  this.load.emit();
233
+ // The remote's own bootstrap (its custom element's connectedCallback, just
234
+ // triggered by appendChild above) can defer its actual router-sync read of
235
+ // window.location past this synchronous block (zone-scheduled change detection,
236
+ // etc.) — push the restore one macrotask out so it reliably runs after that,
237
+ // not before it.
238
+ if (shouldSwapUrl) {
239
+ setTimeout(() => {
240
+ if (location.pathname === strippedPath) {
241
+ win.__pepAllowRawHistoryWrite = true;
242
+ history.replaceState(history.state, '', originalUrl);
243
+ win.__pepAllowRawHistoryWrite = false;
244
+ }
245
+ }, 0);
246
+ }
191
247
  }).catch((error) => {
192
248
  throw error;
193
249
  });
@@ -234,4 +290,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
234
290
  }], load: [{
235
291
  type: Output
236
292
  }] } });
237
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWxvYWRlci1lbGVtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWIvcmVtb3RlLWxvYWRlci9yZW1vdGUtbG9hZGVyLWVsZW1lbnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQXdCLFFBQVEsRUFBRSxNQUFNLEVBQTBDLE1BQU0sZUFBZSxDQUFDO0FBRTdLLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7OztBQTBCekUsTUFBTSxPQUFPLCtCQUErQjtJQVl4QywyQkFBMkI7SUFDM0IseUdBQXlHO0lBQ3pHLGlHQUFpRztJQUNqRyw4RkFBOEY7SUFDOUYsSUFBSTtJQUVKLFlBQ1ksUUFBbUIsRUFDbkIsRUFBYSxFQUNiLGVBQWdDLEVBQ2hDLG1CQUEyQyxFQUMvQixLQUFxQjtRQUpqQyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLE9BQUUsR0FBRixFQUFFLENBQVc7UUFDYixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUF3QjtRQUMvQixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQWxCbkMsU0FBSSxHQUF1QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXhELFlBQU8sR0FBZ0IsSUFBSSxDQUFDO1FBRXBCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsbUJBQWMsR0FBRyxLQUFLLENBQUM7SUFlL0IsQ0FBQztJQUVPLGFBQWE7UUFDakIsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQzNCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN6QztJQUNMLENBQUM7SUFFTyxXQUFXO1FBQ2YsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUM1RDtJQUNMLENBQUM7SUFFTyxLQUFLLENBQUMsb0JBQW9CO1FBQzlCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUMzQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDdkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLEVBQUUsU0FBUyxJQUFJLGVBQWUsQ0FBQztRQUVyRCxNQUFNLFFBQVEsR0FBRyxNQUFNLEVBQUUsUUFBUSxJQUFJLElBQUksRUFBRSxRQUFRLENBQUM7UUFDcEQsTUFBTSxTQUFTLEdBQUcsTUFBTSxFQUFFLFNBQVMsSUFBSSxJQUFJLEVBQUUsU0FBUyxDQUFDO1FBRXZELElBQUksU0FBUyxFQUFFLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLGVBQWUsQ0FBQyxFQUFFO1lBQ3hGLE1BQU0sU0FBUyxHQUFHLE1BQU0sRUFBRSxTQUFTLElBQUksSUFBSSxFQUFFLFNBQVMsSUFBSSxFQUFFLENBQUM7WUFDN0QsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLEVBQUUsZ0JBQWdCLElBQUksRUFBRSxDQUFDO1lBRXRELElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsMkJBQTJCLENBQUM7Z0JBQ3RFLElBQUksRUFBRSxTQUFTO2dCQUNmLFFBQVE7Z0JBQ1IsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVO2dCQUMxQixTQUFTO2dCQUNULGdCQUFnQjthQUNuQixDQUFDLENBQUM7WUFFSCxNQUFNLFFBQVEsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztZQUVwRCxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ2hELElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEdBQUcseUJBQXlCLFFBQVEsRUFBRSxDQUFDO2FBQ3JFO1lBRUQsOEVBQThFO1lBQzlFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1NBQ3JCO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPO1FBRTFCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNkLElBQUk7Z0JBQ0EsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO29CQUNiLEtBQUssTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTt3QkFDN0IsSUFBSTs0QkFDQSxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7eUJBQy9EO3dCQUFDLE1BQU07NEJBQ0osU0FBUzt5QkFDWjtxQkFDSjtpQkFDSjtnQkFFRCxpRUFBaUU7Z0JBQ2pFLDhGQUE4RjtnQkFDOUYsK0ZBQStGO2dCQUMvRix1R0FBdUc7Z0JBRXZHLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7Z0JBQ2pDLElBQUksZUFBZSxHQUFtQixJQUFJLENBQUM7Z0JBQzNDLE1BQU0sT0FBTyxHQUFHLEdBQUcsRUFBRTtvQkFDakIsSUFBSTt3QkFDQSxJQUFJLGVBQWUsRUFBRSxVQUFVLEVBQUU7NEJBQzdCLGVBQWUsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDO3lCQUMzRDtxQkFDSjtvQkFBQyxNQUFNO3dCQUNKLFNBQVM7cUJBQ1o7Z0JBQ0wsQ0FBQyxDQUFDO2dCQUVGLHFIQUFxSDtnQkFDckgsSUFBSTtvQkFDQSxJQUFJLE9BQU8sUUFBUSxLQUFLLFdBQVcsSUFBSSxXQUFXLEVBQUUsVUFBVSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUU7d0JBQzdFLGVBQWUsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUNoRCxlQUFlLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7d0JBQ3ZDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDO3dCQUMzQyxlQUFlLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO3FCQUM1QztpQkFDSjtnQkFBQyxNQUFNO29CQUNKLFNBQVM7aUJBQ1o7Z0JBRUQsTUFBTSxLQUFLLEdBQUcsV0FBa0IsQ0FBQztnQkFDakMsTUFBTSxZQUFZLEdBQUcsS0FBSyxFQUFFLGNBQWMsQ0FBQztnQkFDM0MsSUFBSSxPQUFPLFlBQVksS0FBSyxVQUFVLEVBQUU7b0JBQ3BDLElBQUk7d0JBQ0EsTUFBTSxHQUFHLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFDckMsSUFBSSxHQUFHLElBQUksT0FBTyxHQUFHLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFBRTs0QkFDdkMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO3lCQUNoQzs2QkFBTTs0QkFDSCxPQUFPLEVBQUUsQ0FBQzt5QkFDYjtxQkFDSjtvQkFBQyxNQUFNO3dCQUNKLFNBQVM7d0JBQ1QsT0FBTyxFQUFFLENBQUM7cUJBQ2I7aUJBQ0o7cUJBQU07b0JBQ0gsT0FBTyxFQUFFLENBQUM7aUJBQ2I7YUFDSjtZQUFDLE1BQU07Z0JBQ0osU0FBUzthQUNaO1lBRUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7U0FDdkI7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gseUVBQXlFO0lBQ3pFLHFEQUFxRDtJQUNyRCwyRUFBMkU7SUFDM0Usb0VBQW9FO0lBQ3BFLHNEQUFzRDtJQUN0RCwrQ0FBK0M7SUFDL0MscUNBQXFDO0lBQ3JDLG9CQUFvQjtJQUNwQixtQ0FBbUM7SUFDbkMsNENBQTRDO0lBQzVDLHNCQUFzQjtJQUN0QixZQUFZO0lBRVosMkRBQTJEO0lBQzNELGtDQUFrQztJQUNsQyx1Q0FBdUM7SUFFdkMsa0NBQWtDO0lBQ2xDLGlGQUFpRjtJQUNqRixzREFBc0Q7SUFDdEQsK0NBQStDO0lBQy9DLHFDQUFxQztJQUNyQyxvQkFBb0I7SUFDcEIsbUNBQW1DO0lBQ25DLDRDQUE0QztJQUM1QyxhQUFhO0lBRWIsaURBQWlEO0lBQ2pELDZDQUE2QztJQUM3QyxVQUFVO0lBQ1YsSUFBSTtJQUVJLHFCQUFxQjtRQUV6QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNmLDREQUE0RDtZQUM1RCxPQUFPLENBQUMsSUFBSSxDQUFDLHVDQUF1QyxDQUFDLENBQUM7WUFDdEQsT0FBTztTQUNWO2FBQU07WUFDSCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxFQUFFO2dCQUM3RixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBRXhFLElBQUksY0FBYyxHQUFHLENBQUMsRUFBRTtvQkFDcEIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQzdFLElBQUksQ0FBQyxlQUFlLENBQUMsb0JBQW9CLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7aUJBQy9FO2FBQ0o7WUFDRCxZQUFZO1lBQ1osa0VBQWtFO1lBQ2xFLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDdEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztnQkFDN0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQzlELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUVuQixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBRS9ELDRCQUE0QjtnQkFDNUIsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLGVBQWUsRUFBRTtvQkFDckMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7aUJBQ2pFO2dCQUVELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDckIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2YsTUFBTSxLQUFLLENBQUM7WUFDaEIsQ0FBQyxDQUFDLENBQUM7U0FDTjtJQUNMLENBQUM7SUFFRCxrQkFBa0I7UUFDZCxJQUFJO1lBQ0Esb0ZBQW9GO1lBQ3BGLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO2dCQUN0QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztnQkFDM0Isd0VBQXdFO2dCQUN4RSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtvQkFDZixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO3dCQUNsQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztvQkFDakMsQ0FBQyxDQUFDLENBQUM7aUJBQ047cUJBQU07b0JBQ0gsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7aUJBQ2hDO2FBQ0o7U0FDSjtRQUNELE9BQU0sS0FBSyxFQUFFO1lBQ1QsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN4QjtJQUNMLENBQUM7OzRIQTNPUSwrQkFBK0I7Z0hBQS9CLCtCQUErQixtTEFWOUI7O0tBRVQ7MkZBUVEsK0JBQStCO2tCQVozQyxTQUFTOytCQUNJLDJCQUEyQixZQUMzQjs7S0FFVDs7MEJBK0JJLFFBQVE7NENBdEJKLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUVJLElBQUk7c0JBQWIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9wdGlvbmFsLCBPdXRwdXQsIFJlbmRlcmVyMiwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBsb2FkUmVtb3RlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXItYXJjaGl0ZWN0cy9tb2R1bGUtZmVkZXJhdGlvbic7XG5pbXBvcnQgeyBQZXBBZGRvblNlcnZpY2UgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYic7XG5pbXBvcnQgeyBQZXBSZW1vdGVMb2FkZXJPcHRpb25zIH0gZnJvbSAnLi9yZW1vdGUtbG9hZGVyLm1vZGVsJztcbmltcG9ydCB7IFBlcFJlbW90ZUxvYWRlclNlcnZpY2UgfSBmcm9tICcuL3JlbW90ZS1sb2FkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMnO1xuXG5pbnRlcmZhY2UgQmxvY2tSZW1vdGVMb2FkZXJPcHRpb25zRGF0YSB7IFxuICAgIG5hbWU/OiBzdHJpbmcsIFxuICAgIHNsdWdOYW1lPzogc3RyaW5nLCBcbiAgICBibG9ja1R5cGU/OiBzdHJpbmcsIFxuICAgIGFkZG9uVVVJRD86IHN0cmluZywgXG4gICAgYmxvY2tSZW1vdGVFbnRyeT86IHN0cmluZyBcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwZXAtcmVtb3RlLWxvYWRlci1lbGVtZW50JyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8IS0tPGRpdiAjdmMgc3R5bGU9XCJoZWlnaHQ6IGluaGVyaXQ7XCI+PC9kaXY+LS0+XG4gICAgYCxcbiAgICBzdHlsZXM6IFtgXG4gICAgICAgIDpob3N0IHsgd2lkdGg6MTAwJTsgaGVpZ2h0OiBpbmhlcml0OyBvdmVyZmxvdzogaW5oZXJpdDsgfVxuICAgICAgICA6aG9zdDo6bmctZGVlcCA+ICoge1xuICAgICAgICAgICAgaGVpZ2h0OiBpbmhlcml0O1xuICAgICAgICB9XG4gICAgYF0sXG59KVxuZXhwb3J0IGNsYXNzIFBlcFJlbW90ZUxvYWRlckVsZW1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgb3B0aW9uczogUGVwUmVtb3RlTG9hZGVyT3B0aW9ucztcbiAgICBASW5wdXQoKSBwcm9wczogeyBbcHJvcDogc3RyaW5nXTogdW5rbm93biB9O1xuICAgIEBJbnB1dCgpIGV2ZW50czogeyBbZXZlbnQ6IHN0cmluZ106IChldmVudDogRXZlbnQpID0+IHZvaWQgfTtcblxuICAgIEBPdXRwdXQoKSBsb2FkOiBFdmVudEVtaXR0ZXI8YW55PiA9ICBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBlbGVtZW50OiBIVE1MRWxlbWVudCA9IG51bGw7XG5cbiAgICBwcml2YXRlIF9lbGVtZW50TmFtZSA9ICcnO1xuICAgIHByaXZhdGUgX2Jsb2NrVHlwZSA9ICcnO1xuICAgIHByaXZhdGUgX2FscmVhZHlMb2FkZWQgPSBmYWxzZTtcbiAgICAvLyAvLyBUaGlzIGlzIGZvciBkZWJvdW5jZS5cbiAgICAvLyBwcml2YXRlIF9nZXRCbG9ja1JlbW90ZUxvYWRlck9wdGlvbnNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxCbG9ja1JlbW90ZUxvYWRlck9wdGlvbnNEYXRhPihudWxsKTtcbiAgICAvLyBnZXQgZ2V0QmxvY2tSZW1vdGVMb2FkZXJPcHRpb25zRGVib3VuY2VkU3ViamVjdCQoKTogT2JzZXJ2YWJsZTxCbG9ja1JlbW90ZUxvYWRlck9wdGlvbnNEYXRhPiB7XG4gICAgLy8gICAgIHJldHVybiB0aGlzLl9nZXRCbG9ja1JlbW90ZUxvYWRlck9wdGlvbnNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGVib3VuY2VUaW1lKDI1MCkpO1xuICAgIC8vIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIHByaXZhdGUgZWw6RWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBwZXBBZGRvblNlcnZpY2U6IFBlcEFkZG9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZW1vdGVMb2FkZXJTZXJ2aWNlOiBQZXBSZW1vdGVMb2FkZXJTZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVxuICAgICkgeyBcblxuICAgIH1cblxuICAgIHByaXZhdGUgcG9wdWxhdGVQcm9wcygpIHtcbiAgICAgICAgZm9yIChjb25zdCBwcm9wIGluIHRoaXMucHJvcHMpIHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFtwcm9wXSA9IHRoaXMucHJvcHNbcHJvcF07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldHVwRXZlbnRzKCkge1xuICAgICAgICBmb3IgKGNvbnN0IGV2ZW50IGluIHRoaXMuZXZlbnRzKSB7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgdGhpcy5ldmVudHNbZXZlbnRdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgbG9hZE9wdGlvbnNGcm9tUm91dGUoKSB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMucm91dGU/LnNuYXBzaG90LnBhcmFtcztcbiAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMucm91dGU/LnNuYXBzaG90LmRhdGE7XG4gICAgICAgIHRoaXMuX2Jsb2NrVHlwZSA9IGRhdGE/LmJsb2NrVHlwZSB8fCAnU2V0dGluZ3NCbG9jayc7XG5cbiAgICAgICAgY29uc3Qgc2x1Z05hbWUgPSBwYXJhbXM/LnNsdWdOYW1lIHx8IGRhdGE/LnNsdWdOYW1lO1xuICAgICAgICBjb25zdCBibG9ja05hbWUgPSBwYXJhbXM/LmJsb2NrTmFtZSB8fCBkYXRhPy5ibG9ja05hbWU7XG4gICAgICAgIFxuICAgICAgICBpZiAoYmxvY2tOYW1lPy5sZW5ndGggPiAwIHx8IChzbHVnTmFtZT8ubGVuZ3RoID4gMCAmJiB0aGlzLl9ibG9ja1R5cGUgPT09ICdTZXR0aW5nc0Jsb2NrJykpIHtcbiAgICAgICAgICAgIGNvbnN0IGFkZG9uVVVJRCA9IHBhcmFtcz8uYWRkb25VVUlEIHx8IGRhdGE/LmFkZG9uVVVJRCB8fCAnJztcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrUmVtb3RlRW50cnkgPSBkYXRhPy5ibG9ja1JlbW90ZUVudHJ5IHx8ICcnO1xuXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMgPSBhd2FpdCB0aGlzLnJlbW90ZUxvYWRlclNlcnZpY2UuZ2V0QmxvY2tSZW1vdGVMb2FkZXJPcHRpb25zKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBibG9ja05hbWUsXG4gICAgICAgICAgICAgICAgc2x1Z05hbWUsXG4gICAgICAgICAgICAgICAgYmxvY2tUeXBlOiB0aGlzLl9ibG9ja1R5cGUsXG4gICAgICAgICAgICAgICAgYWRkb25VVUlELFxuICAgICAgICAgICAgICAgIGJsb2NrUmVtb3RlRW50cnlcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBmaWxlTmFtZSA9IGAke3RoaXMub3B0aW9uc1sncmVtb3RlTmFtZSddfS5qc2A7XG5cbiAgICAgICAgICAgIGlmICh3aW5kb3cubG9jYXRpb24uc2VhcmNoLmluZGV4T2YoJ2Rldj10cnVlJykgPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zWydyZW1vdGVFbnRyeSddID0gYGh0dHA6Ly9sb2NhbGhvc3Q6NDQwMC8ke2ZpbGVOYW1lfWA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFNldCB0aGUgZGF0YSBpbnRvIHRoZSBwcm9wcyBjYXVzZSB0aGlzIGNvbXBvbmVudCBpcyBsb2FkaW5nIGZyb20gdGhlIHJvdXRlLlxuICAgICAgICAgICAgdGhpcy5wcm9wcyA9IGRhdGE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmVsZW1lbnQpIHJldHVybjtcblxuICAgICAgICB0aGlzLnBvcHVsYXRlUHJvcHMoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZWxlbWVudCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5ldmVudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBldmVudCBpbiB0aGlzLmV2ZW50cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgdGhpcy5ldmVudHNbZXZlbnRdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gQURPIDEwMzY2NjA6IEZpeCBSZWFjdCB0ZWFyZG93biByYWNlIGluIGhvc3RlZCB3ZWItY29tcG9uZW50cy5cbiAgICAgICAgICAgICAgICAvLyBUaGUgaG9zdCAoQW5ndWxhcikgbWF5IGRlc3Ryb3kvcmVtb3ZlIHRoZSBlbGVtZW50IHN1YnRyZWUgd2hpbGUgdGhlIHJlbW90ZSAoUmVhY3QpIGlzIHN0aWxsXG4gICAgICAgICAgICAgICAgLy8gdW5tb3VudGluZywgd2hpY2ggY2FuIHN1cmZhY2UgYXMgYE5vdEZvdW5kRXJyb3I6IEZhaWxlZCB0byBleGVjdXRlICdyZW1vdmVDaGlsZCcgb24gJ05vZGUnYC5cbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgcmVtb3RlIGVsZW1lbnQgZXhwb3NlcyBgcGVwcGVyaVVubW91bnQoKWAsIGNhbGwgaXQgaGVyZSB0byBsZXQgaXQgY2xlYW51cCBiZWZvcmUgRE9NIHJlbW92YWwuXG5cbiAgICAgICAgICAgICAgICBjb25zdCBlbFRvVW5tb3VudCA9IHRoaXMuZWxlbWVudDtcbiAgICAgICAgICAgICAgICBsZXQgcGFya2VkQ29udGFpbmVyOiBIVE1MRGl2RWxlbWVudCA9IG51bGw7XG4gICAgICAgICAgICAgICAgY29uc3QgY2xlYW51cCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJrZWRDb250YWluZXI/LnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJrZWRDb250YWluZXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChwYXJrZWRDb250YWluZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlnbm9yZVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIC8vIERldGFjaCB0aGUgcmVtb3RlIGVsZW1lbnQgc3VidHJlZSBzbyBBbmd1bGFyIGRlc3Ryb3lpbmcgdGhpcyBob3N0IHdvbid0IHJlbW92ZSBpdCB3aGlsZSBSZWFjdCBpcyBzdGlsbCB1bm1vdW50aW5nLlxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnICYmIGVsVG9Vbm1vdW50Py5wYXJlbnROb2RlICYmIGRvY3VtZW50LmJvZHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmtlZENvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFya2VkQ29udGFpbmVyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHBhcmtlZENvbnRhaW5lcik7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJrZWRDb250YWluZXIuYXBwZW5kQ2hpbGQoZWxUb1VubW91bnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlnbm9yZVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGFueUVsID0gZWxUb1VubW91bnQgYXMgYW55O1xuICAgICAgICAgICAgICAgIGNvbnN0IG1heWJlVW5tb3VudCA9IGFueUVsPy5wZXBwZXJpVW5tb3VudDtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG1heWJlVW5tb3VudCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzID0gbWF5YmVVbm1vdW50LmNhbGwoYW55RWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAmJiB0eXBlb2YgcmVzLnRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMuZmluYWxseSgoKSA9PiBjbGVhbnVwKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhbnVwKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhbnVwKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjbGVhbnVwKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgLy8gaWdub3JlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZWxlbWVudCA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMb2FkcyB0aGUgcmVtb3RlIEpTIGJ1bmRsZSBhcyBhIHNjcmlwdCB0YWcgZm9yIHdlYiBjb21wb25lbnQgcmVtb3Rlcy5cbiAgICAgKiBJZiB0aGUgc2NyaXB0IGlzIGFscmVhZHkgbG9hZGVkLCByZXNvbHZlcyBpbW1lZGlhdGVseS5cbiAgICAgKi9cbiAgICAvLyBwcml2YXRlIGFzeW5jIGxvYWRSZW1vdGVTY3JpcHQocmVtb3RlRW50cnlVcmw6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgLy8gICAgIHJldHVybiBuZXcgUHJvbWlzZTxhbnk+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAvLyAgICAgICAgIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBzY3JpcHRbc3JjPVwiJHtyZW1vdGVFbnRyeVVybH1cIl1gKSkge1xuICAgIC8vICAgICAgICAgICAgIC8vIElmIHNjcmlwdCBpcyBhbHJlYWR5IGxvYWRlZCwgdHJ5IHRvIGdldCB0aGUgbW9kdWxlXG4gICAgLy8gICAgICAgICAgICAgaW1wb3J0KHJlbW90ZUVudHJ5VXJsKS50aGVuKG1vZHVsZSA9PiB7XG4gICAgLy8gICAgICAgICAgICAgICAgIGlmIChtb2R1bGUgJiYgbW9kdWxlLmluaXQpIHtcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgIG1vZHVsZS5pbml0KCk7XG4gICAgLy8gICAgICAgICAgICAgICAgIH1cbiAgICAvLyAgICAgICAgICAgICAgICAgcmVzb2x2ZShtb2R1bGUpO1xuICAgIC8vICAgICAgICAgICAgIH0pLmNhdGNoKGVyciA9PiByZWplY3QoZXJyKSk7XG4gICAgLy8gICAgICAgICAgICAgcmV0dXJuO1xuICAgIC8vICAgICAgICAgfVxuICAgIFxuICAgIC8vICAgICAgICAgY29uc3Qgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gICAgLy8gICAgICAgICBzY3JpcHQudHlwZSA9ICdtb2R1bGUnO1xuICAgIC8vICAgICAgICAgc2NyaXB0LnNyYyA9IHJlbW90ZUVudHJ5VXJsO1xuICAgICAgICAgICAgXG4gICAgLy8gICAgICAgICBzY3JpcHQub25sb2FkID0gKCkgPT4ge1xuICAgIC8vICAgICAgICAgICAgIC8vIEFmdGVyIHNjcmlwdCBpcyBsb2FkZWQsIGR5bmFtaWNhbGx5IGltcG9ydCBpdCB0byBnZXQgdGhlIG1vZHVsZVxuICAgIC8vICAgICAgICAgICAgIGltcG9ydChyZW1vdGVFbnRyeVVybCkudGhlbihtb2R1bGUgPT4ge1xuICAgIC8vICAgICAgICAgICAgICAgICBpZiAobW9kdWxlICYmIG1vZHVsZS5pbml0KSB7XG4gICAgLy8gICAgICAgICAgICAgICAgICAgICBtb2R1bGUuaW5pdCgpO1xuICAgIC8vICAgICAgICAgICAgICAgICB9XG4gICAgLy8gICAgICAgICAgICAgICAgIHJlc29sdmUobW9kdWxlKTtcbiAgICAvLyAgICAgICAgICAgICB9KS5jYXRjaChlcnIgPT4gcmVqZWN0KGVycikpO1xuICAgIC8vICAgICAgICAgfTtcbiAgICAgICAgICAgIFxuICAgIC8vICAgICAgICAgc2NyaXB0Lm9uZXJyb3IgPSAoZXJyKSA9PiByZWplY3QoZXJyKTtcbiAgICAvLyAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcbiAgICAvLyAgICAgfSk7XG4gICAgLy8gfVxuXG4gICAgcHJpdmF0ZSBsb2FkRWxlbWVudEZyb21Nb2R1bGUoKSB7XG5cbiAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnMpIHtcbiAgICAgICAgICAgIC8vIHRocm93IG5ldyBFcnJvcignTm8gb3B0aW9ucyBzdXBwbGllZCB0byB0aGUgY29tcG9uZW50LicpO1xuICAgICAgICAgICAgY29uc29sZS5pbmZvKCdObyBvcHRpb25zIHN1cHBsaWVkIHRvIHRoZSBjb21wb25lbnQuJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zPy5hZGRvbklkICYmICh0aGlzLm9wdGlvbnMudHlwZSA9PT0gJ21vZHVsZScgfHwgdGhpcy5vcHRpb25zLnR5cGUgPT09ICdzY3JpcHQnKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RTbGFzaEluZGV4ID0gdGhpcy5vcHRpb25zLnJlbW90ZUVudHJ5Py5sYXN0SW5kZXhPZignLycpIHx8IC0xO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGlmIChsYXN0U2xhc2hJbmRleCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHVibGljUGF0aCA9IHRoaXMub3B0aW9ucy5yZW1vdGVFbnRyeS5zdWJzdHJpbmcoMCwgbGFzdFNsYXNoSW5kZXggKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wZXBBZGRvblNlcnZpY2Uuc2V0QWRkb25TdGF0aWNGb2xkZXIocHVibGljUGF0aCwgdGhpcy5vcHRpb25zLmFkZG9uSWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgICAgICAgLy8gdGhpcy5sb2FkUmVtb3RlU2NyaXB0KHRoaXMub3B0aW9uc1sncmVtb3RlRW50cnknXSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBsb2FkUmVtb3RlTW9kdWxlKHRoaXMub3B0aW9ucykudGhlbigobSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnROYW1lID0gdGhpcy5vcHRpb25zLmVsZW1lbnROYW1lO1xuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCh0aGlzLl9lbGVtZW50TmFtZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3B1bGF0ZVByb3BzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXR1cEV2ZW50cygpO1xuICAgIFxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5lbC5uYXRpdmVFbGVtZW50LCB0aGlzLmVsZW1lbnQpO1xuICAgIFxuICAgICAgICAgICAgICAgIC8vIEZpeCBpbnRlcm5hbCByb3V0aW5nIGJ1Zy5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fYmxvY2tUeXBlID09PSAnU2V0dGluZ3NCbG9jaycpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wZXBBZGRvblNlcnZpY2UuY29ubmVjdEludGVybmFsUm91dGVyKHRoaXMuX2VsZW1lbnROYW1lKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkLmVtaXQoKTtcbiAgICAgICAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBpZiAoIXRoaXMuZWxlbWVudCkgeyBtYXliZSB0aGUgbG9hZCBvZiB0aGUgZWxlbWVudCBpcyB0b28gbG9uZyBzbyBjaGFuZ2UgdG8gZmxhZy5cbiAgICAgICAgICAgIGlmICghdGhpcy5fYWxyZWFkeUxvYWRlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2FscmVhZHlMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIC8vIElmIHRoZSBvcHRpb25zIGlzIG5vdCBzdXBwbGllZCB0aGVuIHdlIG5lZWQgdG8gZ2V0IGl0IGZyb20gdGhlIHJvdXRlLlxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5vcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZE9wdGlvbnNGcm9tUm91dGUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZEVsZW1lbnRGcm9tTW9kdWxlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZEVsZW1lbnRGcm9tTW9kdWxlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgfVxuICAgIH1cbn0iXX0=
293
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWxvYWRlci1lbGVtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWIvcmVtb3RlLWxvYWRlci9yZW1vdGUtbG9hZGVyLWVsZW1lbnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQXdCLFFBQVEsRUFBRSxNQUFNLEVBQTBDLE1BQU0sZUFBZSxDQUFDO0FBRTdLLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7QUF5QjFELE1BQU0sT0FBTywrQkFBK0I7SUFheEMsMkJBQTJCO0lBQzNCLHlHQUF5RztJQUN6RyxpR0FBaUc7SUFDakcsOEZBQThGO0lBQzlGLElBQUk7SUFFSixZQUNZLFFBQW1CLEVBQ25CLEVBQWEsRUFDYixlQUFnQyxFQUNoQyxtQkFBMkMsRUFDL0IsS0FBcUI7UUFKakMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixPQUFFLEdBQUYsRUFBRSxDQUFXO1FBQ2Isb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBd0I7UUFDL0IsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFuQm5DLFNBQUksR0FBdUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUV4RCxZQUFPLEdBQWdCLElBQUksQ0FBQztRQUVwQixpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLDBCQUFxQixHQUFpQixJQUFJLENBQUM7SUFlbkQsQ0FBQztJQUVPLGFBQWE7UUFDakIsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQzNCLElB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Q0FBQyxLQUFLLENBQUMsQ0FBQztTQUN4QjtJQUNMLENBQUM7OzRIQXZTUSwrQkFBK0I7Z0hBQS9CLCtCQUErQixtTEFWOUI7O0tBRVQ7MkZBUVEsK0JBQStCO2tCQVozQyxTQUFTOytCQUNJLDJCQUEyQixZQUMzQjs7S0FFVDs7MEJBZ0NJLFFBQVE7NENBdkJKLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUVJLElBQUk7c0JBQWIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9wdGlvbmFsLCBPdXRwdXQsIFJlbmRlcmVyMiwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBsb2FkUmVtb3RlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXItYXJjaGl0ZWN0cy9tb2R1bGUtZmVkZXJhdGlvbic7XG5pbXBvcnQgeyBQZXBBZGRvblNlcnZpY2UgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYic7XG5pbXBvcnQgeyBQZXBSZW1vdGVMb2FkZXJPcHRpb25zIH0gZnJvbSAnLi9yZW1vdGUtbG9hZGVyLm1vZGVsJztcbmltcG9ydCB7IFBlcFJlbW90ZUxvYWRlclNlcnZpY2UgfSBmcm9tICcuL3JlbW90ZS1sb2FkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcyc7XG5cbmludGVyZmFjZSBCbG9ja1JlbW90ZUxvYWRlck9wdGlvbnNEYXRhIHsgXG4gICAgbmFtZT86IHN0cmluZywgXG4gICAgc2x1Z05hbWU/OiBzdHJpbmcsIFxuICAgIGJsb2NrVHlwZT86IHN0cmluZywgXG4gICAgYWRkb25VVUlEPzogc3RyaW5nLCBcbiAgICBibG9ja1JlbW90ZUVudHJ5Pzogc3RyaW5nIFxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3BlcC1yZW1vdGUtbG9hZGVyLWVsZW1lbnQnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDwhLS08ZGl2ICN2YyBzdHlsZT1cImhlaWdodDogaW5oZXJpdDtcIj48L2Rpdj4tLT5cbiAgICBgLFxuICAgIHN0eWxlczogW2BcbiAgICAgICAgOmhvc3QgeyB3aWR0aDoxMDAlOyBoZWlnaHQ6IGluaGVyaXQ7IG92ZXJmbG93OiBpbmhlcml0OyB9XG4gICAgICAgIDpob3N0OjpuZy1kZWVwID4gKiB7XG4gICAgICAgICAgICBoZWlnaHQ6IGluaGVyaXQ7XG4gICAgICAgIH1cbiAgICBgXSxcbn0pXG5leHBvcnQgY2xhc3MgUGVwUmVtb3RlTG9hZGVyRWxlbWVudENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSBvcHRpb25zOiBQZXBSZW1vdGVMb2FkZXJPcHRpb25zO1xuICAgIEBJbnB1dCgpIHByb3BzOiB7IFtwcm9wOiBzdHJpbmddOiB1bmtub3duIH07XG4gICAgQElucHV0KCkgZXZlbnRzOiB7IFtldmVudDogc3RyaW5nXTogKGV2ZW50OiBFdmVudCkgPT4gdm9pZCB9O1xuXG4gICAgQE91dHB1dCgpIGxvYWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gIG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIGVsZW1lbnQ6IEhUTUxFbGVtZW50ID0gbnVsbDtcblxuICAgIHByaXZhdGUgX2VsZW1lbnROYW1lID0gJyc7XG4gICAgcHJpdmF0ZSBfYmxvY2tUeXBlID0gJyc7XG4gICAgcHJpdmF0ZSBfYWxyZWFkeUxvYWRlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgX3JvdXRlVXJsU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBudWxsO1xuICAgIC8vIC8vIFRoaXMgaXMgZm9yIGRlYm91bmNlLlxuICAgIC8vIHByaXZhdGUgX2dldEJsb2NrUmVtb3RlTG9hZGVyT3B0aW9uc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEJsb2NrUmVtb3RlTG9hZGVyT3B0aW9uc0RhdGE+KG51bGwpO1xuICAgIC8vIGdldCBnZXRCbG9ja1JlbW90ZUxvYWRlck9wdGlvbnNEZWJvdW5jZWRTdWJqZWN0JCgpOiBPYnNlcnZhYmxlPEJsb2NrUmVtb3RlTG9hZGVyT3B0aW9uc0RhdGE+IHtcbiAgICAvLyAgICAgcmV0dXJuIHRoaXMuX2dldEJsb2NrUmVtb3RlTG9hZGVyT3B0aW9uc1N1YmplY3QuYXNPYnNlcnZhYmxlKCkucGlwZShkZWJvdW5jZVRpbWUoMjUwKSk7XG4gICAgLy8gfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgcHJpdmF0ZSBlbDpFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHBlcEFkZG9uU2VydmljZTogUGVwQWRkb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlbW90ZUxvYWRlclNlcnZpY2U6IFBlcFJlbW90ZUxvYWRlclNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlXG4gICAgKSB7IFxuXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwb3B1bGF0ZVByb3BzKCkge1xuICAgICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdGhpcy5wcm9wcykge1xuICAgICAgICAgICAgdGhpcy5lbGVtZW50W3Byb3BdID0gdGhpcy5wcm9wc1twcm9wXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0dXBFdmVudHMoKSB7XG4gICAgICAgIGZvciAoY29uc3QgZXZlbnQgaW4gdGhpcy5ldmVudHMpIHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCB0aGlzLmV2ZW50c1tldmVudF0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBsb2FkT3B0aW9uc0Zyb21Sb3V0ZSgpIHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0gdGhpcy5yb3V0ZT8uc25hcHNob3QucGFyYW1zO1xuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5yb3V0ZT8uc25hcHNob3QuZGF0YTtcbiAgICAgICAgdGhpcy5fYmxvY2tUeXBlID0gZGF0YT8uYmxvY2tUeXBlIHx8ICdTZXR0aW5nc0Jsb2NrJztcblxuICAgICAgICBjb25zdCBzbHVnTmFtZSA9IHBhcmFtcz8uc2x1Z05hbWUgfHwgZGF0YT8uc2x1Z05hbWU7XG4gICAgICAgIGNvbnN0IGJsb2NrTmFtZSA9IHBhcmFtcz8uYmxvY2tOYW1lIHx8IGRhdGE/LmJsb2NrTmFtZTtcblxuICAgICAgICBpZiAoYmxvY2tOYW1lPy5sZW5ndGggPiAwIHx8IChzbHVnTmFtZT8ubGVuZ3RoID4gMCAmJiB0aGlzLl9ibG9ja1R5cGUgPT09ICdTZXR0aW5nc0Jsb2NrJykpIHtcbiAgICAgICAgICAgIGNvbnN0IGFkZG9uVVVJRCA9IHBhcmFtcz8uYWRkb25VVUlEIHx8IGRhdGE/LmFkZG9uVVVJRCB8fCAnJztcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrUmVtb3RlRW50cnkgPSBkYXRhPy5ibG9ja1JlbW90ZUVudHJ5IHx8ICcnO1xuXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMgPSBhd2FpdCB0aGlzLnJlbW90ZUxvYWRlclNlcnZpY2UuZ2V0QmxvY2tSZW1vdGVMb2FkZXJPcHRpb25zKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBibG9ja05hbWUsXG4gICAgICAgICAgICAgICAgc2x1Z05hbWUsXG4gICAgICAgICAgICAgICAgYmxvY2tUeXBlOiB0aGlzLl9ibG9ja1R5cGUsXG4gICAgICAgICAgICAgICAgYWRkb25VVUlELFxuICAgICAgICAgICAgICAgIGJsb2NrUmVtb3RlRW50cnlcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBmaWxlTmFtZSA9IGAke3RoaXMub3B0aW9uc1sncmVtb3RlTmFtZSddfS5qc2A7XG5cbiAgICAgICAgICAgIGlmICh3aW5kb3cubG9jYXRpb24uc2VhcmNoLmluZGV4T2YoJ2Rldj10cnVlJykgPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zWydyZW1vdGVFbnRyeSddID0gYGh0dHA6Ly9sb2NhbGhvc3Q6NDQwMC8ke2ZpbGVOYW1lfWA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFNldCB0aGUgZGF0YSBpbnRvIHRoZSBwcm9wcyBjYXVzZSB0aGlzIGNvbXBvbmVudCBpcyBsb2FkaW5nIGZyb20gdGhlIHJvdXRlLlxuICAgICAgICAgICAgdGhpcy5wcm9wcyA9IGRhdGE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmVsZW1lbnQpIHJldHVybjtcblxuICAgICAgICB0aGlzLnBvcHVsYXRlUHJvcHMoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5fcm91dGVVcmxTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX3JvdXRlVXJsU3Vic2NyaXB0aW9uID0gbnVsbDtcblxuICAgICAgICBpZiAodGhpcy5fYmxvY2tUeXBlID09PSAnU2V0dGluZ3NCbG9jaycgJiYgdGhpcy5fZWxlbWVudE5hbWUpIHtcbiAgICAgICAgICAgIHRoaXMucGVwQWRkb25TZXJ2aWNlLmRpc2Nvbm5lY3RJbnRlcm5hbFJvdXRlcih0aGlzLl9lbGVtZW50TmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5lbGVtZW50KSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmV2ZW50cykge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGV2ZW50IGluIHRoaXMuZXZlbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50LCB0aGlzLmV2ZW50c1tldmVudF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBBRE8gMTAzNjY2MDogRml4IFJlYWN0IHRlYXJkb3duIHJhY2UgaW4gaG9zdGVkIHdlYi1jb21wb25lbnRzLlxuICAgICAgICAgICAgICAgIC8vIFRoZSBob3N0IChBbmd1bGFyKSBtYXkgZGVzdHJveS9yZW1vdmUgdGhlIGVsZW1lbnQgc3VidHJlZSB3aGlsZSB0aGUgcmVtb3RlIChSZWFjdCkgaXMgc3RpbGxcbiAgICAgICAgICAgICAgICAvLyB1bm1vdW50aW5nLCB3aGljaCBjYW4gc3VyZmFjZSBhcyBgTm90Rm91bmRFcnJvcjogRmFpbGVkIHRvIGV4ZWN1dGUgJ3JlbW92ZUNoaWxkJyBvbiAnTm9kZSdgLlxuICAgICAgICAgICAgICAgIC8vIElmIHRoZSByZW1vdGUgZWxlbWVudCBleHBvc2VzIGBwZXBwZXJpVW5tb3VudCgpYCwgY2FsbCBpdCBoZXJlIHRvIGxldCBpdCBjbGVhbnVwIGJlZm9yZSBET00gcmVtb3ZhbC5cblxuICAgICAgICAgICAgICAgIGNvbnN0IGVsVG9Vbm1vdW50ID0gdGhpcy5lbGVtZW50O1xuICAgICAgICAgICAgICAgIGxldCBwYXJrZWRDb250YWluZXI6IEhUTUxEaXZFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgICAgICAgICBjb25zdCBjbGVhbnVwID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmtlZENvbnRhaW5lcj8ucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmtlZENvbnRhaW5lci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHBhcmtlZENvbnRhaW5lcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWdub3JlXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgLy8gRGV0YWNoIHRoZSByZW1vdGUgZWxlbWVudCBzdWJ0cmVlIHNvIEFuZ3VsYXIgZGVzdHJveWluZyB0aGlzIGhvc3Qgd29uJ3QgcmVtb3ZlIGl0IHdoaWxlIFJlYWN0IGlzIHN0aWxsIHVubW91bnRpbmcuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgZWxUb1VubW91bnQ/LnBhcmVudE5vZGUgJiYgZG9jdW1lbnQuYm9keSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFya2VkQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJrZWRDb250YWluZXIuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocGFya2VkQ29udGFpbmVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmtlZENvbnRhaW5lci5hcHBlbmRDaGlsZChlbFRvVW5tb3VudCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gaWdub3JlXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgYW55RWwgPSBlbFRvVW5tb3VudCBhcyBhbnk7XG4gICAgICAgICAgICAgICAgY29uc3QgbWF5YmVVbm1vdW50ID0gYW55RWw/LnBlcHBlcmlVbm1vdW50O1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgbWF5YmVVbm1vdW50ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBtYXliZVVubW91bnQuY2FsbChhbnlFbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICYmIHR5cGVvZiByZXMudGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5maW5hbGx5KCgpID0+IGNsZWFudXAoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFudXAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFudXAoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNsZWFudXAoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgICAgICAvLyBpZ25vcmVcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5lbGVtZW50ID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIExvYWRzIHRoZSByZW1vdGUgSlMgYnVuZGxlIGFzIGEgc2NyaXB0IHRhZyBmb3Igd2ViIGNvbXBvbmVudCByZW1vdGVzLlxuICAgICAqIElmIHRoZSBzY3JpcHQgaXMgYWxyZWFkeSBsb2FkZWQsIHJlc29sdmVzIGltbWVkaWF0ZWx5LlxuICAgICAqL1xuICAgIC8vIHByaXZhdGUgYXN5bmMgbG9hZFJlbW90ZVNjcmlwdChyZW1vdGVFbnRyeVVybDogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICAvLyAgICAgcmV0dXJuIG5ldyBQcm9taXNlPGFueT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIC8vICAgICAgICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYHNjcmlwdFtzcmM9XCIke3JlbW90ZUVudHJ5VXJsfVwiXWApKSB7XG4gICAgLy8gICAgICAgICAgICAgLy8gSWYgc2NyaXB0IGlzIGFscmVhZHkgbG9hZGVkLCB0cnkgdG8gZ2V0IHRoZSBtb2R1bGVcbiAgICAvLyAgICAgICAgICAgICBpbXBvcnQocmVtb3RlRW50cnlVcmwpLnRoZW4obW9kdWxlID0+IHtcbiAgICAvLyAgICAgICAgICAgICAgICAgaWYgKG1vZHVsZSAmJiBtb2R1bGUuaW5pdCkge1xuICAgIC8vICAgICAgICAgICAgICAgICAgICAgbW9kdWxlLmluaXQoKTtcbiAgICAvLyAgICAgICAgICAgICAgICAgfVxuICAgIC8vICAgICAgICAgICAgICAgICByZXNvbHZlKG1vZHVsZSk7XG4gICAgLy8gICAgICAgICAgICAgfSkuY2F0Y2goZXJyID0+IHJlamVjdChlcnIpKTtcbiAgICAvLyAgICAgICAgICAgICByZXR1cm47XG4gICAgLy8gICAgICAgICB9XG4gICAgXG4gICAgLy8gICAgICAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICAvLyAgICAgICAgIHNjcmlwdC50eXBlID0gJ21vZHVsZSc7XG4gICAgLy8gICAgICAgICBzY3JpcHQuc3JjID0gcmVtb3RlRW50cnlVcmw7XG4gICAgICAgICAgICBcbiAgICAvLyAgICAgICAgIHNjcmlwdC5vbmxvYWQgPSAoKSA9PiB7XG4gICAgLy8gICAgICAgICAgICAgLy8gQWZ0ZXIgc2NyaXB0IGlzIGxvYWRlZCwgZHluYW1pY2FsbHkgaW1wb3J0IGl0IHRvIGdldCB0aGUgbW9kdWxlXG4gICAgLy8gICAgICAgICAgICAgaW1wb3J0KHJlbW90ZUVudHJ5VXJsKS50aGVuKG1vZHVsZSA9PiB7XG4gICAgLy8gICAgICAgICAgICAgICAgIGlmIChtb2R1bGUgJiYgbW9kdWxlLmluaXQpIHtcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgIG1vZHVsZS5pbml0KCk7XG4gICAgLy8gICAgICAgICAgICAgICAgIH1cbiAgICAvLyAgICAgICAgICAgICAgICAgcmVzb2x2ZShtb2R1bGUpO1xuICAgIC8vICAgICAgICAgICAgIH0pLmNhdGNoKGVyciA9PiByZWplY3QoZXJyKSk7XG4gICAgLy8gICAgICAgICB9O1xuICAgICAgICAgICAgXG4gICAgLy8gICAgICAgICBzY3JpcHQub25lcnJvciA9IChlcnIpID0+IHJlamVjdChlcnIpO1xuICAgIC8vICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3JpcHQpO1xuICAgIC8vICAgICB9KTtcbiAgICAvLyB9XG5cbiAgICBwcml2YXRlIGxvYWRFbGVtZW50RnJvbU1vZHVsZSgpIHtcblxuICAgICAgICBpZiAoIXRoaXMub3B0aW9ucykge1xuICAgICAgICAgICAgLy8gdGhyb3cgbmV3IEVycm9yKCdObyBvcHRpb25zIHN1cHBsaWVkIHRvIHRoZSBjb21wb25lbnQuJyk7XG4gICAgICAgICAgICBjb25zb2xlLmluZm8oJ05vIG9wdGlvbnMgc3VwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC4nKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnM/LmFkZG9uSWQgJiYgKHRoaXMub3B0aW9ucy50eXBlID09PSAnbW9kdWxlJyB8fCB0aGlzLm9wdGlvbnMudHlwZSA9PT0gJ3NjcmlwdCcpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGFzdFNsYXNoSW5kZXggPSB0aGlzLm9wdGlvbnMucmVtb3RlRW50cnk/Lmxhc3RJbmRleE9mKCcvJykgfHwgLTE7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgaWYgKGxhc3RTbGFzaEluZGV4ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwdWJsaWNQYXRoID0gdGhpcy5vcHRpb25zLnJlbW90ZUVudHJ5LnN1YnN0cmluZygwLCBsYXN0U2xhc2hJbmRleCArIDEpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBlcEFkZG9uU2VydmljZS5zZXRBZGRvblN0YXRpY0ZvbGRlcihwdWJsaWNQYXRoLCB0aGlzLm9wdGlvbnMuYWRkb25JZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gVGhlIHJlbW90ZSByZWFkcyB3aW5kb3cubG9jYXRpb24gb25jZSwgc3luY2hyb25vdXNseSwgZHVyaW5nIGl0cyBvd24gYm9vdHN0cmFwIOKAlFxuICAgICAgICAgICAgLy8gaXRzIGludGVybmFsIHJvdXRlci1zeW5jIChzZWUgZS5nLiBAYW5ndWxhci1hcmNoaXRlY3RzL21vZHVsZS1mZWRlcmF0aW9uLXRvb2xzJ1xuICAgICAgICAgICAgLy8gY29ubmVjdFJvdXRlcikgYXNzdW1lcyBhIHBhdGggcmVsYXRpdmUgdG8gcmVhbCByb290LCBhbmQgdXNlcyB3aGF0ZXZlciBzaGFwZSBpdFxuICAgICAgICAgICAgLy8gc2VlcyB0byBkZWNpZGUgd2hpY2ggbGVhZGluZyBzZWdtZW50cyBhcmUgaXRzIG93biBmaXhlZCBcImNvbnRhaW5lciByb3V0ZVwiIHZzLiBhXG4gICAgICAgICAgICAvLyBsYXRlci1yZXBsYWNlYWJsZSBjaGlsZCBzZWdtZW50LiBJZiB0aGlzIHNoZWxsIGlzIHNlcnZlZCB1bmRlciBpdHMgb3duIGJhc2UgaHJlZlxuICAgICAgICAgICAgLy8gKGUuZy4gZGV2LW9ubHkgL2FuZ3VsYXIg4oCUIHNlZSBhbmd1bGFyLmpzb24ncyBiYXNlSHJlZi9zZXJ2ZVBhdGgpLCBicmllZmx5IHByZXNlbnRcbiAgICAgICAgICAgIC8vIHRoZSByZW1vdGUgd2l0aCB0aGUgYmFzZS1zdHJpcHBlZCBwYXRoIGZvciB0aGUgZHVyYXRpb24gb2YgdGhpcyBvbmUtdGltZSBsb2FkLCBzb1xuICAgICAgICAgICAgLy8gaXQgbG9ja3MgaW4gdGhlIHNhbWUgY29udGFpbmVyLXJvdXRlIHNoYXBlIGl0IHdvdWxkIHNlZSBhdCByZWFsIHJvb3QgKGUuZy4gdW5kZXJcbiAgICAgICAgICAgIC8vIFJlYWN0KSDigJQgdGhlbiByZXN0b3JlIHRoZSByZWFsIGFkZHJlc3MgaW1tZWRpYXRlbHkgYWZ0ZXIuIFNhZmU6IHRoaXMgY29tcG9uZW50XG4gICAgICAgICAgICAvLyBpc24ndCByZW5kZXJpbmcgYW55dGhpbmcgdW50aWwgdGhlIHByb21pc2UgcmVzb2x2ZXMgYW55d2F5LCBhbmQgcmVwbGFjZVN0YXRlIG5ldmVyXG4gICAgICAgICAgICAvLyBmaXJlcyBwb3BzdGF0ZSwgc28gdGhpcyBzaGVsbCdzIG93biBSb3V0ZXIgbmV2ZXIgb2JzZXJ2ZXMgdGhlIHN3YXAuXG4gICAgICAgICAgICBjb25zdCBpc1NldHRpbmdzQmxvY2sgPSB0aGlzLl9ibG9ja1R5cGUgPT09ICdTZXR0aW5nc0Jsb2NrJztcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsVXJsID0gYCR7bG9jYXRpb24ucGF0aG5hbWV9JHtsb2NhdGlvbi5zZWFyY2h9JHtsb2NhdGlvbi5oYXNofWA7XG4gICAgICAgICAgICBjb25zdCBzdHJpcHBlZFBhdGggPSBQZXBBZGRvblNlcnZpY2Uuc3RyaXBCYXNlSHJlZihsb2NhdGlvbi5wYXRobmFtZSk7XG4gICAgICAgICAgICBjb25zdCBzaG91bGRTd2FwVXJsID0gaXNTZXR0aW5nc0Jsb2NrICYmIHN0cmlwcGVkUGF0aCAhPT0gbG9jYXRpb24ucGF0aG5hbWU7XG4gICAgICAgICAgICAvLyBCeXBhc3MgdGhpcyBzaGVsbCdzIG93biBiYXNlLWhyZWYtcmVzdG9yaW5nIGhpc3RvcnkgZ3VhcmQgKHNlZSBib290c3RyYXAudHMpIGZvclxuICAgICAgICAgICAgLy8gdGhpcyBvbmUsIGRlbGliZXJhdGUgc3dhcCDigJQgb3RoZXJ3aXNlIGl0IHNpbGVudGx5IHJldmVydHMgaXQgYmVmb3JlIHRoZSByZW1vdGVcbiAgICAgICAgICAgIC8vIGV2ZXIgcmVhZHMgbG9jYXRpb24ucGF0aG5hbWUuXG4gICAgICAgICAgICBjb25zdCB3aW4gPSB3aW5kb3cgYXMgYW55O1xuICAgICAgICAgICAgaWYgKHNob3VsZFN3YXBVcmwpIHtcbiAgICAgICAgICAgICAgICB3aW4uX19wZXBBbGxvd1Jhd0hpc3RvcnlXcml0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgaGlzdG9yeS5yZXBsYWNlU3RhdGUoaGlzdG9yeS5zdGF0ZSwgJycsIGAke3N0cmlwcGVkUGF0aH0ke2xvY2F0aW9uLnNlYXJjaH0ke2xvY2F0aW9uLmhhc2h9YCk7XG4gICAgICAgICAgICAgICAgd2luLl9fcGVwQWxsb3dSYXdIaXN0b3J5V3JpdGUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gZGVidWdnZXI7XG4gICAgICAgICAgICAvLyB0aGlzLmxvYWRSZW1vdGVTY3JpcHQodGhpcy5vcHRpb25zWydyZW1vdGVFbnRyeSddKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIGxvYWRSZW1vdGVNb2R1bGUodGhpcy5vcHRpb25zKS50aGVuKChtKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudE5hbWUgPSB0aGlzLm9wdGlvbnMuZWxlbWVudE5hbWU7XG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KHRoaXMuX2VsZW1lbnROYW1lKTtcbiAgICAgICAgICAgICAgICB0aGlzLnBvcHVsYXRlUHJvcHMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldHVwRXZlbnRzKCk7XG4gICAgXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIHRoaXMuZWxlbWVudCk7XG4gICAgXG4gICAgICAgICAgICAgICAgLy8gRml4IGludGVybmFsIHJvdXRpbmcgYnVnLlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9ibG9ja1R5cGUgPT09ICdTZXR0aW5nc0Jsb2NrJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBlcEFkZG9uU2VydmljZS5jb25uZWN0SW50ZXJuYWxSb3V0ZXIodGhpcy5fZWxlbWVudE5hbWUpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIEFuZ3VsYXIgcmV1c2VzIHRoaXMgU0FNRSBjb21wb25lbnQgaW5zdGFuY2UgYWNyb3NzIGEgY2hpbGQtc2VnbWVudC1vbmx5XG4gICAgICAgICAgICAgICAgICAgIC8vIHJvdXRlIGNoYW5nZSAoZS5nLiBzZXR0aW5nc19ibG9jay86dXVpZC86c2x1ZydzIG93biAnKionIGNoaWxkIHJvdXRlIGdvaW5nXG4gICAgICAgICAgICAgICAgICAgIC8vIGZyb20gLi4uL3BhZ2VzIHRvIC4uLi97cGFnZUtleX0pIOKAlCBuZ0FmdGVyQ29udGVudEluaXQgb25seSBmaXJlcyBvbmNlLCBzb1xuICAgICAgICAgICAgICAgICAgICAvLyB3aXRob3V0IHRoaXMgdGhlIGFkZG9uJ3Mgb3duIGludGVybmFsIHJvdXRlciBpcyBvbmx5IGV2ZXIgdG9sZCB0aGUgbG9jYXRpb25cbiAgICAgICAgICAgICAgICAgICAgLy8gYXQgaW5pdGlhbCBtb3VudCwgYW5kIG5ldmVyIGxlYXJucyBhYm91dCBhIGxhdGVyIGluLXBsYWNlIG5hdmlnYXRpb24uIHRoaXNcbiAgICAgICAgICAgICAgICAgICAgLy8gLnJvdXRlLnVybCAodW5saWtlIC5zbmFwc2hvdCkgZW1pdHMgYWdhaW4gb24gZXhhY3RseSB0aGF0IGtpbmQgb2YgY2hhbmdlLlxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yb3V0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcm91dGVVcmxTdWJzY3JpcHRpb24gPSB0aGlzLnJvdXRlLnVybC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGVwQWRkb25TZXJ2aWNlLmNvbm5lY3RJbnRlcm5hbFJvdXRlcih0aGlzLl9lbGVtZW50TmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMubG9hZC5lbWl0KCk7XG5cbiAgICAgICAgICAgICAgICAvLyBUaGUgcmVtb3RlJ3Mgb3duIGJvb3RzdHJhcCAoaXRzIGN1c3RvbSBlbGVtZW50J3MgY29ubmVjdGVkQ2FsbGJhY2ssIGp1c3RcbiAgICAgICAgICAgICAgICAvLyB0cmlnZ2VyZWQgYnkgYXBwZW5kQ2hpbGQgYWJvdmUpIGNhbiBkZWZlciBpdHMgYWN0dWFsIHJvdXRlci1zeW5jIHJlYWQgb2ZcbiAgICAgICAgICAgICAgICAvLyB3aW5kb3cubG9jYXRpb24gcGFzdCB0aGlzIHN5bmNocm9ub3VzIGJsb2NrICh6b25lLXNjaGVkdWxlZCBjaGFuZ2UgZGV0ZWN0aW9uLFxuICAgICAgICAgICAgICAgIC8vIGV0Yy4pIOKAlCBwdXNoIHRoZSByZXN0b3JlIG9uZSBtYWNyb3Rhc2sgb3V0IHNvIGl0IHJlbGlhYmx5IHJ1bnMgYWZ0ZXIgdGhhdCxcbiAgICAgICAgICAgICAgICAvLyBub3QgYmVmb3JlIGl0LlxuICAgICAgICAgICAgICAgIGlmIChzaG91bGRTd2FwVXJsKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxvY2F0aW9uLnBhdGhuYW1lID09PSBzdHJpcHBlZFBhdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW4uX19wZXBBbGxvd1Jhd0hpc3RvcnlXcml0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlzdG9yeS5yZXBsYWNlU3RhdGUoaGlzdG9yeS5zdGF0ZSwgJycsIG9yaWdpbmFsVXJsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW4uX19wZXBBbGxvd1Jhd0hpc3RvcnlXcml0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gaWYgKCF0aGlzLmVsZW1lbnQpIHsgbWF5YmUgdGhlIGxvYWQgb2YgdGhlIGVsZW1lbnQgaXMgdG9vIGxvbmcgc28gY2hhbmdlIHRvIGZsYWcuXG4gICAgICAgICAgICBpZiAoIXRoaXMuX2FscmVhZHlMb2FkZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9hbHJlYWR5TG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgb3B0aW9ucyBpcyBub3Qgc3VwcGxpZWQgdGhlbiB3ZSBuZWVkIHRvIGdldCBpdCBmcm9tIHRoZSByb3V0ZS5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMub3B0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRPcHRpb25zRnJvbVJvdXRlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRFbGVtZW50RnJvbU1vZHVsZSgpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRFbGVtZW50RnJvbU1vZHVsZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG59Il19
@@ -16,8 +16,9 @@ import * as i1$1 from '@pepperi-addons/ngx-lib/icon';
16
16
  import { pepIconArrowUp, pepIconArrowDown, PepIconModule } from '@pepperi-addons/ngx-lib/icon';
17
17
 
18
18
  class PepGroupButtonsComponent {
19
- constructor(layoutService) {
19
+ constructor(layoutService, changeDetectorRef) {
20
20
  this.layoutService = layoutService;
21
+ this.changeDetectorRef = changeDetectorRef;
21
22
  this.PepScreenSizeType = PepScreenSizeType;
22
23
  this.viewType = 'regular';
23
24
  this.styleType = 'weak';
@@ -37,6 +38,18 @@ class PepGroupButtonsComponent {
37
38
  // this.buttonClick.unsubscribe();
38
39
  // }
39
40
  }
41
+ // MatMenu's own trigger sets its internal `_panelAnimationState` to 'enter' synchronously
42
+ // right after this click is handled (see MatMenuTrigger.openMenu()), but MatMenu is an
43
+ // OnPush component, so that mutation alone never schedules a re-check of its view when this
44
+ // whole tree is bootstrapped via Angular Elements (createCustomElement) rather than a
45
+ // normally-bootstrapped app — the panel gets created and correctly positioned by CDK Overlay,
46
+ // but stays rendered at its initial 'void' (opacity: 0, scale(0.8)) keyframe forever. A plain
47
+ // Angular app happens to pick up the change through other CD activity elsewhere in the tree;
48
+ // Angular Elements doesn't, so nudge it explicitly, once the current synchronous click
49
+ // dispatch (which is what flips the animation state) has finished.
50
+ onMenuTriggerClicked() {
51
+ setTimeout(() => this.changeDetectorRef.detectChanges());
52
+ }
40
53
  onButtonClicked(event, button) {
41
54
  const unselect = this.supportUnselect && this.selectedButtonKey === (button === null || button === void 0 ? void 0 : button.key);
42
55
  this.selectedButtonKey = unselect ? '' : button === null || button === void 0 ? void 0 : button.key;
@@ -52,12 +65,12 @@ class PepGroupButtonsComponent {
52
65
  }
53
66
  }
54
67
  }
55
- PepGroupButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepGroupButtonsComponent, deps: [{ token: i1.PepLayoutService }], target: i0.ɵɵFactoryTarget.Component });
56
- PepGroupButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: PepGroupButtonsComponent, selector: "pep-group-buttons", inputs: { viewType: "viewType", styleType: "styleType", sizeType: "sizeType", buttons: "buttons", buttonsDisabled: "buttonsDisabled", supportUnselect: "supportUnselect", selectedButtonKey: "selectedButtonKey", stretch: "stretch" }, outputs: { buttonClick: "buttonClick" }, ngImport: i0, template: "<div class=\"group-buttons-container\" pepRtlDirection>\n <ng-container *ngIf=\"viewType === 'regular'\">\n <button *ngFor=\"let button of buttons\" [pepDataQa]=\"button?.value\"\n class=\"pep-button pep-spacing-element pull-left flip first-button {{ sizeType }} {{ styleType }}\"\n [disabled]=\"buttonsDisabled || button.disabled\" mat-button (click)=\"onButtonClicked($event, button)\">\n <span [title]=\"button?.value\">{{ button?.value }}</span>\n </button>\n </ng-container>\n\n <div *ngIf=\"viewType === 'dropdown'\" class=\"dropdown-buttons pep-spacing-element\"\n [ngClass]=\"{dropup: screenSize >= PepScreenSizeType.MD}\">\n <button [pepDataQa]=\"buttons[0]?.value\"\n class=\"pep-button pull-left flip first-button {{ sizeType }} {{ styleType }}\"\n (click)=\"onButtonClicked($event, buttons[0])\" [disabled]=\"buttonsDisabled || buttons[0].disabled\"\n mat-button>\n <span class=\"ellipsis\" [title]=\"buttons[0]?.value\">{{ buttons[0]?.value }}</span>\n </button>\n <button class=\"pep-button icon-button pull-right flip last-button {{ sizeType }} {{ styleType }}\"\n [matMenuTriggerFor]=\"actionsMenu\" [disabled]=\"buttonsDisabled\" pepMenuBlur mat-button>\n <mat-icon>\n <pep-icon name=\"{{ screenSize < PepScreenSizeType.MD ? 'arrow_down' : 'arrow_up' }}\">\n </pep-icon>\n </mat-icon>\n </button>\n\n <mat-menu #actionsMenu=\"matMenu\" xPosition=\"before\">\n <ng-container *ngFor=\"let button of buttons; let i = index; first as isFirst\">\n <button *ngIf=\"!isFirst\" mat-menu-item [pepDataQa]=\"button?.value\"\n (click)=\"onButtonClicked($event, button)\">\n <span [title]=\"button?.value\">{{ button?.value }}</span>\n </button>\n </ng-container>\n </mat-menu>\n </div>\n\n <div *ngIf=\"viewType === 'split'\" class=\"split-buttons\">\n <button *ngFor=\"let button of buttons; let index; let isFirst = first; let isLast = last\"\n [pepDataQa]=\"button?.value\" mat-button pepButtonBlur\n class=\"pep-button {{ sizeType }} {{ styleType }} {{ button?.classNames }} pull-left flip\"\n [disabled]=\"buttonsDisabled || button.disabled\" [ngClass]=\"{\n 'first-button': isFirst, \n 'middle-button': !isFirst && !isLast, \n 'last-button': isLast, \n 'icon-button': button?.iconName && !button?.value}\" (click)=\"onButtonClicked($event, button)\">\n\n <ng-container *ngTemplateOutlet=\"contentTemplate; context: {button: button}\"></ng-container>\n </button>\n </div>\n\n <div *ngIf=\"viewType === 'toggle'\" class=\"toggle-buttons\" [ngClass]=\"{ 'stretch': stretch }\">\n <button *ngFor=\"let button of buttons; let index; let isFirst = first; let isLast = last\"\n [pepDataQa]=\"button?.value\" mat-button pepButtonBlur\n class=\"pep-button {{ sizeType }} {{ styleType }} {{ button?.classNames }} pull-left flip\"\n [disabled]=\"buttonsDisabled || button.disabled\" [ngClass]=\"{\n 'first-button': isFirst && !isLast, \n 'middle-button': !isFirst && !isLast, \n 'last-button': isLast && !isFirst,\n 'icon-button': button?.iconName && !button?.value,\n 'is-selected': button?.key !== '' && button?.key === selectedButtonKey}\"\n (click)=\"onButtonClicked($event, button)\">\n <ng-container *ngTemplateOutlet=\"contentTemplate; context: {button: button}\"></ng-container>\n </button>\n </div>\n</div>\n\n<ng-template #contentTemplate let-button=\"button\">\n <mat-icon *ngIf=\"button.iconName && (!button.iconPosition || button.iconPosition === 'start')\"\n [ngClass]=\"{ 'pull-left flip': button.value }\">\n <pep-icon name=\"{{button.iconName}}\"></pep-icon>\n </mat-icon>\n <span *ngIf=\"button.value\" class=\"ellipsis pull-left flip\"\n [ngClass]=\"{ 'button-title-with-icon': button.iconName, 'icon-before': button.iconPosition === 'start' }\"\n [title]=\"button.value\">\n {{button.value}}\n </span>\n <mat-icon *ngIf=\"button.iconName && button.iconPosition === 'end'\" [ngClass]=\"{ 'pull-left flip': button.value }\">\n <pep-icon name=\"{{button.iconName}}\"></pep-icon>\n </mat-icon>\n</ng-template>", styles: [".group-buttons-container{display:flex;border-radius:var(--pep-border-radius-md, .25rem)}.group-buttons-container .dropdown-buttons .first-button,.group-buttons-container .split-buttons .first-button,.group-buttons-container .toggle-buttons .first-button{margin-inline-end:1px}.group-buttons-container .dropdown-buttons .first-button,.group-buttons-container .dropdown-buttons .first-button:after,.group-buttons-container .split-buttons .first-button,.group-buttons-container .split-buttons .first-button:after,.group-buttons-container .toggle-buttons .first-button,.group-buttons-container .toggle-buttons .first-button:after{border-radius:var(--pep-border-radius-md, .25rem) 0 0 var(--pep-border-radius-md, .25rem)}.group-buttons-container .dropdown-buttons .last-button,.group-buttons-container .dropdown-buttons .last-button:after,.group-buttons-container .split-buttons .last-button,.group-buttons-container .split-buttons .last-button:after,.group-buttons-container .toggle-buttons .last-button,.group-buttons-container .toggle-buttons .last-button:after{border-radius:0 var(--pep-border-radius-md, .25rem) var(--pep-border-radius-md, .25rem) 0}.group-buttons-container .dropdown-buttons .pepperi-button,.group-buttons-container .dropdown-buttons .pep-button,.group-buttons-container .split-buttons .pepperi-button,.group-buttons-container .split-buttons .pep-button,.group-buttons-container .toggle-buttons .pepperi-button,.group-buttons-container .toggle-buttons .pep-button{margin-top:0!important}.group-buttons-container .dropdown-buttons .pepperi-button.cdk-focused,.group-buttons-container .dropdown-buttons .pep-button.cdk-focused,.group-buttons-container .split-buttons .pepperi-button.cdk-focused,.group-buttons-container .split-buttons .pep-button.cdk-focused,.group-buttons-container .toggle-buttons .pepperi-button.cdk-focused,.group-buttons-container .toggle-buttons .pep-button.cdk-focused{z-index:2}@media (max-width: 599px){.group-buttons-container .dropdown-buttons.dropup .first-button,.group-buttons-container .split-buttons.dropup .first-button,.group-buttons-container .toggle-buttons.dropup .first-button{max-width:200px;padding:0 .25rem}.group-buttons-container .dropdown-buttons.dropup .last-button,.group-buttons-container .split-buttons.dropup .last-button,.group-buttons-container .toggle-buttons.dropup .last-button{padding:0}}.group-buttons-container .split-buttons,.group-buttons-container .toggle-buttons{display:grid;grid-auto-flow:column}.group-buttons-container .split-buttons.stretch,.group-buttons-container .toggle-buttons.stretch{width:100%}.group-buttons-container .split-buttons .pep-button,.group-buttons-container .toggle-buttons .pep-button{max-width:unset;padding-inline:var(--pep-spacing-md, .75rem)}.group-buttons-container .split-buttons .first-button,.group-buttons-container .toggle-buttons .first-button{margin-inline-end:-1px}.group-buttons-container .split-buttons .middle-button,.group-buttons-container .toggle-buttons .middle-button{border-radius:0;margin-inline-end:-1px}\n", ".group-buttons-container .toggle-buttons .is-selected.weak{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 30%))}.group-buttons-container .toggle-buttons .is-selected.weak:hover{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.16);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 20%))}.group-buttons-container .toggle-buttons .is-selected.weak:focus{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),88%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.16);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),var(--pep-color-regular-l, 10%));box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.group-buttons-container .toggle-buttons .is-selected.weak:active{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),88%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.32);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),var(--pep-color-regular-l, 10%))}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled){box-shadow:unset;border:unset;box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.04)!important;border:1px solid hsla(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),var(--pep-color-regular-l, 10%),.08)}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled):after{border:unset}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled) .svg-icon{fill:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled) .svg-icon.stroke{fill:unset;stroke:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled):not(.disabled-no-background-no-color){color:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)!important;background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),88%)!important}.group-buttons-container .toggle-buttons .is-selected.regular{background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.08)}.group-buttons-container .toggle-buttons .is-selected.regular:hover{background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.16)}.group-buttons-container .toggle-buttons .is-selected.regular:focus{box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);position:relative;box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.group-buttons-container .toggle-buttons .is-selected.regular:focus:not(.keep-background-on-focus){background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}.group-buttons-container .toggle-buttons .is-selected.regular:focus:after{z-index:0;content:\"\";transition:all .25s;display:block;position:absolute;inset:0;border-radius:inherit;border:1px solid hsl(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%))}.group-buttons-container .toggle-buttons .is-selected.regular:active{box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);position:relative}.group-buttons-container .toggle-buttons .is-selected.regular:active:not(.keep-background-on-focus){background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}.group-buttons-container .toggle-buttons .is-selected.regular:active:after{z-index:0;content:\"\";transition:all .25s;display:block;position:absolute;inset:0;border-radius:inherit;border:1px solid hsl(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%))}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled){box-shadow:unset;border:unset}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled):after{border:unset}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled) .svg-icon{fill:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled) .svg-icon.stroke{fill:unset;stroke:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled):not(.disabled-no-background-no-color){color:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)!important;background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.04)!important}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1.PepButtonBlurDirective, selector: "[pepButtonBlur]" }, { kind: "directive", type: i1.PepMenuBlurDirective, selector: "[pepMenuBlur]" }, { kind: "directive", type: i1.PepDataQaDirective, selector: "[pepDataQa]", inputs: ["pepDataQa"] }, { kind: "directive", type: i1.PepRtlDirectionDirective, selector: "[pepRtlDirection]" }, { kind: "component", type: i1$1.PepIconComponent, selector: "pep-icon", inputs: ["spin", "name", "fill"] }] });
68
+ PepGroupButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepGroupButtonsComponent, deps: [{ token: i1.PepLayoutService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
69
+ PepGroupButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: PepGroupButtonsComponent, selector: "pep-group-buttons", inputs: { viewType: "viewType", styleType: "styleType", sizeType: "sizeType", buttons: "buttons", buttonsDisabled: "buttonsDisabled", supportUnselect: "supportUnselect", selectedButtonKey: "selectedButtonKey", stretch: "stretch" }, outputs: { buttonClick: "buttonClick" }, ngImport: i0, template: "<div class=\"group-buttons-container\" pepRtlDirection>\n <ng-container *ngIf=\"viewType === 'regular'\">\n <button *ngFor=\"let button of buttons\" [pepDataQa]=\"button?.value\"\n class=\"pep-button pep-spacing-element pull-left flip first-button {{ sizeType }} {{ styleType }}\"\n [disabled]=\"buttonsDisabled || button.disabled\" mat-button (click)=\"onButtonClicked($event, button)\">\n <span [title]=\"button?.value\">{{ button?.value }}</span>\n </button>\n </ng-container>\n\n <div *ngIf=\"viewType === 'dropdown'\" class=\"dropdown-buttons pep-spacing-element\"\n [ngClass]=\"{dropup: screenSize >= PepScreenSizeType.MD}\">\n <button [pepDataQa]=\"buttons[0]?.value\"\n class=\"pep-button pull-left flip first-button {{ sizeType }} {{ styleType }}\"\n (click)=\"onButtonClicked($event, buttons[0])\" [disabled]=\"buttonsDisabled || buttons[0].disabled\"\n mat-button>\n <span class=\"ellipsis\" [title]=\"buttons[0]?.value\">{{ buttons[0]?.value }}</span>\n </button>\n <button class=\"pep-button icon-button pull-right flip last-button {{ sizeType }} {{ styleType }}\"\n [matMenuTriggerFor]=\"actionsMenu\" [disabled]=\"buttonsDisabled\" pepMenuBlur mat-button\n (click)=\"onMenuTriggerClicked()\">\n <mat-icon>\n <pep-icon name=\"{{ screenSize < PepScreenSizeType.MD ? 'arrow_down' : 'arrow_up' }}\">\n </pep-icon>\n </mat-icon>\n </button>\n\n <mat-menu #actionsMenu=\"matMenu\" xPosition=\"before\">\n <ng-container *ngFor=\"let button of buttons; let i = index; first as isFirst\">\n <button *ngIf=\"!isFirst\" mat-menu-item [pepDataQa]=\"button?.value\"\n (click)=\"onButtonClicked($event, button)\">\n <span [title]=\"button?.value\">{{ button?.value }}</span>\n </button>\n </ng-container>\n </mat-menu>\n </div>\n\n <div *ngIf=\"viewType === 'split'\" class=\"split-buttons\">\n <button *ngFor=\"let button of buttons; let index; let isFirst = first; let isLast = last\"\n [pepDataQa]=\"button?.value\" mat-button pepButtonBlur\n class=\"pep-button {{ sizeType }} {{ styleType }} {{ button?.classNames }} pull-left flip\"\n [disabled]=\"buttonsDisabled || button.disabled\" [ngClass]=\"{\n 'first-button': isFirst, \n 'middle-button': !isFirst && !isLast, \n 'last-button': isLast, \n 'icon-button': button?.iconName && !button?.value}\" (click)=\"onButtonClicked($event, button)\">\n\n <ng-container *ngTemplateOutlet=\"contentTemplate; context: {button: button}\"></ng-container>\n </button>\n </div>\n\n <div *ngIf=\"viewType === 'toggle'\" class=\"toggle-buttons\" [ngClass]=\"{ 'stretch': stretch }\">\n <button *ngFor=\"let button of buttons; let index; let isFirst = first; let isLast = last\"\n [pepDataQa]=\"button?.value\" mat-button pepButtonBlur\n class=\"pep-button {{ sizeType }} {{ styleType }} {{ button?.classNames }} pull-left flip\"\n [disabled]=\"buttonsDisabled || button.disabled\" [ngClass]=\"{\n 'first-button': isFirst && !isLast, \n 'middle-button': !isFirst && !isLast, \n 'last-button': isLast && !isFirst,\n 'icon-button': button?.iconName && !button?.value,\n 'is-selected': button?.key !== '' && button?.key === selectedButtonKey}\"\n (click)=\"onButtonClicked($event, button)\">\n <ng-container *ngTemplateOutlet=\"contentTemplate; context: {button: button}\"></ng-container>\n </button>\n </div>\n</div>\n\n<ng-template #contentTemplate let-button=\"button\">\n <mat-icon *ngIf=\"button.iconName && (!button.iconPosition || button.iconPosition === 'start')\"\n [ngClass]=\"{ 'pull-left flip': button.value }\">\n <pep-icon name=\"{{button.iconName}}\"></pep-icon>\n </mat-icon>\n <span *ngIf=\"button.value\" class=\"ellipsis pull-left flip\"\n [ngClass]=\"{ 'button-title-with-icon': button.iconName, 'icon-before': button.iconPosition === 'start' }\"\n [title]=\"button.value\">\n {{button.value}}\n </span>\n <mat-icon *ngIf=\"button.iconName && button.iconPosition === 'end'\" [ngClass]=\"{ 'pull-left flip': button.value }\">\n <pep-icon name=\"{{button.iconName}}\"></pep-icon>\n </mat-icon>\n</ng-template>", styles: [".group-buttons-container{display:flex;border-radius:var(--pep-border-radius-md, .25rem)}.group-buttons-container .dropdown-buttons .first-button,.group-buttons-container .split-buttons .first-button,.group-buttons-container .toggle-buttons .first-button{margin-inline-end:1px}.group-buttons-container .dropdown-buttons .first-button,.group-buttons-container .dropdown-buttons .first-button:after,.group-buttons-container .split-buttons .first-button,.group-buttons-container .split-buttons .first-button:after,.group-buttons-container .toggle-buttons .first-button,.group-buttons-container .toggle-buttons .first-button:after{border-radius:var(--pep-border-radius-md, .25rem) 0 0 var(--pep-border-radius-md, .25rem)}.group-buttons-container .dropdown-buttons .last-button,.group-buttons-container .dropdown-buttons .last-button:after,.group-buttons-container .split-buttons .last-button,.group-buttons-container .split-buttons .last-button:after,.group-buttons-container .toggle-buttons .last-button,.group-buttons-container .toggle-buttons .last-button:after{border-radius:0 var(--pep-border-radius-md, .25rem) var(--pep-border-radius-md, .25rem) 0}.group-buttons-container .dropdown-buttons .pepperi-button,.group-buttons-container .dropdown-buttons .pep-button,.group-buttons-container .split-buttons .pepperi-button,.group-buttons-container .split-buttons .pep-button,.group-buttons-container .toggle-buttons .pepperi-button,.group-buttons-container .toggle-buttons .pep-button{margin-top:0!important}.group-buttons-container .dropdown-buttons .pepperi-button.cdk-focused,.group-buttons-container .dropdown-buttons .pep-button.cdk-focused,.group-buttons-container .split-buttons .pepperi-button.cdk-focused,.group-buttons-container .split-buttons .pep-button.cdk-focused,.group-buttons-container .toggle-buttons .pepperi-button.cdk-focused,.group-buttons-container .toggle-buttons .pep-button.cdk-focused{z-index:2}@media (max-width: 599px){.group-buttons-container .dropdown-buttons.dropup .first-button,.group-buttons-container .split-buttons.dropup .first-button,.group-buttons-container .toggle-buttons.dropup .first-button{max-width:200px;padding:0 .25rem}.group-buttons-container .dropdown-buttons.dropup .last-button,.group-buttons-container .split-buttons.dropup .last-button,.group-buttons-container .toggle-buttons.dropup .last-button{padding:0}}.group-buttons-container .split-buttons,.group-buttons-container .toggle-buttons{display:grid;grid-auto-flow:column}.group-buttons-container .split-buttons.stretch,.group-buttons-container .toggle-buttons.stretch{width:100%}.group-buttons-container .split-buttons .pep-button,.group-buttons-container .toggle-buttons .pep-button{max-width:unset;padding-inline:var(--pep-spacing-md, .75rem)}.group-buttons-container .split-buttons .first-button,.group-buttons-container .toggle-buttons .first-button{margin-inline-end:-1px}.group-buttons-container .split-buttons .middle-button,.group-buttons-container .toggle-buttons .middle-button{border-radius:0;margin-inline-end:-1px}\n", ".group-buttons-container .toggle-buttons .is-selected.weak{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 30%))}.group-buttons-container .toggle-buttons .is-selected.weak:hover{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.16);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 20%))}.group-buttons-container .toggle-buttons .is-selected.weak:focus{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),88%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.16);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),var(--pep-color-regular-l, 10%));box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.group-buttons-container .toggle-buttons .is-selected.weak:active{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),88%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.32);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),var(--pep-color-regular-l, 10%))}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled){box-shadow:unset;border:unset;box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.04)!important;border:1px solid hsla(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),var(--pep-color-regular-l, 10%),.08)}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled):after{border:unset}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled) .svg-icon{fill:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled) .svg-icon.stroke{fill:unset;stroke:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled):not(.disabled-no-background-no-color){color:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)!important;background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),88%)!important}.group-buttons-container .toggle-buttons .is-selected.regular{background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.08)}.group-buttons-container .toggle-buttons .is-selected.regular:hover{background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.16)}.group-buttons-container .toggle-buttons .is-selected.regular:focus{box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);position:relative;box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.group-buttons-container .toggle-buttons .is-selected.regular:focus:not(.keep-background-on-focus){background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}.group-buttons-container .toggle-buttons .is-selected.regular:focus:after{z-index:0;content:\"\";transition:all .25s;display:block;position:absolute;inset:0;border-radius:inherit;border:1px solid hsl(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%))}.group-buttons-container .toggle-buttons .is-selected.regular:active{box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);position:relative}.group-buttons-container .toggle-buttons .is-selected.regular:active:not(.keep-background-on-focus){background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}.group-buttons-container .toggle-buttons .is-selected.regular:active:after{z-index:0;content:\"\";transition:all .25s;display:block;position:absolute;inset:0;border-radius:inherit;border:1px solid hsl(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%))}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled){box-shadow:unset;border:unset}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled):after{border:unset}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled) .svg-icon{fill:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled) .svg-icon.stroke{fill:unset;stroke:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled):not(.disabled-no-background-no-color){color:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)!important;background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.04)!important}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1.PepButtonBlurDirective, selector: "[pepButtonBlur]" }, { kind: "directive", type: i1.PepMenuBlurDirective, selector: "[pepMenuBlur]" }, { kind: "directive", type: i1.PepDataQaDirective, selector: "[pepDataQa]", inputs: ["pepDataQa"] }, { kind: "directive", type: i1.PepRtlDirectionDirective, selector: "[pepRtlDirection]" }, { kind: "component", type: i1$1.PepIconComponent, selector: "pep-icon", inputs: ["spin", "name", "fill"] }] });
57
70
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepGroupButtonsComponent, decorators: [{
58
71
  type: Component,
59
- args: [{ selector: 'pep-group-buttons', template: "<div class=\"group-buttons-container\" pepRtlDirection>\n <ng-container *ngIf=\"viewType === 'regular'\">\n <button *ngFor=\"let button of buttons\" [pepDataQa]=\"button?.value\"\n class=\"pep-button pep-spacing-element pull-left flip first-button {{ sizeType }} {{ styleType }}\"\n [disabled]=\"buttonsDisabled || button.disabled\" mat-button (click)=\"onButtonClicked($event, button)\">\n <span [title]=\"button?.value\">{{ button?.value }}</span>\n </button>\n </ng-container>\n\n <div *ngIf=\"viewType === 'dropdown'\" class=\"dropdown-buttons pep-spacing-element\"\n [ngClass]=\"{dropup: screenSize >= PepScreenSizeType.MD}\">\n <button [pepDataQa]=\"buttons[0]?.value\"\n class=\"pep-button pull-left flip first-button {{ sizeType }} {{ styleType }}\"\n (click)=\"onButtonClicked($event, buttons[0])\" [disabled]=\"buttonsDisabled || buttons[0].disabled\"\n mat-button>\n <span class=\"ellipsis\" [title]=\"buttons[0]?.value\">{{ buttons[0]?.value }}</span>\n </button>\n <button class=\"pep-button icon-button pull-right flip last-button {{ sizeType }} {{ styleType }}\"\n [matMenuTriggerFor]=\"actionsMenu\" [disabled]=\"buttonsDisabled\" pepMenuBlur mat-button>\n <mat-icon>\n <pep-icon name=\"{{ screenSize < PepScreenSizeType.MD ? 'arrow_down' : 'arrow_up' }}\">\n </pep-icon>\n </mat-icon>\n </button>\n\n <mat-menu #actionsMenu=\"matMenu\" xPosition=\"before\">\n <ng-container *ngFor=\"let button of buttons; let i = index; first as isFirst\">\n <button *ngIf=\"!isFirst\" mat-menu-item [pepDataQa]=\"button?.value\"\n (click)=\"onButtonClicked($event, button)\">\n <span [title]=\"button?.value\">{{ button?.value }}</span>\n </button>\n </ng-container>\n </mat-menu>\n </div>\n\n <div *ngIf=\"viewType === 'split'\" class=\"split-buttons\">\n <button *ngFor=\"let button of buttons; let index; let isFirst = first; let isLast = last\"\n [pepDataQa]=\"button?.value\" mat-button pepButtonBlur\n class=\"pep-button {{ sizeType }} {{ styleType }} {{ button?.classNames }} pull-left flip\"\n [disabled]=\"buttonsDisabled || button.disabled\" [ngClass]=\"{\n 'first-button': isFirst, \n 'middle-button': !isFirst && !isLast, \n 'last-button': isLast, \n 'icon-button': button?.iconName && !button?.value}\" (click)=\"onButtonClicked($event, button)\">\n\n <ng-container *ngTemplateOutlet=\"contentTemplate; context: {button: button}\"></ng-container>\n </button>\n </div>\n\n <div *ngIf=\"viewType === 'toggle'\" class=\"toggle-buttons\" [ngClass]=\"{ 'stretch': stretch }\">\n <button *ngFor=\"let button of buttons; let index; let isFirst = first; let isLast = last\"\n [pepDataQa]=\"button?.value\" mat-button pepButtonBlur\n class=\"pep-button {{ sizeType }} {{ styleType }} {{ button?.classNames }} pull-left flip\"\n [disabled]=\"buttonsDisabled || button.disabled\" [ngClass]=\"{\n 'first-button': isFirst && !isLast, \n 'middle-button': !isFirst && !isLast, \n 'last-button': isLast && !isFirst,\n 'icon-button': button?.iconName && !button?.value,\n 'is-selected': button?.key !== '' && button?.key === selectedButtonKey}\"\n (click)=\"onButtonClicked($event, button)\">\n <ng-container *ngTemplateOutlet=\"contentTemplate; context: {button: button}\"></ng-container>\n </button>\n </div>\n</div>\n\n<ng-template #contentTemplate let-button=\"button\">\n <mat-icon *ngIf=\"button.iconName && (!button.iconPosition || button.iconPosition === 'start')\"\n [ngClass]=\"{ 'pull-left flip': button.value }\">\n <pep-icon name=\"{{button.iconName}}\"></pep-icon>\n </mat-icon>\n <span *ngIf=\"button.value\" class=\"ellipsis pull-left flip\"\n [ngClass]=\"{ 'button-title-with-icon': button.iconName, 'icon-before': button.iconPosition === 'start' }\"\n [title]=\"button.value\">\n {{button.value}}\n </span>\n <mat-icon *ngIf=\"button.iconName && button.iconPosition === 'end'\" [ngClass]=\"{ 'pull-left flip': button.value }\">\n <pep-icon name=\"{{button.iconName}}\"></pep-icon>\n </mat-icon>\n</ng-template>", styles: [".group-buttons-container{display:flex;border-radius:var(--pep-border-radius-md, .25rem)}.group-buttons-container .dropdown-buttons .first-button,.group-buttons-container .split-buttons .first-button,.group-buttons-container .toggle-buttons .first-button{margin-inline-end:1px}.group-buttons-container .dropdown-buttons .first-button,.group-buttons-container .dropdown-buttons .first-button:after,.group-buttons-container .split-buttons .first-button,.group-buttons-container .split-buttons .first-button:after,.group-buttons-container .toggle-buttons .first-button,.group-buttons-container .toggle-buttons .first-button:after{border-radius:var(--pep-border-radius-md, .25rem) 0 0 var(--pep-border-radius-md, .25rem)}.group-buttons-container .dropdown-buttons .last-button,.group-buttons-container .dropdown-buttons .last-button:after,.group-buttons-container .split-buttons .last-button,.group-buttons-container .split-buttons .last-button:after,.group-buttons-container .toggle-buttons .last-button,.group-buttons-container .toggle-buttons .last-button:after{border-radius:0 var(--pep-border-radius-md, .25rem) var(--pep-border-radius-md, .25rem) 0}.group-buttons-container .dropdown-buttons .pepperi-button,.group-buttons-container .dropdown-buttons .pep-button,.group-buttons-container .split-buttons .pepperi-button,.group-buttons-container .split-buttons .pep-button,.group-buttons-container .toggle-buttons .pepperi-button,.group-buttons-container .toggle-buttons .pep-button{margin-top:0!important}.group-buttons-container .dropdown-buttons .pepperi-button.cdk-focused,.group-buttons-container .dropdown-buttons .pep-button.cdk-focused,.group-buttons-container .split-buttons .pepperi-button.cdk-focused,.group-buttons-container .split-buttons .pep-button.cdk-focused,.group-buttons-container .toggle-buttons .pepperi-button.cdk-focused,.group-buttons-container .toggle-buttons .pep-button.cdk-focused{z-index:2}@media (max-width: 599px){.group-buttons-container .dropdown-buttons.dropup .first-button,.group-buttons-container .split-buttons.dropup .first-button,.group-buttons-container .toggle-buttons.dropup .first-button{max-width:200px;padding:0 .25rem}.group-buttons-container .dropdown-buttons.dropup .last-button,.group-buttons-container .split-buttons.dropup .last-button,.group-buttons-container .toggle-buttons.dropup .last-button{padding:0}}.group-buttons-container .split-buttons,.group-buttons-container .toggle-buttons{display:grid;grid-auto-flow:column}.group-buttons-container .split-buttons.stretch,.group-buttons-container .toggle-buttons.stretch{width:100%}.group-buttons-container .split-buttons .pep-button,.group-buttons-container .toggle-buttons .pep-button{max-width:unset;padding-inline:var(--pep-spacing-md, .75rem)}.group-buttons-container .split-buttons .first-button,.group-buttons-container .toggle-buttons .first-button{margin-inline-end:-1px}.group-buttons-container .split-buttons .middle-button,.group-buttons-container .toggle-buttons .middle-button{border-radius:0;margin-inline-end:-1px}\n", ".group-buttons-container .toggle-buttons .is-selected.weak{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 30%))}.group-buttons-container .toggle-buttons .is-selected.weak:hover{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.16);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 20%))}.group-buttons-container .toggle-buttons .is-selected.weak:focus{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),88%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.16);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),var(--pep-color-regular-l, 10%));box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.group-buttons-container .toggle-buttons .is-selected.weak:active{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),88%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.32);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),var(--pep-color-regular-l, 10%))}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled){box-shadow:unset;border:unset;box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.04)!important;border:1px solid hsla(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),var(--pep-color-regular-l, 10%),.08)}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled):after{border:unset}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled) .svg-icon{fill:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled) .svg-icon.stroke{fill:unset;stroke:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled):not(.disabled-no-background-no-color){color:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)!important;background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),88%)!important}.group-buttons-container .toggle-buttons .is-selected.regular{background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.08)}.group-buttons-container .toggle-buttons .is-selected.regular:hover{background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.16)}.group-buttons-container .toggle-buttons .is-selected.regular:focus{box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);position:relative;box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.group-buttons-container .toggle-buttons .is-selected.regular:focus:not(.keep-background-on-focus){background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}.group-buttons-container .toggle-buttons .is-selected.regular:focus:after{z-index:0;content:\"\";transition:all .25s;display:block;position:absolute;inset:0;border-radius:inherit;border:1px solid hsl(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%))}.group-buttons-container .toggle-buttons .is-selected.regular:active{box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);position:relative}.group-buttons-container .toggle-buttons .is-selected.regular:active:not(.keep-background-on-focus){background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}.group-buttons-container .toggle-buttons .is-selected.regular:active:after{z-index:0;content:\"\";transition:all .25s;display:block;position:absolute;inset:0;border-radius:inherit;border:1px solid hsl(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%))}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled){box-shadow:unset;border:unset}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled):after{border:unset}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled) .svg-icon{fill:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled) .svg-icon.stroke{fill:unset;stroke:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled):not(.disabled-no-background-no-color){color:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)!important;background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.04)!important}\n"] }]
60
- }], ctorParameters: function () { return [{ type: i1.PepLayoutService }]; }, propDecorators: { viewType: [{
72
+ args: [{ selector: 'pep-group-buttons', template: "<div class=\"group-buttons-container\" pepRtlDirection>\n <ng-container *ngIf=\"viewType === 'regular'\">\n <button *ngFor=\"let button of buttons\" [pepDataQa]=\"button?.value\"\n class=\"pep-button pep-spacing-element pull-left flip first-button {{ sizeType }} {{ styleType }}\"\n [disabled]=\"buttonsDisabled || button.disabled\" mat-button (click)=\"onButtonClicked($event, button)\">\n <span [title]=\"button?.value\">{{ button?.value }}</span>\n </button>\n </ng-container>\n\n <div *ngIf=\"viewType === 'dropdown'\" class=\"dropdown-buttons pep-spacing-element\"\n [ngClass]=\"{dropup: screenSize >= PepScreenSizeType.MD}\">\n <button [pepDataQa]=\"buttons[0]?.value\"\n class=\"pep-button pull-left flip first-button {{ sizeType }} {{ styleType }}\"\n (click)=\"onButtonClicked($event, buttons[0])\" [disabled]=\"buttonsDisabled || buttons[0].disabled\"\n mat-button>\n <span class=\"ellipsis\" [title]=\"buttons[0]?.value\">{{ buttons[0]?.value }}</span>\n </button>\n <button class=\"pep-button icon-button pull-right flip last-button {{ sizeType }} {{ styleType }}\"\n [matMenuTriggerFor]=\"actionsMenu\" [disabled]=\"buttonsDisabled\" pepMenuBlur mat-button\n (click)=\"onMenuTriggerClicked()\">\n <mat-icon>\n <pep-icon name=\"{{ screenSize < PepScreenSizeType.MD ? 'arrow_down' : 'arrow_up' }}\">\n </pep-icon>\n </mat-icon>\n </button>\n\n <mat-menu #actionsMenu=\"matMenu\" xPosition=\"before\">\n <ng-container *ngFor=\"let button of buttons; let i = index; first as isFirst\">\n <button *ngIf=\"!isFirst\" mat-menu-item [pepDataQa]=\"button?.value\"\n (click)=\"onButtonClicked($event, button)\">\n <span [title]=\"button?.value\">{{ button?.value }}</span>\n </button>\n </ng-container>\n </mat-menu>\n </div>\n\n <div *ngIf=\"viewType === 'split'\" class=\"split-buttons\">\n <button *ngFor=\"let button of buttons; let index; let isFirst = first; let isLast = last\"\n [pepDataQa]=\"button?.value\" mat-button pepButtonBlur\n class=\"pep-button {{ sizeType }} {{ styleType }} {{ button?.classNames }} pull-left flip\"\n [disabled]=\"buttonsDisabled || button.disabled\" [ngClass]=\"{\n 'first-button': isFirst, \n 'middle-button': !isFirst && !isLast, \n 'last-button': isLast, \n 'icon-button': button?.iconName && !button?.value}\" (click)=\"onButtonClicked($event, button)\">\n\n <ng-container *ngTemplateOutlet=\"contentTemplate; context: {button: button}\"></ng-container>\n </button>\n </div>\n\n <div *ngIf=\"viewType === 'toggle'\" class=\"toggle-buttons\" [ngClass]=\"{ 'stretch': stretch }\">\n <button *ngFor=\"let button of buttons; let index; let isFirst = first; let isLast = last\"\n [pepDataQa]=\"button?.value\" mat-button pepButtonBlur\n class=\"pep-button {{ sizeType }} {{ styleType }} {{ button?.classNames }} pull-left flip\"\n [disabled]=\"buttonsDisabled || button.disabled\" [ngClass]=\"{\n 'first-button': isFirst && !isLast, \n 'middle-button': !isFirst && !isLast, \n 'last-button': isLast && !isFirst,\n 'icon-button': button?.iconName && !button?.value,\n 'is-selected': button?.key !== '' && button?.key === selectedButtonKey}\"\n (click)=\"onButtonClicked($event, button)\">\n <ng-container *ngTemplateOutlet=\"contentTemplate; context: {button: button}\"></ng-container>\n </button>\n </div>\n</div>\n\n<ng-template #contentTemplate let-button=\"button\">\n <mat-icon *ngIf=\"button.iconName && (!button.iconPosition || button.iconPosition === 'start')\"\n [ngClass]=\"{ 'pull-left flip': button.value }\">\n <pep-icon name=\"{{button.iconName}}\"></pep-icon>\n </mat-icon>\n <span *ngIf=\"button.value\" class=\"ellipsis pull-left flip\"\n [ngClass]=\"{ 'button-title-with-icon': button.iconName, 'icon-before': button.iconPosition === 'start' }\"\n [title]=\"button.value\">\n {{button.value}}\n </span>\n <mat-icon *ngIf=\"button.iconName && button.iconPosition === 'end'\" [ngClass]=\"{ 'pull-left flip': button.value }\">\n <pep-icon name=\"{{button.iconName}}\"></pep-icon>\n </mat-icon>\n</ng-template>", styles: [".group-buttons-container{display:flex;border-radius:var(--pep-border-radius-md, .25rem)}.group-buttons-container .dropdown-buttons .first-button,.group-buttons-container .split-buttons .first-button,.group-buttons-container .toggle-buttons .first-button{margin-inline-end:1px}.group-buttons-container .dropdown-buttons .first-button,.group-buttons-container .dropdown-buttons .first-button:after,.group-buttons-container .split-buttons .first-button,.group-buttons-container .split-buttons .first-button:after,.group-buttons-container .toggle-buttons .first-button,.group-buttons-container .toggle-buttons .first-button:after{border-radius:var(--pep-border-radius-md, .25rem) 0 0 var(--pep-border-radius-md, .25rem)}.group-buttons-container .dropdown-buttons .last-button,.group-buttons-container .dropdown-buttons .last-button:after,.group-buttons-container .split-buttons .last-button,.group-buttons-container .split-buttons .last-button:after,.group-buttons-container .toggle-buttons .last-button,.group-buttons-container .toggle-buttons .last-button:after{border-radius:0 var(--pep-border-radius-md, .25rem) var(--pep-border-radius-md, .25rem) 0}.group-buttons-container .dropdown-buttons .pepperi-button,.group-buttons-container .dropdown-buttons .pep-button,.group-buttons-container .split-buttons .pepperi-button,.group-buttons-container .split-buttons .pep-button,.group-buttons-container .toggle-buttons .pepperi-button,.group-buttons-container .toggle-buttons .pep-button{margin-top:0!important}.group-buttons-container .dropdown-buttons .pepperi-button.cdk-focused,.group-buttons-container .dropdown-buttons .pep-button.cdk-focused,.group-buttons-container .split-buttons .pepperi-button.cdk-focused,.group-buttons-container .split-buttons .pep-button.cdk-focused,.group-buttons-container .toggle-buttons .pepperi-button.cdk-focused,.group-buttons-container .toggle-buttons .pep-button.cdk-focused{z-index:2}@media (max-width: 599px){.group-buttons-container .dropdown-buttons.dropup .first-button,.group-buttons-container .split-buttons.dropup .first-button,.group-buttons-container .toggle-buttons.dropup .first-button{max-width:200px;padding:0 .25rem}.group-buttons-container .dropdown-buttons.dropup .last-button,.group-buttons-container .split-buttons.dropup .last-button,.group-buttons-container .toggle-buttons.dropup .last-button{padding:0}}.group-buttons-container .split-buttons,.group-buttons-container .toggle-buttons{display:grid;grid-auto-flow:column}.group-buttons-container .split-buttons.stretch,.group-buttons-container .toggle-buttons.stretch{width:100%}.group-buttons-container .split-buttons .pep-button,.group-buttons-container .toggle-buttons .pep-button{max-width:unset;padding-inline:var(--pep-spacing-md, .75rem)}.group-buttons-container .split-buttons .first-button,.group-buttons-container .toggle-buttons .first-button{margin-inline-end:-1px}.group-buttons-container .split-buttons .middle-button,.group-buttons-container .toggle-buttons .middle-button{border-radius:0;margin-inline-end:-1px}\n", ".group-buttons-container .toggle-buttons .is-selected.weak{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 30%))}.group-buttons-container .toggle-buttons .is-selected.weak:hover{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.16);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 20%))}.group-buttons-container .toggle-buttons .is-selected.weak:focus{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),88%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.16);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),var(--pep-color-regular-l, 10%));box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.group-buttons-container .toggle-buttons .is-selected.weak:active{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),88%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.32);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),var(--pep-color-regular-l, 10%))}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled){box-shadow:unset;border:unset;box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.04)!important;border:1px solid hsla(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),var(--pep-color-regular-l, 10%),.08)}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled):after{border:unset}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled) .svg-icon{fill:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled) .svg-icon.stroke{fill:unset;stroke:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled):not(.disabled-no-background-no-color){color:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)!important;background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),88%)!important}.group-buttons-container .toggle-buttons .is-selected.regular{background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.08)}.group-buttons-container .toggle-buttons .is-selected.regular:hover{background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.16)}.group-buttons-container .toggle-buttons .is-selected.regular:focus{box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);position:relative;box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.group-buttons-container .toggle-buttons .is-selected.regular:focus:not(.keep-background-on-focus){background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}.group-buttons-container .toggle-buttons .is-selected.regular:focus:after{z-index:0;content:\"\";transition:all .25s;display:block;position:absolute;inset:0;border-radius:inherit;border:1px solid hsl(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%))}.group-buttons-container .toggle-buttons .is-selected.regular:active{box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);position:relative}.group-buttons-container .toggle-buttons .is-selected.regular:active:not(.keep-background-on-focus){background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}.group-buttons-container .toggle-buttons .is-selected.regular:active:after{z-index:0;content:\"\";transition:all .25s;display:block;position:absolute;inset:0;border-radius:inherit;border:1px solid hsl(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%))}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled){box-shadow:unset;border:unset}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled):after{border:unset}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled) .svg-icon{fill:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled) .svg-icon.stroke{fill:unset;stroke:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled):not(.disabled-no-background-no-color){color:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)!important;background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.04)!important}\n"] }]
73
+ }], ctorParameters: function () { return [{ type: i1.PepLayoutService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { viewType: [{
61
74
  type: Input
62
75
  }], styleType: [{
63
76
  type: Input
@@ -1 +1 @@
1
- {"version":3,"file":"pepperi-addons-ngx-lib-group-buttons.mjs","sources":["../../../projects/ngx-lib/group-buttons/group-buttons.component.ts","../../../projects/ngx-lib/group-buttons/group-buttons.component.html","../../../projects/ngx-lib/group-buttons/group-buttons.module.ts","../../../projects/ngx-lib/group-buttons/public-api.ts","../../../projects/ngx-lib/group-buttons/pepperi-addons-ngx-lib-group-buttons.ts"],"sourcesContent":["import {\n Component,\n OnDestroy,\n Input,\n Output,\n EventEmitter,\n} from '@angular/core';\nimport {\n PepLayoutService, PepScreenSizeType, PepStyleType, PepSizeType\n} from '@pepperi-addons/ngx-lib';\nimport {\n PepButton,\n IPepButtonClickEvent,\n} from '@pepperi-addons/ngx-lib/button';\n\nexport type PepGroupButtonsViewType = 'regular' | 'dropdown' | 'split' | 'toggle';\n@Component({\n selector: 'pep-group-buttons',\n templateUrl: './group-buttons.component.html',\n styleUrls: ['./group-buttons.component.scss', './group-buttons.component.theme.scss'],\n})\nexport class PepGroupButtonsComponent implements OnDestroy {\n PepScreenSizeType = PepScreenSizeType;\n screenSize: PepScreenSizeType;\n\n @Input() viewType: PepGroupButtonsViewType = 'regular';\n @Input() styleType: PepStyleType = 'weak';\n @Input() sizeType: PepSizeType = 'md';\n @Input() buttons: Array<PepButton> = [];\n @Input() buttonsDisabled = false;\n @Input() supportUnselect = false;\n @Input() selectedButtonKey = '';\n @Input() stretch = false;\n\n @Output()\n buttonClick: EventEmitter<IPepButtonClickEvent> = new EventEmitter<IPepButtonClickEvent>();\n\n\n constructor(public layoutService: PepLayoutService) {\n this.layoutService.onResize$.subscribe((size) => {\n this.screenSize = size;\n });\n }\n\n ngOnDestroy(): void {\n // if (this.buttonClick) {\n // this.buttonClick.unsubscribe();\n // }\n }\n\n onButtonClicked(event: Event, button: PepButton): void { \n const unselect: boolean = this.supportUnselect && this.selectedButtonKey === button?.key;\n\n this.selectedButtonKey = unselect ? '' : button?.key;\n \n const buttonClick = {\n source: unselect ? null : button, \n event,\n };\n\n if (button?.callback) {\n button.callback(buttonClick);\n } else {\n this.buttonClick.emit(buttonClick);\n }\n }\n}\n","<div class=\"group-buttons-container\" pepRtlDirection>\n <ng-container *ngIf=\"viewType === 'regular'\">\n <button *ngFor=\"let button of buttons\" [pepDataQa]=\"button?.value\"\n class=\"pep-button pep-spacing-element pull-left flip first-button {{ sizeType }} {{ styleType }}\"\n [disabled]=\"buttonsDisabled || button.disabled\" mat-button (click)=\"onButtonClicked($event, button)\">\n <span [title]=\"button?.value\">{{ button?.value }}</span>\n </button>\n </ng-container>\n\n <div *ngIf=\"viewType === 'dropdown'\" class=\"dropdown-buttons pep-spacing-element\"\n [ngClass]=\"{dropup: screenSize >= PepScreenSizeType.MD}\">\n <button [pepDataQa]=\"buttons[0]?.value\"\n class=\"pep-button pull-left flip first-button {{ sizeType }} {{ styleType }}\"\n (click)=\"onButtonClicked($event, buttons[0])\" [disabled]=\"buttonsDisabled || buttons[0].disabled\"\n mat-button>\n <span class=\"ellipsis\" [title]=\"buttons[0]?.value\">{{ buttons[0]?.value }}</span>\n </button>\n <button class=\"pep-button icon-button pull-right flip last-button {{ sizeType }} {{ styleType }}\"\n [matMenuTriggerFor]=\"actionsMenu\" [disabled]=\"buttonsDisabled\" pepMenuBlur mat-button>\n <mat-icon>\n <pep-icon name=\"{{ screenSize < PepScreenSizeType.MD ? 'arrow_down' : 'arrow_up' }}\">\n </pep-icon>\n </mat-icon>\n </button>\n\n <mat-menu #actionsMenu=\"matMenu\" xPosition=\"before\">\n <ng-container *ngFor=\"let button of buttons; let i = index; first as isFirst\">\n <button *ngIf=\"!isFirst\" mat-menu-item [pepDataQa]=\"button?.value\"\n (click)=\"onButtonClicked($event, button)\">\n <span [title]=\"button?.value\">{{ button?.value }}</span>\n </button>\n </ng-container>\n </mat-menu>\n </div>\n\n <div *ngIf=\"viewType === 'split'\" class=\"split-buttons\">\n <button *ngFor=\"let button of buttons; let index; let isFirst = first; let isLast = last\"\n [pepDataQa]=\"button?.value\" mat-button pepButtonBlur\n class=\"pep-button {{ sizeType }} {{ styleType }} {{ button?.classNames }} pull-left flip\"\n [disabled]=\"buttonsDisabled || button.disabled\" [ngClass]=\"{\n 'first-button': isFirst, \n 'middle-button': !isFirst && !isLast, \n 'last-button': isLast, \n 'icon-button': button?.iconName && !button?.value}\" (click)=\"onButtonClicked($event, button)\">\n\n <ng-container *ngTemplateOutlet=\"contentTemplate; context: {button: button}\"></ng-container>\n </button>\n </div>\n\n <div *ngIf=\"viewType === 'toggle'\" class=\"toggle-buttons\" [ngClass]=\"{ 'stretch': stretch }\">\n <button *ngFor=\"let button of buttons; let index; let isFirst = first; let isLast = last\"\n [pepDataQa]=\"button?.value\" mat-button pepButtonBlur\n class=\"pep-button {{ sizeType }} {{ styleType }} {{ button?.classNames }} pull-left flip\"\n [disabled]=\"buttonsDisabled || button.disabled\" [ngClass]=\"{\n 'first-button': isFirst && !isLast, \n 'middle-button': !isFirst && !isLast, \n 'last-button': isLast && !isFirst,\n 'icon-button': button?.iconName && !button?.value,\n 'is-selected': button?.key !== '' && button?.key === selectedButtonKey}\"\n (click)=\"onButtonClicked($event, button)\">\n <ng-container *ngTemplateOutlet=\"contentTemplate; context: {button: button}\"></ng-container>\n </button>\n </div>\n</div>\n\n<ng-template #contentTemplate let-button=\"button\">\n <mat-icon *ngIf=\"button.iconName && (!button.iconPosition || button.iconPosition === 'start')\"\n [ngClass]=\"{ 'pull-left flip': button.value }\">\n <pep-icon name=\"{{button.iconName}}\"></pep-icon>\n </mat-icon>\n <span *ngIf=\"button.value\" class=\"ellipsis pull-left flip\"\n [ngClass]=\"{ 'button-title-with-icon': button.iconName, 'icon-before': button.iconPosition === 'start' }\"\n [title]=\"button.value\">\n {{button.value}}\n </span>\n <mat-icon *ngIf=\"button.iconName && button.iconPosition === 'end'\" [ngClass]=\"{ 'pull-left flip': button.value }\">\n <pep-icon name=\"{{button.iconName}}\"></pep-icon>\n </mat-icon>\n</ng-template>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatCommonModule } from '@angular/material/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\nimport {\n PepIconModule,\n PepIconRegistry,\n pepIconArrowUp,\n pepIconArrowDown,\n} from '@pepperi-addons/ngx-lib/icon';\n\nimport { PepGroupButtonsComponent } from './group-buttons.component';\n\n@NgModule({\n imports: [\n CommonModule,\n // Material modules\n MatCommonModule,\n MatFormFieldModule,\n MatButtonModule,\n MatMenuModule,\n MatIconModule,\n // ngx-lib modules\n PepNgxLibModule,\n PepIconModule,\n ],\n exports: [PepGroupButtonsComponent],\n declarations: [PepGroupButtonsComponent],\n})\nexport class PepGroupButtonsModule {\n constructor(private pepIconRegistry: PepIconRegistry) {\n this.pepIconRegistry.registerIcons([pepIconArrowUp, pepIconArrowDown]);\n }\n}\n","/*\n * Public API Surface of ngx-lib/group-buttons\n */\nexport * from './group-buttons.module';\nexport * from './group-buttons.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i6","i1"],"mappings":"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"}
1
+ {"version":3,"file":"pepperi-addons-ngx-lib-group-buttons.mjs","sources":["../../../projects/ngx-lib/group-buttons/group-buttons.component.ts","../../../projects/ngx-lib/group-buttons/group-buttons.component.html","../../../projects/ngx-lib/group-buttons/group-buttons.module.ts","../../../projects/ngx-lib/group-buttons/public-api.ts","../../../projects/ngx-lib/group-buttons/pepperi-addons-ngx-lib-group-buttons.ts"],"sourcesContent":["import {\n Component,\n OnDestroy,\n Input,\n Output,\n EventEmitter,\n ChangeDetectorRef,\n} from '@angular/core';\nimport {\n PepLayoutService, PepScreenSizeType, PepStyleType, PepSizeType\n} from '@pepperi-addons/ngx-lib';\nimport {\n PepButton,\n IPepButtonClickEvent,\n} from '@pepperi-addons/ngx-lib/button';\n\nexport type PepGroupButtonsViewType = 'regular' | 'dropdown' | 'split' | 'toggle';\n@Component({\n selector: 'pep-group-buttons',\n templateUrl: './group-buttons.component.html',\n styleUrls: ['./group-buttons.component.scss', './group-buttons.component.theme.scss'],\n})\nexport class PepGroupButtonsComponent implements OnDestroy {\n PepScreenSizeType = PepScreenSizeType;\n screenSize: PepScreenSizeType;\n\n @Input() viewType: PepGroupButtonsViewType = 'regular';\n @Input() styleType: PepStyleType = 'weak';\n @Input() sizeType: PepSizeType = 'md';\n @Input() buttons: Array<PepButton> = [];\n @Input() buttonsDisabled = false;\n @Input() supportUnselect = false;\n @Input() selectedButtonKey = '';\n @Input() stretch = false;\n\n @Output()\n buttonClick: EventEmitter<IPepButtonClickEvent> = new EventEmitter<IPepButtonClickEvent>();\n\n\n constructor(public layoutService: PepLayoutService, private changeDetectorRef: ChangeDetectorRef) {\n this.layoutService.onResize$.subscribe((size) => {\n this.screenSize = size;\n });\n }\n\n ngOnDestroy(): void {\n // if (this.buttonClick) {\n // this.buttonClick.unsubscribe();\n // }\n }\n\n // MatMenu's own trigger sets its internal `_panelAnimationState` to 'enter' synchronously\n // right after this click is handled (see MatMenuTrigger.openMenu()), but MatMenu is an\n // OnPush component, so that mutation alone never schedules a re-check of its view when this\n // whole tree is bootstrapped via Angular Elements (createCustomElement) rather than a\n // normally-bootstrapped app — the panel gets created and correctly positioned by CDK Overlay,\n // but stays rendered at its initial 'void' (opacity: 0, scale(0.8)) keyframe forever. A plain\n // Angular app happens to pick up the change through other CD activity elsewhere in the tree;\n // Angular Elements doesn't, so nudge it explicitly, once the current synchronous click\n // dispatch (which is what flips the animation state) has finished.\n onMenuTriggerClicked(): void {\n setTimeout(() => this.changeDetectorRef.detectChanges());\n }\n\n onButtonClicked(event: Event, button: PepButton): void { \n const unselect: boolean = this.supportUnselect && this.selectedButtonKey === button?.key;\n\n this.selectedButtonKey = unselect ? '' : button?.key;\n \n const buttonClick = {\n source: unselect ? null : button, \n event,\n };\n\n if (button?.callback) {\n button.callback(buttonClick);\n } else {\n this.buttonClick.emit(buttonClick);\n }\n }\n}\n","<div class=\"group-buttons-container\" pepRtlDirection>\n <ng-container *ngIf=\"viewType === 'regular'\">\n <button *ngFor=\"let button of buttons\" [pepDataQa]=\"button?.value\"\n class=\"pep-button pep-spacing-element pull-left flip first-button {{ sizeType }} {{ styleType }}\"\n [disabled]=\"buttonsDisabled || button.disabled\" mat-button (click)=\"onButtonClicked($event, button)\">\n <span [title]=\"button?.value\">{{ button?.value }}</span>\n </button>\n </ng-container>\n\n <div *ngIf=\"viewType === 'dropdown'\" class=\"dropdown-buttons pep-spacing-element\"\n [ngClass]=\"{dropup: screenSize >= PepScreenSizeType.MD}\">\n <button [pepDataQa]=\"buttons[0]?.value\"\n class=\"pep-button pull-left flip first-button {{ sizeType }} {{ styleType }}\"\n (click)=\"onButtonClicked($event, buttons[0])\" [disabled]=\"buttonsDisabled || buttons[0].disabled\"\n mat-button>\n <span class=\"ellipsis\" [title]=\"buttons[0]?.value\">{{ buttons[0]?.value }}</span>\n </button>\n <button class=\"pep-button icon-button pull-right flip last-button {{ sizeType }} {{ styleType }}\"\n [matMenuTriggerFor]=\"actionsMenu\" [disabled]=\"buttonsDisabled\" pepMenuBlur mat-button\n (click)=\"onMenuTriggerClicked()\">\n <mat-icon>\n <pep-icon name=\"{{ screenSize < PepScreenSizeType.MD ? 'arrow_down' : 'arrow_up' }}\">\n </pep-icon>\n </mat-icon>\n </button>\n\n <mat-menu #actionsMenu=\"matMenu\" xPosition=\"before\">\n <ng-container *ngFor=\"let button of buttons; let i = index; first as isFirst\">\n <button *ngIf=\"!isFirst\" mat-menu-item [pepDataQa]=\"button?.value\"\n (click)=\"onButtonClicked($event, button)\">\n <span [title]=\"button?.value\">{{ button?.value }}</span>\n </button>\n </ng-container>\n </mat-menu>\n </div>\n\n <div *ngIf=\"viewType === 'split'\" class=\"split-buttons\">\n <button *ngFor=\"let button of buttons; let index; let isFirst = first; let isLast = last\"\n [pepDataQa]=\"button?.value\" mat-button pepButtonBlur\n class=\"pep-button {{ sizeType }} {{ styleType }} {{ button?.classNames }} pull-left flip\"\n [disabled]=\"buttonsDisabled || button.disabled\" [ngClass]=\"{\n 'first-button': isFirst, \n 'middle-button': !isFirst && !isLast, \n 'last-button': isLast, \n 'icon-button': button?.iconName && !button?.value}\" (click)=\"onButtonClicked($event, button)\">\n\n <ng-container *ngTemplateOutlet=\"contentTemplate; context: {button: button}\"></ng-container>\n </button>\n </div>\n\n <div *ngIf=\"viewType === 'toggle'\" class=\"toggle-buttons\" [ngClass]=\"{ 'stretch': stretch }\">\n <button *ngFor=\"let button of buttons; let index; let isFirst = first; let isLast = last\"\n [pepDataQa]=\"button?.value\" mat-button pepButtonBlur\n class=\"pep-button {{ sizeType }} {{ styleType }} {{ button?.classNames }} pull-left flip\"\n [disabled]=\"buttonsDisabled || button.disabled\" [ngClass]=\"{\n 'first-button': isFirst && !isLast, \n 'middle-button': !isFirst && !isLast, \n 'last-button': isLast && !isFirst,\n 'icon-button': button?.iconName && !button?.value,\n 'is-selected': button?.key !== '' && button?.key === selectedButtonKey}\"\n (click)=\"onButtonClicked($event, button)\">\n <ng-container *ngTemplateOutlet=\"contentTemplate; context: {button: button}\"></ng-container>\n </button>\n </div>\n</div>\n\n<ng-template #contentTemplate let-button=\"button\">\n <mat-icon *ngIf=\"button.iconName && (!button.iconPosition || button.iconPosition === 'start')\"\n [ngClass]=\"{ 'pull-left flip': button.value }\">\n <pep-icon name=\"{{button.iconName}}\"></pep-icon>\n </mat-icon>\n <span *ngIf=\"button.value\" class=\"ellipsis pull-left flip\"\n [ngClass]=\"{ 'button-title-with-icon': button.iconName, 'icon-before': button.iconPosition === 'start' }\"\n [title]=\"button.value\">\n {{button.value}}\n </span>\n <mat-icon *ngIf=\"button.iconName && button.iconPosition === 'end'\" [ngClass]=\"{ 'pull-left flip': button.value }\">\n <pep-icon name=\"{{button.iconName}}\"></pep-icon>\n </mat-icon>\n</ng-template>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatCommonModule } from '@angular/material/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\nimport {\n PepIconModule,\n PepIconRegistry,\n pepIconArrowUp,\n pepIconArrowDown,\n} from '@pepperi-addons/ngx-lib/icon';\n\nimport { PepGroupButtonsComponent } from './group-buttons.component';\n\n@NgModule({\n imports: [\n CommonModule,\n // Material modules\n MatCommonModule,\n MatFormFieldModule,\n MatButtonModule,\n MatMenuModule,\n MatIconModule,\n // ngx-lib modules\n PepNgxLibModule,\n PepIconModule,\n ],\n exports: [PepGroupButtonsComponent],\n declarations: [PepGroupButtonsComponent],\n})\nexport class PepGroupButtonsModule {\n constructor(private pepIconRegistry: PepIconRegistry) {\n this.pepIconRegistry.registerIcons([pepIconArrowUp, pepIconArrowDown]);\n }\n}\n","/*\n * Public API Surface of ngx-lib/group-buttons\n */\nexport * from './group-buttons.module';\nexport * from './group-buttons.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i6","i1"],"mappings":"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"}
@@ -1633,7 +1633,7 @@ class PepListComponent {
1633
1633
  cf.Layout.XAlignment = 3;
1634
1634
  }
1635
1635
  });
1636
- if (!this.cd['destroyed']) {
1636
+ if (!this.cd.destroyed) {
1637
1637
  this.cd.detectChanges();
1638
1638
  }
1639
1639
  // Set the container width.
@@ -1931,6 +1931,7 @@ class PepListComponent {
1931
1931
  this.hostElement.nativeElement.getItemDataByID = this.getItemDataByID.bind(this);
1932
1932
  this.hostElement.nativeElement.setSelectedIds = this.setSelectedIds.bind(this);
1933
1933
  this.hostElement.nativeElement.setIsAllSelected = this.setIsAllSelected.bind(this);
1934
+ this.hostElement.nativeElement.getSelectionSnapshot = this.getSelectionSnapshot.bind(this);
1934
1935
  }
1935
1936
  // For refresh the UI when change the is selectable for action on item.
1936
1937
  getisItemDisabled(item) {
@@ -2241,7 +2242,9 @@ class PepListComponent {
2241
2242
  this.itemsCounter += 1;
2242
2243
  }
2243
2244
  }
2244
- this.toggleLoadingItemsFropApi(false);
2245
+ this.zone.run(() => {
2246
+ this.toggleLoadingItemsFropApi(false);
2247
+ });
2245
2248
  }
2246
2249
  updatePage(items, event) {
2247
2250
  if (!event) {
@@ -2261,7 +2264,9 @@ class PepListComponent {
2261
2264
  }
2262
2265
  }
2263
2266
  this.updateCurrentPageItems(startIndex, endIndex);
2264
- this.toggleLoadingItemsFropApi(false);
2267
+ this.zone.run(() => {
2268
+ this.toggleLoadingItemsFropApi(false);
2269
+ });
2265
2270
  }
2266
2271
  updateItem(data) {
2267
2272
  const index = this.items.findIndex((i) => i && (i === null || i === void 0 ? void 0 : i.UID) === (data === null || data === void 0 ? void 0 : data.UID));
@@ -2357,6 +2362,17 @@ class PepListComponent {
2357
2362
  getItemDataByID(uid) {
2358
2363
  return this.items.find((item) => (item === null || item === void 0 ? void 0 : item.UID.toString()) === uid);
2359
2364
  }
2365
+ // Snapshot of selection state for consumers (e.g. React) that need to run selection-
2366
+ // dependent logic (like package/non-package selection constraints) without direct access
2367
+ // to this component's internal fields.
2368
+ getSelectionSnapshot() {
2369
+ var _a;
2370
+ return {
2371
+ items: (_a = this.items) !== null && _a !== void 0 ? _a : [],
2372
+ selectedItemIds: Array.from(this.selectedItems.keys()),
2373
+ isAllSelected: this.isAllSelected,
2374
+ };
2375
+ }
2360
2376
  refresh(refreshCompletedCallback = undefined) {
2361
2377
  var _a;
2362
2378
  (_a = this.virtualScroller) === null || _a === void 0 ? void 0 : _a.refresh(refreshCompletedCallback);
@@ -2498,8 +2514,10 @@ class PepListComponent {
2498
2514
  }
2499
2515
  else {
2500
2516
  setTimeout(() => {
2501
- this.updateCurrentPageItems(startIndex, endIndex);
2502
- this.scrollToTop();
2517
+ this.zone.run(() => {
2518
+ this.updateCurrentPageItems(startIndex, endIndex);
2519
+ this.scrollToTop();
2520
+ });
2503
2521
  }, this.scrollAnimationTime);
2504
2522
  }
2505
2523
  }