@hmcts/rpx-xui-common-lib 2.0.11 → 2.0.12

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.
@@ -1,13 +1,11 @@
1
1
  import { Component, EventEmitter, Inject, Input, Output } from '@angular/core';
2
- import { FeatureToggleService } from '../../services';
3
2
  import { CookieService } from '../../services/cookie/cookie.service';
4
3
  import { windowToken } from '../../window';
5
4
  import * as i0 from "@angular/core";
6
5
  import * as i1 from "../../services/cookie/cookie.service";
7
- import * as i2 from "../../services";
8
- import * as i3 from "@angular/common";
9
- import * as i4 from "@angular/router";
10
- import * as i5 from "rpx-xui-translation";
6
+ import * as i2 from "@angular/common";
7
+ import * as i3 from "@angular/router";
8
+ import * as i4 from "rpx-xui-translation";
11
9
  function CookieBannerComponent_div_0_Template(rf, ctx) { if (rf & 1) {
12
10
  const _r2 = i0.ɵɵgetCurrentView();
13
11
  i0.ɵɵelementStart(0, "div", 1)(1, "div", 2)(2, "div", 3)(3, "div", 4)(4, "h2", 5);
@@ -54,9 +52,9 @@ function CookieBannerComponent_div_0_Template(rf, ctx) { if (rf & 1) {
54
52
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(24, 20, "View cookies"));
55
53
  } }
56
54
  export class CookieBannerComponent {
57
- constructor(cookieService, featureToggleService, window) {
55
+ constructor(cookieService, window) {
58
56
  this.cookieService = cookieService;
59
- this.featureToggleService = featureToggleService;
57
+ this.enableDynatrace = false;
60
58
  this.rejectionNotifier = new EventEmitter();
61
59
  this.acceptanceNotifier = new EventEmitter();
62
60
  this.isCookieBannerVisible = false;
@@ -92,24 +90,30 @@ export class CookieBannerComponent {
92
90
  this.rejectionNotifier.emit();
93
91
  }
94
92
  notifyAcceptance() {
95
- if (this.window.hasOwnProperty('dtrum')) {
96
- // @ts-ignore
97
- const dtrum = this.window['dtrum'];
98
- if (dtrum) {
99
- this.featureToggleService.isEnabled('xui-dynatrace-rum-enabled')
100
- .subscribe((enabled) => {
101
- if (enabled) {
102
- try {
103
- dtrum.enable();
104
- dtrum.enableSessionReplay(true);
105
- }
106
- catch (e) {
107
- console.error('Error enabling DynaTrace', e);
108
- }
93
+ if (this.enableDynatrace) {
94
+ if (this.window.hasOwnProperty('dtrum')) {
95
+ // @ts-ignore
96
+ const dtrum = this.window['dtrum'];
97
+ if (dtrum) {
98
+ try {
99
+ dtrum.enable();
100
+ dtrum.enableSessionReplay(true);
109
101
  }
110
- });
102
+ catch (e) {
103
+ console.error('Error enabling DynaTrace', e);
104
+ }
105
+ }
106
+ else {
107
+ console.info("DynaTrace not enabled on the server");
108
+ }
109
+ }
110
+ else {
111
+ console.info("DynaTrace not enabled on the server");
111
112
  }
112
113
  }
114
+ else {
115
+ console.info("Dyntrace RUM not enabled via component parameter");
116
+ }
113
117
  this.acceptanceNotifier.emit();
114
118
  }
115
119
  getExpiryDate() {
@@ -120,25 +124,27 @@ export class CookieBannerComponent {
120
124
  return now.toUTCString();
121
125
  }
122
126
  }
123
- CookieBannerComponent.ɵfac = function CookieBannerComponent_Factory(t) { return new (t || CookieBannerComponent)(i0.ɵɵdirectiveInject(i1.CookieService), i0.ɵɵdirectiveInject(i2.FeatureToggleService), i0.ɵɵdirectiveInject(windowToken)); };
124
- CookieBannerComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CookieBannerComponent, selectors: [["xuilib-cookie-banner"]], inputs: { identifier: "identifier", appName: "appName" }, outputs: { rejectionNotifier: "rejectionNotifier", acceptanceNotifier: "acceptanceNotifier" }, decls: 1, vars: 1, consts: [["class", "govuk-cookie-banner ", "role", "region", 4, "ngIf"], ["role", "region", 1, "govuk-cookie-banner"], [1, "govuk-cookie-banner__message", "govuk-width-container"], [1, "govuk-grid-row"], [1, "govuk-grid-column-two-thirds"], [1, "govuk-cookie-banner__heading", "govuk-heading-m"], [1, "govuk-cookie-banner__content"], [1, "govuk-button-group"], ["value", "accept", "type", "button", "name", "cookies", "data-module", "govuk-button", 1, "govuk-button", 3, "click"], ["value", "reject", "type", "button", "name", "cookies", "data-module", "govuk-button", 1, "govuk-button", 3, "click"], ["routerLink", "/cookies", 1, "govuk-link"]], template: function CookieBannerComponent_Template(rf, ctx) { if (rf & 1) {
127
+ CookieBannerComponent.ɵfac = function CookieBannerComponent_Factory(t) { return new (t || CookieBannerComponent)(i0.ɵɵdirectiveInject(i1.CookieService), i0.ɵɵdirectiveInject(windowToken)); };
128
+ CookieBannerComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CookieBannerComponent, selectors: [["xuilib-cookie-banner"]], inputs: { identifier: "identifier", appName: "appName", enableDynatrace: "enableDynatrace" }, outputs: { rejectionNotifier: "rejectionNotifier", acceptanceNotifier: "acceptanceNotifier" }, decls: 1, vars: 1, consts: [["class", "govuk-cookie-banner ", "role", "region", 4, "ngIf"], ["role", "region", 1, "govuk-cookie-banner"], [1, "govuk-cookie-banner__message", "govuk-width-container"], [1, "govuk-grid-row"], [1, "govuk-grid-column-two-thirds"], [1, "govuk-cookie-banner__heading", "govuk-heading-m"], [1, "govuk-cookie-banner__content"], [1, "govuk-button-group"], ["value", "accept", "type", "button", "name", "cookies", "data-module", "govuk-button", 1, "govuk-button", 3, "click"], ["value", "reject", "type", "button", "name", "cookies", "data-module", "govuk-button", 1, "govuk-button", 3, "click"], ["routerLink", "/cookies", 1, "govuk-link"]], template: function CookieBannerComponent_Template(rf, ctx) { if (rf & 1) {
125
129
  i0.ɵɵtemplate(0, CookieBannerComponent_div_0_Template, 25, 22, "div", 0);
126
130
  } if (rf & 2) {
127
131
  i0.ɵɵproperty("ngIf", ctx.isCookieBannerVisible);
128
- } }, dependencies: [i3.NgIf, i4.RouterLink, i5.RpxTranslatePipe], encapsulation: 2 });
132
+ } }, dependencies: [i2.NgIf, i3.RouterLink, i4.RpxTranslatePipe], encapsulation: 2 });
129
133
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CookieBannerComponent, [{
130
134
  type: Component,
131
135
  args: [{ selector: 'xuilib-cookie-banner', template: "<div class=\"govuk-cookie-banner \" role=\"region\" attr.aria-label=\"'Cookies on {{appName}}'\" *ngIf=\"isCookieBannerVisible\">\n <div class=\"govuk-cookie-banner__message govuk-width-container\">\n\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-two-thirds\">\n <h2 class=\"govuk-cookie-banner__heading govuk-heading-m\">{{'Cookies on' | rpxTranslate}} {{appName | rpxTranslate}}</h2>\n\n <div class=\"govuk-cookie-banner__content\">\n <p>{{'We use some essential cookies to make this service work.' | rpxTranslate}}</p>\n <p>{{'We\\\u2019d also like to use analytics cookies so we can understand how you use the service and make improvements.' | rpxTranslate}}</p>\n </div>\n </div>\n </div>\n\n <div class=\"govuk-button-group\">\n <button value=\"accept\" type=\"button\" name=\"cookies\" class=\"govuk-button\" data-module=\"govuk-button\" (click)=\"acceptCookie()\">\n {{'Accept analytics cookies' | rpxTranslate}}\n </button>\n <button value=\"reject\" type=\"button\" name=\"cookies\" class=\"govuk-button\" data-module=\"govuk-button\" (click)=\"rejectCookie()\">\n {{'Reject analytics cookies' | rpxTranslate}}\n </button>\n <a class=\"govuk-link\" routerLink=\"/cookies\">{{'View cookies' | rpxTranslate}}</a>\n </div>\n </div>\n</div>\n" }]
132
- }], function () { return [{ type: i1.CookieService }, { type: i2.FeatureToggleService }, { type: undefined, decorators: [{
136
+ }], function () { return [{ type: i1.CookieService }, { type: undefined, decorators: [{
133
137
  type: Inject,
134
138
  args: [windowToken]
135
139
  }] }]; }, { identifier: [{
136
140
  type: Input
137
141
  }], appName: [{
138
142
  type: Input
143
+ }], enableDynatrace: [{
144
+ type: Input
139
145
  }], rejectionNotifier: [{
140
146
  type: Output
141
147
  }], acceptanceNotifier: [{
142
148
  type: Output
143
149
  }] }); })();
144
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29va2llLWJhbm5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Nvb2tpZS1iYW5uZXIvY29va2llLWJhbm5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Nvb2tpZS1iYW5uZXIvY29va2llLWJhbm5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDckUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7Ozs7O0lDSDNDLDhCQUF5SCxhQUFBLGFBQUEsYUFBQSxZQUFBO0lBS3hELFlBQTBEOzs7SUFBQSxpQkFBSztJQUV4SCw4QkFBMEMsUUFBQTtJQUNyQyxhQUE2RTs7SUFBQSxpQkFBSTtJQUNwRiwwQkFBRztJQUFBLGFBQWlJOztJQUFBLGlCQUFJLEVBQUEsRUFBQSxFQUFBO0lBSzlJLCtCQUFnQyxpQkFBQTtJQUNzRSxtS0FBUyxlQUFBLHFCQUFjLENBQUEsSUFBQztJQUMxSCxhQUNGOztJQUFBLGlCQUFTO0lBQ1Qsa0NBQTZIO0lBQXpCLG1LQUFTLGVBQUEscUJBQWMsQ0FBQSxJQUFDO0lBQzFILGFBQ0Y7O0lBQUEsaUJBQVM7SUFDVCw4QkFBNEM7SUFBQSxhQUFpQzs7SUFBQSxpQkFBSSxFQUFBLEVBQUEsRUFBQTs7O0lBckJ2Qyw2RUFBMEM7SUFLekIsZUFBMEQ7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LElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRU8sYUFBYTtRQUNuQixNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMzQixNQUFNLFVBQVUsR0FBRyxJQUFJLEdBQUcsV0FBVyxDQUFDLENBQUUsd0NBQXdDO1FBQ2hGLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDeEIsT0FBTyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7MEZBaEZVLHFCQUFxQiw4R0FZdEIsV0FBVzt3RUFaVixxQkFBcUI7UUNWbEMsd0VBd0JNOztRQXhCc0YsZ0RBQTJCOzt1RkRVMUcscUJBQXFCO2NBTGpDLFNBQVM7MkJBQ0ksc0JBQXNCOztzQkFnQi9CLE1BQU07dUJBQUMsV0FBVzt3QkFYTCxVQUFVO2tCQUF6QixLQUFLO1lBQ1UsT0FBTztrQkFBdEIsS0FBSztZQUNXLGlCQUFpQjtrQkFBakMsTUFBTTtZQUNVLGtCQUFrQjtrQkFBbEMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmVhdHVyZVRvZ2dsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29va2llL2Nvb2tpZS5zZXJ2aWNlJztcbmltcG9ydCB7IHdpbmRvd1Rva2VuIH0gZnJvbSAnLi4vLi4vd2luZG93JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd4dWlsaWItY29va2llLWJhbm5lcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Nvb2tpZS1iYW5uZXIuY29tcG9uZW50Lmh0bWwnXG59KVxuXG5leHBvcnQgY2xhc3MgQ29va2llQmFubmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgcHVibGljIGlkZW50aWZpZXI6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIGFwcE5hbWU6IHN0cmluZztcbiAgQE91dHB1dCgpIHB1YmxpYyByZWplY3Rpb25Ob3RpZmllciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgcHVibGljIGFjY2VwdGFuY2VOb3RpZmllciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIHB1YmxpYyBpc0Nvb2tpZUJhbm5lclZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSByZWFkb25seSB3aW5kb3c6IGFueTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvb2tpZVNlcnZpY2U6IENvb2tpZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmZWF0dXJlVG9nZ2xlU2VydmljZTogRmVhdHVyZVRvZ2dsZVNlcnZpY2UsXG4gICAgQEluamVjdCh3aW5kb3dUb2tlbikgd2luZG93OiBhbnksXG4gICkge1xuICAgIHRoaXMud2luZG93ID0gd2luZG93O1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0U3RhdGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhY2NlcHRDb29raWUoKTogdm9pZCB7XG4gICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldENvb2tpZSh0aGlzLmlkZW50aWZpZXIsICd0cnVlJywgdGhpcy5nZXRFeHBpcnlEYXRlKCkpO1xuICAgIHRoaXMuc2V0U3RhdGUodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgcmVqZWN0Q29va2llKCk6IHZvaWQge1xuICAgIHRoaXMuY29va2llU2VydmljZS5zZXRDb29raWUodGhpcy5pZGVudGlmaWVyLCAnZmFsc2UnLCB0aGlzLmdldEV4cGlyeURhdGUoKSk7XG4gICAgdGhpcy5zZXRTdGF0ZSh0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRTdGF0ZShyZWxvYWQ6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgIHRoaXMuaXNDb29raWVCYW5uZXJWaXNpYmxlID0gIXRoaXMuY29va2llU2VydmljZS5jaGVja0Nvb2tpZSh0aGlzLmlkZW50aWZpZXIpO1xuXG4gICAgaWYgKHRoaXMuYXJlQ29va2llc0FjY2VwdGVkKCkpIHtcbiAgICAgIHRoaXMubm90aWZ5QWNjZXB0YW5jZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5vdGlmeVJlamVjdGlvbigpO1xuICAgIH1cblxuICAgIGlmIChyZWxvYWQpIHsgLy8gcmVsb2FkIGlmIGFueSBvZiB0aGUgYnV0dG9ucyBhcmUgcHJlc3NlZFxuICAgICAgdGhpcy53aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFyZUNvb2tpZXNBY2NlcHRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb29raWVTZXJ2aWNlLmNoZWNrQ29va2llKHRoaXMuaWRlbnRpZmllcikgJiYgdGhpcy5jb29raWVTZXJ2aWNlLmdldENvb2tpZSh0aGlzLmlkZW50aWZpZXIpID09PSAndHJ1ZSc7XG4gIH1cblxuICBwdWJsaWMgbm90aWZ5UmVqZWN0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMucmVqZWN0aW9uTm90aWZpZXIuZW1pdCgpO1xuICB9XG5cbiAgcHVibGljIG5vdGlmeUFjY2VwdGFuY2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMud2luZG93Lmhhc093blByb3BlcnR5KCdkdHJ1bScpKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25zdCBkdHJ1bSA9IHRoaXMud2luZG93WydkdHJ1bSddO1xuICAgICAgaWYgKGR0cnVtKSB7XG4gICAgICAgIHRoaXMuZmVhdHVyZVRvZ2dsZVNlcnZpY2UuaXNFbmFibGVkKCd4dWktZHluYXRyYWNlLXJ1bS1lbmFibGVkJylcbiAgICAgICAgICAuc3Vic2NyaWJlKChlbmFibGVkKSA9PiB7XG4gICAgICAgICAgICBpZiAoZW5hYmxlZCkge1xuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGR0cnVtLmVuYWJsZSgpO1xuICAgICAgICAgICAgICAgIGR0cnVtLmVuYWJsZVNlc3Npb25SZXBsYXkodHJ1ZSk7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBlbmFibGluZyBEeW5hVHJhY2UnLCBlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmFjY2VwdGFuY2VOb3RpZmllci5lbWl0KCk7XG4gIH1cblxuICBwcml2YXRlIGdldEV4cGlyeURhdGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IHRpbWUgPSBub3cuZ2V0VGltZSgpO1xuICAgIGNvbnN0IGV4cGlyZVRpbWUgPSB0aW1lICsgMzE1MzYwMDAwMDA7ICAvLyAgaW4gMzY1IGRheXMgPSAzNjAwICogMTAwMCAqIDI0ICogMzY1XG4gICAgbm93LnNldFRpbWUoZXhwaXJlVGltZSk7XG4gICAgcmV0dXJuIG5vdy50b1VUQ1N0cmluZygpO1xuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJnb3Z1ay1jb29raWUtYmFubmVyIFwiIHJvbGU9XCJyZWdpb25cIiBhdHRyLmFyaWEtbGFiZWw9XCInQ29va2llcyBvbiB7e2FwcE5hbWV9fSdcIiAqbmdJZj1cImlzQ29va2llQmFubmVyVmlzaWJsZVwiPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstY29va2llLWJhbm5lcl9fbWVzc2FnZSBnb3Z1ay13aWR0aC1jb250YWluZXJcIj5cblxuICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLXJvd1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtY29sdW1uLXR3by10aGlyZHNcIj5cbiAgICAgICAgPGgyIGNsYXNzPVwiZ292dWstY29va2llLWJhbm5lcl9faGVhZGluZyBnb3Z1ay1oZWFkaW5nLW1cIj57eydDb29raWVzIG9uJyB8IHJweFRyYW5zbGF0ZX19IHt7YXBwTmFtZSB8IHJweFRyYW5zbGF0ZX19PC9oMj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstY29va2llLWJhbm5lcl9fY29udGVudFwiPlxuICAgICAgICAgIDxwPnt7J1dlIHVzZSBzb21lIGVzc2VudGlhbCBjb29raWVzIHRvIG1ha2UgdGhpcyBzZXJ2aWNlIHdvcmsuJyB8IHJweFRyYW5zbGF0ZX19PC9wPlxuICAgICAgICAgIDxwPnt7J1dlXFzigJlkIGFsc28gbGlrZSB0byB1c2UgYW5hbHl0aWNzIGNvb2tpZXMgc28gd2UgY2FuIHVuZGVyc3RhbmQgaG93IHlvdSB1c2UgdGhlIHNlcnZpY2UgYW5kIG1ha2UgaW1wcm92ZW1lbnRzLicgfCBycHhUcmFuc2xhdGV9fTwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1idXR0b24tZ3JvdXBcIj5cbiAgICAgIDxidXR0b24gdmFsdWU9XCJhY2NlcHRcIiB0eXBlPVwiYnV0dG9uXCIgbmFtZT1cImNvb2tpZXNcIiBjbGFzcz1cImdvdnVrLWJ1dHRvblwiIGRhdGEtbW9kdWxlPVwiZ292dWstYnV0dG9uXCIgKGNsaWNrKT1cImFjY2VwdENvb2tpZSgpXCI+XG4gICAgICAgIHt7J0FjY2VwdCBhbmFseXRpY3MgY29va2llcycgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIHZhbHVlPVwicmVqZWN0XCIgdHlwZT1cImJ1dHRvblwiIG5hbWU9XCJjb29raWVzXCIgY2xhc3M9XCJnb3Z1ay1idXR0b25cIiBkYXRhLW1vZHVsZT1cImdvdnVrLWJ1dHRvblwiIChjbGljayk9XCJyZWplY3RDb29raWUoKVwiPlxuICAgICAgICB7eydSZWplY3QgYW5hbHl0aWNzIGNvb2tpZXMnIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGEgY2xhc3M9XCJnb3Z1ay1saW5rXCIgcm91dGVyTGluaz1cIi9jb29raWVzXCI+e3snVmlldyBjb29raWVzJyB8IHJweFRyYW5zbGF0ZX19PC9hPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29va2llLWJhbm5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Nvb2tpZS1iYW5uZXIvY29va2llLWJhbm5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Nvb2tpZS1iYW5uZXIvY29va2llLWJhbm5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDckUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7Ozs7SUNGM0MsOEJBQXlILGFBQUEsYUFBQSxhQUFBLFlBQUE7SUFLeEQsWUFBMEQ7OztJQUFBLGlCQUFLO0lBRXhILDhCQUEwQyxRQUFBO0lBQ3JDLGFBQTZFOztJQUFBLGlCQUFJO0lBQ3BGLDBCQUFHO0lBQUEsYUFBaUk7O0lBQUEsaUJBQUksRUFBQSxFQUFBLEVBQUE7SUFLOUksK0JBQWdDLGlCQUFBO0lBQ3NFLG1LQUFTLGVBQUEscUJBQWMsQ0FBQSxJQUFDO0lBQzFILGFBQ0Y7O0lBQUEsaUJBQVM7SUFDVCxrQ0FBNkg7SUFBekIsbUtBQVMsZUFBQSxxQkFBYyxDQUFBLElBQUM7SUFDMUgsYUFDRjs7SUFBQSxpQkFBUztJQUNULDhCQUE0QztJQUFBLGFBQWlDOztJQUFBLGlCQUFJLEVBQUEsRUFBQSxFQUFBOzs7SUFyQnZDLDZFQUEwQztJQUt6QixlQUEwRDtJQUExRCw2R0FBMEQ7SUFHOUcsZUFBNkU7SUFBN0Usd0dBQTZFO0lBQzdFLGVB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UUFDRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVPLGFBQWE7UUFDbkIsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN2QixNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDM0IsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLFdBQVcsQ0FBQyxDQUFFLHdDQUF3QztRQUNoRixHQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hCLE9BQU8sR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzNCLENBQUM7OzBGQW5GVSxxQkFBcUIsK0RBWXRCLFdBQVc7d0VBWlYscUJBQXFCO1FDVGxDLHdFQXdCTTs7UUF4QnNGLGdEQUEyQjs7dUZEUzFHLHFCQUFxQjtjQUxqQyxTQUFTOzJCQUNJLHNCQUFzQjs7c0JBZ0IvQixNQUFNO3VCQUFDLFdBQVc7d0JBWEwsVUFBVTtrQkFBekIsS0FBSztZQUNVLE9BQU87a0JBQXRCLEtBQUs7WUFDVSxlQUFlO2tCQUE5QixLQUFLO1lBQ1csaUJBQWlCO2tCQUFqQyxNQUFNO1lBQ1Usa0JBQWtCO2tCQUFsQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdCwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29va2llL2Nvb2tpZS5zZXJ2aWNlJztcbmltcG9ydCB7IHdpbmRvd1Rva2VuIH0gZnJvbSAnLi4vLi4vd2luZG93JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd4dWlsaWItY29va2llLWJhbm5lcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Nvb2tpZS1iYW5uZXIuY29tcG9uZW50Lmh0bWwnXG59KVxuXG5leHBvcnQgY2xhc3MgQ29va2llQmFubmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgcHVibGljIGlkZW50aWZpZXI6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIGFwcE5hbWU6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIGVuYWJsZUR5bmF0cmFjZTogYm9vbGVhbiA9IGZhbHNlO1xuICBAT3V0cHV0KCkgcHVibGljIHJlamVjdGlvbk5vdGlmaWVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgYWNjZXB0YW5jZU5vdGlmaWVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgcHVibGljIGlzQ29va2llQmFubmVyVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgcmVhZG9ubHkgd2luZG93OiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb29raWVTZXJ2aWNlOiBDb29raWVTZXJ2aWNlLFxuICAgIEBJbmplY3Qod2luZG93VG9rZW4pIHdpbmRvdzogYW55LFxuICApIHtcbiAgICB0aGlzLndpbmRvdyA9IHdpbmRvdztcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldFN0YXRlKCk7XG4gIH1cblxuICBwdWJsaWMgYWNjZXB0Q29va2llKCk6IHZvaWQge1xuICAgIHRoaXMuY29va2llU2VydmljZS5zZXRDb29raWUodGhpcy5pZGVudGlmaWVyLCAndHJ1ZScsIHRoaXMuZ2V0RXhwaXJ5RGF0ZSgpKTtcbiAgICB0aGlzLnNldFN0YXRlKHRydWUpO1xuICB9XG5cbiAgcHVibGljIHJlamVjdENvb2tpZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0Q29va2llKHRoaXMuaWRlbnRpZmllciwgJ2ZhbHNlJywgdGhpcy5nZXRFeHBpcnlEYXRlKCkpO1xuICAgIHRoaXMuc2V0U3RhdGUodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgc2V0U3RhdGUocmVsb2FkOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcbiAgICB0aGlzLmlzQ29va2llQmFubmVyVmlzaWJsZSA9ICF0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2tDb29raWUodGhpcy5pZGVudGlmaWVyKTtcblxuICAgIGlmICh0aGlzLmFyZUNvb2tpZXNBY2NlcHRlZCgpKSB7XG4gICAgICB0aGlzLm5vdGlmeUFjY2VwdGFuY2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ub3RpZnlSZWplY3Rpb24oKTtcbiAgICB9XG5cbiAgICBpZiAocmVsb2FkKSB7IC8vIHJlbG9hZCBpZiBhbnkgb2YgdGhlIGJ1dHRvbnMgYXJlIHByZXNzZWRcbiAgICAgIHRoaXMud2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhcmVDb29raWVzQWNjZXB0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29va2llU2VydmljZS5jaGVja0Nvb2tpZSh0aGlzLmlkZW50aWZpZXIpICYmIHRoaXMuY29va2llU2VydmljZS5nZXRDb29raWUodGhpcy5pZGVudGlmaWVyKSA9PT0gJ3RydWUnO1xuICB9XG5cbiAgcHVibGljIG5vdGlmeVJlamVjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnJlamVjdGlvbk5vdGlmaWVyLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBub3RpZnlBY2NlcHRhbmNlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmVuYWJsZUR5bmF0cmFjZSkge1xuICAgICAgaWYgKHRoaXMud2luZG93Lmhhc093blByb3BlcnR5KCdkdHJ1bScpKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgZHRydW0gPSB0aGlzLndpbmRvd1snZHRydW0nXTtcbiAgICAgICAgaWYgKGR0cnVtKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGR0cnVtLmVuYWJsZSgpO1xuICAgICAgICAgICAgZHRydW0uZW5hYmxlU2Vzc2lvblJlcGxheSh0cnVlKTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBlbmFibGluZyBEeW5hVHJhY2UnLCBlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5pbmZvKFwiRHluYVRyYWNlIG5vdCBlbmFibGVkIG9uIHRoZSBzZXJ2ZXJcIik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuaW5mbyhcIkR5bmFUcmFjZSBub3QgZW5hYmxlZCBvbiB0aGUgc2VydmVyXCIpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmluZm8oXCJEeW50cmFjZSBSVU0gbm90IGVuYWJsZWQgdmlhIGNvbXBvbmVudCBwYXJhbWV0ZXJcIik7XG4gICAgfVxuICAgIHRoaXMuYWNjZXB0YW5jZU5vdGlmaWVyLmVtaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RXhwaXJ5RGF0ZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgdGltZSA9IG5vdy5nZXRUaW1lKCk7XG4gICAgY29uc3QgZXhwaXJlVGltZSA9IHRpbWUgKyAzMTUzNjAwMDAwMDsgIC8vICBpbiAzNjUgZGF5cyA9IDM2MDAgKiAxMDAwICogMjQgKiAzNjVcbiAgICBub3cuc2V0VGltZShleHBpcmVUaW1lKTtcbiAgICByZXR1cm4gbm93LnRvVVRDU3RyaW5nKCk7XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cImdvdnVrLWNvb2tpZS1iYW5uZXIgXCIgcm9sZT1cInJlZ2lvblwiIGF0dHIuYXJpYS1sYWJlbD1cIidDb29raWVzIG9uIHt7YXBwTmFtZX19J1wiICpuZ0lmPVwiaXNDb29raWVCYW5uZXJWaXNpYmxlXCI+XG4gIDxkaXYgY2xhc3M9XCJnb3Z1ay1jb29raWUtYmFubmVyX19tZXNzYWdlIGdvdnVrLXdpZHRoLWNvbnRhaW5lclwiPlxuXG4gICAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtcm93XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1jb2x1bW4tdHdvLXRoaXJkc1wiPlxuICAgICAgICA8aDIgY2xhc3M9XCJnb3Z1ay1jb29raWUtYmFubmVyX19oZWFkaW5nIGdvdnVrLWhlYWRpbmctbVwiPnt7J0Nvb2tpZXMgb24nIHwgcnB4VHJhbnNsYXRlfX0ge3thcHBOYW1lIHwgcnB4VHJhbnNsYXRlfX08L2gyPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1jb29raWUtYmFubmVyX19jb250ZW50XCI+XG4gICAgICAgICAgPHA+e3snV2UgdXNlIHNvbWUgZXNzZW50aWFsIGNvb2tpZXMgdG8gbWFrZSB0aGlzIHNlcnZpY2Ugd29yay4nIHwgcnB4VHJhbnNsYXRlfX08L3A+XG4gICAgICAgICAgPHA+e3snV2VcXOKAmWQgYWxzbyBsaWtlIHRvIHVzZSBhbmFseXRpY3MgY29va2llcyBzbyB3ZSBjYW4gdW5kZXJzdGFuZCBob3cgeW91IHVzZSB0aGUgc2VydmljZSBhbmQgbWFrZSBpbXByb3ZlbWVudHMuJyB8IHJweFRyYW5zbGF0ZX19PC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImdvdnVrLWJ1dHRvbi1ncm91cFwiPlxuICAgICAgPGJ1dHRvbiB2YWx1ZT1cImFjY2VwdFwiIHR5cGU9XCJidXR0b25cIiBuYW1lPVwiY29va2llc1wiIGNsYXNzPVwiZ292dWstYnV0dG9uXCIgZGF0YS1tb2R1bGU9XCJnb3Z1ay1idXR0b25cIiAoY2xpY2spPVwiYWNjZXB0Q29va2llKClcIj5cbiAgICAgICAge3snQWNjZXB0IGFuYWx5dGljcyBjb29raWVzJyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gdmFsdWU9XCJyZWplY3RcIiB0eXBlPVwiYnV0dG9uXCIgbmFtZT1cImNvb2tpZXNcIiBjbGFzcz1cImdvdnVrLWJ1dHRvblwiIGRhdGEtbW9kdWxlPVwiZ292dWstYnV0dG9uXCIgKGNsaWNrKT1cInJlamVjdENvb2tpZSgpXCI+XG4gICAgICAgIHt7J1JlamVjdCBhbmFseXRpY3MgY29va2llcycgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YSBjbGFzcz1cImdvdnVrLWxpbmtcIiByb3V0ZXJMaW5rPVwiL2Nvb2tpZXNcIj57eydWaWV3IGNvb2tpZXMnIHwgcnB4VHJhbnNsYXRlfX08L2E+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -17,6 +17,10 @@ export class FeatureToggleService {
17
17
  getValueOnce(_key, _defaultValue) {
18
18
  throw new Error('Not implemented');
19
19
  }
20
+ // tslint:disable-next-line: variable-name
21
+ getValueSync(feature, defaultValue) {
22
+ throw new Error(`Not implemented ${feature}:${defaultValue}`);
23
+ }
20
24
  }
21
25
  FeatureToggleService.ɵfac = function FeatureToggleService_Factory(t) { return new (t || FeatureToggleService)(); };
22
26
  FeatureToggleService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: FeatureToggleService, factory: FeatureToggleService.ɵfac, providedIn: 'root' });
@@ -26,4 +30,4 @@ FeatureToggleService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: Fea
26
30
  providedIn: 'root'
27
31
  }]
