@theseam/ui-common 0.3.2 → 0.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -165,6 +165,9 @@ export class ModalContainerComponent extends BasePortalOutlet {
165
165
  toFocus.focus();
166
166
  }
167
167
  }
168
+ getNativeElement() {
169
+ return this._elementRef.nativeElement;
170
+ }
168
171
  }
169
172
  ModalContainerComponent.decorators = [
170
173
  { type: Component, args: [{
@@ -214,4 +217,4 @@ ModalContainerComponent.propDecorators = {
214
217
  _portalHost: [{ type: ViewChild, args: [CdkPortalOutlet /*, { static: true }*/, { static: true },] }],
215
218
  _onClick: [{ type: HostListener, args: ['click', ['$event'],] }]
216
219
  };
217
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9tb2RhbC9tb2RhbC1jb250YWluZXIvbW9kYWwtY29udGFpbmVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFrQixLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNoRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFtQyxNQUFNLHFCQUFxQixDQUFBO0FBQ3hHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUMxQyxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxVQUFVLEVBRVYsV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBRU4sUUFBUSxFQUNSLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzlCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRXJELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUU3QyxNQUFNLFVBQVUsc0NBQXNDO0lBQ3BELE1BQU0sS0FBSyxDQUFDLHVFQUF1RSxDQUFDLENBQUE7QUFDdEYsQ0FBQztBQUVEOzs7R0FHRztBQTJCSCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsZ0JBQWdCO0lBcUIzRCxZQUNVLFdBQW9DLEVBQ3BDLGlCQUFtQyxFQUNuQyxrQkFBcUMsRUFDUCxTQUFjO0lBQ3BELGdDQUFnQztJQUN6QixPQUFvQjtRQUMzQixLQUFLLEVBQUUsQ0FBQTtRQU5DLGdCQUFXLEdBQVgsV0FBVyxD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QWdCO1lBSXZCLGlCQUFpQjs0Q0E0RWQsUUFBUSxZQUFJLE1BQU0sU0FBQyxRQUFRO1lBN0R2QixXQUFXOzs7c0JBc0NqQixXQUFXLFNBQUMsU0FBUzt5QkFNckIsV0FBVyxTQUFDLGlCQUFpQjsrQkFFN0IsV0FBVyxTQUFDLHVCQUF1QjtvQkFHbkMsV0FBVyxTQUFDLFdBQVc7a0NBSXZCLFdBQVcsU0FBQyw0QkFBNEI7MkJBNEN4QyxXQUFXLFNBQUMsb0JBQW9CO21DQUNoQyxXQUFXLFNBQUMsNkJBQTZCOzZCQUV6QyxXQUFXLFNBQUMsZ0JBQWdCOzZCQUM1QixXQUFXLFNBQUMsZ0JBQWdCOzZCQUM1QixXQUFXLFNBQUMsZ0JBQWdCOzBCQUc1QixTQUFTLFNBQUMsZUFBZSxDQUFDLHNCQUFzQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTt1QkFrQmxFLFlBQVksU0FBQyxPQUFPLEVBQUUsQ0FBRSxRQUFRLENBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBBbmltYXRpb25FdmVudCwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucydcbmltcG9ydCB7IEZvY3VzVHJhcEZhY3RvcnkgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSdcbmltcG9ydCB7IEJhc2VQb3J0YWxPdXRsZXQsIENka1BvcnRhbE91dGxldCwgQ29tcG9uZW50UG9ydGFsLCBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnXG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbXBvbmVudFJlZixcbiAgRWxlbWVudFJlZixcbiAgRW1iZWRkZWRWaWV3UmVmLFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3QsXG4gIE9uRGVzdHJveSxcbiAgT3B0aW9uYWwsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5pbXBvcnQgeyBNb2RhbENvbmZpZyB9IGZyb20gJy4uL21vZGFsLWNvbmZpZydcblxuZXhwb3J0IGZ1bmN0aW9uIHRocm93RGlhbG9nQ29udGVudEFscmVhZHlBdHRhY2hlZEVycm9yKCkge1xuICB0aHJvdyBFcnJvcignQXR0ZW1wdGluZyB0byBhdHRhY2ggZGlhbG9nIGNvbnRlbnQgYWZ0ZXIgY29udGVudCBpcyBhbHJlYWR5IGF0dGFjaGVkJylcbn1cblxuLyoqXG4gKiBJbnRlcm5hbCBjb21wb25lbnQgdGhhdCB3cmFwcyB1c2VyLXByb3ZpZGVkIGRpYWxvZyBjb250ZW50LlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZWFtLW1vZGFsLWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9tb2RhbC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tb2RhbC1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ2RpYWxvZycsIFtcbiAgICAgIHN0YXRlKCdlbnRlcicsIHN0eWxlKHtvcGFjaXR5OiAxfSkpLFxuICAgICAgc3RhdGUoJ2V4aXQsIHZvaWQnLCBzdHlsZSh7b3BhY2l0eTogMH0pKSxcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gZW50ZXInLCBhbmltYXRlKCd7e2VudGVyQW5pbWF0aW9uRHVyYXRpb259fScpKSxcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gZXhpdCwgKiA9PiB2b2lkJywgYW5pbWF0ZSgne3tleGl0QW5pbWF0aW9uRHVyYXRpb259fScpKSxcbiAgICBdKVxuICBdLFxuICAvLyB0c2xpbnQ6ZGlzYWJsZTp1c2UtaG9zdC1wcm9wZXJ0eS1kZWNvcmF0b3JcbiAgaG9zdDoge1xuICAgICdbQGRpYWxvZ10nOiBge1xuICAgICAgdmFsdWU6IF9zdGF0ZSxcbiAgICAgIHBhcmFtczoge1xuICAgICAgICBlbnRlckFuaW1hdGlvbkR1cmF0aW9uOiBfY29uZmlnLmVudGVyQW5pbWF0aW9uRHVyYXRpb24sXG4gICAgICAgIGV4aXRBbmltYXRpb25EdXJhdGlvbjogX2NvbmZpZy5leGl0QW5pbWF0aW9uRHVyYXRpb25cbiAgICAgIH1cbiAgICB9YCxcbiAgICAnKEBkaWFsb2cuc3RhcnQpJzogJ19vbkFuaW1hdGlvblN0YXJ0KCRldmVudCknLFxuICAgICcoQGRpYWxvZy5kb25lKSc6ICdfYW5pbWF0aW9uRG9uZS5uZXh0KCRldmVudCknLFxuICB9LFxuICAvLyB0c2xpbnQ6ZW5hYmxlOnVzZS1ob3N0LXByb3BlcnR5LWRlY29yYXRvclxufSlcbmV4cG9ydCBjbGFzcyBNb2RhbENvbnRhaW5lckNvbXBvbmVudCBleHRlbmRzIEJhc2VQb3J0YWxPdXRsZXQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gIEBIb3N0QmluZGluZygnYXR0ci5pZCcpIGdldCBfaWRBdHRyKCkgeyByZXR1cm4gdGhpcy5faWQgfVxuXG4gIC8vIEBIb3N0QmluZGluZyBpcyB1c2VkIGluIHRoZSBjbGFzcyBhcyBpdCBpcyBleHBlY3RlZCB0byBiZSBleHRlbmRlZC4gIFNpbmNlIEBDb21wb25lbnQgZGVjb3JhdG9yXG4gIC8vIG1ldGFkYXRhIGlzIG5vdCBpbmhlcml0ZWQgYnkgY2hpbGQgY2xhc3NlcywgaW5zdGVhZCB0aGUgaG9zdCBiaW5kaW5nIGRhdGEgaXMgZGVmaW5lZCBpbiBhIHdheVxuICAvLyB0aGF0IGNhbiBiZSBpbmhlcml0ZWQuXG4gIC8vIHRzbGludDpkaXNhYmxlOm5vLWhvc3QtZGVjb3JhdG9yLWluLWNvbmNyZXRlXG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWxhYmVsJykgZ2V0IF9hcmlhTGFiZWwoKSB7IHJldHVybiB0aGlzLl9jb25maWcuYXJpYUxhYmVsIHx8IG51bGwgfVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWRlc2NyaWJlZGJ5JylcbiAgZ2V0IF9hcmlhRGVzY3JpYmVkQnkoKSB7IHJldHVybiB0aGlzLl9jb25maWcuYXJpYURlc2NyaWJlZEJ5IH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpIGdldCBfcm9sZSgpIHsgcmV0dXJuIHRoaXMuX2NvbmZpZy5yb2xlIH1cblxuICAvLyBASG9zdEJpbmRpbmcoJ2F0dHIudGFiaW5kZXgnKSBnZXQgX3RhYmluZGV4KCkgeyByZXR1cm4gLTEgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3Muc2VhbS1tb2RhbC1jb250YWluZXInKSBfc2VhbU1vZGFsQ29udGFpbmVyID0gdHJ1ZVxuXG4gIF9pZDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgX2ZvY3VzVHJhcEZhY3Rvcnk6IEZvY3VzVHJhcEZhY3RvcnksXG4gICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgX2RvY3VtZW50OiBhbnksXG4gICAgLyoqIFRoZSBkaWFsb2cgY29uZmlndXJhdGlvbi4gKi9cbiAgICBwdWJsaWMgX2NvbmZpZzogTW9kYWxDb25maWcpIHtcbiAgICBzdXBlcigpXG5cbiAgICAvLyBXZSB1c2UgYSBTdWJqZWN0IHdpdGggYSBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgcmF0aGVyIHRoYW4gYSBjYWxsYmFjayBhdHRhY2hlZCB0byAuZG9uZSxcbiAgICAvLyBiZWNhdXNlIHNvbWUgYnJvd3NlcnMgZmlyZSB0aGUgZG9uZSBldmVudCB0d2ljZSBhbmQgd2UgZG9uJ3Qgd2FudCB0byBlbWl0IGR1cGxpY2F0ZSBldmVudHMuXG4gICAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8yNDA4NFxuICAgIHRoaXMuX2FuaW1hdGlvbkRvbmUucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgoeCwgeSkgPT4ge1xuICAgICAgcmV0dXJuIHguZnJvbVN0YXRlID09PSB5LmZyb21TdGF0ZSAmJiB4LnRvU3RhdGUgPT09IHkudG9TdGF0ZVxuICAgIH0pKS5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgLy8gRW1pdCBsaWZlY3ljbGUgZXZlbnRzIGJhc2VkIG9uIGFuaW1hdGlvbiBgZG9uZWAgY2FsbGJhY2suXG4gICAgICBpZiAoZXZlbnQudG9TdGF0ZSA9PT0gJ2VudGVyJykge1xuICAgICAgICB0aGlzLl9hdXRvRm9jdXNGaXJzdFRhYmJhYmxlRWxlbWVudCgpXG4gICAgICAgIHRoaXMuX2FmdGVyRW50ZXIubmV4dCgpXG4gICAgICAgIHRoaXMuX2FmdGVyRW50ZXIuY29tcGxldGUoKVxuICAgICAgfVxuXG4gICAgICBpZiAoZXZlbnQuZnJvbVN0YXRlID09PSAnZW50ZXInICYmIChldmVudC50b1N0YXRlID09PSAndm9pZCcgfHwgZXZlbnQudG9TdGF0ZSA9PT0gJ2V4aXQnKSkge1xuICAgICAgICB0aGlzLl9yZXR1cm5Gb2N1c0FmdGVyRGlhbG9nKClcbiAgICAgICAgdGhpcy5fYWZ0ZXJFeGl0Lm5leHQoKVxuICAgICAgICB0aGlzLl9hZnRlckV4aXQuY29tcGxldGUoKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICAvKiogU3RhdGUgb2YgdGhlIGRpYWxvZyBhbmltYXRpb24uICovXG4gIF9zdGF0ZTogJ3ZvaWQnIHwgJ2VudGVyJyB8ICdleGl0JyA9ICdlbnRlcidcblxuICAvKiogRWxlbWVudCB0aGF0IHdhcyBmb2N1c2VkIGJlZm9yZSB0aGUgZGlhbG9nIHdhcyBvcGVuZWQuIFNhdmUgdGhpcyB0byByZXN0b3JlIHVwb24gY2xvc2UuICovXG4gIHByaXZhdGUgX2VsZW1lbnRGb2N1c2VkQmVmb3JlRGlhbG9nV2FzT3BlbmVkOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsXG5cbiAgIC8qKiBUaGUgY2xhc3MgdGhhdCB0cmFwcyBhbmQgbWFuYWdlcyBmb2N1cyB3aXRoaW4gdGhlIGRpYWxvZy4gKi9cbiAgcHJpdmF0ZSBfZm9jdXNUcmFwID0gdGhpcy5fZm9jdXNUcmFwRmFjdG9yeS5jcmVhdGUodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBmYWxzZSlcbiAgLy8gdHNsaW50OmRpc2FibGU6bm8taG9zdC1kZWNvcmF0b3ItaW4tY29uY3JldGVcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm1vZGFsLWRpYWxvZycpIF9tb2RhbERpYWxvZyA9IHRydWVcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5tb2RhbC1kaWFsb2ctY2VudGVyZWQnKSBfbW9kYWxEaWFsb2dDZW50ZXJlZCA9IHRydWVcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm1vZGFsLXNtJykgZ2V0IF9tb2RhbERpYWxvZ1NtKCkgeyByZXR1cm4gdGhpcy5fY29uZmlnLm1vZGFsU2l6ZSA9PT0gJ3NtJyB9XG4gIEBIb3N0QmluZGluZygnY2xhc3MubW9kYWwtbGcnKSBnZXQgX21vZGFsRGlhbG9nTGcoKSB7IHJldHVybiB0aGlzLl9jb25maWcubW9kYWxTaXplID09PSAnbGcnIH1cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5tb2RhbC14bCcpIGdldCBfbW9kYWxEaWFsb2dYbCgpIHsgcmV0dXJuIHRoaXMuX2NvbmZpZy5tb2RhbFNpemUgPT09ICd4bCcgfVxuXG4gIC8qKiBUaGUgcG9ydGFsIGhvc3QgaW5zaWRlIG9mIHRoaXMgY29udGFpbmVyIGludG8gd2hpY2ggdGhlIGRpYWxvZyBjb250ZW50IHdpbGwgYmUgbG9hZGVkLiAqL1xuICBAVmlld0NoaWxkKENka1BvcnRhbE91dGxldCAvKiwgeyBzdGF0aWM6IHRydWUgfSovLCB7IHN0YXRpYzogdHJ1ZSB9KSBfcG9ydGFsSG9zdD86IENka1BvcnRhbE91dGxldFxuXG4gIC8qKiBBIHN1YmplY3QgZW1pdHRpbmcgYmVmb3JlIHRoZSBkaWFsb2cgZW50ZXJzIHRoZSB2aWV3LiAqL1xuICBfYmVmb3JlRW50ZXI6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpXG5cbiAgLyoqIEEgc3ViamVjdCBlbWl0dGluZyBhZnRlciB0aGUgZGlhbG9nIGVudGVycyB0aGUgdmlldy4gKi9cbiAgX2FmdGVyRW50ZXI6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpXG5cbiAgLyoqIEEgc3ViamVjdCBlbWl0dGluZyBiZWZvcmUgdGhlIGRpYWxvZyBleGl0cyB0aGUgdmlldy4gKi9cbiAgX2JlZm9yZUV4aXQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpXG5cbiAgLyoqIEEgc3ViamVjdCBlbWl0dGluZyBhZnRlciB0aGUgZGlhbG9nIGV4aXRzIHRoZSB2aWV3LiAqL1xuICBfYWZ0ZXJFeGl0OiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKVxuXG4gIC8qKiBTdHJlYW0gb2YgYW5pbWF0aW9uIGBkb25lYCBldmVudHMuICovXG4gIF9hbmltYXRpb25Eb25lID0gbmV3IFN1YmplY3Q8QW5pbWF0aW9uRXZlbnQ+KClcblxuICAvLyBOT1RFOiBGb3IgY3VycmVudCBib290c3RyYXAgc3R5bGUgbW9kYWxcbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbICckZXZlbnQnIF0pXG4gIF9vbkNsaWNrKGV2ZW50OiBVSUV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgfVxuXG4gIC8qKiBEZXN0cm95IGZvY3VzIHRyYXAgdG8gcGxhY2UgZm9jdXMgYmFjayB0byB0aGUgZWxlbWVudCBmb2N1c2VkIGJlZm9yZSB0aGUgZGlhbG9nIG9wZW5lZC4gKi9cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZm9jdXNUcmFwLmRlc3Ryb3koKVxuICAgIHRoaXMuX2FuaW1hdGlvbkRvbmUuY29tcGxldGUoKVxuICB9XG5cbiAgLyoqXG4gICAqIEF0dGFjaCBhIENvbXBvbmVudFBvcnRhbCBhcyBjb250ZW50IHRvIHRoaXMgZGlhbG9nIGNvbnRhaW5lci5cbiAgICogQHBhcmFtIHBvcnRhbCBQb3J0YWwgdG8gYmUgYXR0YWNoZWQgYXMgdGhlIGRpYWxvZyBjb250ZW50LlxuICAgKi9cbiAgYXR0YWNoQ29tcG9uZW50UG9ydGFsPFQ+KHBvcnRhbDogQ29tcG9uZW50UG9ydGFsPFQ+KTogQ29tcG9uZW50UmVmPFQ+IHtcbiAgICBpZiAoIXRoaXMuX3BvcnRhbEhvc3QpIHtcbiAgICAgIHRocm93IEVycm9yKGBfcG9ydGFsSG9zdCBub3QgZm91bmQuYClcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fcG9ydGFsSG9zdC5oYXNBdHRhY2hlZCgpKSB7XG4gICAgICB0aHJvd0RpYWxvZ0NvbnRlbnRBbHJlYWR5QXR0YWNoZWRFcnJvcigpXG4gICAgfVxuXG4gICAgdGhpcy5fc2F2ZVByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCgpXG4gICAgcmV0dXJuIHRoaXMuX3BvcnRhbEhvc3QuYXR0YWNoQ29tcG9uZW50UG9ydGFsKHBvcnRhbClcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRhY2ggYSBUZW1wbGF0ZVBvcnRhbCBhcyBjb250ZW50IHRvIHRoaXMgZGlhbG9nIGNvbnRhaW5lci5cbiAgICogQHBhcmFtIHBvcnRhbCBQb3J0YWwgdG8gYmUgYXR0YWNoZWQgYXMgdGhlIGRpYWxvZyBjb250ZW50LlxuICAgKi9cbiAgYXR0YWNoVGVtcGxhdGVQb3J0YWw8Qz4ocG9ydGFsOiBUZW1wbGF0ZVBvcnRhbDxDPik6IEVtYmVkZGVkVmlld1JlZjxDPiB7XG4gICAgaWYgKCF0aGlzLl9wb3J0YWxIb3N0KSB7XG4gICAgICB0aHJvdyBFcnJvcihgX3BvcnRhbEhvc3Qgbm90IGZvdW5kLmApXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3BvcnRhbEhvc3QuaGFzQXR0YWNoZWQoKSkge1xuICAgICAgdGhyb3dEaWFsb2dDb250ZW50QWxyZWFkeUF0dGFjaGVkRXJyb3IoKVxuICAgIH1cblxuICAgIHRoaXMuX3NhdmVQcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQoKVxuICAgIHJldHVybiB0aGlzLl9wb3J0YWxIb3N0LmF0dGFjaFRlbXBsYXRlUG9ydGFsKHBvcnRhbClcbiAgfVxuXG4gIC8qKiBFbWl0IGxpZmVjeWNsZSBldmVudHMgYmFzZWQgb24gYW5pbWF0aW9uIGBzdGFydGAgY2FsbGJhY2suICovXG4gIF9vbkFuaW1hdGlvblN0YXJ0KGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xuICAgIGlmIChldmVudC50b1N0YXRlID09PSAnZW50ZXInKSB7XG4gICAgICB0aGlzLl9iZWZvcmVFbnRlci5uZXh0KClcbiAgICAgIHRoaXMuX2JlZm9yZUVudGVyLmNvbXBsZXRlKClcbiAgICB9XG4gICAgaWYgKGV2ZW50LmZyb21TdGF0ZSA9PT0gJ2VudGVyJyAmJiAoZXZlbnQudG9TdGF0ZSA9PT0gJ3ZvaWQnIHx8IGV2ZW50LnRvU3RhdGUgPT09ICdleGl0JykpIHtcbiAgICAgIHRoaXMuX2JlZm9yZUV4aXQubmV4dCgpXG4gICAgICB0aGlzLl9iZWZvcmVFeGl0LmNvbXBsZXRlKClcbiAgICB9XG4gIH1cblxuICAvKiogU3RhcnRzIHRoZSBkaWFsb2cgZXhpdCBhbmltYXRpb24uICovXG4gIF9zdGFydEV4aXRpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5fc3RhdGUgPSAnZXhpdCdcblxuICAgIC8vIE1hcmsgdGhlIGNvbnRhaW5lciBmb3IgY2hlY2sgc28gaXQgY2FuIHJlYWN0IGlmIHRoZVxuICAgIC8vIHZpZXcgY29udGFpbmVyIGlzIHVzaW5nIE9uUHVzaCBjaGFuZ2UgZGV0ZWN0aW9uLlxuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpXG4gIH1cblxuICAvKiogU2F2ZXMgYSByZWZlcmVuY2UgdG8gdGhlIGVsZW1lbnQgdGhhdCB3YXMgZm9jdXNlZCBiZWZvcmUgdGhlIGRpYWxvZyB3YXMgb3BlbmVkLiAqL1xuICBwcml2YXRlIF9zYXZlUHJldmlvdXNseUZvY3VzZWRFbGVtZW50KCkge1xuICAgIGlmICh0aGlzLl9kb2N1bWVudCkge1xuICAgICAgdGhpcy5fZWxlbWVudEZvY3VzZWRCZWZvcmVEaWFsb2dXYXNPcGVuZWQgPSB0aGlzLl9kb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50XG5cbiAgICAgIC8vIE1vdmUgZm9jdXMgb250byB0aGUgZGlhbG9nIGltbWVkaWF0ZWx5IGluIG9yZGVyIHRvIHByZXZlbnQgdGhlIHVzZXIgZnJvbSBhY2NpZGVudGFsbHlcbiAgICAgIC8vIG9wZW5pbmcgbXVsdGlwbGUgZGlhbG9ncyBhdCB0aGUgc2FtZSB0aW1lLiBOZWVkcyB0byBiZSBhc3luYywgYmVjYXVzZSB0aGUgZWxlbWVudFxuICAgICAgLy8gbWF5IG5vdCBiZSBmb2N1c2FibGUgaW1tZWRpYXRlbHkuXG4gICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBdXRvZm9jdXMgdGhlIGZpcnN0IHRhYmJhYmxlIGVsZW1lbnQgaW5zaWRlIG9mIHRoZSBkaWFsb2csIGlmIHRoZXJlIGlzIG5vdCBhIHRhYmJhYmxlIGVsZW1lbnQsXG4gICAqIGZvY3VzIHRoZSBkaWFsb2cgaW5zdGVhZC5cbiAgICovXG4gIHByaXZhdGUgX2F1dG9Gb2N1c0ZpcnN0VGFiYmFibGVFbGVtZW50KCkge1xuICAgIC8vIElmIHdlcmUgdG8gYXR0ZW1wdCB0byBmb2N1cyBpbW1lZGlhdGVseSwgdGhlbiB0aGUgY29udGVudCBvZiB0aGUgZGlhbG9nIHdvdWxkIG5vdCB5ZXQgYmVcbiAgICAvLyByZWFkeSBpbiBpbnN0YW5jZXMgd2hlcmUgY2hhbmdlIGRldGVjdGlvbiBoYXMgdG8gcnVuIGZpcnN0LiBUbyBkZWFsIHdpdGggdGhpcywgd2Ugc2ltcGx5XG4gICAgLy8gd2FpdCBmb3IgdGhlIG1pY3JvdGFzayBxdWV1ZSB0byBiZSBlbXB0eS5cbiAgICBpZiAodGhpcy5fY29uZmlnLmF1dG9Gb2N1cykge1xuICAgICAgdGhpcy5fZm9jdXNUcmFwLmZvY3VzSW5pdGlhbEVsZW1lbnRXaGVuUmVhZHkoKS50aGVuKGhhc01vdmVkRm9jdXMgPT4ge1xuICAgICAgICAvLyBJZiB3ZSBkaWRuJ3QgZmluZCBhbnkgZm9jdXNhYmxlIGVsZW1lbnRzIGluc2lkZSB0aGUgZGlhbG9nLCBmb2N1cyB0aGVcbiAgICAgICAgLy8gY29udGFpbmVyIHNvIHRoZSB1c2VyIGNhbid0IHRhYiBpbnRvIG90aGVyIGVsZW1lbnRzIGJlaGluZCBpdC5cbiAgICAgICAgaWYgKCFoYXNNb3ZlZEZvY3VzKSB7XG4gICAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICAvKiogUmV0dXJucyB0aGUgZm9jdXMgdG8gdGhlIGVsZW1lbnQgZm9jdXNlZCBiZWZvcmUgdGhlIGRpYWxvZyB3YXMgb3Blbi4gKi9cbiAgcHJpdmF0ZSBfcmV0dXJuRm9jdXNBZnRlckRpYWxvZygpIHtcbiAgICBjb25zdCB0b0ZvY3VzID0gdGhpcy5fZWxlbWVudEZvY3VzZWRCZWZvcmVEaWFsb2dXYXNPcGVuZWRcbiAgICAvLyBXZSBuZWVkIHRoZSBleHRyYSBjaGVjaywgYmVjYXVzZSBJRSBjYW4gc2V0IHRoZSBgYWN0aXZlRWxlbWVudGAgdG8gbnVsbCBpbiBzb21lIGNhc2VzLlxuICAgIGlmICh0b0ZvY3VzICYmIHR5cGVvZiB0b0ZvY3VzLmZvY3VzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0b0ZvY3VzLmZvY3VzKClcbiAgICB9XG4gIH1cblxufVxuIl19
220
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9tb2RhbC9tb2RhbC1jb250YWluZXIvbW9kYWwtY29udGFpbmVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFrQixLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNoRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFtQyxNQUFNLHFCQUFxQixDQUFBO0FBQ3hHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUMxQyxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxVQUFVLEVBRVYsV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBRU4sUUFBUSxFQUNSLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzlCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRXJELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUU3QyxNQUFNLFVBQVUsc0NBQXNDO0lBQ3BELE1BQU0sS0FBSyxDQUFDLHVFQUF1RSxDQUFDLENBQUE7QUFDdEYsQ0FBQztBQUVEOzs7R0FHRztBQTJCSCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsZ0JBQWdCO0lBcUIzRCxZQUNVLFdBQW9DLEVBQ3BDLGlCQUFtQyxFQUNuQyxrQkFBcUMsRUFDUCxTQUFjO0lBQ3BELGdDQUFnQztJQUN6QixPQUFvQjtRQUMzQixLQUFLLEVBQUUsQ0FBQTtRQU5DLGdCQUFXLEdBQVgsV0FBVyxDQUF5QjtRQUNwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBQ25DLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFDUCxjQUFTLEdBQVQsU0FBUyxDQUFLO1FBRTdDLFlBQU8sR0FBUCxPQUFPLENBQWE7UUFaN0IsOERBQThEO1FBRW5CLHdCQUFtQixHQUFHLElBQUksQ0FBQTtRQWtDckUscUNBQXFDO1FBQ3JDLFdBQU0sR0FBOEIsT0FBTyxDQUFBO1FBRTNDLDhGQUE4RjtRQUN0Rix5Q0FBb0MsR0FBdUIsSUFBSSxDQUFBO1FBRXRFLGdFQUFnRTtRQUN6RCxlQUFVLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUN6RiwrQ0FBK0M7UUFFWixpQkFBWSxHQUFHLElBQUksQ0FBQTtRQUNWLHlCQUFvQixHQUFHLElBQUksQ0FBQTtRQVN2RSw0REFBNEQ7UUFDNUQsaUJBQVksR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQTtRQUUzQywyREFBMkQ7UUFDM0QsZ0JBQVcsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQTtRQUUxQywyREFBMkQ7UUFDM0QsZ0JBQVcsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQTtRQUUxQywwREFBMEQ7UUFDMUQsZUFBVSxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFBO1FBRXpDLHlDQUF5QztRQUN6QyxtQkFBYyxHQUFHLElBQUksT0FBTyxFQUFrQixDQUFBO1FBdEQ1QywwRkFBMEY7UUFDMUYsOEZBQThGO1FBQzlGLHVEQUF1RDtRQUN2RCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNyRCxPQUFPLENBQUMsQ0FBQyxTQUFTLEtBQUssQ0FBQyxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUE7UUFDL0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDcEIsNERBQTREO1lBQzVELElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSyxPQUFPLEVBQUU7Z0JBQzdCLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxDQUFBO2dCQUNyQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFBO2dCQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFBO2FBQzVCO1lBRUQsSUFBSSxLQUFLLENBQUMsU0FBUyxLQUFLLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEtBQUssTUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssTUFBTSxDQUFDLEVBQUU7Z0JBQ3pGLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFBO2dCQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFBO2dCQUN0QixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFBO2FBQzNCO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBL0NELElBQTRCLE9BQU8sS0FBSyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUEsQ0FBQyxDQUFDO0lBRXpELGtHQUFrRztJQUNsRyxnR0FBZ0c7SUFDaEcseUJBQXlCO0lBQ3pCLCtDQUErQztJQUMvQyxJQUFvQyxVQUFVLEtBQUssT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUEsQ0FBQyxDQUFDO0lBRTFGLElBQ0ksZ0JBQWdCLEtBQUssT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQSxDQUFDLENBQUM7SUFFOUQsSUFBOEIsS0FBSyxLQUFLLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUEsQ0FBQyxDQUFDO0lBbURsRSxJQUFtQyxjQUFjLEtBQUssT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUEsQ0FBQyxDQUFDO0lBQzlGLElBQW1DLGNBQWMsS0FBSyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQSxDQUFDLENBQUM7SUFDOUYsSUFBbUMsY0FBYyxLQUFLLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFBLENBQUMsQ0FBQztJQW9COUYsMENBQTBDO0lBRTFDLFFBQVEsQ0FBQyxLQUFjO1FBQ3JCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQTtJQUN6QixDQUFDO0lBRUQsOEZBQThGO0lBQzlGLFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDaEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILHFCQUFxQixDQUFJLE1BQTBCO1FBQ2pELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3JCLE1BQU0sS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUE7U0FDdEM7UUFFRCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDbEMsc0NBQXNDLEVBQUUsQ0FBQTtTQUN6QztRQUVELElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFBO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUN2RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsb0JBQW9CLENBQUksTUFBeUI7UUFDL0MsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDckIsTUFBTSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtTQUN0QztRQUVELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUNsQyxzQ0FBc0MsRUFBRSxDQUFBO1NBQ3pDO1FBRUQsSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUE7UUFDcEMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ3RELENBQUM7SUFFRCxpRUFBaUU7SUFDakUsaUJBQWlCLENBQUMsS0FBcUI7UUFDckMsSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLE9BQU8sRUFBRTtZQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFBO1lBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUE7U0FDN0I7UUFDRCxJQUFJLEtBQUssQ0FBQyxTQUFTLEtBQUssT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sS0FBSyxNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSyxNQUFNLENBQUMsRUFBRTtZQUN6RixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFBO1lBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUE7U0FDNUI7SUFDSCxDQUFDO0lBRUQsd0NBQXdDO0lBQ3hDLGFBQWE7UUFDWCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtRQUVwQixzREFBc0Q7UUFDdEQsbURBQW1EO1FBQ25ELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtJQUN4QyxDQUFDO0lBRUQsc0ZBQXNGO0lBQzlFLDZCQUE2QjtRQUNuQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsSUFBSSxDQUFDLG9DQUFvQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBNEIsQ0FBQTtZQUV2Rix3RkFBd0Y7WUFDeEYsb0ZBQW9GO1lBQ3BGLG9DQUFvQztZQUNwQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUE7U0FDckU7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssOEJBQThCO1FBQ3BDLDJGQUEyRjtRQUMzRiwyRkFBMkY7UUFDM0YsNENBQTRDO1FBQzVDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUU7WUFDMUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyw0QkFBNEIsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRTtnQkFDbEUsd0VBQXdFO2dCQUN4RSxpRUFBaUU7Z0JBQ2pFLElBQUksQ0FBQyxhQUFhLEVBQUU7b0JBQ2xCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFBO2lCQUN2QztZQUNILENBQUMsQ0FBQyxDQUFBO1NBQ0g7SUFDSCxDQUFDO0lBRUQsMkVBQTJFO0lBQ25FLHVCQUF1QjtRQUM3QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsb0NBQW9DLENBQUE7UUFDekQseUZBQXlGO1FBQ3pGLElBQUksT0FBTyxJQUFJLE9BQU8sT0FBTyxDQUFDLEtBQUssS0FBSyxVQUFVLEVBQUU7WUFDbEQsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFBO1NBQ2hCO0lBQ0gsQ0FBQztJQUVNLGdCQUFnQjtRQUNyQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFBO0lBQ3ZDLENBQUM7OztZQTdORixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtnQkFDaEMsb0hBQStDO2dCQUUvQyxVQUFVLEVBQUU7b0JBQ1YsT0FBTyxDQUFDLFFBQVEsRUFBRTt3QkFDaEIsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBQyxPQUFPLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQzt3QkFDbkMsS0FBSyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsRUFBQyxPQUFPLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQzt3QkFDeEMsVUFBVSxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsNEJBQTRCLENBQUMsQ0FBQzt3QkFDL0QsVUFBVSxDQUFDLHNCQUFzQixFQUFFLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO3FCQUN6RSxDQUFDO2lCQUNIO2dCQUNELDZDQUE2QztnQkFDN0MsSUFBSSxFQUFFO29CQUNKLFdBQVcsRUFBRTs7Ozs7O01BTVg7b0JBQ0YsaUJBQWlCLEVBQUUsMkJBQTJCO29CQUM5QyxnQkFBZ0IsRUFBRSw2QkFBNkI7aUJBQ2hEOzthQUVGOzs7WUEvQ0MsVUFBVTtZQVBILGdCQUFnQjtZQUl2QixpQkFBaUI7NENBNEVkLFFBQVEsWUFBSSxNQUFNLFNBQUMsUUFBUTtZQTdEdkIsV0FBVzs7O3NCQXNDakIsV0FBVyxTQUFDLFNBQVM7eUJBTXJCLFdBQVcsU0FBQyxpQkFBaUI7K0JBRTdCLFdBQVcsU0FBQyx1QkFBdUI7b0JBR25DLFdBQVcsU0FBQyxXQUFXO2tDQUl2QixXQUFXLFNBQUMsNEJBQTRCOzJCQTRDeEMsV0FBVyxTQUFDLG9CQUFvQjttQ0FDaEMsV0FBVyxTQUFDLDZCQUE2Qjs2QkFFekMsV0FBVyxTQUFDLGdCQUFnQjs2QkFDNUIsV0FBVyxTQUFDLGdCQUFnQjs2QkFDNUIsV0FBVyxTQUFDLGdCQUFnQjswQkFHNUIsU0FBUyxTQUFDLGVBQWUsQ0FBQyxzQkFBc0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7dUJBa0JsRSxZQUFZLFNBQUMsT0FBTyxFQUFFLENBQUUsUUFBUSxDQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5pbWF0ZSwgQW5pbWF0aW9uRXZlbnQsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnXG5pbXBvcnQgeyBGb2N1c1RyYXBGYWN0b3J5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknXG5pbXBvcnQgeyBCYXNlUG9ydGFsT3V0bGV0LCBDZGtQb3J0YWxPdXRsZXQsIENvbXBvbmVudFBvcnRhbCwgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJ1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb21wb25lbnRSZWYsXG4gIEVsZW1lbnRSZWYsXG4gIEVtYmVkZGVkVmlld1JlZixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0LFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcblxuaW1wb3J0IHsgTW9kYWxDb25maWcgfSBmcm9tICcuLi9tb2RhbC1jb25maWcnXG5cbmV4cG9ydCBmdW5jdGlvbiB0aHJvd0RpYWxvZ0NvbnRlbnRBbHJlYWR5QXR0YWNoZWRFcnJvcigpIHtcbiAgdGhyb3cgRXJyb3IoJ0F0dGVtcHRpbmcgdG8gYXR0YWNoIGRpYWxvZyBjb250ZW50IGFmdGVyIGNvbnRlbnQgaXMgYWxyZWFkeSBhdHRhY2hlZCcpXG59XG5cbi8qKlxuICogSW50ZXJuYWwgY29tcG9uZW50IHRoYXQgd3JhcHMgdXNlci1wcm92aWRlZCBkaWFsb2cgY29udGVudC5cbiAqIEBkb2NzLXByaXZhdGVcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2VhbS1tb2RhbC1jb250YWluZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9kYWwtY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbW9kYWwtY29udGFpbmVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdkaWFsb2cnLCBbXG4gICAgICBzdGF0ZSgnZW50ZXInLCBzdHlsZSh7b3BhY2l0eTogMX0pKSxcbiAgICAgIHN0YXRlKCdleGl0LCB2b2lkJywgc3R5bGUoe29wYWNpdHk6IDB9KSksXG4gICAgICB0cmFuc2l0aW9uKCcqID0+IGVudGVyJywgYW5pbWF0ZSgne3tlbnRlckFuaW1hdGlvbkR1cmF0aW9ufX0nKSksXG4gICAgICB0cmFuc2l0aW9uKCcqID0+IGV4aXQsICogPT4gdm9pZCcsIGFuaW1hdGUoJ3t7ZXhpdEFuaW1hdGlvbkR1cmF0aW9ufX0nKSksXG4gICAgXSlcbiAgXSxcbiAgLy8gdHNsaW50OmRpc2FibGU6dXNlLWhvc3QtcHJvcGVydHktZGVjb3JhdG9yXG4gIGhvc3Q6IHtcbiAgICAnW0BkaWFsb2ddJzogYHtcbiAgICAgIHZhbHVlOiBfc3RhdGUsXG4gICAgICBwYXJhbXM6IHtcbiAgICAgICAgZW50ZXJBbmltYXRpb25EdXJhdGlvbjogX2NvbmZpZy5lbnRlckFuaW1hdGlvbkR1cmF0aW9uLFxuICAgICAgICBleGl0QW5pbWF0aW9uRHVyYXRpb246IF9jb25maWcuZXhpdEFuaW1hdGlvbkR1cmF0aW9uXG4gICAgICB9XG4gICAgfWAsXG4gICAgJyhAZGlhbG9nLnN0YXJ0KSc6ICdfb25BbmltYXRpb25TdGFydCgkZXZlbnQpJyxcbiAgICAnKEBkaWFsb2cuZG9uZSknOiAnX2FuaW1hdGlvbkRvbmUubmV4dCgkZXZlbnQpJyxcbiAgfSxcbiAgLy8gdHNsaW50OmVuYWJsZTp1c2UtaG9zdC1wcm9wZXJ0eS1kZWNvcmF0b3Jcbn0pXG5leHBvcnQgY2xhc3MgTW9kYWxDb250YWluZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlUG9ydGFsT3V0bGV0IGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuaWQnKSBnZXQgX2lkQXR0cigpIHsgcmV0dXJuIHRoaXMuX2lkIH1cblxuICAvLyBASG9zdEJpbmRpbmcgaXMgdXNlZCBpbiB0aGUgY2xhc3MgYXMgaXQgaXMgZXhwZWN0ZWQgdG8gYmUgZXh0ZW5kZWQuICBTaW5jZSBAQ29tcG9uZW50IGRlY29yYXRvclxuICAvLyBtZXRhZGF0YSBpcyBub3QgaW5oZXJpdGVkIGJ5IGNoaWxkIGNsYXNzZXMsIGluc3RlYWQgdGhlIGhvc3QgYmluZGluZyBkYXRhIGlzIGRlZmluZWQgaW4gYSB3YXlcbiAgLy8gdGhhdCBjYW4gYmUgaW5oZXJpdGVkLlxuICAvLyB0c2xpbnQ6ZGlzYWJsZTpuby1ob3N0LWRlY29yYXRvci1pbi1jb25jcmV0ZVxuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1sYWJlbCcpIGdldCBfYXJpYUxhYmVsKCkgeyByZXR1cm4gdGhpcy5fY29uZmlnLmFyaWFMYWJlbCB8fCBudWxsIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1kZXNjcmliZWRieScpXG4gIGdldCBfYXJpYURlc2NyaWJlZEJ5KCkgeyByZXR1cm4gdGhpcy5fY29uZmlnLmFyaWFEZXNjcmliZWRCeSB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnJvbGUnKSBnZXQgX3JvbGUoKSB7IHJldHVybiB0aGlzLl9jb25maWcucm9sZSB9XG5cbiAgLy8gQEhvc3RCaW5kaW5nKCdhdHRyLnRhYmluZGV4JykgZ2V0IF90YWJpbmRleCgpIHsgcmV0dXJuIC0xIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNlYW0tbW9kYWwtY29udGFpbmVyJykgX3NlYW1Nb2RhbENvbnRhaW5lciA9IHRydWVcblxuICBfaWQ6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBwcml2YXRlIF9mb2N1c1RyYXBGYWN0b3J5OiBGb2N1c1RyYXBGYWN0b3J5LFxuICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIF9kb2N1bWVudDogYW55LFxuICAgIC8qKiBUaGUgZGlhbG9nIGNvbmZpZ3VyYXRpb24uICovXG4gICAgcHVibGljIF9jb25maWc6IE1vZGFsQ29uZmlnKSB7XG4gICAgc3VwZXIoKVxuXG4gICAgLy8gV2UgdXNlIGEgU3ViamVjdCB3aXRoIGEgZGlzdGluY3RVbnRpbENoYW5nZWQsIHJhdGhlciB0aGFuIGEgY2FsbGJhY2sgYXR0YWNoZWQgdG8gLmRvbmUsXG4gICAgLy8gYmVjYXVzZSBzb21lIGJyb3dzZXJzIGZpcmUgdGhlIGRvbmUgZXZlbnQgdHdpY2UgYW5kIHdlIGRvbid0IHdhbnQgdG8gZW1pdCBkdXBsaWNhdGUgZXZlbnRzLlxuICAgIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMjQwODRcbiAgICB0aGlzLl9hbmltYXRpb25Eb25lLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKHgsIHkpID0+IHtcbiAgICAgIHJldHVybiB4LmZyb21TdGF0ZSA9PT0geS5mcm9tU3RhdGUgJiYgeC50b1N0YXRlID09PSB5LnRvU3RhdGVcbiAgICB9KSkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgIC8vIEVtaXQgbGlmZWN5Y2xlIGV2ZW50cyBiYXNlZCBvbiBhbmltYXRpb24gYGRvbmVgIGNhbGxiYWNrLlxuICAgICAgaWYgKGV2ZW50LnRvU3RhdGUgPT09ICdlbnRlcicpIHtcbiAgICAgICAgdGhpcy5fYXV0b0ZvY3VzRmlyc3RUYWJiYWJsZUVsZW1lbnQoKVxuICAgICAgICB0aGlzLl9hZnRlckVudGVyLm5leHQoKVxuICAgICAgICB0aGlzLl9hZnRlckVudGVyLmNvbXBsZXRlKClcbiAgICAgIH1cblxuICAgICAgaWYgKGV2ZW50LmZyb21TdGF0ZSA9PT0gJ2VudGVyJyAmJiAoZXZlbnQudG9TdGF0ZSA9PT0gJ3ZvaWQnIHx8IGV2ZW50LnRvU3RhdGUgPT09ICdleGl0JykpIHtcbiAgICAgICAgdGhpcy5fcmV0dXJuRm9jdXNBZnRlckRpYWxvZygpXG4gICAgICAgIHRoaXMuX2FmdGVyRXhpdC5uZXh0KClcbiAgICAgICAgdGhpcy5fYWZ0ZXJFeGl0LmNvbXBsZXRlKClcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgLyoqIFN0YXRlIG9mIHRoZSBkaWFsb2cgYW5pbWF0aW9uLiAqL1xuICBfc3RhdGU6ICd2b2lkJyB8ICdlbnRlcicgfCAnZXhpdCcgPSAnZW50ZXInXG5cbiAgLyoqIEVsZW1lbnQgdGhhdCB3YXMgZm9jdXNlZCBiZWZvcmUgdGhlIGRpYWxvZyB3YXMgb3BlbmVkLiBTYXZlIHRoaXMgdG8gcmVzdG9yZSB1cG9uIGNsb3NlLiAqL1xuICBwcml2YXRlIF9lbGVtZW50Rm9jdXNlZEJlZm9yZURpYWxvZ1dhc09wZW5lZDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbFxuXG4gICAvKiogVGhlIGNsYXNzIHRoYXQgdHJhcHMgYW5kIG1hbmFnZXMgZm9jdXMgd2l0aGluIHRoZSBkaWFsb2cuICovXG4gIHByaXZhdGUgX2ZvY3VzVHJhcCA9IHRoaXMuX2ZvY3VzVHJhcEZhY3RvcnkuY3JlYXRlKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgZmFsc2UpXG4gIC8vIHRzbGludDpkaXNhYmxlOm5vLWhvc3QtZGVjb3JhdG9yLWluLWNvbmNyZXRlXG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5tb2RhbC1kaWFsb2cnKSBfbW9kYWxEaWFsb2cgPSB0cnVlXG4gIEBIb3N0QmluZGluZygnY2xhc3MubW9kYWwtZGlhbG9nLWNlbnRlcmVkJykgX21vZGFsRGlhbG9nQ2VudGVyZWQgPSB0cnVlXG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5tb2RhbC1zbScpIGdldCBfbW9kYWxEaWFsb2dTbSgpIHsgcmV0dXJuIHRoaXMuX2NvbmZpZy5tb2RhbFNpemUgPT09ICdzbScgfVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm1vZGFsLWxnJykgZ2V0IF9tb2RhbERpYWxvZ0xnKCkgeyByZXR1cm4gdGhpcy5fY29uZmlnLm1vZGFsU2l6ZSA9PT0gJ2xnJyB9XG4gIEBIb3N0QmluZGluZygnY2xhc3MubW9kYWwteGwnKSBnZXQgX21vZGFsRGlhbG9nWGwoKSB7IHJldHVybiB0aGlzLl9jb25maWcubW9kYWxTaXplID09PSAneGwnIH1cblxuICAvKiogVGhlIHBvcnRhbCBob3N0IGluc2lkZSBvZiB0aGlzIGNvbnRhaW5lciBpbnRvIHdoaWNoIHRoZSBkaWFsb2cgY29udGVudCB3aWxsIGJlIGxvYWRlZC4gKi9cbiAgQFZpZXdDaGlsZChDZGtQb3J0YWxPdXRsZXQgLyosIHsgc3RhdGljOiB0cnVlIH0qLywgeyBzdGF0aWM6IHRydWUgfSkgX3BvcnRhbEhvc3Q/OiBDZGtQb3J0YWxPdXRsZXRcblxuICAvKiogQSBzdWJqZWN0IGVtaXR0aW5nIGJlZm9yZSB0aGUgZGlhbG9nIGVudGVycyB0aGUgdmlldy4gKi9cbiAgX2JlZm9yZUVudGVyOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKVxuXG4gIC8qKiBBIHN1YmplY3QgZW1pdHRpbmcgYWZ0ZXIgdGhlIGRpYWxvZyBlbnRlcnMgdGhlIHZpZXcuICovXG4gIF9hZnRlckVudGVyOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKVxuXG4gIC8qKiBBIHN1YmplY3QgZW1pdHRpbmcgYmVmb3JlIHRoZSBkaWFsb2cgZXhpdHMgdGhlIHZpZXcuICovXG4gIF9iZWZvcmVFeGl0OiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKVxuXG4gIC8qKiBBIHN1YmplY3QgZW1pdHRpbmcgYWZ0ZXIgdGhlIGRpYWxvZyBleGl0cyB0aGUgdmlldy4gKi9cbiAgX2FmdGVyRXhpdDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KClcblxuICAvKiogU3RyZWFtIG9mIGFuaW1hdGlvbiBgZG9uZWAgZXZlbnRzLiAqL1xuICBfYW5pbWF0aW9uRG9uZSA9IG5ldyBTdWJqZWN0PEFuaW1hdGlvbkV2ZW50PigpXG5cbiAgLy8gTk9URTogRm9yIGN1cnJlbnQgYm9vdHN0cmFwIHN0eWxlIG1vZGFsXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyAnJGV2ZW50JyBdKVxuICBfb25DbGljayhldmVudDogVUlFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gIH1cblxuICAvKiogRGVzdHJveSBmb2N1cyB0cmFwIHRvIHBsYWNlIGZvY3VzIGJhY2sgdG8gdGhlIGVsZW1lbnQgZm9jdXNlZCBiZWZvcmUgdGhlIGRpYWxvZyBvcGVuZWQuICovXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2ZvY3VzVHJhcC5kZXN0cm95KClcbiAgICB0aGlzLl9hbmltYXRpb25Eb25lLmNvbXBsZXRlKClcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRhY2ggYSBDb21wb25lbnRQb3J0YWwgYXMgY29udGVudCB0byB0aGlzIGRpYWxvZyBjb250YWluZXIuXG4gICAqIEBwYXJhbSBwb3J0YWwgUG9ydGFsIHRvIGJlIGF0dGFjaGVkIGFzIHRoZSBkaWFsb2cgY29udGVudC5cbiAgICovXG4gIGF0dGFjaENvbXBvbmVudFBvcnRhbDxUPihwb3J0YWw6IENvbXBvbmVudFBvcnRhbDxUPik6IENvbXBvbmVudFJlZjxUPiB7XG4gICAgaWYgKCF0aGlzLl9wb3J0YWxIb3N0KSB7XG4gICAgICB0aHJvdyBFcnJvcihgX3BvcnRhbEhvc3Qgbm90IGZvdW5kLmApXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3BvcnRhbEhvc3QuaGFzQXR0YWNoZWQoKSkge1xuICAgICAgdGhyb3dEaWFsb2dDb250ZW50QWxyZWFkeUF0dGFjaGVkRXJyb3IoKVxuICAgIH1cblxuICAgIHRoaXMuX3NhdmVQcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQoKVxuICAgIHJldHVybiB0aGlzLl9wb3J0YWxIb3N0LmF0dGFjaENvbXBvbmVudFBvcnRhbChwb3J0YWwpXG4gIH1cblxuICAvKipcbiAgICogQXR0YWNoIGEgVGVtcGxhdGVQb3J0YWwgYXMgY29udGVudCB0byB0aGlzIGRpYWxvZyBjb250YWluZXIuXG4gICAqIEBwYXJhbSBwb3J0YWwgUG9ydGFsIHRvIGJlIGF0dGFjaGVkIGFzIHRoZSBkaWFsb2cgY29udGVudC5cbiAgICovXG4gIGF0dGFjaFRlbXBsYXRlUG9ydGFsPEM+KHBvcnRhbDogVGVtcGxhdGVQb3J0YWw8Qz4pOiBFbWJlZGRlZFZpZXdSZWY8Qz4ge1xuICAgIGlmICghdGhpcy5fcG9ydGFsSG9zdCkge1xuICAgICAgdGhyb3cgRXJyb3IoYF9wb3J0YWxIb3N0IG5vdCBmb3VuZC5gKVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9wb3J0YWxIb3N0Lmhhc0F0dGFjaGVkKCkpIHtcbiAgICAgIHRocm93RGlhbG9nQ29udGVudEFscmVhZHlBdHRhY2hlZEVycm9yKClcbiAgICB9XG5cbiAgICB0aGlzLl9zYXZlUHJldmlvdXNseUZvY3VzZWRFbGVtZW50KClcbiAgICByZXR1cm4gdGhpcy5fcG9ydGFsSG9zdC5hdHRhY2hUZW1wbGF0ZVBvcnRhbChwb3J0YWwpXG4gIH1cblxuICAvKiogRW1pdCBsaWZlY3ljbGUgZXZlbnRzIGJhc2VkIG9uIGFuaW1hdGlvbiBgc3RhcnRgIGNhbGxiYWNrLiAqL1xuICBfb25BbmltYXRpb25TdGFydChldmVudDogQW5pbWF0aW9uRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQudG9TdGF0ZSA9PT0gJ2VudGVyJykge1xuICAgICAgdGhpcy5fYmVmb3JlRW50ZXIubmV4dCgpXG4gICAgICB0aGlzLl9iZWZvcmVFbnRlci5jb21wbGV0ZSgpXG4gICAgfVxuICAgIGlmIChldmVudC5mcm9tU3RhdGUgPT09ICdlbnRlcicgJiYgKGV2ZW50LnRvU3RhdGUgPT09ICd2b2lkJyB8fCBldmVudC50b1N0YXRlID09PSAnZXhpdCcpKSB7XG4gICAgICB0aGlzLl9iZWZvcmVFeGl0Lm5leHQoKVxuICAgICAgdGhpcy5fYmVmb3JlRXhpdC5jb21wbGV0ZSgpXG4gICAgfVxuICB9XG5cbiAgLyoqIFN0YXJ0cyB0aGUgZGlhbG9nIGV4aXQgYW5pbWF0aW9uLiAqL1xuICBfc3RhcnRFeGl0aW5nKCk6IHZvaWQge1xuICAgIHRoaXMuX3N0YXRlID0gJ2V4aXQnXG5cbiAgICAvLyBNYXJrIHRoZSBjb250YWluZXIgZm9yIGNoZWNrIHNvIGl0IGNhbiByZWFjdCBpZiB0aGVcbiAgICAvLyB2aWV3IGNvbnRhaW5lciBpcyB1c2luZyBPblB1c2ggY2hhbmdlIGRldGVjdGlvbi5cbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKVxuICB9XG5cbiAgLyoqIFNhdmVzIGEgcmVmZXJlbmNlIHRvIHRoZSBlbGVtZW50IHRoYXQgd2FzIGZvY3VzZWQgYmVmb3JlIHRoZSBkaWFsb2cgd2FzIG9wZW5lZC4gKi9cbiAgcHJpdmF0ZSBfc2F2ZVByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCgpIHtcbiAgICBpZiAodGhpcy5fZG9jdW1lbnQpIHtcbiAgICAgIHRoaXMuX2VsZW1lbnRGb2N1c2VkQmVmb3JlRGlhbG9nV2FzT3BlbmVkID0gdGhpcy5fZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudFxuXG4gICAgICAvLyBNb3ZlIGZvY3VzIG9udG8gdGhlIGRpYWxvZyBpbW1lZGlhdGVseSBpbiBvcmRlciB0byBwcmV2ZW50IHRoZSB1c2VyIGZyb20gYWNjaWRlbnRhbGx5XG4gICAgICAvLyBvcGVuaW5nIG11bHRpcGxlIGRpYWxvZ3MgYXQgdGhlIHNhbWUgdGltZS4gTmVlZHMgdG8gYmUgYXN5bmMsIGJlY2F1c2UgdGhlIGVsZW1lbnRcbiAgICAgIC8vIG1heSBub3QgYmUgZm9jdXNhYmxlIGltbWVkaWF0ZWx5LlxuICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQXV0b2ZvY3VzIHRoZSBmaXJzdCB0YWJiYWJsZSBlbGVtZW50IGluc2lkZSBvZiB0aGUgZGlhbG9nLCBpZiB0aGVyZSBpcyBub3QgYSB0YWJiYWJsZSBlbGVtZW50LFxuICAgKiBmb2N1cyB0aGUgZGlhbG9nIGluc3RlYWQuXG4gICAqL1xuICBwcml2YXRlIF9hdXRvRm9jdXNGaXJzdFRhYmJhYmxlRWxlbWVudCgpIHtcbiAgICAvLyBJZiB3ZXJlIHRvIGF0dGVtcHQgdG8gZm9jdXMgaW1tZWRpYXRlbHksIHRoZW4gdGhlIGNvbnRlbnQgb2YgdGhlIGRpYWxvZyB3b3VsZCBub3QgeWV0IGJlXG4gICAgLy8gcmVhZHkgaW4gaW5zdGFuY2VzIHdoZXJlIGNoYW5nZSBkZXRlY3Rpb24gaGFzIHRvIHJ1biBmaXJzdC4gVG8gZGVhbCB3aXRoIHRoaXMsIHdlIHNpbXBseVxuICAgIC8vIHdhaXQgZm9yIHRoZSBtaWNyb3Rhc2sgcXVldWUgdG8gYmUgZW1wdHkuXG4gICAgaWYgKHRoaXMuX2NvbmZpZy5hdXRvRm9jdXMpIHtcbiAgICAgIHRoaXMuX2ZvY3VzVHJhcC5mb2N1c0luaXRpYWxFbGVtZW50V2hlblJlYWR5KCkudGhlbihoYXNNb3ZlZEZvY3VzID0+IHtcbiAgICAgICAgLy8gSWYgd2UgZGlkbid0IGZpbmQgYW55IGZvY3VzYWJsZSBlbGVtZW50cyBpbnNpZGUgdGhlIGRpYWxvZywgZm9jdXMgdGhlXG4gICAgICAgIC8vIGNvbnRhaW5lciBzbyB0aGUgdXNlciBjYW4ndCB0YWIgaW50byBvdGhlciBlbGVtZW50cyBiZWhpbmQgaXQuXG4gICAgICAgIGlmICghaGFzTW92ZWRGb2N1cykge1xuICAgICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgLyoqIFJldHVybnMgdGhlIGZvY3VzIHRvIHRoZSBlbGVtZW50IGZvY3VzZWQgYmVmb3JlIHRoZSBkaWFsb2cgd2FzIG9wZW4uICovXG4gIHByaXZhdGUgX3JldHVybkZvY3VzQWZ0ZXJEaWFsb2coKSB7XG4gICAgY29uc3QgdG9Gb2N1cyA9IHRoaXMuX2VsZW1lbnRGb2N1c2VkQmVmb3JlRGlhbG9nV2FzT3BlbmVkXG4gICAgLy8gV2UgbmVlZCB0aGUgZXh0cmEgY2hlY2ssIGJlY2F1c2UgSUUgY2FuIHNldCB0aGUgYGFjdGl2ZUVsZW1lbnRgIHRvIG51bGwgaW4gc29tZSBjYXNlcy5cbiAgICBpZiAodG9Gb2N1cyAmJiB0eXBlb2YgdG9Gb2N1cy5mb2N1cyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdG9Gb2N1cy5mb2N1cygpXG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldE5hdGl2ZUVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnRcbiAgfVxuXG59XG4iXX0=
@@ -1,5 +1,6 @@
1
1
  import { ESCAPE } from '@angular/cdk/keycodes';
2
2
  import { filter, map } from 'rxjs/operators';
3
+ const DRAG_CLOSE_THRESHOLD = 5;
3
4
  /** Unique id for the created dialog. */
4
5
  let uniqueId = 0;
5
6
  /**
@@ -12,13 +13,9 @@ export class ModalRef {
12
13
  this.id = id;
13
14
  /** The instance of the component in the dialog. */
14
15
  this.componentInstance = null;
16
+ this._clickOutsideCleanup = null;
15
17
  // Pass the id along to the container.
16
18
  _containerInstance._id = id;
17
- const _bootstrapBackdropClickListener = () => {
18
- if (!this.disableClose) {
19
- this.close();
20
- }
21
- };
22
19
  // If the dialog has a backdrop, handle clicks from the backdrop.
23
20
  if (_containerInstance._config.hasBackdrop) {
24
21
  _overlayRef.backdropClick().subscribe(() => {
@@ -26,16 +23,12 @@ export class ModalRef {
26
23
  this.close();
27
24
  }
28
25
  });
29
- // NOTE: For current bootstrap style modal
30
- _overlayRef.overlayElement.addEventListener('click', _bootstrapBackdropClickListener);
26
+ this._clickOutsideCleanup = this._initCloseOnClickOutside();
31
27
  }
32
28
  this.beforeClosed().subscribe(() => {
33
29
  this._overlayRef.detachBackdrop();
34
30
  });
35
31
  this.afterClosed().subscribe(() => {
36
- if (this._containerInstance._config.hasBackdrop) {
37
- this._overlayRef.overlayElement.removeEventListener('click', _bootstrapBackdropClickListener);
38
- }
39
32
  this._overlayRef.detach();
40
33
  this._overlayRef.dispose();
41
34
  this.componentInstance = null;
@@ -46,6 +39,55 @@ export class ModalRef {
46
39
  .pipe(filter(event => event.keyCode === ESCAPE && !this.disableClose))
47
40
  .subscribe(() => this.close());
48
41
  }
42
+ _initCloseOnClickOutside() {
43
+ const close = () => {
44
+ if (!this.disableClose) {
45
+ this.close();
46
+ }
47
+ };
48
+ const isInContainer = (target) => {
49
+ return this._containerInstance.getNativeElement().contains(target);
50
+ };
51
+ const getPosition = (event) => {
52
+ return { x: event.clientX, y: event.clientY };
53
+ };
54
+ const dist = (x1, y1, x2, y2) => {
55
+ return Math.sqrt(Math.pow((x2 - x1), 2) + Math.pow((y2 - y1), 2));
56
+ };
57
+ let pressed = false;
58
+ let pressedPosition = null;
59
+ const _handlePressDown = (event) => {
60
+ pressed = true;
61
+ pressedPosition = getPosition(event);
62
+ };
63
+ const _handlePressUp = (event) => {
64
+ if (pressedPosition) {
65
+ const target = event.target;
66
+ if (target && !isInContainer(target)) {
67
+ const currentPosition = getPosition(event);
68
+ const d = dist(currentPosition.x, currentPosition.y, pressedPosition.x, pressedPosition.y);
69
+ if (d < DRAG_CLOSE_THRESHOLD) {
70
+ close();
71
+ }
72
+ }
73
+ pressedPosition = null;
74
+ }
75
+ else if (pressed) {
76
+ close();
77
+ }
78
+ pressed = false;
79
+ };
80
+ this._overlayRef.overlayElement.addEventListener('mousedown', _handlePressDown);
81
+ this._overlayRef.overlayElement.addEventListener('pointerdown', _handlePressDown);
82
+ this._overlayRef.overlayElement.addEventListener('mouseup', _handlePressUp);
83
+ this._overlayRef.overlayElement.addEventListener('pointerup', _handlePressUp);
84
+ return () => {
85
+ this._overlayRef.overlayElement.removeEventListener('mousedown', _handlePressDown);
86
+ this._overlayRef.overlayElement.removeEventListener('pointerdown', _handlePressDown);
87
+ this._overlayRef.overlayElement.removeEventListener('mouseup', _handlePressUp);
88
+ this._overlayRef.overlayElement.removeEventListener('pointerup', _handlePressUp);
89
+ };
90
+ }
49
91
  /** Gets an observable that emits when the overlay's backdrop has been clicked. */
50
92
  backdropClick() {
51
93
  return this._overlayRef.backdropClick();
@@ -57,6 +99,9 @@ export class ModalRef {
57
99
  close(dialogResult) {
58
100
  this._result = dialogResult;
59
101
  this._containerInstance._startExiting();
102
+ if (this._clickOutsideCleanup) {
103
+ this._clickOutsideCleanup();
104
+ }
60
105
  }
61
106
  /**
62
107
  * Updates the dialog's position.
@@ -123,4 +168,4 @@ export class ModalRef {
123
168
  return this._containerInstance._afterExit.pipe(map(() => this._result));
124
169
  }
125
170
  }
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtcmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL21vZGFsL21vZGFsLXJlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFHOUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUs1Qyx3Q0FBd0M7QUFDeEMsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFBO0FBRWhCOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFFBQVE7SUFVbkIsWUFDUyxXQUF1QixFQUNwQixrQkFBMkMsRUFDNUMsS0FBYSxjQUFjLFFBQVEsRUFBRSxFQUFFO1FBRnpDLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ3BCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBeUI7UUFDNUMsT0FBRSxHQUFGLEVBQUUsQ0FBcUM7UUFabEQsbURBQW1EO1FBQ25ELHNCQUFpQixHQUFhLElBQUksQ0FBQTtRQVloQyxzQ0FBc0M7UUFDdEMsa0JBQWtCLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQTtRQUUzQixNQUFNLCtCQUErQixHQUFHLEdBQUcsRUFBRTtZQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDdEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFBO2FBQ2I7UUFDSCxDQUFDLENBQUE7UUFFRCxpRUFBaUU7UUFDakUsSUFBSSxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFO1lBQzFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtvQkFDdEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFBO2lCQUNiO1lBQ0gsQ0FBQyxDQUFDLENBQUE7WUFFRiwwQ0FBMEM7WUFDMUMsV0FBVyxDQUFDLGNB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ZXljb2RlcydcbmltcG9ydCB7IEdsb2JhbFBvc2l0aW9uU3RyYXRlZ3ksIE92ZXJsYXlSZWYsIE92ZXJsYXlTaXplQ29uZmlnIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IGZpbHRlciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5cbmltcG9ydCB7IElNb2RhbFBvc2l0aW9uIH0gZnJvbSAnLi9tb2RhbC1jb25maWcnXG5pbXBvcnQgeyBNb2RhbENvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4vbW9kYWwtY29udGFpbmVyL21vZGFsLWNvbnRhaW5lci5jb21wb25lbnQnXG5cbi8qKiBVbmlxdWUgaWQgZm9yIHRoZSBjcmVhdGVkIGRpYWxvZy4gKi9cbmxldCB1bmlxdWVJZCA9IDBcblxuLyoqXG4gKiBSZWZlcmVuY2UgdG8gYSBkaWFsb2cgb3BlbmVkIHZpYSB0aGUgRGlhbG9nIHNlcnZpY2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBNb2RhbFJlZjxULCBSID0gYW55PiB7XG4gIC8qKiBUaGUgaW5zdGFuY2Ugb2YgdGhlIGNvbXBvbmVudCBpbiB0aGUgZGlhbG9nLiAqL1xuICBjb21wb25lbnRJbnN0YW5jZTogVCB8IG51bGwgPSBudWxsXG5cbiAgLyoqIFdoZXRoZXIgdGhlIHVzZXIgaXMgYWxsb3dlZCB0byBjbG9zZSB0aGUgZGlhbG9nLiAqL1xuICBkaXNhYmxlQ2xvc2U6IGJvb2xlYW4gfCB1bmRlZmluZWRcblxuICAvKiogUmVzdWx0IHRvIGJlIHBhc3NlZCB0byBhZnRlckNsb3NlZC4gKi9cbiAgcHJpdmF0ZSBfcmVzdWx0OiBSIHwgdW5kZWZpbmVkXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIF9vdmVybGF5UmVmOiBPdmVybGF5UmVmLFxuICAgIHByb3RlY3RlZCBfY29udGFpbmVySW5zdGFuY2U6IE1vZGFsQ29udGFpbmVyQ29tcG9uZW50LFxuICAgIHJlYWRvbmx5IGlkOiBzdHJpbmcgPSBgc2VhbS1tb2RhbC0ke3VuaXF1ZUlkKyt9YCkge1xuICAgIC8vIFBhc3MgdGhlIGlkIGFsb25nIHRvIHRoZSBjb250YWluZXIuXG4gICAgX2NvbnRhaW5lckluc3RhbmNlLl9pZCA9IGlkXG5cbiAgICBjb25zdCBfYm9vdHN0cmFwQmFja2Ryb3BDbGlja0xpc3RlbmVyID0gKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmRpc2FibGVDbG9zZSkge1xuICAgICAgICB0aGlzLmNsb3NlKClcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgZGlhbG9nIGhhcyBhIGJhY2tkcm9wLCBoYW5kbGUgY2xpY2tzIGZyb20gdGhlIGJhY2tkcm9wLlxuICAgIGlmIChfY29udGFpbmVySW5zdGFuY2UuX2NvbmZpZy5oYXNCYWNrZHJvcCkge1xuICAgICAgX292ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlQ2xvc2UpIHtcbiAgICAgICAgICB0aGlzLmNsb3NlKClcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgLy8gTk9URTogRm9yIGN1cnJlbnQgYm9vdHN0cmFwIHN0eWxlIG1vZGFsXG4gICAgICBfb3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIF9ib290c3RyYXBCYWNrZHJvcENsaWNrTGlzdGVuZXIpXG4gICAgfVxuXG4gICAgdGhpcy5iZWZvcmVDbG9zZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5fb3ZlcmxheVJlZi5kZXRhY2hCYWNrZHJvcCgpXG4gICAgfSlcblxuICAgIHRoaXMuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX2NvbnRhaW5lckluc3RhbmNlLl9jb25maWcuaGFzQmFja2Ryb3ApIHtcbiAgICAgICAgdGhpcy5fb3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIF9ib290c3RyYXBCYWNrZHJvcENsaWNrTGlzdGVuZXIpXG4gICAgICB9XG4gICAgICB0aGlzLl9vdmVybGF5UmVmLmRldGFjaCgpXG4gICAgICB0aGlzLl9vdmVybGF5UmVmLmRpc3Bvc2UoKVxuICAgICAgdGhpcy5jb21wb25lbnRJbnN0YW5jZSA9IG51bGxcbiAgICB9KVxuXG4gICAgLy8gQ2xvc2Ugd2hlbiBlc2NhcGUga2V5ZG93biBldmVudCBvY2N1cnNcbiAgICBfb3ZlcmxheVJlZi5rZXlkb3duRXZlbnRzKClcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpkZXByZWNhdGlvblxuICAgICAgLnBpcGUoZmlsdGVyKGV2ZW50ID0+IGV2ZW50LmtleUNvZGUgPT09IEVTQ0FQRSAmJiAhdGhpcy5kaXNhYmxlQ2xvc2UpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsb3NlKCkpXG4gIH1cblxuICAvKiogR2V0cyBhbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgd2hlbiB0aGUgb3ZlcmxheSdzIGJhY2tkcm9wIGhhcyBiZWVuIGNsaWNrZWQuICovXG4gIGJhY2tkcm9wQ2xpY2soKTogT2JzZXJ2YWJsZTxNb3VzZUV2ZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuX292ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpXG4gIH1cblxuICAvKipcbiAgICogQ2xvc2UgdGhlIGRpYWxvZy5cbiAgICogQHBhcmFtIGRpYWxvZ1Jlc3VsdCBPcHRpb25hbCByZXN1bHQgdG8gcmV0dXJuIHRvIHRoZSBkaWFsb2cgb3BlbmVyLlxuICAgKi9cbiAgY2xvc2UoZGlhbG9nUmVzdWx0PzogUik6IHZvaWQge1xuICAgIHRoaXMuX3Jlc3VsdCA9IGRpYWxvZ1Jlc3VsdFxuICAgIHRoaXMuX2NvbnRhaW5lckluc3RhbmNlLl9zdGFydEV4aXRpbmcoKVxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIGRpYWxvZydzIHBvc2l0aW9uLlxuICAgKiBAcGFyYW0gcG9zaXRpb24gTmV3IGRpYWxvZyBwb3NpdGlvbi5cbiAgICovXG4gIHVwZGF0ZVBvc2l0aW9uKHBvc2l0aW9uPzogSU1vZGFsUG9zaXRpb24pOiB0aGlzIHtcbiAgICBjb25zdCBzdHJhdGVneSA9IHRoaXMuX2dldFBvc2l0aW9uU3RyYXRlZ3koKVxuXG4gICAgaWYgKHBvc2l0aW9uICYmIChwb3NpdGlvbi5sZWZ0IHx8IHBvc2l0aW9uLnJpZ2h0KSkge1xuICAgICAgcG9zaXRpb24ubGVmdCA/IHN0cmF0ZWd5LmxlZnQocG9zaXRpb24ubGVmdCkgOiBzdHJhdGVneS5yaWdodChwb3NpdGlvbi5yaWdodClcbiAgICB9IGVsc2Uge1xuICAgICAgc3RyYXRlZ3kuY2VudGVySG9yaXpvbnRhbGx5KClcbiAgICB9XG5cbiAgICBpZiAocG9zaXRpb24gJiYgKHBvc2l0aW9uLnRvcCB8fCBwb3NpdGlvbi5ib3R0b20pKSB7XG4gICAgICBwb3NpdGlvbi50b3AgPyBzdHJhdGVneS50b3AocG9zaXRpb24udG9wKSA6IHN0cmF0ZWd5LmJvdHRvbShwb3NpdGlvbi5ib3R0b20pXG4gICAgfSBlbHNlIHtcbiAgICAgIHN0cmF0ZWd5LmNlbnRlclZlcnRpY2FsbHkoKVxuICAgIH1cblxuICAgIHRoaXMuX292ZXJsYXlSZWYudXBkYXRlUG9zaXRpb24oKVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB3aGVuIGtleWRvd24gZXZlbnRzIGFyZSB0YXJnZXRlZCBvbiB0aGUgb3ZlcmxheS5cbiAgICovXG4gIGtleWRvd25FdmVudHMoKTogT2JzZXJ2YWJsZTxLZXlib2FyZEV2ZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuX292ZXJsYXlSZWYua2V5ZG93bkV2ZW50cygpXG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgZGlhbG9nJ3Mgd2lkdGggYW5kIGhlaWdodCwgZGVmaW5lZCwgbWluIGFuZCBtYXguXG4gICAqIEBwYXJhbSBzaXplIE5ldyBzaXplIGZvciB0aGUgb3ZlcmxheS5cbiAgICovXG4gIHVwZGF0ZVNpemUoc2l6ZTogT3ZlcmxheVNpemVDb25maWcpOiB0aGlzIHtcbiAgICBpZiAoc2l6ZS53aWR0aCkge1xuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmRlcHJlY2F0aW9uXG4gICAgICB0aGlzLl9nZXRQb3NpdGlvblN0cmF0ZWd5KCkud2lkdGgoc2l6ZS53aWR0aC50b1N0cmluZygpKVxuICAgIH1cbiAgICBpZiAoc2l6ZS5oZWlnaHQpIHtcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpkZXByZWNhdGlvblxuICAgICAgdGhpcy5fZ2V0UG9zaXRpb25TdHJhdGVneSgpLmhlaWdodChzaXplLmhlaWdodC50b1N0cmluZygpKVxuICAgIH1cbiAgICB0aGlzLl9vdmVybGF5UmVmLnVwZGF0ZVNpemUoc2l6ZSlcbiAgICB0aGlzLl9vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uKClcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqIEZldGNoZXMgdGhlIHBvc2l0aW9uIHN0cmF0ZWd5IG9iamVjdCBmcm9tIHRoZSBvdmVybGF5IHJlZi4gKi9cbiAgcHJpdmF0ZSBfZ2V0UG9zaXRpb25TdHJhdGVneSgpOiBHbG9iYWxQb3NpdGlvblN0cmF0ZWd5IHtcbiAgICByZXR1cm4gdGhpcy5fb3ZlcmxheVJlZi5nZXRDb25maWcoKS5wb3NpdGlvblN0cmF0ZWd5IGFzIEdsb2JhbFBvc2l0aW9uU3RyYXRlZ3lcbiAgfVxuXG4gIC8qKiBHZXRzIGFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB3aGVuIGRpYWxvZyBiZWdpbnMgb3BlbmluZy4gKi9cbiAgYmVmb3JlT3BlbmVkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9jb250YWluZXJJbnN0YW5jZS5fYmVmb3JlRW50ZXIuYXNPYnNlcnZhYmxlKClcbiAgfVxuXG4gIC8qKiBHZXRzIGFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB3aGVuIGRpYWxvZyBpcyBmaW5pc2hlZCBvcGVuaW5nLiAqL1xuICBhZnRlck9wZW5lZCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fY29udGFpbmVySW5zdGFuY2UuX2FmdGVyRW50ZXIuYXNPYnNlcnZhYmxlKClcbiAgfVxuXG4gIC8qKiBHZXRzIGFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB3aGVuIGRpYWxvZyBiZWdpbnMgY2xvc2luZy4gKi9cbiAgYmVmb3JlQ2xvc2VkKCk6IE9ic2VydmFibGU8UiB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLl9jb250YWluZXJJbnN0YW5jZS5fYmVmb3JlRXhpdC5waXBlKG1hcCgoKSA9PiB0aGlzLl9yZXN1bHQpKVxuICB9XG5cbiAgLyoqIEdldHMgYW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHdoZW4gZGlhbG9nIGlzIGZpbmlzaGVkIGNsb3NpbmcuICovXG4gIGFmdGVyQ2xvc2VkKCk6IE9ic2VydmFibGU8UiB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLl9jb250YWluZXJJbnN0YW5jZS5fYWZ0ZXJFeGl0LnBpcGUobWFwKCgpID0+IHRoaXMuX3Jlc3VsdCkpXG4gIH1cbn1cbiJdfQ==
171
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtcmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL21vZGFsL21vZGFsLXJlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFHOUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUs1QyxNQUFNLG9CQUFvQixHQUFHLENBQUMsQ0FBQTtBQUU5Qix3Q0FBd0M7QUFDeEMsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFBO0FBRWhCOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFFBQVE7SUFZbkIsWUFDUyxXQUF1QixFQUNwQixrQkFBMkMsRUFDNUMsS0FBYSxjQUFjLFFBQVEsRUFBRSxFQUFFO1FBRnpDLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ3BCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBeUI7UUFDNUMsT0FBRSxHQUFGLEVBQUUsQ0FBcUM7UUFkbEQsbURBQW1EO1FBQ25ELHNCQUFpQixHQUFhLElBQUksQ0FBQTtRQVExQix5QkFBb0IsR0FBd0IsSUFBSSxDQUFBO1FBTXRELHNDQUFzQztRQUN0QyxrQkFBa0IsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFBO1FBRTNCLGlFQUFpRTtRQUNqRSxJQUFJLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUU7WUFDMUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO29CQUN0QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUE7aUJBQ2I7WUFDSCxDQUFDLENBQUMsQ0FBQTtZQUVGLElBQUksQ0FBQyxvQkFBb0IsR0FBSSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQTtTQUM3RDtRQUVELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FB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bnQiOlsiaW1wb3J0IHsgRVNDQVBFIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJ1xuaW1wb3J0IHsgR2xvYmFsUG9zaXRpb25TdHJhdGVneSwgT3ZlcmxheVJlZiwgT3ZlcmxheVNpemVDb25maWcgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSdcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcblxuaW1wb3J0IHsgSU1vZGFsUG9zaXRpb24gfSBmcm9tICcuL21vZGFsLWNvbmZpZydcbmltcG9ydCB7IE1vZGFsQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9tb2RhbC1jb250YWluZXIvbW9kYWwtY29udGFpbmVyLmNvbXBvbmVudCdcblxuY29uc3QgRFJBR19DTE9TRV9USFJFU0hPTEQgPSA1XG5cbi8qKiBVbmlxdWUgaWQgZm9yIHRoZSBjcmVhdGVkIGRpYWxvZy4gKi9cbmxldCB1bmlxdWVJZCA9IDBcblxuLyoqXG4gKiBSZWZlcmVuY2UgdG8gYSBkaWFsb2cgb3BlbmVkIHZpYSB0aGUgRGlhbG9nIHNlcnZpY2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBNb2RhbFJlZjxULCBSID0gYW55PiB7XG4gIC8qKiBUaGUgaW5zdGFuY2Ugb2YgdGhlIGNvbXBvbmVudCBpbiB0aGUgZGlhbG9nLiAqL1xuICBjb21wb25lbnRJbnN0YW5jZTogVCB8IG51bGwgPSBudWxsXG5cbiAgLyoqIFdoZXRoZXIgdGhlIHVzZXIgaXMgYWxsb3dlZCB0byBjbG9zZSB0aGUgZGlhbG9nLiAqL1xuICBkaXNhYmxlQ2xvc2U6IGJvb2xlYW4gfCB1bmRlZmluZWRcblxuICAvKiogUmVzdWx0IHRvIGJlIHBhc3NlZCB0byBhZnRlckNsb3NlZC4gKi9cbiAgcHJpdmF0ZSBfcmVzdWx0OiBSIHwgdW5kZWZpbmVkXG5cbiAgcHJpdmF0ZSBfY2xpY2tPdXRzaWRlQ2xlYW51cDogKCgpID0+IHZvaWQpIHwgbnVsbCA9IG51bGxcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgX292ZXJsYXlSZWY6IE92ZXJsYXlSZWYsXG4gICAgcHJvdGVjdGVkIF9jb250YWluZXJJbnN0YW5jZTogTW9kYWxDb250YWluZXJDb21wb25lbnQsXG4gICAgcmVhZG9ubHkgaWQ6IHN0cmluZyA9IGBzZWFtLW1vZGFsLSR7dW5pcXVlSWQrK31gKSB7XG4gICAgLy8gUGFzcyB0aGUgaWQgYWxvbmcgdG8gdGhlIGNvbnRhaW5lci5cbiAgICBfY29udGFpbmVySW5zdGFuY2UuX2lkID0gaWRcblxuICAgIC8vIElmIHRoZSBkaWFsb2cgaGFzIGEgYmFja2Ryb3AsIGhhbmRsZSBjbGlja3MgZnJvbSB0aGUgYmFja2Ryb3AuXG4gICAgaWYgKF9jb250YWluZXJJbnN0YW5jZS5fY29uZmlnLmhhc0JhY2tkcm9wKSB7XG4gICAgICBfb3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVDbG9zZSkge1xuICAgICAgICAgIHRoaXMuY2xvc2UoKVxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgICB0aGlzLl9jbGlja091dHNpZGVDbGVhbnVwID0gIHRoaXMuX2luaXRDbG9zZU9uQ2xpY2tPdXRzaWRlKClcbiAgICB9XG5cbiAgICB0aGlzLmJlZm9yZUNsb3NlZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLl9vdmVybGF5UmVmLmRldGFjaEJhY2tkcm9wKClcbiAgICB9KVxuXG4gICAgdGhpcy5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLl9vdmVybGF5UmVmLmRldGFjaCgpXG4gICAgICB0aGlzLl9vdmVybGF5UmVmLmRpc3Bvc2UoKVxuICAgICAgdGhpcy5jb21wb25lbnRJbnN0YW5jZSA9IG51bGxcbiAgICB9KVxuXG4gICAgLy8gQ2xvc2Ugd2hlbiBlc2NhcGUga2V5ZG93biBldmVudCBvY2N1cnNcbiAgICBfb3ZlcmxheVJlZi5rZXlkb3duRXZlbnRzKClcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpkZXByZWNhdGlvblxuICAgICAgLnBpcGUoZmlsdGVyKGV2ZW50ID0+IGV2ZW50LmtleUNvZGUgPT09IEVTQ0FQRSAmJiAhdGhpcy5kaXNhYmxlQ2xvc2UpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsb3NlKCkpXG4gIH1cblxuICBwcml2YXRlIF9pbml0Q2xvc2VPbkNsaWNrT3V0c2lkZSgpOiAoKSA9PiB2b2lkIHtcbiAgICBjb25zdCBjbG9zZSA9ICgpID0+IHtcbiAgICAgIGlmICghdGhpcy5kaXNhYmxlQ2xvc2UpIHtcbiAgICAgICAgdGhpcy5jbG9zZSgpXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgaXNJbkNvbnRhaW5lciA9ICh0YXJnZXQ6IEhUTUxFbGVtZW50IHwgbnVsbCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2NvbnRhaW5lckluc3RhbmNlLmdldE5hdGl2ZUVsZW1lbnQoKS5jb250YWlucyh0YXJnZXQpXG4gICAgfVxuXG4gICAgY29uc3QgZ2V0UG9zaXRpb24gPSAoZXZlbnQ6IE1vdXNlRXZlbnQgfCBQb2ludGVyRXZlbnQpOiB7IHg6IG51bWJlciwgeTogbnVtYmVyIH0gPT4ge1xuICAgICAgcmV0dXJuIHsgeDogZXZlbnQuY2xpZW50WCwgeTogZXZlbnQuY2xpZW50WSB9XG4gICAgfVxuXG4gICAgY29uc3QgZGlzdCA9ICh4MTogbnVtYmVyLCB5MTogbnVtYmVyLCB4MjogbnVtYmVyLCB5MjogbnVtYmVyKTogbnVtYmVyID0+IHtcbiAgICAgIHJldHVybiBNYXRoLnNxcnQoIE1hdGgucG93KCh4MiAtIHgxKSwgMikgKyBNYXRoLnBvdygoeTIgLSB5MSksIDIpIClcbiAgICB9XG5cbiAgICBsZXQgcHJlc3NlZCA9IGZhbHNlXG4gICAgbGV0IHByZXNzZWRQb3NpdGlvbjogeyB4OiBudW1iZXIsIHk6IG51bWJlciB9IHwgbnVsbCA9IG51bGxcbiAgICBjb25zdCBfaGFuZGxlUHJlc3NEb3duID0gKGV2ZW50OiBNb3VzZUV2ZW50IHwgUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICBwcmVzc2VkID0gdHJ1ZVxuICAgICAgcHJlc3NlZFBvc2l0aW9uID0gZ2V0UG9zaXRpb24oZXZlbnQpXG4gICAgfVxuXG4gICAgY29uc3QgX2hhbmRsZVByZXNzVXAgPSAoZXZlbnQ6IE1vdXNlRXZlbnQgfCBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgIGlmIChwcmVzc2VkUG9zaXRpb24pIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50IHwgbnVsbFxuICAgICAgICBpZiAodGFyZ2V0ICYmICFpc0luQ29udGFpbmVyKHRhcmdldCkpIHtcbiAgICAgICAgICBjb25zdCBjdXJyZW50UG9zaXRpb24gPSBnZXRQb3NpdGlvbihldmVudClcbiAgICAgICAgICBjb25zdCBkID0gZGlzdChjdXJyZW50UG9zaXRpb24ueCwgY3VycmVudFBvc2l0aW9uLnksIHByZXNzZWRQb3NpdGlvbi54LCBwcmVzc2VkUG9zaXRpb24ueSlcbiAgICAgICAgICBpZiAoZCA8IERSQUdfQ0xPU0VfVEhSRVNIT0xEKSB7XG4gICAgICAgICAgICBjbG9zZSgpXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcHJlc3NlZFBvc2l0aW9uID0gbnVsbFxuICAgICAgfSBlbHNlIGlmIChwcmVzc2VkKSB7XG4gICAgICAgIGNsb3NlKClcbiAgICAgIH1cbiAgICAgIHByZXNzZWQgPSBmYWxzZVxuICAgIH1cblxuICAgIHRoaXMuX292ZXJsYXlSZWYub3ZlcmxheUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgX2hhbmRsZVByZXNzRG93bilcbiAgICB0aGlzLl9vdmVybGF5UmVmLm92ZXJsYXlFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgX2hhbmRsZVByZXNzRG93bilcblxuICAgIHRoaXMuX292ZXJsYXlSZWYub3ZlcmxheUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIF9oYW5kbGVQcmVzc1VwKVxuICAgIHRoaXMuX292ZXJsYXlSZWYub3ZlcmxheUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcnVwJywgX2hhbmRsZVByZXNzVXApXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgdGhpcy5fb3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBfaGFuZGxlUHJlc3NEb3duKVxuICAgICAgdGhpcy5fb3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsIF9oYW5kbGVQcmVzc0Rvd24pXG5cbiAgICAgIHRoaXMuX292ZXJsYXlSZWYub3ZlcmxheUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIF9oYW5kbGVQcmVzc1VwKVxuICAgICAgdGhpcy5fb3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVydXAnLCBfaGFuZGxlUHJlc3NVcClcbiAgICB9XG4gIH1cblxuICAvKiogR2V0cyBhbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgd2hlbiB0aGUgb3ZlcmxheSdzIGJhY2tkcm9wIGhhcyBiZWVuIGNsaWNrZWQuICovXG4gIGJhY2tkcm9wQ2xpY2soKTogT2JzZXJ2YWJsZTxNb3VzZUV2ZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuX292ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpXG4gIH1cblxuICAvKipcbiAgICogQ2xvc2UgdGhlIGRpYWxvZy5cbiAgICogQHBhcmFtIGRpYWxvZ1Jlc3VsdCBPcHRpb25hbCByZXN1bHQgdG8gcmV0dXJuIHRvIHRoZSBkaWFsb2cgb3BlbmVyLlxuICAgKi9cbiAgY2xvc2UoZGlhbG9nUmVzdWx0PzogUik6IHZvaWQge1xuICAgIHRoaXMuX3Jlc3VsdCA9IGRpYWxvZ1Jlc3VsdFxuICAgIHRoaXMuX2NvbnRhaW5lckluc3RhbmNlLl9zdGFydEV4aXRpbmcoKVxuICAgIGlmICh0aGlzLl9jbGlja091dHNpZGVDbGVhbnVwKSB7dGhpcy5fY2xpY2tPdXRzaWRlQ2xlYW51cCgpfVxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIGRpYWxvZydzIHBvc2l0aW9uLlxuICAgKiBAcGFyYW0gcG9zaXRpb24gTmV3IGRpYWxvZyBwb3NpdGlvbi5cbiAgICovXG4gIHVwZGF0ZVBvc2l0aW9uKHBvc2l0aW9uPzogSU1vZGFsUG9zaXRpb24pOiB0aGlzIHtcbiAgICBjb25zdCBzdHJhdGVneSA9IHRoaXMuX2dldFBvc2l0aW9uU3RyYXRlZ3koKVxuXG4gICAgaWYgKHBvc2l0aW9uICYmIChwb3NpdGlvbi5sZWZ0IHx8IHBvc2l0aW9uLnJpZ2h0KSkge1xuICAgICAgcG9zaXRpb24ubGVmdCA/IHN0cmF0ZWd5LmxlZnQocG9zaXRpb24ubGVmdCkgOiBzdHJhdGVneS5yaWdodChwb3NpdGlvbi5yaWdodClcbiAgICB9IGVsc2Uge1xuICAgICAgc3RyYXRlZ3kuY2VudGVySG9yaXpvbnRhbGx5KClcbiAgICB9XG5cbiAgICBpZiAocG9zaXRpb24gJiYgKHBvc2l0aW9uLnRvcCB8fCBwb3NpdGlvbi5ib3R0b20pKSB7XG4gICAgICBwb3NpdGlvbi50b3AgPyBzdHJhdGVneS50b3AocG9zaXRpb24udG9wKSA6IHN0cmF0ZWd5LmJvdHRvbShwb3NpdGlvbi5ib3R0b20pXG4gICAgfSBlbHNlIHtcbiAgICAgIHN0cmF0ZWd5LmNlbnRlclZlcnRpY2FsbHkoKVxuICAgIH1cblxuICAgIHRoaXMuX292ZXJsYXlSZWYudXBkYXRlUG9zaXRpb24oKVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB3aGVuIGtleWRvd24gZXZlbnRzIGFyZSB0YXJnZXRlZCBvbiB0aGUgb3ZlcmxheS5cbiAgICovXG4gIGtleWRvd25FdmVudHMoKTogT2JzZXJ2YWJsZTxLZXlib2FyZEV2ZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuX292ZXJsYXlSZWYua2V5ZG93bkV2ZW50cygpXG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgZGlhbG9nJ3Mgd2lkdGggYW5kIGhlaWdodCwgZGVmaW5lZCwgbWluIGFuZCBtYXguXG4gICAqIEBwYXJhbSBzaXplIE5ldyBzaXplIGZvciB0aGUgb3ZlcmxheS5cbiAgICovXG4gIHVwZGF0ZVNpemUoc2l6ZTogT3ZlcmxheVNpemVDb25maWcpOiB0aGlzIHtcbiAgICBpZiAoc2l6ZS53aWR0aCkge1xuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmRlcHJlY2F0aW9uXG4gICAgICB0aGlzLl9nZXRQb3NpdGlvblN0cmF0ZWd5KCkud2lkdGgoc2l6ZS53aWR0aC50b1N0cmluZygpKVxuICAgIH1cbiAgICBpZiAoc2l6ZS5oZWlnaHQpIHtcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpkZXByZWNhdGlvblxuICAgICAgdGhpcy5fZ2V0UG9zaXRpb25TdHJhdGVneSgpLmhlaWdodChzaXplLmhlaWdodC50b1N0cmluZygpKVxuICAgIH1cbiAgICB0aGlzLl9vdmVybGF5UmVmLnVwZGF0ZVNpemUoc2l6ZSlcbiAgICB0aGlzLl9vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uKClcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqIEZldGNoZXMgdGhlIHBvc2l0aW9uIHN0cmF0ZWd5IG9iamVjdCBmcm9tIHRoZSBvdmVybGF5IHJlZi4gKi9cbiAgcHJpdmF0ZSBfZ2V0UG9zaXRpb25TdHJhdGVneSgpOiBHbG9iYWxQb3NpdGlvblN0cmF0ZWd5IHtcbiAgICByZXR1cm4gdGhpcy5fb3ZlcmxheVJlZi5nZXRDb25maWcoKS5wb3NpdGlvblN0cmF0ZWd5IGFzIEdsb2JhbFBvc2l0aW9uU3RyYXRlZ3lcbiAgfVxuXG4gIC8qKiBHZXRzIGFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB3aGVuIGRpYWxvZyBiZWdpbnMgb3BlbmluZy4gKi9cbiAgYmVmb3JlT3BlbmVkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9jb250YWluZXJJbnN0YW5jZS5fYmVmb3JlRW50ZXIuYXNPYnNlcnZhYmxlKClcbiAgfVxuXG4gIC8qKiBHZXRzIGFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB3aGVuIGRpYWxvZyBpcyBmaW5pc2hlZCBvcGVuaW5nLiAqL1xuICBhZnRlck9wZW5lZCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fY29udGFpbmVySW5zdGFuY2UuX2FmdGVyRW50ZXIuYXNPYnNlcnZhYmxlKClcbiAgfVxuXG4gIC8qKiBHZXRzIGFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB3aGVuIGRpYWxvZyBiZWdpbnMgY2xvc2luZy4gKi9cbiAgYmVmb3JlQ2xvc2VkKCk6IE9ic2VydmFibGU8UiB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLl9jb250YWluZXJJbnN0YW5jZS5fYmVmb3JlRXhpdC5waXBlKG1hcCgoKSA9PiB0aGlzLl9yZXN1bHQpKVxuICB9XG5cbiAgLyoqIEdldHMgYW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHdoZW4gZGlhbG9nIGlzIGZpbmlzaGVkIGNsb3NpbmcuICovXG4gIGFmdGVyQ2xvc2VkKCk6IE9ic2VydmFibGU8UiB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLl9jb250YWluZXJJbnN0YW5jZS5fYWZ0ZXJFeGl0LnBpcGUobWFwKCgpID0+IHRoaXMuX3Jlc3VsdCkpXG4gIH1cbn1cbiJdfQ==
@@ -35,6 +35,7 @@ export class WidgetTileComponent extends _TheSeamWidgetTileMixinBase {
35
35
  constructor(_elementRef, _focusMonitor, _renderer) {
36
36
  super(_elementRef, _focusMonitor, _renderer);
37
37
  this.grayscaleOnDisable = true;
38
+ this.iconType = 'styled-square';
38
39
  this._haltDisabledEvents = (event) => {
39
40
  // A disabled button shouldn't apply any actions
40
41
  if (this.disabled) {
@@ -75,7 +76,7 @@ export class WidgetTileComponent extends _TheSeamWidgetTileMixinBase {
75
76
  WidgetTileComponent.decorators = [
76
77
  { type: Component, args: [{
77
78
  selector: 'seam-widget-tile, a[seam-widget-tile], button[seam-widget-tile]',
78
- template: "<div class=\"d-flex flex-row\">\n <div style=\"position: relative\">\n <seam-icon\n [icon]=\"icon\"\n iconType=\"styled-square\"\n [iconClass]=\"iconClass\"\n [disabled]=\"disabled\">\n </seam-icon>\n\n <seam-icon *ngIf=\"notificationIcon\"\n class=\"widget-tile--notification-icon\"\n [icon]=\"notificationIcon\"\n iconType=\"image-fill\"\n [iconClass]=\"notificationIconClass\"\n [disabled]=\"disabled\">\n </seam-icon>\n </div>\n <div class=\"flex-grow-1 text-left pl-2\" style=\"margin: auto 0;\">\n <ng-content></ng-content>\n </div>\n <div *ngIf=\"secondaryIcon\">\n <ng-template [ngTemplateOutlet]=\"secondaryIcon.template\"></ng-template>\n </div>\n</div>\n",
79
+ template: "<div class=\"d-flex flex-row\">\n <div style=\"position: relative\">\n <seam-icon\n [icon]=\"icon\"\n [iconType]=\"iconType\"\n [iconClass]=\"iconClass\"\n [disabled]=\"disabled\">\n </seam-icon>\n\n <seam-icon *ngIf=\"notificationIcon\"\n class=\"widget-tile--notification-icon\"\n [icon]=\"notificationIcon\"\n iconType=\"image-fill\"\n [iconClass]=\"notificationIconClass\"\n [disabled]=\"disabled\">\n </seam-icon>\n </div>\n <div class=\"flex-grow-1 text-left pl-2\" style=\"margin: auto 0;\">\n <ng-content></ng-content>\n </div>\n <div *ngIf=\"secondaryIcon\">\n <ng-template [ngTemplateOutlet]=\"secondaryIcon.template\"></ng-template>\n </div>\n</div>\n",
79
80
  inputs: ['disabled'],
80
81
  exportAs: 'seamWidgetTile',
81
82
  encapsulation: ViewEncapsulation.None,
@@ -98,6 +99,7 @@ WidgetTileComponent.propDecorators = {
98
99
  icon: [{ type: Input }],
99
100
  grayscaleOnDisable: [{ type: Input }],
100
101
  iconClass: [{ type: Input }],
102
+ iconType: [{ type: Input }],
101
103
  notificationIcon: [{ type: Input }],
102
104
  notificationIconClass: [{ type: Input }],
103
105
  secondaryIcon: [{ type: ContentChild, args: [WidgetTileSecondaryIconDirective, { static: true },] }]
@@ -105,4 +107,4 @@ WidgetTileComponent.propDecorators = {
105
107
  __decorate([
106
108
  InputBoolean()
107
109
  ], WidgetTileComponent.prototype, "grayscaleOnDisable", void 0);
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXRpbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL3dpZGdldC93aWRnZXQtY29udGVudC1jb21wb25lbnRzL3dpZGdldC10aWxlL3dpZGdldC10aWxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRWhELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFxQixTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFJeEksT0FBTyxFQUtMLFlBQVksRUFDWixhQUFhLEVBQ2IsYUFBYSxHQUNkLE1BQU0seUJBQXlCLENBQUE7QUFFaEMsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sd0NBQXdDLENBQUE7QUFFekYsTUFFTSxxQkFBcUI7SUFDekIsWUFDUyxXQUF1QixFQUN2QixhQUEyQixFQUMzQixTQUFvQjtRQUZwQixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QixrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQUMzQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBRTNCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDcEQsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDckQsQ0FBQztJQUVELDBCQUEwQjtJQUMxQixLQUFLO1FBQ0gsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ2hDLENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQTtJQUN2QyxD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QUVnRSxTQUFTOzs7d0JBNEQzRixXQUFXLFNBQUMsV0FBVztzQkFLdkIsV0FBVyxTQUFDLFdBQVc7MkJBR3ZCLFdBQVcsU0FBQyxnQkFBZ0I7NEJBRzVCLFdBQVcsU0FBQyxvQkFBb0I7NEJBR2hDLFdBQVcsU0FBQyxlQUFlOzRCQUczQixXQUFXLFNBQUMsZUFBZTttQkFHM0IsS0FBSzttQkFHTCxLQUFLO2lDQUVMLEtBQUs7d0JBRUwsS0FBSzsrQkFFTCxLQUFLO29DQUNMLEtBQUs7NEJBRUwsWUFBWSxTQUFDLGdDQUFnQyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTs7QUFQdkM7SUFBZixZQUFZLEVBQUU7K0RBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9jdXNNb25pdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknXG5pbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nXG5pbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgUmVuZGVyZXIyLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbmltcG9ydCB7IEljb25Qcm9wIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZvbnRhd2Vzb21lLXN2Zy1jb3JlJ1xuXG5pbXBvcnQge1xuICBDYW5EaXNhYmxlQ3RvcixcbiAgSGFzRWxlbWVudFJlZixcbiAgSGFzUmVuZGVyZXIyLFxuICBIYXNUYWJJbmRleEN0b3IsXG4gIElucHV0Qm9vbGVhbixcbiAgbWl4aW5EaXNhYmxlZCxcbiAgbWl4aW5UYWJJbmRleCxcbn0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL2NvcmUnXG5cbmltcG9ydCB7IFdpZGdldFRpbGVTZWNvbmRhcnlJY29uRGlyZWN0aXZlIH0gZnJvbSAnLi93aWRnZXQtdGlsZS1zZWNvbmRhcnktaWNvbi5kaXJlY3RpdmUnXG5cbkBDb21wb25lbnQoeyB0ZW1wbGF0ZTogJycgfSlcbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogY29tcG9uZW50LWNsYXNzLXN1ZmZpeFxuY2xhc3MgVGhlU2VhbVdpZGdldFRpbGVCYXNlIGltcGxlbWVudHMgT25EZXN0cm95LCBIYXNSZW5kZXJlcjIsIEhhc0VsZW1lbnRSZWYge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHVibGljIF9mb2N1c01vbml0b3I6IEZvY3VzTW9uaXRvcixcbiAgICBwdWJsaWMgX3JlbmRlcmVyOiBSZW5kZXJlcjJcbiAgKSB7XG4gICAgdGhpcy5fZm9jdXNNb25pdG9yLm1vbml0b3IodGhpcy5fZWxlbWVudFJlZiwgdHJ1ZSlcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2ZvY3VzTW9uaXRvci5zdG9wTW9uaXRvcmluZyh0aGlzLl9lbGVtZW50UmVmKVxuICB9XG5cbiAgLyoqIEZvY3VzZXMgdGhlIGJ1dHRvbi4gKi9cbiAgZm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5fZ2V0SG9zdEVsZW1lbnQoKS5mb2N1cygpXG4gIH1cblxuICBfZ2V0SG9zdEVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudFxuICB9XG59XG5cbmNvbnN0IF9UaGVTZWFtV2lkZ2V0VGlsZU1peGluQmFzZTogQ2FuRGlzYWJsZUN0b3IgJiBIYXNUYWJJbmRleEN0b3IgJlxuICAgIHR5cGVvZiBUaGVTZWFtV2lkZ2V0VGlsZUJhc2UgPSBtaXhpblRhYkluZGV4KG1peGluRGlzYWJsZWQoVGhlU2VhbVdpZGdldFRpbGVCYXNlKSlcblxuLy8gVE9ETzogU2hvdWxkIHRoaXMgY29tcG9uZW50IGJlIHNwbGl0IGludG8gc2VwYXJhdGUgY29tcG9uZW50cyBmb3IgYnV0dG9uIGFuZCBhbmNob3IuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZWFtLXdpZGdldC10aWxlLCBhW3NlYW0td2lkZ2V0LXRpbGVdLCBidXR0b25bc2VhbS13aWRnZXQtdGlsZV0nLFxuICB0ZW1wbGF0ZVVybDogJy4vd2lkZ2V0LXRpbGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi93aWRnZXQtdGlsZS5jb21wb25lbnQuc2NzcyddLFxuICBpbnB1dHM6IFsgJ2Rpc2FibGVkJyBdLFxuICBleHBvcnRBczogJ3NlYW1XaWRnZXRUaWxlJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBXaWRnZXRUaWxlQ29tcG9uZW50IGV4dGVuZHMgX1RoZVNlYW1XaWRnZXRUaWxlTWl4aW5CYXNlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZ3JheXNjYWxlT25EaXNhYmxlOiBCb29sZWFuSW5wdXRcblxuICBwcml2YXRlIF9jbGlja1VuTGlzdGVuOiAoKCkgPT4gdm9pZCB8IHVuZGVmaW5lZCB8IG51bGwpIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIHByaXZhdGUgX3R5cGU6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIudHlwZScpXG4gIGdldCBfYXR0clR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3R5cGUgfHwgdGhpcy5faXNCdXR0b24oKSA/ICdidXR0b24nIDogdW5kZWZpbmVkXG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmJ0bicpXG4gIGdldCBfYnRuQ3NzKCkgeyByZXR1cm4gdGhpcy5faXNCdXR0b24oKSA/IHRydWUgOiBmYWxzZSB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kaXNhYmxlZCcpXG4gIGdldCBfZGlzYWJsZWRDc3MoKSB7IHJldHVybiB0aGlzLmRpc2FibGVkIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1kaXNhYmxlZCcpXG4gIGdldCBfYXJpYURpc2FibGVkKCkgeyByZXR1cm4gdGhpcy5kaXNhYmxlZC50b1N0cmluZygpIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGlzYWJsZWQnKVxuICBnZXQgX2F0dHJEaXNhYmxlZCgpIHsgcmV0dXJuIHRoaXMuZGlzYWJsZWQgfHwgbnVsbCB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnRhYmluZGV4JylcbiAgZ2V0IF9hdHRyVGFiSW5kZXgoKSB7IHJldHVybiB0aGlzLmRpc2FibGVkID8gLTEgOiAodGhpcy50YWJJbmRleCB8fCAwKSB9XG5cbiAgQElucHV0KClcbiAgZ2V0IHR5cGUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCB7IHJldHVybiB0aGlzLl90eXBlIH1cblxuICBASW5wdXQoKSBpY29uOiBzdHJpbmcgfCBJY29uUHJvcCB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgZ3JheXNjYWxlT25EaXNhYmxlOiBib29sZWFuID0gdHJ1ZVxuXG4gIEBJbnB1dCgpIGljb25DbGFzczogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIG5vdGlmaWNhdGlvbkljb246IHN0cmluZyB8IEljb25Qcm9wIHwgdW5kZWZpbmVkIHwgbnVsbFxuICBASW5wdXQoKSBub3RpZmljYXRpb25JY29uQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBAQ29udGVudENoaWxkKFdpZGdldFRpbGVTZWNvbmRhcnlJY29uRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KSBzZWNvbmRhcnlJY29uPzogV2lkZ2V0VGlsZVNlY29uZGFyeUljb25EaXJlY3RpdmVcblxuICBjb25zdHJ1Y3RvcihcbiAgICBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudCB8IEhUTUxBbmNob3JFbGVtZW50IHwgSFRNTEJ1dHRvbkVsZW1lbnQ+LFxuICAgIF9mb2N1c01vbml0b3I6IEZvY3VzTW9uaXRvcixcbiAgICBfcmVuZGVyZXI6IFJlbmRlcmVyMlxuICApIHsgc3VwZXIoX2VsZW1lbnRSZWYsIF9mb2N1c01vbml0b3IsIF9yZW5kZXJlcikgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLl9pc0FuY2hvcigpKSB7XG4gICAgICB0aGlzLl9jbGlja1VuTGlzdGVuID0gdGhpcy5fcmVuZGVyZXIubGlzdGVuKHRoaXMuX2dldEhvc3RFbGVtZW50KCksICdjbGljaycsIHRoaXMuX2hhbHREaXNhYmxlZEV2ZW50cylcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpXG4gICAgaWYgKHRoaXMuX2NsaWNrVW5MaXN0ZW4pIHtcbiAgICAgIHRoaXMuX2NsaWNrVW5MaXN0ZW4oKVxuICAgIH1cbiAgfVxuXG4gIC8qKiBEZXRlcm1pbmVzIGlmIHRoZSBjb21wb25lbnQgaG9zdCBpcyBhIGJ1dHRvbi4gKi9cbiAgcHJpdmF0ZSBfaXNCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnYnV0dG9uJ1xuICB9XG5cbiAgLyoqIERldGVybWluZXMgaWYgdGhlIGNvbXBvbmVudCBob3N0IGlzIGFuIGFuY2hvci4gKi9cbiAgcHJpdmF0ZSBfaXNBbmNob3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnYSdcbiAgfVxuXG4gIF9oYWx0RGlzYWJsZWRFdmVudHMgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgLy8gQSBkaXNhYmxlZCBidXR0b24gc2hvdWxkbid0IGFwcGx5IGFueSBhY3Rpb25zXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpXG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXRpbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL3dpZGdldC93aWRnZXQtY29udGVudC1jb21wb25lbnRzL3dpZGdldC10aWxlL3dpZGdldC10aWxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRWhELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFxQixTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFJeEksT0FBTyxFQUtMLFlBQVksRUFDWixhQUFhLEVBQ2IsYUFBYSxHQUNkLE1BQU0seUJBQXlCLENBQUE7QUFHaEMsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sd0NBQXdDLENBQUE7QUFFekYsTUFFTSxxQkFBcUI7SUFDekIsWUFDUyxXQUF1QixFQUN2QixhQUEyQixFQUMzQixTQUFvQjtRQUZwQixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QixrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQUMzQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBRTNCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDcEQsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDckQsQ0FBQztJQUVELDBCQUEwQjtJQUMxQixLQUFLO1FBQ0gsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ2hDLENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQTtJQUN2QyxD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Ozs7WUFyRGlDLFVBQVU7WUFGbkMsWUFBWTtZQUVnRSxTQUFTOzs7d0JBNkQzRixXQUFXLFNBQUMsV0FBVztzQkFLdkIsV0FBVyxTQUFDLFdBQVc7MkJBR3ZCLFdBQVcsU0FBQyxnQkFBZ0I7NEJBRzVCLFdBQVcsU0FBQyxvQkFBb0I7NEJBR2hDLFdBQVcsU0FBQyxlQUFlOzRCQUczQixXQUFXLFNBQUMsZUFBZTttQkFHM0IsS0FBSzttQkFHTCxLQUFLO2lDQUVMLEtBQUs7d0JBRUwsS0FBSzt1QkFFTCxLQUFLOytCQUVMLEtBQUs7b0NBQ0wsS0FBSzs0QkFFTCxZQUFZLFNBQUMsZ0NBQWdDLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFOztBQVR2QztJQUFmLFlBQVksRUFBRTsrREFBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c01vbml0b3IgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSdcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbidcbmltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkLCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBSZW5kZXJlcjIsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcblxuaW1wb3J0IHsgSWNvblByb3AgfSBmcm9tICdAZm9ydGF3ZXNvbWUvZm9udGF3ZXNvbWUtc3ZnLWNvcmUnXG5cbmltcG9ydCB7XG4gIENhbkRpc2FibGVDdG9yLFxuICBIYXNFbGVtZW50UmVmLFxuICBIYXNSZW5kZXJlcjIsXG4gIEhhc1RhYkluZGV4Q3RvcixcbiAgSW5wdXRCb29sZWFuLFxuICBtaXhpbkRpc2FibGVkLFxuICBtaXhpblRhYkluZGV4LFxufSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vY29yZSdcbmltcG9ydCB7IFRoZVNlYW1JY29uVHlwZSB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9pY29uJ1xuXG5pbXBvcnQgeyBXaWRnZXRUaWxlU2Vjb25kYXJ5SWNvbkRpcmVjdGl2ZSB9IGZyb20gJy4vd2lkZ2V0LXRpbGUtc2Vjb25kYXJ5LWljb24uZGlyZWN0aXZlJ1xuXG5AQ29tcG9uZW50KHsgdGVtcGxhdGU6ICcnIH0pXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGNvbXBvbmVudC1jbGFzcy1zdWZmaXhcbmNsYXNzIFRoZVNlYW1XaWRnZXRUaWxlQmFzZSBpbXBsZW1lbnRzIE9uRGVzdHJveSwgSGFzUmVuZGVyZXIyLCBIYXNFbGVtZW50UmVmIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHB1YmxpYyBfZm9jdXNNb25pdG9yOiBGb2N1c01vbml0b3IsXG4gICAgcHVibGljIF9yZW5kZXJlcjogUmVuZGVyZXIyXG4gICkge1xuICAgIHRoaXMuX2ZvY3VzTW9uaXRvci5tb25pdG9yKHRoaXMuX2VsZW1lbnRSZWYsIHRydWUpXG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5fZWxlbWVudFJlZilcbiAgfVxuXG4gIC8qKiBGb2N1c2VzIHRoZSBidXR0b24uICovXG4gIGZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuX2dldEhvc3RFbGVtZW50KCkuZm9jdXMoKVxuICB9XG5cbiAgX2dldEhvc3RFbGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnRcbiAgfVxufVxuXG5jb25zdCBfVGhlU2VhbVdpZGdldFRpbGVNaXhpbkJhc2U6IENhbkRpc2FibGVDdG9yICYgSGFzVGFiSW5kZXhDdG9yICZcbiAgICB0eXBlb2YgVGhlU2VhbVdpZGdldFRpbGVCYXNlID0gbWl4aW5UYWJJbmRleChtaXhpbkRpc2FibGVkKFRoZVNlYW1XaWRnZXRUaWxlQmFzZSkpXG5cbi8vIFRPRE86IFNob3VsZCB0aGlzIGNvbXBvbmVudCBiZSBzcGxpdCBpbnRvIHNlcGFyYXRlIGNvbXBvbmVudHMgZm9yIGJ1dHRvbiBhbmQgYW5jaG9yLlxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2VhbS13aWRnZXQtdGlsZSwgYVtzZWFtLXdpZGdldC10aWxlXSwgYnV0dG9uW3NlYW0td2lkZ2V0LXRpbGVdJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dpZGdldC10aWxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vd2lkZ2V0LXRpbGUuY29tcG9uZW50LnNjc3MnXSxcbiAgaW5wdXRzOiBbICdkaXNhYmxlZCcgXSxcbiAgZXhwb3J0QXM6ICdzZWFtV2lkZ2V0VGlsZScsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgV2lkZ2V0VGlsZUNvbXBvbmVudCBleHRlbmRzIF9UaGVTZWFtV2lkZ2V0VGlsZU1peGluQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2dyYXlzY2FsZU9uRGlzYWJsZTogQm9vbGVhbklucHV0XG5cbiAgcHJpdmF0ZSBfY2xpY2tVbkxpc3RlbjogKCgpID0+IHZvaWQgfCB1bmRlZmluZWQgfCBudWxsKSB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBwcml2YXRlIF90eXBlOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnR5cGUnKVxuICBnZXQgX2F0dHJUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLl90eXBlIHx8IHRoaXMuX2lzQnV0dG9uKCkgPyAnYnV0dG9uJyA6IHVuZGVmaW5lZFxuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5idG4nKVxuICBnZXQgX2J0bkNzcygpIHsgcmV0dXJuIHRoaXMuX2lzQnV0dG9uKCkgPyB0cnVlIDogZmFsc2UgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZGlzYWJsZWQnKVxuICBnZXQgX2Rpc2FibGVkQ3NzKCkgeyByZXR1cm4gdGhpcy5kaXNhYmxlZCB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZGlzYWJsZWQnKVxuICBnZXQgX2FyaWFEaXNhYmxlZCgpIHsgcmV0dXJuIHRoaXMuZGlzYWJsZWQudG9TdHJpbmcoKSB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRpc2FibGVkJylcbiAgZ2V0IF9hdHRyRGlzYWJsZWQoKSB7IHJldHVybiB0aGlzLmRpc2FibGVkIHx8IG51bGwgfVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci50YWJpbmRleCcpXG4gIGdldCBfYXR0clRhYkluZGV4KCkgeyByZXR1cm4gdGhpcy5kaXNhYmxlZCA/IC0xIDogKHRoaXMudGFiSW5kZXggfHwgMCkgfVxuXG4gIEBJbnB1dCgpXG4gIGdldCB0eXBlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwgeyByZXR1cm4gdGhpcy5fdHlwZSB9XG5cbiAgQElucHV0KCkgaWNvbjogc3RyaW5nIHwgSWNvblByb3AgfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIGdyYXlzY2FsZU9uRGlzYWJsZTogYm9vbGVhbiA9IHRydWVcblxuICBASW5wdXQoKSBpY29uQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASW5wdXQoKSBpY29uVHlwZTogVGhlU2VhbUljb25UeXBlIHwgdW5kZWZpbmVkIHwgbnVsbCA9ICdzdHlsZWQtc3F1YXJlJ1xuXG4gIEBJbnB1dCgpIG5vdGlmaWNhdGlvbkljb246IHN0cmluZyB8IEljb25Qcm9wIHwgdW5kZWZpbmVkIHwgbnVsbFxuICBASW5wdXQoKSBub3RpZmljYXRpb25JY29uQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBAQ29udGVudENoaWxkKFdpZGdldFRpbGVTZWNvbmRhcnlJY29uRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KSBzZWNvbmRhcnlJY29uPzogV2lkZ2V0VGlsZVNlY29uZGFyeUljb25EaXJlY3RpdmVcblxuICBjb25zdHJ1Y3RvcihcbiAgICBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudCB8IEhUTUxBbmNob3JFbGVtZW50IHwgSFRNTEJ1dHRvbkVsZW1lbnQ+LFxuICAgIF9mb2N1c01vbml0b3I6IEZvY3VzTW9uaXRvcixcbiAgICBfcmVuZGVyZXI6IFJlbmRlcmVyMlxuICApIHsgc3VwZXIoX2VsZW1lbnRSZWYsIF9mb2N1c01vbml0b3IsIF9yZW5kZXJlcikgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLl9pc0FuY2hvcigpKSB7XG4gICAgICB0aGlzLl9jbGlja1VuTGlzdGVuID0gdGhpcy5fcmVuZGVyZXIubGlzdGVuKHRoaXMuX2dldEhvc3RFbGVtZW50KCksICdjbGljaycsIHRoaXMuX2hhbHREaXNhYmxlZEV2ZW50cylcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpXG4gICAgaWYgKHRoaXMuX2NsaWNrVW5MaXN0ZW4pIHtcbiAgICAgIHRoaXMuX2NsaWNrVW5MaXN0ZW4oKVxuICAgIH1cbiAgfVxuXG4gIC8qKiBEZXRlcm1pbmVzIGlmIHRoZSBjb21wb25lbnQgaG9zdCBpcyBhIGJ1dHRvbi4gKi9cbiAgcHJpdmF0ZSBfaXNCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnYnV0dG9uJ1xuICB9XG5cbiAgLyoqIERldGVybWluZXMgaWYgdGhlIGNvbXBvbmVudCBob3N0IGlzIGFuIGFuY2hvci4gKi9cbiAgcHJpdmF0ZSBfaXNBbmNob3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnYSdcbiAgfVxuXG4gIF9oYWx0RGlzYWJsZWRFdmVudHMgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgLy8gQSBkaXNhYmxlZCBidXR0b24gc2hvdWxkbid0IGFwcGx5IGFueSBhY3Rpb25zXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpXG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
@@ -670,6 +670,7 @@ class JexlEvaluator {
670
670
  this.type = 'jexl';
671
671
  this._jexl = new jexl.Jexl();
672
672
  this._jexl.addTransform('date', (val, row) => new DatePipe('en-US').transform(val, 'yyyy-MM-dd h:mm aaa'));
673
+ this._jexl.addTransform('length', (val) => val.length);
673
674
  }
674
675
  eval(value, context) {
675
676
  return this._jexl.eval(value.expr, context);
@@ -1 +1 @@
1
- {"version":3,"file":"theseam-ui-common-dynamic.js","sources":["../../../projects/ui-common/dynamic/tokens/dynamic-value-evaluator.ts","../../../projects/ui-common/dynamic/dynamic-value-helper.service.ts","../../../projects/ui-common/dynamic/tokens/api-config.ts","../../../projects/ui-common/dynamic/action/api/dynamic-action-api-errors.ts","../../../projects/ui-common/dynamic/action/api/dynamic-action-api.service.ts","../../../projects/ui-common/dynamic/action/link/dynamic-action-link.service.ts","../../../projects/ui-common/dynamic/tokens/dynamic-action.ts","../../../projects/ui-common/dynamic/action/dynamic-action-helper.service.ts","../../../projects/ui-common/dynamic/action/modal/dynamic-action-modal.service.ts","../../../projects/ui-common/dynamic/evaluators/exporters-data-evaluator/exporters-data-evaluator.ts","../../../projects/ui-common/dynamic/evaluators/jexl-evaluator/jexl-evaluator.ts","../../../projects/ui-common/dynamic/models/dynamic-action-def.ts","../../../projects/ui-common/dynamic/tokens/dynamic-data.ts","../../../projects/ui-common/dynamic/utils/is-action-type.ts","../../../projects/ui-common/dynamic/theseam-ui-common-dynamic.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core'\n\nimport { IDynamicValueEvaluator } from '../models/dynamic-value-evaluator'\n\nexport const THESEAM_DYNAMIC_VALUE_EVALUATOR = new InjectionToken<IDynamicValueEvaluator>(\n 'Evaluator that can be used for evaluating a DynamicValue'\n)\n","import { Inject, Injectable, isDevMode } from '@angular/core'\n\nimport { DynamicValue } from './models/dynamic-value'\nimport { DynamicValueEvaluatableType } from './models/dynamic-value-evaluatable-type'\nimport { IDynamicValueEvaluator } from './models/dynamic-value-evaluator'\nimport { IDynamicValueType } from './models/dynamic-value-type'\nimport { THESEAM_DYNAMIC_VALUE_EVALUATOR } from './tokens/dynamic-value-evaluator'\n\n/**\n *\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DynamicValueHelperService {\n\n private _evaluatorMap = new Map<string, IDynamicValueEvaluator>()\n\n constructor(\n @Inject(THESEAM_DYNAMIC_VALUE_EVALUATOR) evaluators: IDynamicValueEvaluator[]\n ) {\n // Only one evaluator should exist for a type, so map them for faster lookup.\n for (const e of evaluators) {\n if (isDevMode()) {\n if (this._evaluatorMap.has(e.type)) {\n console.warn(`[DynamicValueHelperService] Multiple evaluators found for type '${e.type}'`)\n }\n }\n this._evaluatorMap.set(e.type, e)\n }\n }\n\n /**\n * Evaluate a dynamic value to its actual value.\n *\n * TODO: Improve context and return typing.\n */\n public eval<R>(value: DynamicValue<R>, context?: any): Promise<R> {\n if (this.isEvaluatableType(value, true)) {\n return this._evalEvaluatable(value, context)\n }\n\n // Use `evalSync` if `eval` isn't provided and `evalSync` is.\n if (this.isEvaluatableType(value, false)) {\n return Promise.resolve<R>(this._evalEvaluatableSync(value, context))\n }\n\n return Promise.resolve<R>(value)\n }\n\n /**\n * Evaluate a dynamic value to its actual value.\n *\n * TODO: Improve context and return typing.\n */\n public evalSync<R>(value: DynamicValue<R>, context?: any): R {\n if (this.isEvaluatableType(value, false)) {\n return this._evalEvaluatableSync(value, context)\n }\n\n return value\n }\n\n /**\n * Checks if a DynamicValue is a type that can be evaluated.\n */\n public isEvaluatableType<R>(value: DynamicValue<R>, isAsync: boolean): value is DynamicValueEvaluatableType<R> {\n if (value === undefined || value === null) {\n return false\n }\n\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n return false\n }\n\n if (!(<DynamicValueEvaluatableType<R>>value).type) {\n return false\n }\n\n if (this._evaluatorMap.has((<DynamicValueEvaluatableType<R>>value).type)) {\n return true\n }\n\n return false\n }\n\n /**\n *\n */\n private _evalEvaluatable<R>(value: DynamicValueEvaluatableType<R>, context?: any): Promise<R> {\n const evaluator = this._evaluatorMap.get(value.type)\n if (!evaluator) {\n throw Error(`[DynamicValueHelperService] Evaluator '${value ? value.type : undefined}' not found.`)\n }\n if (!evaluator.eval) {\n throw Error(`[DynamicValueHelperService] Evaluator '${value ? value.type : undefined}' does not implement 'eval()'.`)\n }\n return evaluator.eval(value, context)\n }\n\n /**\n *\n */\n private _evalEvaluatableSync<R>(value: DynamicValueEvaluatableType<R>, context?: any): R {\n const evaluator = this._evaluatorMap.get(value.type)\n if (!evaluator) {\n throw Error(`[DynamicValueHelperService] Evaluator '${value ? value.type : undefined}' not found.`)\n }\n if (!evaluator.evalSync) {\n throw Error(`[DynamicValueHelperService] Evaluator '${value ? value.type : undefined}' does not implement 'evalSync()'.`)\n }\n return evaluator.evalSync(value, context)\n }\n\n}\n","import { InjectionToken } from '@angular/core'\n\nimport { DynamicValue } from '../models/dynamic-value'\n\nexport type ApiRequestMethodHeader = string | { [name: string]: string | string[] }\n\nexport interface ApiRequestMethodHeaders {\n 'GET'?: ApiRequestMethodHeader\n 'POST'?: ApiRequestMethodHeader\n 'PUT'?: ApiRequestMethodHeader\n 'PATCH'?: ApiRequestMethodHeader\n 'DELETE'?: ApiRequestMethodHeader\n}\n\nexport const VALID_REQUEST_METHODS: (keyof ApiRequestMethodHeaders)[] = [\n 'GET',\n 'POST',\n 'PUT',\n 'PATCH',\n 'DELETE'\n]\n\nexport function isValidRequestMethod(method: string): method is keyof ApiRequestMethodHeaders {\n return VALID_REQUEST_METHODS.indexOf(method as any) !== -1\n}\n\nexport interface IApiConfig {\n /**\n * Used to identify this config if multiple are provided.\n */\n id?: string\n\n /**\n * Base url that non-absolute endpoints will be appended to.\n */\n url?: DynamicValue<string>\n\n /**\n * Default headers to add to requests.\n */\n methodHeaders?: ApiRequestMethodHeaders\n}\n\nexport const THESEAM_API_CONFIG_DEFAULT: IApiConfig = {\n url: '/',\n\n methodHeaders: {\n 'GET': { 'Content-Type': 'application/json' },\n 'POST': { 'Content-Type': 'application/json' },\n 'PUT': { 'Content-Type': 'application/json' },\n 'PATCH': { 'Content-Type': 'application/json' },\n 'DELETE': { 'Content-Type': 'application/json' }\n }\n}\n\n// export const THESEAM_API_CONFIG = new InjectionToken<IApiConfig[]>(\n// 'Api config token, config options for actions that make an api request in library'\n// )\n\nexport const THESEAM_API_CONFIG = new InjectionToken<IApiConfig[]>(\n 'Api config token, config options for actions that make an api request in library', {\n providedIn: 'root',\n factory: () => [ THESEAM_API_CONFIG_DEFAULT ]\n })\n","\nexport function dynamicActionApiNotSupportedError(): Error {\n return Error(`Dynamic action type 'api' not supported.`)\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http'\nimport { Inject, Injectable, isDevMode, Optional } from '@angular/core'\nimport { from } from 'rxjs'\nimport { switchMap } from 'rxjs/operators'\n\nimport { isAbsoluteUrl } from '@theseam/ui-common/utils'\n\nimport { DynamicValueHelperService } from '../../dynamic-value-helper.service'\nimport { DynamicActionUiButtonDef } from '../../models/dynamic-action-ui-button-def'\nimport { DynamicValue } from '../../models/dynamic-value'\nimport { ApiRequestMethodHeader, ApiRequestMethodHeaders, IApiConfig, isValidRequestMethod, THESEAM_API_CONFIG, VALID_REQUEST_METHODS } from '../../tokens/api-config'\n\nimport { DynamicActionApi } from './dynamic-action-api'\nimport { DynamicActionApiDef } from './dynamic-action-api-def'\nimport { dynamicActionApiNotSupportedError } from './dynamic-action-api-errors'\n\n/**\n * Handles execution of api call actions.\n *\n * This action service should be generic enough to\n * work with any url endpoint, but will be biased towards our api where needed.\n */\n@Injectable()\nexport class DynamicActionApiService implements DynamicActionApi {\n\n readonly type = 'api'\n\n label = 'Api Action'\n\n constructor(\n private _valueHelper: DynamicValueHelperService,\n @Optional() private _http: HttpClient,\n @Optional() @Inject(THESEAM_API_CONFIG) private _configs: IApiConfig[]\n ) { }\n\n public exec(args: DynamicActionApiDef, context: any): Promise<any> {\n if (!this._isSupported()) {\n throw dynamicActionApiNotSupportedError()\n }\n\n return from(this._getExecInfo(args, context)).pipe(\n switchMap(x => this._http.request<any>(x.method, x.url, x.options)),\n ).toPromise()\n }\n\n public async getUiProps(args: DynamicActionApiDef, context: any): Promise<DynamicActionUiButtonDef> {\n return {\n _actionDef: args,\n triggerType: 'click'\n }\n }\n\n private async _getExecInfo(args: DynamicActionApiDef, context?: any) {\n const method = args.method || 'GET'\n\n const url = await this._getUrl(args, context)\n if (url === null) {\n throw new Error('[DynamicActionApiService] Unable to determine url.')\n }\n\n const body = await this._getBody(args, context)\n const params = await this._getParams(args, context)\n\n const headers = await this._getHeaders(args, context)\n\n const result = {\n url,\n method,\n options: { body, params, headers }\n }\n\n return result\n }\n\n private async _getUrl(args: DynamicActionApiDef, context?: any): Promise<string | null> {\n const config = this._getApiConfig(args)\n\n let endpoint = ''\n if (args.endpoint) {\n endpoint = await this._valueHelper.eval(args.endpoint, context)\n }\n\n if (isAbsoluteUrl(endpoint)) {\n return endpoint\n }\n\n if (config && config.url !== undefined && config.url !== null) {\n const url = await this._valueHelper.eval(config.url, context)\n if (typeof url === 'string') {\n const addSlash = endpoint.length > 0 && endpoint.indexOf('/') !== 0 &&\n url.length > 0 && url.indexOf('/') !== 0\n return `${config.url}${addSlash ? '/' : ''}${endpoint}`\n }\n }\n\n return null\n }\n\n private _getApiConfig(args: DynamicActionApiDef): IApiConfig | null {\n const configs = this._configs || []\n\n if (args.id === undefined || args.id === null) {\n return configs.length > 0 ? configs[0] : null\n }\n\n for (const config of configs) {\n if (config.id && config.id === args.id) {\n return config\n }\n }\n\n return null\n }\n\n private async _getBody(args: DynamicActionApiDef, context?: any) {\n if (args.body !== undefined && args.body !== null) {\n return await this._valueHelper.eval(args.body, context)\n }\n\n return undefined\n }\n\n private async _getParams(args: DynamicActionApiDef, context?: any) {\n if (args.params !== undefined && args.params !== null) {\n return await this._valueHelper.eval(args.params, context)\n }\n\n return undefined\n }\n\n private async _getHeaders(args: DynamicActionApiDef, context?: any): Promise<HttpHeaders> {\n let headers: ApiRequestMethodHeaders = {}\n\n const config = this._getApiConfig(args)\n\n // TODO: Make sure I am handling these values correctly. This could be\n // much cleaner. Tests with all the js primitives, null, undefined, and\n // dynamic action types should be written.\n\n if (config && config.methodHeaders) {\n const method = typeof args.method === 'string'\n ? args.method.trim().toUpperCase()\n : 'GET' // Default method type\n\n if (!isValidRequestMethod(method)) {\n throw Error(`API request method must be one of ${VALID_REQUEST_METHODS}`)\n }\n\n const h = method && config.methodHeaders[method]\n if (h !== undefined && h !== null) {\n headers = await this._evalHeaders(h, context) as any\n }\n }\n\n // TODO: Cleanup messing multiple level logic\n const argHeaders = args.headers\n if (argHeaders !== undefined && argHeaders !== null) {\n if (typeof argHeaders === 'string') {\n headers = argHeaders as any\n } else {\n const _val = this._valueHelper.eval(argHeaders as any, context) // TODO: Fix argHeaders type\n if (typeof _val === 'string') {\n headers = _val\n } else {\n const keys = Object.keys(argHeaders)\n for (const key of keys) {\n if (!isValidRequestMethod(key)) {\n throw Error(`API request method must be one of ${VALID_REQUEST_METHODS}`)\n }\n\n // TODO: Fix types\n const value = (argHeaders as any)[key]\n if (typeof value === 'string') {\n headers[key] = value\n } else if (Array.isArray(value)) {\n headers[key] = await Promise.all(value.map(async v => await this._valueHelper.eval(v, context))) as any\n } else {\n headers[key] = await this._valueHelper.eval(value, context)\n }\n }\n }\n }\n }\n\n return new HttpHeaders(headers as any)\n }\n\n private async _evalHeaders(\n headers: string | DynamicValue<string> | { [name: string]: DynamicValue<string> | DynamicValue<string>[] },\n context?: any\n ) {\n let res: string | { [name: string]: string | string[] } = {}\n\n // TODO: Cleanup messing multiple level logic\n if (typeof headers === 'string') {\n res = headers\n } else {\n const _val = this._valueHelper.eval(headers as any, context) // TODO: Fix argHeaders type\n if (typeof _val === 'string') {\n res = _val\n } else {\n const keys = Object.keys(headers)\n for (const key of keys) {\n const value = (headers as any)[key]\n if (typeof value === 'string') {\n res[key] = value\n } else if (Array.isArray(value)) {\n res[key] = await Promise.all(value.map(async v => await this._valueHelper.eval(v, context)))\n } else {\n res[key] = await this._valueHelper.eval(value, context)\n }\n }\n }\n }\n return res\n }\n\n private _isSupported(): boolean {\n if (isDevMode()) {\n console.warn(`[DynamicActionApiService] Action is not ready for production yet.`)\n } else {\n // I don't expect this to be attempted in prod before completed, so I am just adding a console warning.\n console.warn(`Unable to complete request. Contact support for assistance.`)\n }\n\n if (!this._http) {\n if (isDevMode()) {\n console.warn(`[DynamicActionApiService] Endpoint actions require \\`HttpClientModule\\` to be imported.`)\n }\n return false\n }\n return true\n }\n}\n","import { Injectable } from '@angular/core'\n\nimport { DynamicValueHelperService } from '../../dynamic-value-helper.service'\nimport { DynamicActionUiAnchorDef } from '../../models/dynamic-action-ui-anchor-def'\nimport { DynamicActionLink } from './dynamic-action-link'\nimport { DynamicActionLinkDef } from './dynamic-action-link-def'\n\n/**\n * Handles execution of link actions.\n */\n@Injectable()\nexport class DynamicActionLinkService implements DynamicActionLink {\n\n readonly type = 'link'\n\n label = 'Link Action'\n\n constructor(\n private _valueHandler: DynamicValueHelperService\n ) { }\n\n // exec?: (args: IDynamicActionDef<T>, context: D) => Observable<R>\n\n // execSync?: (args: IDynamicActionDef<T>, context: D) => R\n\n public async getUiProps(args: DynamicActionLinkDef, context: any): Promise<DynamicActionUiAnchorDef> {\n const link: string = await this._valueHandler.eval(args.link)\n const external: boolean = !!(await this._valueHandler.eval(args.external))\n const asset: boolean = !!(await this._valueHandler.eval(args.asset))\n const target: string | undefined = await this._valueHandler.eval(args.target)\n const queryParams: { [k: string]: any } | undefined = await this._valueHandler.eval(args.queryParams)\n\n const def: DynamicActionUiAnchorDef = {\n _actionDef: args,\n triggerType: asset ? 'link-asset' : external ? 'link-external' : 'link',\n linkUrl: link,\n // blockClickExpr: { type: 'jexl', expr: 'event.button == 0 && event.ctrlKey == true ? true : false' }\n }\n\n if (target) {\n if (!def.linkExtras) { def.linkExtras = {} }\n def.linkExtras.target = target\n }\n\n if (queryParams) {\n if (!def.linkExtras) { def.linkExtras = {} }\n def.linkExtras.queryParams = queryParams\n }\n\n return def\n }\n}\n","import { InjectionToken } from '@angular/core'\n\nimport { DynamicAction } from '../models/dynamic-action'\n\nexport const THESEAM_DYNAMIC_ACTION = new InjectionToken<DynamicAction<string>>(\n 'Action for executing a DynamicAction'\n)\n","import { Inject, Injectable, isDevMode, Optional } from '@angular/core'\nimport { map } from 'rxjs/operators'\n\nimport { SeamConfirmDialogService } from '@theseam/ui-common/confirm-dialog'\nimport { ThemeTypes } from '@theseam/ui-common/models'\nimport { hasProperty } from '@theseam/ui-common/utils'\n\nimport { DynamicValueHelperService } from '../dynamic-value-helper.service'\nimport { DynamicAction } from '../models/dynamic-action'\nimport { DynamicActionDef } from '../models/dynamic-action-def'\nimport { DynamicActionUiDef } from '../models/dynamic-action-ui-def'\nimport { THESEAM_DYNAMIC_ACTION } from '../tokens/dynamic-action'\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DynamicActionHelperService {\n\n private _actionMap = new Map<string, DynamicAction<string>>()\n\n constructor(\n private _valueHelper: DynamicValueHelperService,\n // TODO: Consider making the action confirm more generic\n @Optional() private _confirmDialog?: SeamConfirmDialogService,\n @Optional() @Inject(THESEAM_DYNAMIC_ACTION) actions?: DynamicAction<string>[]\n ) {\n // Only one evaluator should exist for a type, so map them for faster lookup.\n for (const e of (actions || [])) {\n if (isDevMode()) {\n if (this._actionMap.has(e.type)) {\n console.warn(`[DynamicActionHelperService] Multiple actions found for type '${e.type}'`)\n }\n }\n this._actionMap.set(e.type, e)\n }\n }\n\n /**\n * Execute an async action.\n *\n * TODO: Improve context and return typing.\n */\n public async exec<T extends string>(actionDef: DynamicActionDef<T>, context?: any): Promise<DynamicActionDef<T>> {\n const action = this._actionMap.get(actionDef.type)\n if (!action) {\n throw Error(`[DynamicActionHelperService] Action '${actionDef ? actionDef.type : undefined}' not found.`)\n }\n if (!action.exec) {\n throw Error(`[DynamicActionHelperService] Action '${actionDef ? actionDef.type : undefined}' does not implement 'exec()'.`)\n }\n\n if (await this.requiresConfirmation(actionDef, context)) {\n const confirmed = await this.promptConfirmation(actionDef, context)\n if (!confirmed) {\n // TODO: Decide a good way to handle a rejected confirm.\n return 'rejected' as any\n }\n }\n\n return await action.exec(actionDef, context)\n }\n\n /**\n * Execute an action.\n *\n * TODO: Improve context and return typing.\n */\n public execSync<T extends string>(actionDef: DynamicActionDef<T>, context?: any): DynamicActionDef<T> {\n const action = this._actionMap.get(actionDef.type)\n if (!action) {\n throw Error(`[DynamicActionHelperService] Action '${actionDef ? actionDef.type : undefined}' not found.`)\n }\n if (!action.execSync) {\n throw Error(`[DynamicActionHelperService] Action '${actionDef ? actionDef.type : undefined}' does not implement 'execSync()'.`)\n }\n\n return action.execSync(actionDef, context)\n }\n\n /**\n * Get UI props for action.\n *\n * TODO: Improve context and return typing.\n */\n public getUiProps<T extends string>(actionDef: DynamicActionDef<T>, context?: any): Promise<DynamicActionUiDef> {\n const action = this._actionMap.get(actionDef.type)\n if (!action) {\n throw Error(`[DynamicActionHelperService] Action '${actionDef ? actionDef.type : undefined}' not found.`)\n }\n if (!action.getUiProps) {\n throw Error(`[DynamicActionHelperService] Action '${actionDef ? actionDef.type : undefined}' does not implement 'getUiProps()'.`)\n }\n\n return action.getUiProps(actionDef, context)\n }\n\n /**\n * Checks if a DynamicActionDef is a type that can be executed.\n */\n public isExecutableType<T extends string>(value: DynamicActionDef<T>, isAsync: boolean): boolean {\n if (value === undefined || value === null) {\n return false\n }\n\n const action = this._actionMap.get(value.type)\n if (!action) {\n return false\n }\n\n if (isAsync && !action.exec) {\n return false\n }\n if (!isAsync && !action.execSync) {\n return false\n }\n\n return true\n }\n\n public async requiresConfirmation<T extends string>(actionDef: DynamicActionDef<T>, context?: any): Promise<boolean> {\n if (!hasProperty(actionDef, 'confirmDef')) {\n return false\n }\n\n if (hasProperty(actionDef.confirmDef, 'disabled')) {\n return !(await this._valueHelper.eval(actionDef.confirmDef.disabled, context))\n }\n\n return true\n }\n\n public requiresConfirmationSync<T extends string>(actionDef: DynamicActionDef<T>, context?: any): boolean {\n if (!hasProperty(actionDef, 'confirmDef')) {\n return false\n }\n\n if (hasProperty(actionDef.confirmDef, 'disabled')) {\n const disabled = !this._valueHelper.evalSync(actionDef.confirmDef.disabled, context)\n if (!disabled) {\n throw Error(\n `[DynamicActionHelperService] Action '${actionDef ? actionDef.type : undefined}' can't open ` +\n `confirm dialog. Only async actions support confirm dialog.`\n )\n }\n return false\n }\n\n throw Error(\n `[DynamicActionHelperService] Action '${actionDef ? actionDef.type : undefined}' can't open ` +\n `confirm dialog. Only async actions support confirm dialog.`\n )\n }\n\n public async promptConfirmation<T extends string>(actionDef: DynamicActionDef<T>, context?: any): Promise<boolean> {\n if (!this._confirmDialog) {\n throw Error(\n `[DynamicActionHelperService] Action '${actionDef ? actionDef.type : undefined}' can't open ` +\n `confirm dialog. Confirm dialog service is not injected.`\n )\n }\n\n const confirmDef = actionDef.confirmDef\n if (!confirmDef) {\n throw Error(\n `[DynamicActionHelperService] Action '${actionDef ? actionDef.type : undefined}' can't open ` +\n `confirm dialog. Confirm def is not defined.`\n )\n }\n\n let message: string | undefined\n if (hasProperty(confirmDef, 'message')) {\n message = await this._valueHelper.eval(confirmDef.message, context)\n }\n let alert: string | { message: string, type: ThemeTypes } | undefined\n if (hasProperty(confirmDef, 'alert')) {\n alert = await this._valueHelper.eval(confirmDef.alert, context)\n }\n\n const modalDef = this._confirmDialog.open(message, alert)\n return modalDef.afterClosed().pipe(\n map(v => v === 'confirm')\n ).toPromise()\n }\n\n}\n","import { ComponentType } from '@angular/cdk/portal'\nimport { Injectable, Injector } from '@angular/core'\nimport { Observable, of } from 'rxjs'\nimport { switchMap } from 'rxjs/operators'\n\nimport { Modal, ModalConfig, ModalRef } from '@theseam/ui-common/modal'\n\nimport { DynamicValueHelperService } from '../../dynamic-value-helper.service'\nimport { DynamicActionUiButtonDef } from '../../models/dynamic-action-ui-button-def'\nimport { DynamicActionHelperService } from '../dynamic-action-helper.service'\nimport { DynamicActionModal } from './dynamic-action-modal'\nimport { DynamicActionModalDef } from './dynamic-action-modal-def'\n\n/**\n * Handles execution of modal actions.\n */\n@Injectable()\nexport class DynamicActionModalService implements DynamicActionModal {\n\n readonly type = 'modal'\n\n label = 'Modal Action'\n\n constructor(\n private _valueHelper: DynamicValueHelperService,\n private _modal: Modal,\n private _injector: Injector\n ) { }\n\n async exec(args: DynamicActionModalDef, context: any): Promise<any> {\n const component = this._getComponent(args, context)\n const data = this._getData(args, context)\n\n return this._openModal(component, data).pipe(\n switchMap(modalRef => modalRef.afterClosed().pipe(\n switchMap(result => {\n const resultAction = this._getModalResultAction(args, result)\n\n // TODO: Come up with a way to pass data from previous action\n if (resultAction) {\n const dynamicActionHelper = this._getDynamicActionHelper()\n return dynamicActionHelper.exec(resultAction, context)\n }\n return of(result)\n })\n ))\n ).toPromise()\n }\n\n // execSync?: (args: IDynamicActionDef<T>, context: D) => R\n\n public async getUiProps(args: DynamicActionModalDef, context: any): Promise<DynamicActionUiButtonDef> {\n return {\n _actionDef: args,\n triggerType: 'click'\n }\n }\n\n /**\n * Get the dynamic action helper from the injector. The injector order causes\n * the dynamic action helper to not be in the injector when the constructor is\n * called.\n */\n private _getDynamicActionHelper(): DynamicActionHelperService {\n return this._injector.get(DynamicActionHelperService)\n }\n\n private _getComponent(args: DynamicActionModalDef, context: any): string | ComponentType<{}> | undefined {\n let component = args && args.component\n if (component) {\n component = this._valueHelper.evalSync(component, context)\n }\n return component\n }\n\n private _getData(args: DynamicActionModalDef, context: any): any | undefined {\n let data = args && args.data\n if (data) {\n data = this._valueHelper.evalSync(data, context)\n }\n return data\n }\n\n private _getModalResultAction(args: DynamicActionModalDef, result: any) {\n if (args.resultActions && args.resultActions[result]) {\n return args.resultActions[result]\n }\n }\n\n private _openModal(modal: any, data?: any): Observable<ModalRef<any>> {\n // TODO: Replace with JSON valid config from input def model\n const config: ModalConfig = {\n data,\n modalSize: 'lg'\n }\n\n if (typeof modal === 'string') {\n return this._modal.openFromLazyComponent(modal, config)\n } else {\n return of(this._modal.openFromComponent(modal, config))\n }\n }\n}\n","import { Injectable, Injector } from '@angular/core'\n\nimport { IDataExporter, THESEAM_DATA_EXPORTER } from '@theseam/ui-common/data-exporter'\nimport { notNullOrUndefined } from '@theseam/ui-common/utils'\nimport { IDynamicValueEvaluator } from '../../models/dynamic-value-evaluator'\n\nimport { IExportersDataValue } from './exporters-data-value'\n\n@Injectable()\nexport class ExportersDataEvaluator implements IDynamicValueEvaluator<'exporters-data'> {\n\n public readonly type = 'exporters-data'\n\n constructor(\n private _injector: Injector\n ) { }\n\n public async eval(value: IExportersDataValue<IDataExporter[]>, context?: any): Promise<{ exporters: IDataExporter[] }> {\n return this.evalSync(value, context)\n }\n\n public evalSync(value: IExportersDataValue<IDataExporter[]>, context?: any): { exporters: IDataExporter[] } {\n return {\n exporters: this._exporters(value.exporters || [])\n }\n }\n\n private _exporters(exporters: string[]) {\n const dataExporters: IDataExporter[] = (<any>this._injector.get(THESEAM_DATA_EXPORTER) || []) as IDataExporter[]\n return exporters\n .map(e => dataExporters.find(de => de.name === e))\n .filter(notNullOrUndefined)\n }\n\n}\n","// NOTE: ng-packagr ignores the \"types\" and \"typeRoots\" settings in tsconfig.\n// Unless there is a way to make it stop ignoring those settings, tripple slash\n// reference to a `.d.ts` file was the only way I could stop the missing types\n// error.\n// tslint:disable-next-line: no-reference\n// /// <reference path=\"./jexl.d.ts\" />\n// /// <reference path=\"../../../../../custom_types/jexl/index.d.ts\" />\n\nimport { DatePipe } from '@angular/common'\nimport { Injectable } from '@angular/core'\n\n// @ts-ignore: Missing types\nimport jexl from 'jexl'\n\nimport { IDynamicValueEvaluator } from '../../models/dynamic-value-evaluator'\n\nimport { IJexlValue } from './jexl-value'\n\n@Injectable()\nexport class JexlEvaluator implements IDynamicValueEvaluator<'jexl'> {\n\n public readonly type = 'jexl'\n\n private readonly _jexl = new jexl.Jexl()\n\n constructor() {\n this._jexl.addTransform('date', (val: any, row: any) => new DatePipe('en-US').transform(val, 'yyyy-MM-dd h:mm aaa'))\n }\n\n public eval<R>(value: IJexlValue<R>, context?: any): Promise<R> {\n return this._jexl.eval(value.expr, context)\n }\n\n public evalSync<R>(value: IJexlValue<R>, context?: any): R {\n return this._jexl.evalSync(value.expr, context)\n }\n\n}\n","// import { TableCellTypeName } from '@theseam/ui-common/table-cell-type'\n\nimport { DynamicActionConfirmDef } from './dynamic-action-confirm-def'\n\n// TODO: Add something to the model that clarifies what is supported from JSON or javascript only.\n// export interface DynamicActionDef<T extends TableCellTypeName> {\nexport interface DynamicActionDef<T> {\n\n readonly type: T\n\n /**\n * If defined, the action must be confirmed.\n */\n confirmDef?: DynamicActionConfirmDef\n\n // TODO: Fix model to avoid this.\n [key: string]: any\n}\n","import { InjectionToken } from '@angular/core'\n\nexport const THESEAM_DYNAMIC_DATA = new InjectionToken<any>('THESEAM_DYNAMIC_DATA')\n","import { DynamicActionDef } from '../models/dynamic-action-def'\n\nexport function isActionType<T extends string>(\n action: DynamicActionDef<T>,\n typeName: T\n): action is DynamicActionDef<T> {\n return action.type === typeName\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"theseam-ui-common-dynamic.js","sources":["../../../projects/ui-common/dynamic/tokens/dynamic-value-evaluator.ts","../../../projects/ui-common/dynamic/dynamic-value-helper.service.ts","../../../projects/ui-common/dynamic/tokens/api-config.ts","../../../projects/ui-common/dynamic/action/api/dynamic-action-api-errors.ts","../../../projects/ui-common/dynamic/action/api/dynamic-action-api.service.ts","../../../projects/ui-common/dynamic/action/link/dynamic-action-link.service.ts","../../../projects/ui-common/dynamic/tokens/dynamic-action.ts","../../../projects/ui-common/dynamic/action/dynamic-action-helper.service.ts","../../../projects/ui-common/dynamic/action/modal/dynamic-action-modal.service.ts","../../../projects/ui-common/dynamic/evaluators/exporters-data-evaluator/exporters-data-evaluator.ts","../../../projects/ui-common/dynamic/evaluators/jexl-evaluator/jexl-evaluator.ts","../../../projects/ui-common/dynamic/models/dynamic-action-def.ts","../../../projects/ui-common/dynamic/tokens/dynamic-data.ts","../../../projects/ui-common/dynamic/utils/is-action-type.ts","../../../projects/ui-common/dynamic/theseam-ui-common-dynamic.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core'\n\nimport { IDynamicValueEvaluator } from '../models/dynamic-value-evaluator'\n\nexport const THESEAM_DYNAMIC_VALUE_EVALUATOR = new InjectionToken<IDynamicValueEvaluator>(\n 'Evaluator that can be used for evaluating a DynamicValue'\n)\n","import { Inject, Injectable, isDevMode } from '@angular/core'\n\nimport { DynamicValue } from './models/dynamic-value'\nimport { DynamicValueEvaluatableType } from './models/dynamic-value-evaluatable-type'\nimport { IDynamicValueEvaluator } from './models/dynamic-value-evaluator'\nimport { IDynamicValueType } from './models/dynamic-value-type'\nimport { THESEAM_DYNAMIC_VALUE_EVALUATOR } from './tokens/dynamic-value-evaluator'\n\n/**\n *\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DynamicValueHelperService {\n\n private _evaluatorMap = new Map<string, IDynamicValueEvaluator>()\n\n constructor(\n @Inject(THESEAM_DYNAMIC_VALUE_EVALUATOR) evaluators: IDynamicValueEvaluator[]\n ) {\n // Only one evaluator should exist for a type, so map them for faster lookup.\n for (const e of evaluators) {\n if (isDevMode()) {\n if (this._evaluatorMap.has(e.type)) {\n console.warn(`[DynamicValueHelperService] Multiple evaluators found for type '${e.type}'`)\n }\n }\n this._evaluatorMap.set(e.type, e)\n }\n }\n\n /**\n * Evaluate a dynamic value to its actual value.\n *\n * TODO: Improve context and return typing.\n */\n public eval<R>(value: DynamicValue<R>, context?: any): Promise<R> {\n if (this.isEvaluatableType(value, true)) {\n return this._evalEvaluatable(value, context)\n }\n\n // Use `evalSync` if `eval` isn't provided and `evalSync` is.\n if (this.isEvaluatableType(value, false)) {\n return Promise.resolve<R>(this._evalEvaluatableSync(value, context))\n }\n\n return Promise.resolve<R>(value)\n }\n\n /**\n * Evaluate a dynamic value to its actual value.\n *\n * TODO: Improve context and return typing.\n */\n public evalSync<R>(value: DynamicValue<R>, context?: any): R {\n if (this.isEvaluatableType(value, false)) {\n return this._evalEvaluatableSync(value, context)\n }\n\n return value\n }\n\n /**\n * Checks if a DynamicValue is a type that can be evaluated.\n */\n public isEvaluatableType<R>(value: DynamicValue<R>, isAsync: boolean): value is DynamicValueEvaluatableType<R> {\n if (value === undefined || value === null) {\n return false\n }\n\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n return false\n }\n\n if (!(<DynamicValueEvaluatableType<R>>value).type) {\n return false\n }\n\n if (this._evaluatorMap.has((<DynamicValueEvaluatableType<R>>value).type)) {\n return true\n }\n\n return false\n }\n\n /**\n *\n */\n private _evalEvaluatable<R>(value: DynamicValueEvaluatableType<R>, context?: any): Promise<R> {\n const evaluator = this._evaluatorMap.get(value.type)\n if (!evaluator) {\n throw Error(`[DynamicValueHelperService] Evaluator '${value ? value.type : undefined}' not found.`)\n }\n if (!evaluator.eval) {\n throw Error(`[DynamicValueHelperService] Evaluator '${value ? value.type : undefined}' does not implement 'eval()'.`)\n }\n return evaluator.eval(value, context)\n }\n\n /**\n *\n */\n private _evalEvaluatableSync<R>(value: DynamicValueEvaluatableType<R>, context?: any): R {\n const evaluator = this._evaluatorMap.get(value.type)\n if (!evaluator) {\n throw Error(`[DynamicValueHelperService] Evaluator '${value ? value.type : undefined}' not found.`)\n }\n if (!evaluator.evalSync) {\n throw Error(`[DynamicValueHelperService] Evaluator '${value ? value.type : undefined}' does not implement 'evalSync()'.`)\n }\n return evaluator.evalSync(value, context)\n }\n\n}\n","import { InjectionToken } from '@angular/core'\n\nimport { DynamicValue } from '../models/dynamic-value'\n\nexport type ApiRequestMethodHeader = string | { [name: string]: string | string[] }\n\nexport interface ApiRequestMethodHeaders {\n 'GET'?: ApiRequestMethodHeader\n 'POST'?: ApiRequestMethodHeader\n 'PUT'?: ApiRequestMethodHeader\n 'PATCH'?: ApiRequestMethodHeader\n 'DELETE'?: ApiRequestMethodHeader\n}\n\nexport const VALID_REQUEST_METHODS: (keyof ApiRequestMethodHeaders)[] = [\n 'GET',\n 'POST',\n 'PUT',\n 'PATCH',\n 'DELETE'\n]\n\nexport function isValidRequestMethod(method: string): method is keyof ApiRequestMethodHeaders {\n return VALID_REQUEST_METHODS.indexOf(method as any) !== -1\n}\n\nexport interface IApiConfig {\n /**\n * Used to identify this config if multiple are provided.\n */\n id?: string\n\n /**\n * Base url that non-absolute endpoints will be appended to.\n */\n url?: DynamicValue<string>\n\n /**\n * Default headers to add to requests.\n */\n methodHeaders?: ApiRequestMethodHeaders\n}\n\nexport const THESEAM_API_CONFIG_DEFAULT: IApiConfig = {\n url: '/',\n\n methodHeaders: {\n 'GET': { 'Content-Type': 'application/json' },\n 'POST': { 'Content-Type': 'application/json' },\n 'PUT': { 'Content-Type': 'application/json' },\n 'PATCH': { 'Content-Type': 'application/json' },\n 'DELETE': { 'Content-Type': 'application/json' }\n }\n}\n\n// export const THESEAM_API_CONFIG = new InjectionToken<IApiConfig[]>(\n// 'Api config token, config options for actions that make an api request in library'\n// )\n\nexport const THESEAM_API_CONFIG = new InjectionToken<IApiConfig[]>(\n 'Api config token, config options for actions that make an api request in library', {\n providedIn: 'root',\n factory: () => [ THESEAM_API_CONFIG_DEFAULT ]\n })\n","\nexport function dynamicActionApiNotSupportedError(): Error {\n return Error(`Dynamic action type 'api' not supported.`)\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http'\nimport { Inject, Injectable, isDevMode, Optional } from '@angular/core'\nimport { from } from 'rxjs'\nimport { switchMap } from 'rxjs/operators'\n\nimport { isAbsoluteUrl } from '@theseam/ui-common/utils'\n\nimport { DynamicValueHelperService } from '../../dynamic-value-helper.service'\nimport { DynamicActionUiButtonDef } from '../../models/dynamic-action-ui-button-def'\nimport { DynamicValue } from '../../models/dynamic-value'\nimport { ApiRequestMethodHeader, ApiRequestMethodHeaders, IApiConfig, isValidRequestMethod, THESEAM_API_CONFIG, VALID_REQUEST_METHODS } from '../../tokens/api-config'\n\nimport { DynamicActionApi } from './dynamic-action-api'\nimport { DynamicActionApiDef } from './dynamic-action-api-def'\nimport { dynamicActionApiNotSupportedError } from './dynamic-action-api-errors'\n\n/**\n * Handles execution of api call actions.\n *\n * This action service should be generic enough to\n * work with any url endpoint, but will be biased towards our api where needed.\n */\n@Injectable()\nexport class DynamicActionApiService implements DynamicActionApi {\n\n readonly type = 'api'\n\n label = 'Api Action'\n\n constructor(\n private _valueHelper: DynamicValueHelperService,\n @Optional() private _http: HttpClient,\n @Optional() @Inject(THESEAM_API_CONFIG) private _configs: IApiConfig[]\n ) { }\n\n public exec(args: DynamicActionApiDef, context: any): Promise<any> {\n if (!this._isSupported()) {\n throw dynamicActionApiNotSupportedError()\n }\n\n return from(this._getExecInfo(args, context)).pipe(\n switchMap(x => this._http.request<any>(x.method, x.url, x.options)),\n ).toPromise()\n }\n\n public async getUiProps(args: DynamicActionApiDef, context: any): Promise<DynamicActionUiButtonDef> {\n return {\n _actionDef: args,\n triggerType: 'click'\n }\n }\n\n private async _getExecInfo(args: DynamicActionApiDef, context?: any) {\n const method = args.method || 'GET'\n\n const url = await this._getUrl(args, context)\n if (url === null) {\n throw new Error('[DynamicActionApiService] Unable to determine url.')\n }\n\n const body = await this._getBody(args, context)\n const params = await this._getParams(args, context)\n\n const headers = await this._getHeaders(args, context)\n\n const result = {\n url,\n method,\n options: { body, params, headers }\n }\n\n return result\n }\n\n private async _getUrl(args: DynamicActionApiDef, context?: any): Promise<string | null> {\n const config = this._getApiConfig(args)\n\n let endpoint = ''\n if (args.endpoint) {\n endpoint = await this._valueHelper.eval(args.endpoint, context)\n }\n\n if (isAbsoluteUrl(endpoint)) {\n return endpoint\n }\n\n if (config && config.url !== undefined && config.url !== null) {\n const url = await this._valueHelper.eval(config.url, context)\n if (typeof url === 'string') {\n const addSlash = endpoint.length > 0 && endpoint.indexOf('/') !== 0 &&\n url.length > 0 && url.indexOf('/') !== 0\n return `${config.url}${addSlash ? '/' : ''}${endpoint}`\n }\n }\n\n return null\n }\n\n private _getApiConfig(args: DynamicActionApiDef): IApiConfig | null {\n const configs = this._configs || []\n\n if (args.id === undefined || args.id === null) {\n return configs.length > 0 ? configs[0] : null\n }\n\n for (const config of configs) {\n if (config.id && config.id === args.id) {\n return config\n }\n }\n\n return null\n }\n\n private async _getBody(args: DynamicActionApiDef, context?: any) {\n if (args.body !== undefined && args.body !== null) {\n return await this._valueHelper.eval(args.body, context)\n }\n\n return undefined\n }\n\n private async _getParams(args: DynamicActionApiDef, context?: any) {\n if (args.params !== undefined && args.params !== null) {\n return await this._valueHelper.eval(args.params, context)\n }\n\n return undefined\n }\n\n private async _getHeaders(args: DynamicActionApiDef, context?: any): Promise<HttpHeaders> {\n let headers: ApiRequestMethodHeaders = {}\n\n const config = this._getApiConfig(args)\n\n // TODO: Make sure I am handling these values correctly. This could be\n // much cleaner. Tests with all the js primitives, null, undefined, and\n // dynamic action types should be written.\n\n if (config && config.methodHeaders) {\n const method = typeof args.method === 'string'\n ? args.method.trim().toUpperCase()\n : 'GET' // Default method type\n\n if (!isValidRequestMethod(method)) {\n throw Error(`API request method must be one of ${VALID_REQUEST_METHODS}`)\n }\n\n const h = method && config.methodHeaders[method]\n if (h !== undefined && h !== null) {\n headers = await this._evalHeaders(h, context) as any\n }\n }\n\n // TODO: Cleanup messing multiple level logic\n const argHeaders = args.headers\n if (argHeaders !== undefined && argHeaders !== null) {\n if (typeof argHeaders === 'string') {\n headers = argHeaders as any\n } else {\n const _val = this._valueHelper.eval(argHeaders as any, context) // TODO: Fix argHeaders type\n if (typeof _val === 'string') {\n headers = _val\n } else {\n const keys = Object.keys(argHeaders)\n for (const key of keys) {\n if (!isValidRequestMethod(key)) {\n throw Error(`API request method must be one of ${VALID_REQUEST_METHODS}`)\n }\n\n // TODO: Fix types\n const value = (argHeaders as any)[key]\n if (typeof value === 'string') {\n headers[key] = value\n } else if (Array.isArray(value)) {\n headers[key] = await Promise.all(value.map(async v => await this._valueHelper.eval(v, context))) as any\n } else {\n headers[key] = await this._valueHelper.eval(value, context)\n }\n }\n }\n }\n }\n\n return new HttpHeaders(headers as any)\n }\n\n private async _evalHeaders(\n headers: string | DynamicValue<string> | { [name: string]: DynamicValue<string> | DynamicValue<string>[] },\n context?: any\n ) {\n let res: string | { [name: string]: string | string[] } = {}\n\n // TODO: Cleanup messing multiple level logic\n if (typeof headers === 'string') {\n res = headers\n } else {\n const _val = this._valueHelper.eval(headers as any, context) // TODO: Fix argHeaders type\n if (typeof _val === 'string') {\n res = _val\n } else {\n const keys = Object.keys(headers)\n for (const key of keys) {\n const value = (headers as any)[key]\n if (typeof value === 'string') {\n res[key] = value\n } else if (Array.isArray(value)) {\n res[key] = await Promise.all(value.map(async v => await this._valueHelper.eval(v, context)))\n } else {\n res[key] = await this._valueHelper.eval(value, context)\n }\n }\n }\n }\n return res\n }\n\n private _isSupported(): boolean {\n if (isDevMode()) {\n console.warn(`[DynamicActionApiService] Action is not ready for production yet.`)\n } else {\n // I don't expect this to be attempted in prod before completed, so I am just adding a console warning.\n console.warn(`Unable to complete request. Contact support for assistance.`)\n }\n\n if (!this._http) {\n if (isDevMode()) {\n console.warn(`[DynamicActionApiService] Endpoint actions require \\`HttpClientModule\\` to be imported.`)\n }\n return false\n }\n return true\n }\n}\n","import { Injectable } from '@angular/core'\n\nimport { DynamicValueHelperService } from '../../dynamic-value-helper.service'\nimport { DynamicActionUiAnchorDef } from '../../models/dynamic-action-ui-anchor-def'\nimport { DynamicActionLink } from './dynamic-action-link'\nimport { DynamicActionLinkDef } from './dynamic-action-link-def'\n\n/**\n * Handles execution of link actions.\n */\n@Injectable()\nexport class DynamicActionLinkService implements DynamicActionLink {\n\n readonly type = 'link'\n\n label = 'Link Action'\n\n constructor(\n private _valueHandler: DynamicValueHelperService\n ) { }\n\n // exec?: (args: IDynamicActionDef<T>, context: D) => Observable<R>\n\n // execSync?: (args: IDynamicActionDef<T>, context: D) => R\n\n public async getUiProps(args: DynamicActionLinkDef, context: any): Promise<DynamicActionUiAnchorDef> {\n const link: string = await this._valueHandler.eval(args.link)\n const external: boolean = !!(await this._valueHandler.eval(args.external))\n const asset: boolean = !!(await this._valueHandler.eval(args.asset))\n const target: string | undefined = await this._valueHandler.eval(args.target)\n const queryParams: { [k: string]: any } | undefined = await this._valueHandler.eval(args.queryParams)\n\n const def: DynamicActionUiAnchorDef = {\n _actionDef: args,\n triggerType: asset ? 'link-asset' : external ? 'link-external' : 'link',\n linkUrl: link,\n // blockClickExpr: { type: 'jexl', expr: 'event.button == 0 && event.ctrlKey == true ? true : false' }\n }\n\n if (target) {\n if (!def.linkExtras) { def.linkExtras = {} }\n def.linkExtras.target = target\n }\n\n if (queryParams) {\n if (!def.linkExtras) { def.linkExtras = {} }\n def.linkExtras.queryParams = queryParams\n }\n\n return def\n }\n}\n","import { InjectionToken } from '@angular/core'\n\nimport { DynamicAction } from '../models/dynamic-action'\n\nexport const THESEAM_DYNAMIC_ACTION = new InjectionToken<DynamicAction<string>>(\n 'Action for executing a DynamicAction'\n)\n","import { Inject, Injectable, isDevMode, Optional } from '@angular/core'\nimport { map } from 'rxjs/operators'\n\nimport { SeamConfirmDialogService } from '@theseam/ui-common/confirm-dialog'\nimport { ThemeTypes } from '@theseam/ui-common/models'\nimport { hasProperty } from '@theseam/ui-common/utils'\n\nimport { DynamicValueHelperService } from '../dynamic-value-helper.service'\nimport { DynamicAction } from '../models/dynamic-action'\nimport { DynamicActionDef } from '../models/dynamic-action-def'\nimport { DynamicActionUiDef } from '../models/dynamic-action-ui-def'\nimport { THESEAM_DYNAMIC_ACTION } from '../tokens/dynamic-action'\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DynamicActionHelperService {\n\n private _actionMap = new Map<string, DynamicAction<string>>()\n\n constructor(\n private _valueHelper: DynamicValueHelperService,\n // TODO: Consider making the action confirm more generic\n @Optional() private _confirmDialog?: SeamConfirmDialogService,\n @Optional() @Inject(THESEAM_DYNAMIC_ACTION) actions?: DynamicAction<string>[]\n ) {\n // Only one evaluator should exist for a type, so map them for faster lookup.\n for (const e of (actions || [])) {\n if (isDevMode()) {\n if (this._actionMap.has(e.type)) {\n console.warn(`[DynamicActionHelperService] Multiple actions found for type '${e.type}'`)\n }\n }\n this._actionMap.set(e.type, e)\n }\n }\n\n /**\n * Execute an async action.\n *\n * TODO: Improve context and return typing.\n */\n public async exec<T extends string>(actionDef: DynamicActionDef<T>, context?: any): Promise<DynamicActionDef<T>> {\n const action = this._actionMap.get(actionDef.type)\n if (!action) {\n throw Error(`[DynamicActionHelperService] Action '${actionDef ? actionDef.type : undefined}' not found.`)\n }\n if (!action.exec) {\n throw Error(`[DynamicActionHelperService] Action '${actionDef ? actionDef.type : undefined}' does not implement 'exec()'.`)\n }\n\n if (await this.requiresConfirmation(actionDef, context)) {\n const confirmed = await this.promptConfirmation(actionDef, context)\n if (!confirmed) {\n // TODO: Decide a good way to handle a rejected confirm.\n return 'rejected' as any\n }\n }\n\n return await action.exec(actionDef, context)\n }\n\n /**\n * Execute an action.\n *\n * TODO: Improve context and return typing.\n */\n public execSync<T extends string>(actionDef: DynamicActionDef<T>, context?: any): DynamicActionDef<T> {\n const action = this._actionMap.get(actionDef.type)\n if (!action) {\n throw Error(`[DynamicActionHelperService] Action '${actionDef ? actionDef.type : undefined}' not found.`)\n }\n if (!action.execSync) {\n throw Error(`[DynamicActionHelperService] Action '${actionDef ? actionDef.type : undefined}' does not implement 'execSync()'.`)\n }\n\n return action.execSync(actionDef, context)\n }\n\n /**\n * Get UI props for action.\n *\n * TODO: Improve context and return typing.\n */\n public getUiProps<T extends string>(actionDef: DynamicActionDef<T>, context?: any): Promise<DynamicActionUiDef> {\n const action = this._actionMap.get(actionDef.type)\n if (!action) {\n throw Error(`[DynamicActionHelperService] Action '${actionDef ? actionDef.type : undefined}' not found.`)\n }\n if (!action.getUiProps) {\n throw Error(`[DynamicActionHelperService] Action '${actionDef ? actionDef.type : undefined}' does not implement 'getUiProps()'.`)\n }\n\n return action.getUiProps(actionDef, context)\n }\n\n /**\n * Checks if a DynamicActionDef is a type that can be executed.\n */\n public isExecutableType<T extends string>(value: DynamicActionDef<T>, isAsync: boolean): boolean {\n if (value === undefined || value === null) {\n return false\n }\n\n const action = this._actionMap.get(value.type)\n if (!action) {\n return false\n }\n\n if (isAsync && !action.exec) {\n return false\n }\n if (!isAsync && !action.execSync) {\n return false\n }\n\n return true\n }\n\n public async requiresConfirmation<T extends string>(actionDef: DynamicActionDef<T>, context?: any): Promise<boolean> {\n if (!hasProperty(actionDef, 'confirmDef')) {\n return false\n }\n\n if (hasProperty(actionDef.confirmDef, 'disabled')) {\n return !(await this._valueHelper.eval(actionDef.confirmDef.disabled, context))\n }\n\n return true\n }\n\n public requiresConfirmationSync<T extends string>(actionDef: DynamicActionDef<T>, context?: any): boolean {\n if (!hasProperty(actionDef, 'confirmDef')) {\n return false\n }\n\n if (hasProperty(actionDef.confirmDef, 'disabled')) {\n const disabled = !this._valueHelper.evalSync(actionDef.confirmDef.disabled, context)\n if (!disabled) {\n throw Error(\n `[DynamicActionHelperService] Action '${actionDef ? actionDef.type : undefined}' can't open ` +\n `confirm dialog. Only async actions support confirm dialog.`\n )\n }\n return false\n }\n\n throw Error(\n `[DynamicActionHelperService] Action '${actionDef ? actionDef.type : undefined}' can't open ` +\n `confirm dialog. Only async actions support confirm dialog.`\n )\n }\n\n public async promptConfirmation<T extends string>(actionDef: DynamicActionDef<T>, context?: any): Promise<boolean> {\n if (!this._confirmDialog) {\n throw Error(\n `[DynamicActionHelperService] Action '${actionDef ? actionDef.type : undefined}' can't open ` +\n `confirm dialog. Confirm dialog service is not injected.`\n )\n }\n\n const confirmDef = actionDef.confirmDef\n if (!confirmDef) {\n throw Error(\n `[DynamicActionHelperService] Action '${actionDef ? actionDef.type : undefined}' can't open ` +\n `confirm dialog. Confirm def is not defined.`\n )\n }\n\n let message: string | undefined\n if (hasProperty(confirmDef, 'message')) {\n message = await this._valueHelper.eval(confirmDef.message, context)\n }\n let alert: string | { message: string, type: ThemeTypes } | undefined\n if (hasProperty(confirmDef, 'alert')) {\n alert = await this._valueHelper.eval(confirmDef.alert, context)\n }\n\n const modalDef = this._confirmDialog.open(message, alert)\n return modalDef.afterClosed().pipe(\n map(v => v === 'confirm')\n ).toPromise()\n }\n\n}\n","import { ComponentType } from '@angular/cdk/portal'\nimport { Injectable, Injector } from '@angular/core'\nimport { Observable, of } from 'rxjs'\nimport { switchMap } from 'rxjs/operators'\n\nimport { Modal, ModalConfig, ModalRef } from '@theseam/ui-common/modal'\n\nimport { DynamicValueHelperService } from '../../dynamic-value-helper.service'\nimport { DynamicActionUiButtonDef } from '../../models/dynamic-action-ui-button-def'\nimport { DynamicActionHelperService } from '../dynamic-action-helper.service'\nimport { DynamicActionModal } from './dynamic-action-modal'\nimport { DynamicActionModalDef } from './dynamic-action-modal-def'\n\n/**\n * Handles execution of modal actions.\n */\n@Injectable()\nexport class DynamicActionModalService implements DynamicActionModal {\n\n readonly type = 'modal'\n\n label = 'Modal Action'\n\n constructor(\n private _valueHelper: DynamicValueHelperService,\n private _modal: Modal,\n private _injector: Injector\n ) { }\n\n async exec(args: DynamicActionModalDef, context: any): Promise<any> {\n const component = this._getComponent(args, context)\n const data = this._getData(args, context)\n\n return this._openModal(component, data).pipe(\n switchMap(modalRef => modalRef.afterClosed().pipe(\n switchMap(result => {\n const resultAction = this._getModalResultAction(args, result)\n\n // TODO: Come up with a way to pass data from previous action\n if (resultAction) {\n const dynamicActionHelper = this._getDynamicActionHelper()\n return dynamicActionHelper.exec(resultAction, context)\n }\n return of(result)\n })\n ))\n ).toPromise()\n }\n\n // execSync?: (args: IDynamicActionDef<T>, context: D) => R\n\n public async getUiProps(args: DynamicActionModalDef, context: any): Promise<DynamicActionUiButtonDef> {\n return {\n _actionDef: args,\n triggerType: 'click'\n }\n }\n\n /**\n * Get the dynamic action helper from the injector. The injector order causes\n * the dynamic action helper to not be in the injector when the constructor is\n * called.\n */\n private _getDynamicActionHelper(): DynamicActionHelperService {\n return this._injector.get(DynamicActionHelperService)\n }\n\n private _getComponent(args: DynamicActionModalDef, context: any): string | ComponentType<{}> | undefined {\n let component = args && args.component\n if (component) {\n component = this._valueHelper.evalSync(component, context)\n }\n return component\n }\n\n private _getData(args: DynamicActionModalDef, context: any): any | undefined {\n let data = args && args.data\n if (data) {\n data = this._valueHelper.evalSync(data, context)\n }\n return data\n }\n\n private _getModalResultAction(args: DynamicActionModalDef, result: any) {\n if (args.resultActions && args.resultActions[result]) {\n return args.resultActions[result]\n }\n }\n\n private _openModal(modal: any, data?: any): Observable<ModalRef<any>> {\n // TODO: Replace with JSON valid config from input def model\n const config: ModalConfig = {\n data,\n modalSize: 'lg'\n }\n\n if (typeof modal === 'string') {\n return this._modal.openFromLazyComponent(modal, config)\n } else {\n return of(this._modal.openFromComponent(modal, config))\n }\n }\n}\n","import { Injectable, Injector } from '@angular/core'\n\nimport { IDataExporter, THESEAM_DATA_EXPORTER } from '@theseam/ui-common/data-exporter'\nimport { notNullOrUndefined } from '@theseam/ui-common/utils'\nimport { IDynamicValueEvaluator } from '../../models/dynamic-value-evaluator'\n\nimport { IExportersDataValue } from './exporters-data-value'\n\n@Injectable()\nexport class ExportersDataEvaluator implements IDynamicValueEvaluator<'exporters-data'> {\n\n public readonly type = 'exporters-data'\n\n constructor(\n private _injector: Injector\n ) { }\n\n public async eval(value: IExportersDataValue<IDataExporter[]>, context?: any): Promise<{ exporters: IDataExporter[] }> {\n return this.evalSync(value, context)\n }\n\n public evalSync(value: IExportersDataValue<IDataExporter[]>, context?: any): { exporters: IDataExporter[] } {\n return {\n exporters: this._exporters(value.exporters || [])\n }\n }\n\n private _exporters(exporters: string[]) {\n const dataExporters: IDataExporter[] = (<any>this._injector.get(THESEAM_DATA_EXPORTER) || []) as IDataExporter[]\n return exporters\n .map(e => dataExporters.find(de => de.name === e))\n .filter(notNullOrUndefined)\n }\n\n}\n","// NOTE: ng-packagr ignores the \"types\" and \"typeRoots\" settings in tsconfig.\n// Unless there is a way to make it stop ignoring those settings, tripple slash\n// reference to a `.d.ts` file was the only way I could stop the missing types\n// error.\n// tslint:disable-next-line: no-reference\n// /// <reference path=\"./jexl.d.ts\" />\n// /// <reference path=\"../../../../../custom_types/jexl/index.d.ts\" />\n\nimport { DatePipe } from '@angular/common'\nimport { Injectable } from '@angular/core'\n\n// @ts-ignore: Missing types\nimport jexl from 'jexl'\n\nimport { IDynamicValueEvaluator } from '../../models/dynamic-value-evaluator'\n\nimport { IJexlValue } from './jexl-value'\n\n@Injectable()\nexport class JexlEvaluator implements IDynamicValueEvaluator<'jexl'> {\n\n public readonly type = 'jexl'\n\n private readonly _jexl = new jexl.Jexl()\n\n constructor() {\n this._jexl.addTransform('date', (val: any, row: any) => new DatePipe('en-US').transform(val, 'yyyy-MM-dd h:mm aaa'))\n this._jexl.addTransform('length', (val: any) => val.length)\n }\n\n public eval<R>(value: IJexlValue<R>, context?: any): Promise<R> {\n return this._jexl.eval(value.expr, context)\n }\n\n public evalSync<R>(value: IJexlValue<R>, context?: any): R {\n return this._jexl.evalSync(value.expr, context)\n }\n\n}\n","// import { TableCellTypeName } from '@theseam/ui-common/table-cell-type'\n\nimport { DynamicActionConfirmDef } from './dynamic-action-confirm-def'\n\n// TODO: Add something to the model that clarifies what is supported from JSON or javascript only.\n// export interface DynamicActionDef<T extends TableCellTypeName> {\nexport interface DynamicActionDef<T> {\n\n readonly type: T\n\n /**\n * If defined, the action must be confirmed.\n */\n confirmDef?: DynamicActionConfirmDef\n\n // TODO: Fix model to avoid this.\n [key: string]: any\n}\n","import { InjectionToken } from '@angular/core'\n\nexport const THESEAM_DYNAMIC_DATA = new InjectionToken<any>('THESEAM_DYNAMIC_DATA')\n","import { DynamicActionDef } from '../models/dynamic-action-def'\n\nexport function isActionType<T extends string>(\n action: DynamicActionDef<T>,\n typeName: T\n): action is DynamicActionDef<T> {\n return action.type === typeName\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}