28
32
  }], null, null); })();
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS10b2dnbGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dWktY29tbW9uLWxpYi9zcmMvbGliL3NlcnZpY2VzL2ZlYXR1cmUtdG9nZ2xlL2ZlYXR1cmUtdG9nZ2xlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFPM0MsTUFBTSxPQUFPLG9CQUFvQjtJQUM3QiwwQ0FBMEM7SUFDbkMsVUFBVSxDQUFDLEtBQWtCLEVBQUUsU0FBaUI7UUFDbkQsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFDRCwwQ0FBMEM7SUFDbkMsU0FBUyxDQUFDLFFBQWdCO1FBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBQ0QsMENBQTBDO0lBQ25DLFFBQVEsQ0FBSSxJQUFZLEVBQUUsYUFBZ0I7UUFDN0MsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCwwQ0FBMEM7SUFDbkMsWUFBWSxDQUFJLElBQVksRUFBRSxhQUFnQjtRQUNqRCxNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDdkMsQ0FBQzs7d0ZBakJRLG9CQUFvQjswRUFBcEIsb0JBQW9CLFdBQXBCLG9CQUFvQixtQkFGakIsTUFBTTt1RkFFVCxvQkFBb0I7Y0FIaEMsVUFBVTtlQUFDO2dCQUNSLFVBQVUsRUFBRSxNQUFNO2FBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmVhdHVyZVVzZXIgfSBmcm9tICcuLi8uLi9tb2RlbHMvZmVhdHVyZS11c2VyJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBGZWF0dXJlVG9nZ2xlU2VydmljZSB7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiB2YXJpYWJsZS1uYW1lXG4gICAgcHVibGljIGluaXRpYWxpemUoX3VzZXI6IEZlYXR1cmVVc2VyLCBfY2xpZW50SWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgIH1cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IHZhcmlhYmxlLW5hbWVcbiAgICBwdWJsaWMgaXNFbmFibGVkKF9mZWF0dXJlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgICB9XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiB2YXJpYWJsZS1uYW1lXG4gICAgcHVibGljIGdldFZhbHVlPFI+KF9rZXk6IHN0cmluZywgX2RlZmF1bHRWYWx1ZTogUik6IE9ic2VydmFibGU8Uj4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgIH1cblxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogdmFyaWFibGUtbmFtZVxuICAgIHB1YmxpYyBnZXRWYWx1ZU9uY2U8Uj4oX2tleTogc3RyaW5nLCBfZGVmYXVsdFZhbHVlOiBSKTogT2JzZXJ2YWJsZTxSPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gICAgfVxufVxuIl19
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS10b2dnbGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dWktY29tbW9uLWxpYi9zcmMvbGliL3NlcnZpY2VzL2ZlYXR1cmUtdG9nZ2xlL2ZlYXR1cmUtdG9nZ2xlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFPM0MsTUFBTSxPQUFPLG9CQUFvQjtJQUM3QiwwQ0FBMEM7SUFDbkMsVUFBVSxDQUFDLEtBQWtCLEVBQUUsU0FBaUI7UUFDbkQsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFDRCwwQ0FBMEM7SUFDbkMsU0FBUyxDQUFDLFFBQWdCO1FBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBQ0QsMENBQTBDO0lBQ25DLFFBQVEsQ0FBSSxJQUFZLEVBQUUsYUFBZ0I7UUFDN0MsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCwwQ0FBMEM7SUFDbkMsWUFBWSxDQUFJLElBQVksRUFBRSxhQUFnQjtRQUNqRCxNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELDBDQUEwQztJQUNuQyxZQUFZLENBQUksT0FBZSxFQUFFLFlBQWU7UUFDckQsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsT0FBTyxJQUFJLFlBQVksRUFBRSxDQUFDLENBQUM7SUFDaEUsQ0FBQzs7d0ZBdEJRLG9CQUFvQjswRUFBcEIsb0JBQW9CLFdBQXBCLG9CQUFvQixtQkFGakIsTUFBTTt1RkFFVCxvQkFBb0I7Y0FIaEMsVUFBVTtlQUFDO2dCQUNSLFVBQVUsRUFBRSxNQUFNO2FBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmVhdHVyZVVzZXIgfSBmcm9tICcuLi8uLi9tb2RlbHMvZmVhdHVyZS11c2VyJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBGZWF0dXJlVG9nZ2xlU2VydmljZSB7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiB2YXJpYWJsZS1uYW1lXG4gICAgcHVibGljIGluaXRpYWxpemUoX3VzZXI6IEZlYXR1cmVVc2VyLCBfY2xpZW50SWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgIH1cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IHZhcmlhYmxlLW5hbWVcbiAgICBwdWJsaWMgaXNFbmFibGVkKF9mZWF0dXJlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgICB9XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiB2YXJpYWJsZS1uYW1lXG4gICAgcHVibGljIGdldFZhbHVlPFI+KF9rZXk6IHN0cmluZywgX2RlZmF1bHRWYWx1ZTogUik6IE9ic2VydmFibGU8Uj4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgIH1cblxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogdmFyaWFibGUtbmFtZVxuICAgIHB1YmxpYyBnZXRWYWx1ZU9uY2U8Uj4oX2tleTogc3RyaW5nLCBfZGVmYXVsdFZhbHVlOiBSKTogT2JzZXJ2YWJsZTxSPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gICAgfVxuXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiB2YXJpYWJsZS1uYW1lXG4gICAgcHVibGljIGdldFZhbHVlU3luYzxSPihmZWF0dXJlOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZTogUik6IFIge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBOb3QgaW1wbGVtZW50ZWQgJHtmZWF0dXJlfToke2RlZmF1bHRWYWx1ZX1gKTtcbiAgICB9XG5cbn1cbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import { Injectable } from '@angular/core';
2
- import * as LDClient from 'launchdarkly-js-client-sdk';
2
+ import { initialize } from 'launchdarkly-js-client-sdk';
3
3
  import { BehaviorSubject } from 'rxjs';
4
4
  import { distinctUntilChanged, filter, map } from 'rxjs/operators';
5
5
  import * as i0 from "@angular/core";
@@ -14,17 +14,18 @@ export class LaunchDarklyService {
14
14
  this.ready.next(false);
15
15
  this.user = user;
16
16
  this.clientId = clientId;
17
- this.client = LDClient.initialize(this.clientId, this.user, {});
17
+ this.client = initialize(this.clientId, this.user, {});
18
18
  this.client.on('ready', () => {
19
19
  this.client.identify(this.user).then(() => this.ready.next(true));
20
20
  });
21
21
  }
22
- isEnabled(feature) {
23
- return this.getValue(feature, false);
22
+ isEnabled(feature, defaultValue = false) {
23
+ return this.getValue(feature, defaultValue);
24
24
  }
25
25
  getArray(feature) {
26
26
  return this.getValue(feature, []);
27
27
  }
28
+ // Note that this function always emits its default value first, which can lead to unexpected results
28
29
  getValue(feature, defaultValue) {
29
30
  if (!this.features.hasOwnProperty(feature)) {
30
31
  this.features[feature] = new BehaviorSubject(defaultValue);
@@ -49,6 +50,9 @@ export class LaunchDarklyService {
49
50
  getValueOnce(feature, defaultValue) {
50
51
  return this.ready.pipe(filter(ready => ready), map(() => this.client.variation(feature, defaultValue)));
51
52
  }
53
+ getValueSync(feature, defaultValue) {
54
+ return this.client.variation(feature, defaultValue);
55
+ }
52
56
  }
53
57
  LaunchDarklyService.ɵfac = function LaunchDarklyService_Factory(t) { return new (t || LaunchDarklyService)(); };
54
58
  LaunchDarklyService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: LaunchDarklyService, factory: LaunchDarklyService.ɵfac, providedIn: 'root' });
@@ -58,4 +62,4 @@ LaunchDarklyService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: Laun
58
62
  providedIn: 'root'
59
63
  }]
60
64
  }], null, null); })();
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF1bmNoLWRhcmtseS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh1aS1jb21tb24tbGliL3NyYy9saWIvc2VydmljZXMvZmVhdHVyZS10b2dnbGUvbGF1bmNoLWRhcmtseS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxLQUFLLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBT25FLE1BQU0sT0FBTyxtQkFBbUI7SUFIaEM7UUFNcUIsVUFBSyxHQUE2QixJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUN0RSxhQUFRLEdBQXlDLEVBQUUsQ0FBQztRQUM3RCxTQUFJLEdBQWdCLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ3hDLGFBQVEsR0FBVyxFQUFFLENBQUM7S0FxRGpDO0lBbkRVLFVBQVUsQ0FBQyxPQUFvQixFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsRUFBRSxRQUFnQjtRQUN2RSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7WUFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLFNBQVMsQ0FBQyxPQUFlO1FBQzVCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBVSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVNLFFBQVEsQ0FBVSxPQUFlO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBTSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVNLFFBQVEsQ0FBSSxPQUFlLEVBQUUsWUFBZTtRQUMvQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDeEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLGVBQWUsQ0FBSSxZQUFZLENBQUMsQ0FBQztZQUM5RCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDWCxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFDdEIsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUMxRCxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFVBQVUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxHQUFNLEVBQUUsRUFBRTtvQkFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3JDLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQyxDQUFDLENBQUM7U0FDTjtRQUNELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQzlCLG9CQUFvQixFQUFFLENBQ3pCLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxZQUFZLENBQUksT0FBZSxFQUFFLFlBQWU7UUFDbkQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDbEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQ3RCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FDMUQsQ0FBQztJQUNOLENBQUM7O3NGQTFEUSxtQkFBbUI7eUVBQW5CLG1CQUFtQixXQUFuQixtQkFBbUIsbUJBRmhCLE1BQU07dUZBRVQsbUJBQW1CO2NBSC9CLFVBQVU7ZUFBQztnQkFDUixVQUFVLEVBQUUsTUFBTTthQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIExEQ2xpZW50IGZyb20gJ2xhdW5jaGRhcmtseS1qcy1jbGllbnQtc2RrJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRmVhdHVyZVVzZXIgfSBmcm9tICcuLi8uLi9tb2RlbHMvZmVhdHVyZS11c2VyJztcbmltcG9ydCB7IEZlYXR1cmVUb2dnbGVTZXJ2aWNlIH0gZnJvbSAnLi9mZWF0dXJlLXRvZ2dsZS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBMYXVuY2hEYXJrbHlTZXJ2aWNlIGltcGxlbWVudHMgRmVhdHVyZVRvZ2dsZVNlcnZpY2Uge1xuXG4gICAgcHJpdmF0ZSBjbGllbnQ6IExEQ2xpZW50LkxEQ2xpZW50O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVhZHk6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmVhdHVyZXM6IFJlY29yZDxzdHJpbmcsIEJlaGF2aW9yU3ViamVjdDxhbnk+PiA9IHt9O1xuICAgIHByaXZhdGUgdXNlcjogRmVhdHVyZVVzZXIgPSB7IGFub255bW91czogdHJ1ZSB9O1xuICAgIHByaXZhdGUgY2xpZW50SWQ6IHN0cmluZyA9ICcnO1xuXG4gICAgcHVibGljIGluaXRpYWxpemUodXNlcjogRmVhdHVyZVVzZXIgPSB7IGFub255bW91czogdHJ1ZSB9LCBjbGllbnRJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVhZHkubmV4dChmYWxzZSk7XG4gICAgICAgIHRoaXMudXNlciA9IHVzZXI7XG4gICAgICAgIHRoaXMuY2xpZW50SWQgPSBjbGllbnRJZDtcbiAgICAgICAgdGhpcy5jbGllbnQgPSBMRENsaWVudC5pbml0aWFsaXplKHRoaXMuY2xpZW50SWQsIHRoaXMudXNlciwge30pO1xuICAgICAgICB0aGlzLmNsaWVudC5vbigncmVhZHknLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNsaWVudC5pZGVudGlmeSh0aGlzLnVzZXIpLnRoZW4oKCkgPT4gdGhpcy5yZWFkeS5uZXh0KHRydWUpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzRW5hYmxlZChmZWF0dXJlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWU8Ym9vbGVhbj4oZmVhdHVyZSwgZmFsc2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBcnJheTxSID0gYW55PihmZWF0dXJlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFJbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRWYWx1ZTxSW10+KGZlYXR1cmUsIFtdKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VmFsdWU8Uj4oZmVhdHVyZTogc3RyaW5nLCBkZWZhdWx0VmFsdWU6IFIpOiBPYnNlcnZhYmxlPFI+IHtcbiAgICAgICAgaWYgKCF0aGlzLmZlYXR1cmVzLmhhc093blByb3BlcnR5KGZlYXR1cmUpKSB7XG4gICAgICAgICAgICB0aGlzLmZlYXR1cmVzW2ZlYXR1cmVdID0gbmV3IEJlaGF2aW9yU3ViamVjdDxSPihkZWZhdWx0VmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5yZWFkeS5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcihyZWFkeSA9PiByZWFkeSksXG4gICAgICAgICAgICAgICAgbWFwKCgpID0+IHRoaXMuY2xpZW50LnZhcmlhdGlvbihmZWF0dXJlLCBkZWZhdWx0VmFsdWUpKVxuICAgICAgICAgICAgKS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZmVhdHVyZXNbZmVhdHVyZV0ubmV4dCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jbGllbnQub24oYGNoYW5nZToke2ZlYXR1cmV9YCwgKHZhbDogUikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZlYXR1cmVzW2ZlYXR1cmVdLm5leHQodmFsKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmZlYXR1cmVzW2ZlYXR1cmVdLnBpcGUoXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgcmV0dXJucyBhbiBvYnNlcnZhYmxlIHRoYXQgd2lsbCBvbmx5IGdldCB0aGUgc3RhdGUgb2YgdGhlIGZlYXR1cmUgdG9nZ2xlXG4gICAgICogb25jZS4gSXQgY2FsbHMgdGhlIExEIFNESyBkaXJlY3RseSwgYW5kIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gY2lyY3Vtc3RhbmNlcyB3aGVyZVxuICAgICAqIG9ubHkgb25lIHZhbHVlIHNob3VsZCBiZSBlbWl0dGVkLCB0aGF0IHZhbHVlIGNvbWluZyBkaXJlY3RseSBmcm9tIExELiBUaGlzIHdpbGwgbGlrZWx5XG4gICAgICogb25seSBhcHBseSBmb3IgR3VhcmRzLCBhbmQgc2hvdWxkIGJlIHVzZWQgb25seSB3aGVuIGFic29sdXRlbHkgbmVjZXNzYXJ5LlxuICAgICAqIEBzZWUgZ2V0VmFsdWUgZm9yIHJlZ3VsYXIgdXNhZ2UuXG4gICAgICogQHBhcmFtIGZlYXR1cmUgc3RyaW5nXG4gICAgICogQHBhcmFtIGRlZmF1bHRWYWx1ZSBSXG4gICAgICovXG4gICAgcHVibGljIGdldFZhbHVlT25jZTxSPihmZWF0dXJlOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZTogUik6IE9ic2VydmFibGU8Uj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWFkeS5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKHJlYWR5ID0+IHJlYWR5KSxcbiAgICAgICAgICAgIG1hcCgoKSA9PiB0aGlzLmNsaWVudC52YXJpYXRpb24oZmVhdHVyZSwgZGVmYXVsdFZhbHVlKSlcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF1bmNoLWRhcmtseS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh1aS1jb21tb24tbGliL3NyYy9saWIvc2VydmljZXMvZmVhdHVyZS10b2dnbGUvbGF1bmNoLWRhcmtseS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBVyxNQUFNLDRCQUE0QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFPbkUsTUFBTSxPQUFPLG1CQUFtQjtJQUhoQztRQU1xQixVQUFLLEdBQTZCLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3RFLGFBQVEsR0FBeUMsRUFBRSxDQUFDO1FBQzdELFNBQUksR0FBZ0IsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDeEMsYUFBUSxHQUFXLEVBQUUsQ0FBQztLQTBEakM7SUF4RFUsVUFBVSxDQUFDLE9BQW9CLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxFQUFFLFFBQWdCO1FBQ3ZFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN0RSxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxTQUFTLENBQUMsT0FBZSxFQUFFLGVBQXdCLEtBQUs7UUFDM0QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFVLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRU0sUUFBUSxDQUFVLE9BQWU7UUFDcEMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFNLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQscUdBQXFHO0lBQzlGLFFBQVEsQ0FBSSxPQUFlLEVBQUUsWUFBZTtRQUMvQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDeEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLGVBQWUsQ0FBSSxZQUFZLENBQUMsQ0FBQztZQUM5RCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDWCxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFDdEIsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUMxRCxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFVBQVUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxHQUFNLEVBQUUsRUFBRTtvQkFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3JDLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQyxDQUFDLENBQUM7U0FDTjtRQUNELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQzlCLG9CQUFvQixFQUFFLENBQ3pCLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxZQUFZLENBQUksT0FBZSxFQUFFLFlBQWU7UUFDbkQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDbEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQ3RCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FDMUQsQ0FBQztJQUNOLENBQUM7SUFFTSxZQUFZLENBQUksT0FBZSxFQUFFLFlBQWU7UUFDckQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDdEQsQ0FBQzs7c0ZBL0RRLG1CQUFtQjt5RUFBbkIsbUJBQW1CLFdBQW5CLG1CQUFtQixtQkFGaEIsTUFBTTt1RkFFVCxtQkFBbUI7Y0FIL0IsVUFBVTtlQUFDO2dCQUNSLFVBQVUsRUFBRSxNQUFNO2FBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5pdGlhbGl6ZSwgTERDbGllbnR9IGZyb20gJ2xhdW5jaGRhcmtseS1qcy1jbGllbnQtc2RrJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRmVhdHVyZVVzZXIgfSBmcm9tICcuLi8uLi9tb2RlbHMvZmVhdHVyZS11c2VyJztcbmltcG9ydCB7IEZlYXR1cmVUb2dnbGVTZXJ2aWNlIH0gZnJvbSAnLi9mZWF0dXJlLXRvZ2dsZS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBMYXVuY2hEYXJrbHlTZXJ2aWNlIGltcGxlbWVudHMgRmVhdHVyZVRvZ2dsZVNlcnZpY2Uge1xuXG4gICAgcHJpdmF0ZSBjbGllbnQ6IExEQ2xpZW50O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVhZHk6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmVhdHVyZXM6IFJlY29yZDxzdHJpbmcsIEJlaGF2aW9yU3ViamVjdDxhbnk+PiA9IHt9O1xuICAgIHByaXZhdGUgdXNlcjogRmVhdHVyZVVzZXIgPSB7IGFub255bW91czogdHJ1ZSB9O1xuICAgIHByaXZhdGUgY2xpZW50SWQ6IHN0cmluZyA9ICcnO1xuXG4gICAgcHVibGljIGluaXRpYWxpemUodXNlcjogRmVhdHVyZVVzZXIgPSB7IGFub255bW91czogdHJ1ZSB9LCBjbGllbnRJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVhZHkubmV4dChmYWxzZSk7XG4gICAgICAgIHRoaXMudXNlciA9IHVzZXI7XG4gICAgICAgIHRoaXMuY2xpZW50SWQgPSBjbGllbnRJZDtcbiAgICAgICAgdGhpcy5jbGllbnQgPSBpbml0aWFsaXplKHRoaXMuY2xpZW50SWQsIHRoaXMudXNlciwge30pO1xuICAgICAgICB0aGlzLmNsaWVudC5vbigncmVhZHknLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNsaWVudC5pZGVudGlmeSh0aGlzLnVzZXIpLnRoZW4oKCkgPT4gdGhpcy5yZWFkeS5uZXh0KHRydWUpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzRW5hYmxlZChmZWF0dXJlOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZTogYm9vbGVhbiA9IGZhbHNlKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlPGJvb2xlYW4+KGZlYXR1cmUsIGRlZmF1bHRWYWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEFycmF5PFIgPSBhbnk+KGZlYXR1cmU6IHN0cmluZyk6IE9ic2VydmFibGU8UltdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlPFJbXT4oZmVhdHVyZSwgW10pO1xuICAgIH1cblxuICAgIC8vIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGFsd2F5cyBlbWl0cyBpdHMgZGVmYXVsdCB2YWx1ZSBmaXJzdCwgd2hpY2ggY2FuIGxlYWQgdG8gdW5leHBlY3RlZCByZXN1bHRzXG4gICAgcHVibGljIGdldFZhbHVlPFI+KGZlYXR1cmU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBSKTogT2JzZXJ2YWJsZTxSPiB7XG4gICAgICAgIGlmICghdGhpcy5mZWF0dXJlcy5oYXNPd25Qcm9wZXJ0eShmZWF0dXJlKSkge1xuICAgICAgICAgICAgdGhpcy5mZWF0dXJlc1tmZWF0dXJlXSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Uj4oZGVmYXVsdFZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMucmVhZHkucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIocmVhZHkgPT4gcmVhZHkpLFxuICAgICAgICAgICAgICAgIG1hcCgoKSA9PiB0aGlzLmNsaWVudC52YXJpYXRpb24oZmVhdHVyZSwgZGVmYXVsdFZhbHVlKSlcbiAgICAgICAgICAgICkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZlYXR1cmVzW2ZlYXR1cmVdLm5leHQodmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2xpZW50Lm9uKGBjaGFuZ2U6JHtmZWF0dXJlfWAsICh2YWw6IFIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mZWF0dXJlc1tmZWF0dXJlXS5uZXh0KHZhbCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5mZWF0dXJlc1tmZWF0dXJlXS5waXBlKFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYW4gb2JzZXJ2YWJsZSB0aGF0IHdpbGwgb25seSBnZXQgdGhlIHN0YXRlIG9mIHRoZSBmZWF0dXJlIHRvZ2dsZVxuICAgICAqIG9uY2UuIEl0IGNhbGxzIHRoZSBMRCBTREsgZGlyZWN0bHksIGFuZCBzaG91bGQgb25seSBiZSB1c2VkIGluIGNpcmN1bXN0YW5jZXMgd2hlcmVcbiAgICAgKiBvbmx5IG9uZSB2YWx1ZSBzaG91bGQgYmUgZW1pdHRlZCwgdGhhdCB2YWx1ZSBjb21pbmcgZGlyZWN0bHkgZnJvbSBMRC4gVGhpcyB3aWxsIGxpa2VseVxuICAgICAqIG9ubHkgYXBwbHkgZm9yIEd1YXJkcywgYW5kIHNob3VsZCBiZSB1c2VkIG9ubHkgd2hlbiBhYnNvbHV0ZWx5IG5lY2Vzc2FyeS5cbiAgICAgKiBAc2VlIGdldFZhbHVlIGZvciByZWd1bGFyIHVzYWdlLlxuICAgICAqIEBwYXJhbSBmZWF0dXJlIHN0cmluZ1xuICAgICAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgUlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRWYWx1ZU9uY2U8Uj4oZmVhdHVyZTogc3RyaW5nLCBkZWZhdWx0VmFsdWU6IFIpOiBPYnNlcnZhYmxlPFI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVhZHkucGlwZShcbiAgICAgICAgICAgIGZpbHRlcihyZWFkeSA9PiByZWFkeSksXG4gICAgICAgICAgICBtYXAoKCkgPT4gdGhpcy5jbGllbnQudmFyaWF0aW9uKGZlYXR1cmUsIGRlZmF1bHRWYWx1ZSkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFZhbHVlU3luYzxSPihmZWF0dXJlOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZTogUik6IFIge1xuICAgICAgcmV0dXJuIHRoaXMuY2xpZW50LnZhcmlhdGlvbihmZWF0dXJlLCBkZWZhdWx0VmFsdWUpO1xuICAgIH1cbn1cbiJdfQ==
@@ -10,7 +10,7 @@ import { combineLatest, BehaviorSubject, Subject, of as of$1, forkJoin, zip, iif
10
10
  import { map, filter, distinctUntilChanged, delay, skipWhile, shareReplay, catchError, take, tap, debounceTime, switchMap, mergeMap } from 'rxjs/operators';
11
11
  import * as i2$1 from '@angular/router';
12
12
  import { NavigationEnd, RouterModule } from '@angular/router';
13
- import * as LDClient from 'launchdarkly-js-client-sdk';
13
+ import { initialize } from 'launchdarkly-js-client-sdk';
14
14
  import { of } from 'rxjs/internal/observable/of';
15
15
  import * as i1$1 from '@angular/common/http';
16
16
  import { HttpParams } from '@angular/common/http';
@@ -1067,6 +1067,10 @@ class FeatureToggleService {
1067
1067
  getValueOnce(_key, _defaultValue) {
1068
1068
  throw new Error('Not implemented');
1069
1069
  }
1070
+ // tslint:disable-next-line: variable-name
1071
+ getValueSync(feature, defaultValue) {
1072
+ throw new Error(`Not implemented ${feature}:${defaultValue}`);
1073
+ }
1070
1074
  }
1071
1075
  FeatureToggleService.ɵfac = function FeatureToggleService_Factory(t) { return new (t || FeatureToggleService)(); };
1072
1076
  FeatureToggleService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: FeatureToggleService, factory: FeatureToggleService.ɵfac, providedIn: 'root' });
@@ -1118,17 +1122,18 @@ class LaunchDarklyService {
1118
1122
  this.ready.next(false);
1119
1123
  this.user = user;
1120
1124
  this.clientId = clientId;
1121
- this.client = LDClient.initialize(this.clientId, this.user, {});
1125
+ this.client = initialize(this.clientId, this.user, {});
1122
1126
  this.client.on('ready', () => {
1123
1127
  this.client.identify(this.user).then(() => this.ready.next(true));
1124
1128
  });
1125
1129
  }
1126
- isEnabled(feature) {
1127
- return this.getValue(feature, false);
1130
+ isEnabled(feature, defaultValue = false) {
1131
+ return this.getValue(feature, defaultValue);
1128
1132
  }
1129
1133
  getArray(feature) {
1130
1134
  return this.getValue(feature, []);
1131
1135
  }
1136
+ // Note that this function always emits its default value first, which can lead to unexpected results
1132
1137
  getValue(feature, defaultValue) {
1133
1138
  if (!this.features.hasOwnProperty(feature)) {
1134
1139
  this.features[feature] = new BehaviorSubject(defaultValue);
@@ -1153,6 +1158,9 @@ class LaunchDarklyService {
1153
1158
  getValueOnce(feature, defaultValue) {
1154
1159
  return this.ready.pipe(filter(ready => ready), map(() => this.client.variation(feature, defaultValue)));
1155
1160
  }
1161
+ getValueSync(feature, defaultValue) {
1162
+ return this.client.variation(feature, defaultValue);
1163
+ }
1156
1164
  }
1157
1165
  LaunchDarklyService.ɵfac = function LaunchDarklyService_Factory(t) { return new (t || LaunchDarklyService)(); };
1158
1166
  LaunchDarklyService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: LaunchDarklyService, factory: LaunchDarklyService.ɵfac, providedIn: 'root' });
@@ -7913,9 +7921,9 @@ function CookieBannerComponent_div_0_Template(rf, ctx) {
7913
7921
  }
7914
7922
  }
7915
7923
  class CookieBannerComponent {
7916
- constructor(cookieService, featureToggleService, window) {
7924
+ constructor(cookieService, window) {
7917
7925
  this.cookieService = cookieService;
7918
- this.featureToggleService = featureToggleService;
7926
+ this.enableDynatrace = false;
7919
7927
  this.rejectionNotifier = new EventEmitter();
7920
7928
  this.acceptanceNotifier = new EventEmitter();
7921
7929
  this.isCookieBannerVisible = false;
@@ -7951,24 +7959,30 @@ class CookieBannerComponent {
7951
7959
  this.rejectionNotifier.emit();
7952
7960
  }
7953
7961
  notifyAcceptance() {
7954
- if (this.window.hasOwnProperty('dtrum')) {
7955
- // @ts-ignore
7956
- const dtrum = this.window['dtrum'];
7957
- if (dtrum) {
7958
- this.featureToggleService.isEnabled('xui-dynatrace-rum-enabled')
7959
- .subscribe((enabled) => {
7960
- if (enabled) {
7961
- try {
7962
- dtrum.enable();
7963
- dtrum.enableSessionReplay(true);
7964
- }
7965
- catch (e) {
7966
- console.error('Error enabling DynaTrace', e);
7967
- }
7962
+ if (this.enableDynatrace) {
7963
+ if (this.window.hasOwnProperty('dtrum')) {
7964
+ // @ts-ignore
7965
+ const dtrum = this.window['dtrum'];
7966
+ if (dtrum) {
7967
+ try {
7968
+ dtrum.enable();
7969
+ dtrum.enableSessionReplay(true);
7968
7970
  }
7969
- });
7971
+ catch (e) {
7972
+ console.error('Error enabling DynaTrace', e);
7973
+ }
7974
+ }
7975
+ else {
7976
+ console.info("DynaTrace not enabled on the server");
7977
+ }
7978
+ }
7979
+ else {
7980
+ console.info("DynaTrace not enabled on the server");
7970
7981
  }
7971
7982
  }
7983
+ else {
7984
+ console.info("Dyntrace RUM not enabled via component parameter");
7985
+ }
7972
7986
  this.acceptanceNotifier.emit();
7973
7987
  }
7974
7988
  getExpiryDate() {
@@ -7979,8 +7993,8 @@ class CookieBannerComponent {
7979
7993
  return now.toUTCString();
7980
7994
  }
7981
7995
  }
7982
- CookieBannerComponent.ɵfac = function CookieBannerComponent_Factory(t) { return new (t || CookieBannerComponent)(i0.ɵɵdirectiveInject(CookieService), i0.ɵɵdirectiveInject(FeatureToggleService), i0.ɵɵdirectiveInject(windowToken)); };
7983
- CookieBannerComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CookieBannerComponent, selectors: [["xuilib-cookie-banner"]], inputs: { identifier: "identifier", appName: "appName" }, outputs: { rejectionNotifier: "rejectionNotifier", acceptanceNotifier: "acceptanceNotifier" }, decls: 1, vars: 1, consts: [["class", "govuk-cookie-banner ", "role", "region", 4, "ngIf"], ["role", "region", 1, "govuk-cookie-banner"], [1, "govuk-cookie-banner__message", "govuk-width-container"], [1, "govuk-grid-row"], [1, "govuk-grid-column-two-thirds"], [1, "govuk-cookie-banner__heading", "govuk-heading-m"], [1, "govuk-cookie-banner__content"], [1, "govuk-button-group"], ["value", "accept", "type", "button", "name", "cookies", "data-module", "govuk-button", 1, "govuk-button", 3, "click"], ["value", "reject", "type", "button", "name", "cookies", "data-module", "govuk-button", 1, "govuk-button", 3, "click"], ["routerLink", "/cookies", 1, "govuk-link"]], template: function CookieBannerComponent_Template(rf, ctx) {
7996
+ CookieBannerComponent.ɵfac = function CookieBannerComponent_Factory(t) { return new (t || CookieBannerComponent)(i0.ɵɵdirectiveInject(CookieService), i0.ɵɵdirectiveInject(windowToken)); };
7997
+ CookieBannerComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CookieBannerComponent, selectors: [["xuilib-cookie-banner"]], inputs: { identifier: "identifier", appName: "appName", enableDynatrace: "enableDynatrace" }, outputs: { rejectionNotifier: "rejectionNotifier", acceptanceNotifier: "acceptanceNotifier" }, decls: 1, vars: 1, consts: [["class", "govuk-cookie-banner ", "role", "region", 4, "ngIf"], ["role", "region", 1, "govuk-cookie-banner"], [1, "govuk-cookie-banner__message", "govuk-width-container"], [1, "govuk-grid-row"], [1, "govuk-grid-column-two-thirds"], [1, "govuk-cookie-banner__heading", "govuk-heading-m"], [1, "govuk-cookie-banner__content"], [1, "govuk-button-group"], ["value", "accept", "type", "button", "name", "cookies", "data-module", "govuk-button", 1, "govuk-button", 3, "click"], ["value", "reject", "type", "button", "name", "cookies", "data-module", "govuk-button", 1, "govuk-button", 3, "click"], ["routerLink", "/cookies", 1, "govuk-link"]], template: function CookieBannerComponent_Template(rf, ctx) {
7984
7998
  if (rf & 1) {
7985
7999
  i0.ɵɵtemplate(0, CookieBannerComponent_div_0_Template, 25, 22, "div", 0);
7986
8000
  }
@@ -7993,7 +8007,7 @@ CookieBannerComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Cooki
7993
8007
  type: Component,
7994
8008
  args: [{ selector: 'xuilib-cookie-banner', template: "<div class=\"govuk-cookie-banner \" role=\"region\" attr.aria-label=\"'Cookies on {{appName}}'\" *ngIf=\"isCookieBannerVisible\">\n <div class=\"govuk-cookie-banner__message govuk-width-container\">\n\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-two-thirds\">\n <h2 class=\"govuk-cookie-banner__heading govuk-heading-m\">{{'Cookies on' | rpxTranslate}} {{appName | rpxTranslate}}</h2>\n\n <div class=\"govuk-cookie-banner__content\">\n <p>{{'We use some essential cookies to make this service work.' | rpxTranslate}}</p>\n <p>{{'We\\\u2019d also like to use analytics cookies so we can understand how you use the service and make improvements.' | rpxTranslate}}</p>\n </div>\n </div>\n </div>\n\n <div class=\"govuk-button-group\">\n <button value=\"accept\" type=\"button\" name=\"cookies\" class=\"govuk-button\" data-module=\"govuk-button\" (click)=\"acceptCookie()\">\n {{'Accept analytics cookies' | rpxTranslate}}\n </button>\n <button value=\"reject\" type=\"button\" name=\"cookies\" class=\"govuk-button\" data-module=\"govuk-button\" (click)=\"rejectCookie()\">\n {{'Reject analytics cookies' | rpxTranslate}}\n </button>\n <a class=\"govuk-link\" routerLink=\"/cookies\">{{'View cookies' | rpxTranslate}}</a>\n </div>\n </div>\n</div>\n" }]
7995
8009
  }], function () {
7996
- return [{ type: CookieService }, { type: FeatureToggleService }, { type: undefined, decorators: [{
8010
+ return [{ type: CookieService }, { type: undefined, decorators: [{
7997
8011
  type: Inject,
7998
8012
  args: [windowToken]
7999
8013
  }] }];
@@ -8001,6 +8015,8 @@ CookieBannerComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Cooki
8001
8015
  type: Input
8002
8016
  }], appName: [{
8003
8017
  type: Input
8018
+ }], enableDynatrace: [{
8019
+ type: Input
8004
8020
  }], rejectionNotifier: [{
8005
8021
  type: Output
8006
8022
  }], acceptanceNotifier: [{