@c8y/ngx-components 1022.33.0 → 1022.34.0
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.
- package/branding/shared/branding-tab.factory.d.ts +1 -1
- package/branding/shared/branding-tab.factory.d.ts.map +1 -1
- package/branding/shared/data/branding.type.d.ts +3 -2
- package/branding/shared/data/branding.type.d.ts.map +1 -1
- package/branding/shared/lazy/add-branding-modal/add-branding-modal.component.d.ts.map +1 -1
- package/branding/shared/lazy/apply-branding-to-app-modal/apply-branding-to-app-modal.component.d.ts.map +1 -1
- package/branding/shared/lazy/branding/branding.component.d.ts.map +1 -1
- package/branding/shared/lazy/branding-assets/branding-assets.component.d.ts +25 -0
- package/branding/shared/lazy/branding-assets/branding-assets.component.d.ts.map +1 -0
- package/branding/shared/lazy/branding-theme-form/branding-theme-form.component.d.ts +1 -0
- package/branding/shared/lazy/branding-theme-form/branding-theme-form.component.d.ts.map +1 -1
- package/branding/shared/lazy/index.d.ts +1 -0
- package/branding/shared/lazy/index.d.ts.map +1 -1
- package/branding/shared/shared-branding.module.d.ts +12 -4
- package/branding/shared/shared-branding.module.d.ts.map +1 -1
- package/core/clipboard/clipboard.service.d.ts +8 -2
- package/core/clipboard/clipboard.service.d.ts.map +1 -1
- package/core/common/files.service.d.ts +5 -1
- package/core/common/files.service.d.ts.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-shared-data.mjs +5 -1
- package/fesm2022/c8y-ngx-components-branding-shared-data.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-shared-lazy-add-branding-modal.mjs +15 -6
- package/fesm2022/c8y-ngx-components-branding-shared-lazy-add-branding-modal.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +101 -28
- package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-shared.mjs +98 -40
- package/fesm2022/c8y-ngx-components-branding-shared.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-static-assets-modal.mjs +143 -41
- package/fesm2022/c8y-ngx-components-static-assets-modal.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components.mjs +10 -6
- package/fesm2022/c8y-ngx-components.mjs.map +1 -1
- package/locales/locales.pot +33 -0
- package/package.json +1 -1
- package/static-assets/modal/index.d.ts +1 -0
- package/static-assets/modal/index.d.ts.map +1 -1
- package/static-assets/modal/static-asset-main-type.pipe.d.ts +10 -0
- package/static-assets/modal/static-asset-main-type.pipe.d.ts.map +1 -0
- package/static-assets/modal/static-assets-file-list/static-assets-file-list.component.d.ts +31 -0
- package/static-assets/modal/static-assets-file-list/static-assets-file-list.component.d.ts.map +1 -0
- package/static-assets/modal/static-assets-modal.component.d.ts +2 -14
- package/static-assets/modal/static-assets-modal.component.d.ts.map +1 -1
|
@@ -7,7 +7,7 @@ export declare const genericTabName: "Generic";
|
|
|
7
7
|
export declare class BrandingTabFactory implements ExtensionFactory<Tab> {
|
|
8
8
|
get(activatedRoute?: ActivatedRoute): Observable<Tab | Tab[]>;
|
|
9
9
|
protected shouldShowTab$(): Observable<boolean>;
|
|
10
|
-
protected getPathForBranding<T extends string>(brandingName: string, subPath: T): `branding-editor/${string}/edit/${T}`;
|
|
10
|
+
protected getPathForBranding<T extends string>(brandingName: string, subPath: T): `branding-editor/variants/${string}/edit/${T}`;
|
|
11
11
|
protected getTabsForVersion(name: string): Tab[];
|
|
12
12
|
static ɵfac: i0.ɵɵFactoryDeclaration<BrandingTabFactory, never>;
|
|
13
13
|
static ɵprov: i0.ɵɵInjectableDeclaration<BrandingTabFactory>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"branding-tab.factory.d.ts","sourceRoot":"","sources":["../../../branding/shared/branding-tab.factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"branding-tab.factory.d.ts","sourceRoot":"","sources":["../../../branding/shared/branding-tab.factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAE5D,OAAO,EAAE,UAAU,EAAa,MAAM,MAAM,CAAC;;AAG7C,eAAO,MAAM,iBAAiB,eAAyB,CAAC;AACxD,eAAO,MAAM,cAAc,WAAqB,CAAC;AAEjD,qBACa,kBAAmB,YAAW,gBAAgB,CAAC,GAAG,CAAC;IAC9D,GAAG,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,UAAU,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;IA2B7D,SAAS,CAAC,cAAc,IAAI,UAAU,CAAC,OAAO,CAAC;IAI/C,SAAS,CAAC,kBAAkB,CAAC,CAAC,SAAS,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAI/E,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,EAAE;yCApCrC,kBAAkB;6CAAlB,kBAAkB;CAoD9B"}
|
|
@@ -21,9 +21,9 @@ export declare const brandingFormGroupTopLevelEntries: readonly ["cookieBanner",
|
|
|
21
21
|
export declare const brandingFormGroupTopLevelEntriesToUnpack: readonly ["genericApplicationOptions"];
|
|
22
22
|
export declare const numberBrandingVars: readonly ["brand-logo-img-height", "btn-border-radius-base"];
|
|
23
23
|
export declare const colorBrandingVars: readonly ["brand-dark", "brand-light", "brand-primary", "c8y-brand-10", "c8y-brand-20", "c8y-brand-30", "c8y-brand-40", "c8y-brand-50", "c8y-brand-60", "c8y-brand-70", "c8y-brand-80", "palette-status-info", "palette-status-warning", "palette-status-success", "palette-status-danger", "palette-status-info-light", "palette-status-warning-light", "palette-status-success-light", "palette-status-danger-light", "palette-status-info-dark", "palette-status-warning-dark", "palette-status-success-dark", "palette-status-danger-dark", "body-background-color", "text-color", "text-muted", "link-color", "link-hover-color", "action-bar-background-default", "action-bar-color-actions-hover", "action-bar-color-actions", "action-bar-color-default", "action-bar-icon-color", "header-color", "header-text-color", "header-hover-color", "navigator-bg-color", "navigator-active-bg", "navigator-border-active", "navigator-header-bg", "navigator-title-color", "navigator-separator-color", "navigator-text-color", "navigator-color-active", "right-drawer-background-default", "right-drawer-text-color-default", "right-drawer-separator-color", "right-drawer-link-color", "right-drawer-link-color-hover", "right-drawer-text-color-muted"];
|
|
24
|
-
export declare const stringBrandingVars: readonly ["brand-logo-img", "navigator-platform-logo"];
|
|
24
|
+
export declare const stringBrandingVars: readonly ["brand-logo-img", "navigator-platform-logo", "login-platform-animation-img"];
|
|
25
25
|
export declare const stringOrNumberBrandingVars: readonly ["navigator-platform-logo-height"];
|
|
26
|
-
export declare const allBrandingCSSVars: readonly ["brand-logo-img-height", "btn-border-radius-base", "brand-logo-img", "navigator-platform-logo", "brand-dark", "brand-light", "brand-primary", "c8y-brand-10", "c8y-brand-20", "c8y-brand-30", "c8y-brand-40", "c8y-brand-50", "c8y-brand-60", "c8y-brand-70", "c8y-brand-80", "palette-status-info", "palette-status-warning", "palette-status-success", "palette-status-danger", "palette-status-info-light", "palette-status-warning-light", "palette-status-success-light", "palette-status-danger-light", "palette-status-info-dark", "palette-status-warning-dark", "palette-status-success-dark", "palette-status-danger-dark", "body-background-color", "text-color", "text-muted", "link-color", "link-hover-color", "action-bar-background-default", "action-bar-color-actions-hover", "action-bar-color-actions", "action-bar-color-default", "action-bar-icon-color", "header-color", "header-text-color", "header-hover-color", "navigator-bg-color", "navigator-active-bg", "navigator-border-active", "navigator-header-bg", "navigator-title-color", "navigator-separator-color", "navigator-text-color", "navigator-color-active", "right-drawer-background-default", "right-drawer-text-color-default", "right-drawer-separator-color", "right-drawer-link-color", "right-drawer-link-color-hover", "right-drawer-text-color-muted"];
|
|
26
|
+
export declare const allBrandingCSSVars: readonly ["brand-logo-img-height", "btn-border-radius-base", "brand-logo-img", "navigator-platform-logo", "login-platform-animation-img", "brand-dark", "brand-light", "brand-primary", "c8y-brand-10", "c8y-brand-20", "c8y-brand-30", "c8y-brand-40", "c8y-brand-50", "c8y-brand-60", "c8y-brand-70", "c8y-brand-80", "palette-status-info", "palette-status-warning", "palette-status-success", "palette-status-danger", "palette-status-info-light", "palette-status-warning-light", "palette-status-success-light", "palette-status-danger-light", "palette-status-info-dark", "palette-status-warning-dark", "palette-status-success-dark", "palette-status-danger-dark", "body-background-color", "text-color", "text-muted", "link-color", "link-hover-color", "action-bar-background-default", "action-bar-color-actions-hover", "action-bar-color-actions", "action-bar-color-default", "action-bar-icon-color", "header-color", "header-text-color", "header-hover-color", "navigator-bg-color", "navigator-active-bg", "navigator-border-active", "navigator-header-bg", "navigator-title-color", "navigator-separator-color", "navigator-text-color", "navigator-color-active", "right-drawer-background-default", "right-drawer-text-color-default", "right-drawer-separator-color", "right-drawer-link-color", "right-drawer-link-color-hover", "right-drawer-text-color-muted"];
|
|
27
27
|
export declare function createGenericBrandingForm(formBuilder: FormBuilder): import("@angular/forms").FormGroup<{
|
|
28
28
|
darkThemeAvailable: FormControl<boolean>;
|
|
29
29
|
cookieBanner: import("@angular/forms").FormGroup<{
|
|
@@ -57,6 +57,7 @@ export declare function createBrandingForm(formBuilder: FormBuilder): import("@a
|
|
|
57
57
|
"btn-border-radius-base": FormControl<number>;
|
|
58
58
|
"brand-logo-img": FormControl<string>;
|
|
59
59
|
"navigator-platform-logo": FormControl<string>;
|
|
60
|
+
"login-platform-animation-img": FormControl<string>;
|
|
60
61
|
"brand-dark": FormControl<string>;
|
|
61
62
|
"brand-light": FormControl<string>;
|
|
62
63
|
"brand-primary": FormControl<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"branding.type.d.ts","sourceRoot":"","sources":["../../../../branding/shared/data/branding.type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEvD,KAAK,iBAAiB,CAAC,CAAC,IAAI;KACzB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI;CAClC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,IAAI,GACnC,CAAC,GACD,KAAK,CAAC;AAEV,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC,OAAO,CAAC,CAAC;AACtF,MAAM,MAAM,gBAAgB,GAAG,MAAM,iBAAiB,CAAC;AACvD,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,gCAAgC,CAAC,CAAC,MAAM,CAAC,CAAC;AACzF,MAAM,MAAM,gCAAgC,GAC1C,CAAC,OAAO,wCAAwC,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5D,MAAM,MAAM,2BAA2B,GAAG,OAAO,CAC/C,wBAAwB,EACxB,gCAAgC,CACjC,CAAC;AACF,MAAM,MAAM,wBAAwB,GAAG,iBAAiB,CACtD,IAAI,CAAC,iBAAiB,EAAE,gCAAgC,CAAC,CAC1D,CAAC;AACF,MAAM,MAAM,2BAA2B,GAAG,IAAI,CAAC,iBAAiB,EAAE,2BAA2B,CAAC,CAAC;AAC/F,MAAM,MAAM,YAAY,GAAG,2BAA2B,GAAG,wBAAwB,CAAC;AAClF,MAAM,MAAM,cAAc,GAAG,YAAY,CAAC;AAE1C,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,CAAC;AAEpF,MAAM,MAAM,qBAAqB,GAAG,iBAAiB,CAAC,mBAAmB,CAAC,GACxE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,OAAO,CAAC,CAAC;AAEjD,MAAM,MAAM,mBAAmB,GAAG,cAAc,GAAG;IACjD,eAAe,CAAC,EAAE,qBAAqB,CAAC;CACzC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAEhC,eAAO,MAAM,gCAAgC,+FAKO,CAAC;AACrD,eAAO,MAAM,wCAAwC,wCAEgC,CAAC;AAEtF,eAAO,MAAM,kBAAkB,8DAA+D,CAAC;AAC/F,eAAO,MAAM,iBAAiB,isCAmDpB,CAAC;AACX,eAAO,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"branding.type.d.ts","sourceRoot":"","sources":["../../../../branding/shared/data/branding.type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEvD,KAAK,iBAAiB,CAAC,CAAC,IAAI;KACzB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI;CAClC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,IAAI,GACnC,CAAC,GACD,KAAK,CAAC;AAEV,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC,OAAO,CAAC,CAAC;AACtF,MAAM,MAAM,gBAAgB,GAAG,MAAM,iBAAiB,CAAC;AACvD,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,gCAAgC,CAAC,CAAC,MAAM,CAAC,CAAC;AACzF,MAAM,MAAM,gCAAgC,GAC1C,CAAC,OAAO,wCAAwC,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5D,MAAM,MAAM,2BAA2B,GAAG,OAAO,CAC/C,wBAAwB,EACxB,gCAAgC,CACjC,CAAC;AACF,MAAM,MAAM,wBAAwB,GAAG,iBAAiB,CACtD,IAAI,CAAC,iBAAiB,EAAE,gCAAgC,CAAC,CAC1D,CAAC;AACF,MAAM,MAAM,2BAA2B,GAAG,IAAI,CAAC,iBAAiB,EAAE,2BAA2B,CAAC,CAAC;AAC/F,MAAM,MAAM,YAAY,GAAG,2BAA2B,GAAG,wBAAwB,CAAC;AAClF,MAAM,MAAM,cAAc,GAAG,YAAY,CAAC;AAE1C,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,CAAC;AAEpF,MAAM,MAAM,qBAAqB,GAAG,iBAAiB,CAAC,mBAAmB,CAAC,GACxE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,OAAO,CAAC,CAAC;AAEjD,MAAM,MAAM,mBAAmB,GAAG,cAAc,GAAG;IACjD,eAAe,CAAC,EAAE,qBAAqB,CAAC;CACzC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAEhC,eAAO,MAAM,gCAAgC,+FAKO,CAAC;AACrD,eAAO,MAAM,wCAAwC,wCAEgC,CAAC;AAEtF,eAAO,MAAM,kBAAkB,8DAA+D,CAAC;AAC/F,eAAO,MAAM,iBAAiB,isCAmDpB,CAAC;AACX,eAAO,MAAM,kBAAkB,wFAIrB,CAAC;AAEX,eAAO,MAAM,0BAA0B,6CAA8C,CAAC;AAEtF,eAAO,MAAM,kBAAkB,i0CAIrB,CAAC;AAEX,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BjE;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuC1D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-branding-modal.component.d.ts","sourceRoot":"","sources":["../../../../../branding/shared/lazy/add-branding-modal/add-branding-modal.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,EAEL,WAAW,EAIZ,MAAM,gBAAgB,CAAC;;
|
|
1
|
+
{"version":3,"file":"add-branding-modal.component.d.ts","sourceRoot":"","sources":["../../../../../branding/shared/lazy/add-branding-modal/add-branding-modal.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,EAEL,WAAW,EAIZ,MAAM,gBAAgB,CAAC;;AAaxB,qBAgBa,yBAAyB;IAkClC,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,WAAW;IAlCZ,iBAAiB,UAAS;IACnC,IAAI,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvC,iBAAiB,EAAE,MAAM,EAAE,CAAM;IACjC,OAAO,UAAQ;IAEf,MAAM;;QAGH;IAEH,QAAQ;;;;;;;;;;;;OAiBG;IAEX,OAAO,CAAC,QAAQ,CAA6D;IAC7E,OAAO,CAAC,OAAO,CAAyB;gBAG9B,QAAQ,EAAE,oBAAoB,EAC9B,WAAW,EAAE,WAAW;IAM5B,2BAA2B;IAUjC,QAAQ;;;IASR,MAAM;IAIN,IAAI;IAIJ,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,uBAAuB;yCAnFpB,yBAAyB;2CAAzB,yBAAyB;CA8GrC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply-branding-to-app-modal.component.d.ts","sourceRoot":"","sources":["../../../../../branding/shared/lazy/apply-branding-to-app-modal/apply-branding-to-app-modal.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAoC,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"apply-branding-to-app-modal.component.d.ts","sourceRoot":"","sources":["../../../../../branding/shared/lazy/apply-branding-to-app-modal/apply-branding-to-app-modal.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAoC,MAAM,gBAAgB,CAAC;AAa/E,OAAO,EAAE,UAAU,EAAa,MAAM,MAAM,CAAC;;AAI7C,qBAoBa,gCAAiC,YAAW,MAAM;IAc3D,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,WAAW;IAdZ,WAAW,EAAE,MAAM,EAAE,CAAC;IAC/B,aAAa,EAAE,OAAO,CAAC,UAAU,CAAC,yBAAyB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAM;IACvF,IAAI,EAAE,UAAU,CAAC,gCAAgC,CAAC,UAAU,CAAC,CAAC,CAAC;IAC/D,qBAAqB,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IAE1C,MAAM;;QAGH;IAEH,OAAO,CAAC,QAAQ,CAA6D;IAC7E,OAAO,CAAC,OAAO,CAAyB;gBAE9B,KAAK,EAAE,yBAAyB,EAChC,WAAW,EAAE,WAAW;IAG5B,QAAQ;IAed,IAAI;IAIJ,MAAM;IAIN,OAAO,CAAC,QAAQ;yCAzCL,gCAAgC;2CAAhC,gCAAgC;CAgD5C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"branding.component.d.ts","sourceRoot":"","sources":["../../../../../branding/shared/lazy/branding/branding.component.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAmB,UAAU,EAAkB,MAAM,MAAM,CAAC;AAEnE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EACL,aAAa,EACb,YAAY,EACZ,eAAe,EAEf,MAAM,EACN,cAAc,EACd,YAAY,EACZ,UAAU,EAEV,UAAU,
|
|
1
|
+
{"version":3,"file":"branding.component.d.ts","sourceRoot":"","sources":["../../../../../branding/shared/lazy/branding/branding.component.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAmB,UAAU,EAAkB,MAAM,MAAM,CAAC;AAEnE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EACL,aAAa,EACb,YAAY,EACZ,eAAe,EAEf,MAAM,EACN,cAAc,EACd,YAAY,EACZ,UAAU,EAEV,UAAU,EAYX,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,uBAAuB,EAAE,MAAM,6DAA6D,CAAC;AAEtG,OAAO,EAAE,0BAA0B,EAAE,MAAM,wDAAwD,CAAC;;AAKpG,qBAoBa,iBAAiB;IAiJ1B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,sBAAsB;IAC9B,OAAO,CAAC,uBAAuB;IAC/B,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,0BAA0B;IAClC,OAAO,CAAC,gBAAgB;IA7J1B,UAAU,EAAE,UAAU,CAGpB;IACF,cAAc,EAAE,cAAc,CAM5B;IACF,cAAc,EAAE,aAAa,EAAE,CA+F7B;IACF,OAAO,EAAE,MAAM,EAAE,CA4Bf;IACF,qBAAqB,SAAoB;IACzC,0BAA0B,EAAE,UAAU,CAAC;QACrC,aAAa,EAAE,YAAY,CAAC;QAC5B,QAAQ,EAAE,YAAY,EAAE,CAAC;KAC1B,CAAC,CAAC;IAEH,OAAO,CAAC,aAAa,CAAwC;gBAEnD,SAAS,EAAE,oBAAoB,EAC/B,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,eAAe,EACzB,kBAAkB,EAAE,kBAAkB,EACtC,GAAG,EAAE,UAAU,EACf,YAAY,EAAE,mBAAmB,EACjC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,cAAc,EACrB,YAAY,EAAE,YAAY,EAC1B,sBAAsB,EAAE,sBAAsB,EAC9C,uBAAuB,EAAE,uBAAuB,EAChD,KAAK,EAAE,YAAY,EACnB,0BAA0B,EAAE,0BAA0B,EACtD,gBAAgB,EAAE,uBAAuB;IAc7C,kBAAkB,CAAC,aAAa,CAAC,EAAE,YAAY;IA6B/C,cAAc,CAAC,OAAO,EAAE,YAAY;IAiB1C,OAAO;IAID,aAAa;IA4Bb,gBAAgB,CAAC,OAAO,EAAE,YAAY;IAsBtC,YAAY,CAAC,YAAY,EAAE,MAAM;IAIjC,uBAAuB;IA2BvB,WAAW,CAAC,OAAO,EAAE,YAAY;IAiCjC,cAAc;YAWN,2BAA2B;yCA3V9B,iBAAiB;2CAAjB,iBAAiB;CA+W7B"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ClipboardService, FilesService } from '@c8y/ngx-components';
|
|
2
|
+
import { StaticAsset } from '@c8y/ngx-components/static-assets/data';
|
|
3
|
+
import { TranslateService } from '@ngx-translate/core';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class BrandingAssetsComponent {
|
|
6
|
+
private clipboard;
|
|
7
|
+
private filesService;
|
|
8
|
+
private translate;
|
|
9
|
+
filterOptions: ({
|
|
10
|
+
label: "All";
|
|
11
|
+
value: any[];
|
|
12
|
+
} | {
|
|
13
|
+
label: "Images";
|
|
14
|
+
value: string[];
|
|
15
|
+
} | {
|
|
16
|
+
label: "Fonts";
|
|
17
|
+
value: string[];
|
|
18
|
+
})[];
|
|
19
|
+
supportedFileExtensions: any[] | string[];
|
|
20
|
+
constructor(clipboard: ClipboardService, filesService: FilesService, translate: TranslateService);
|
|
21
|
+
onItemSelected(file: StaticAsset): void;
|
|
22
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BrandingAssetsComponent, never>;
|
|
23
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<BrandingAssetsComponent, "c8y-branding-assets", never, {}, {}, never, never, true, never>;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=branding-assets.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"branding-assets.component.d.ts","sourceRoot":"","sources":["../../../../../branding/shared/lazy/branding-assets/branding-assets.component.ts"],"names":[],"mappings":"AAEA,OAAO,EAKL,gBAAgB,EAGhB,YAAY,EAEb,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAGrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;;AAEvD,qBAgBa,uBAAuB;IAkBhC,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,SAAS;IAnBnB,aAAa;;;;;;;;;SAaX;IACF,uBAAuB,mBAA+B;gBAG5C,SAAS,EAAE,gBAAgB,EAC3B,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,gBAAgB;IAGrC,cAAc,CAAC,IAAI,EAAE,WAAW;yCAvBrB,uBAAuB;2CAAvB,uBAAuB;CA6BnC"}
|
|
@@ -233,6 +233,7 @@ export declare class BrandingThemeFormComponent implements ControlValueAccessor,
|
|
|
233
233
|
"btn-border-radius-base": import("@angular/forms").FormControl<number>;
|
|
234
234
|
"brand-logo-img": import("@angular/forms").FormControl<string>;
|
|
235
235
|
"navigator-platform-logo": import("@angular/forms").FormControl<string>;
|
|
236
|
+
"login-platform-animation-img": import("@angular/forms").FormControl<string>;
|
|
236
237
|
"brand-dark": import("@angular/forms").FormControl<string>;
|
|
237
238
|
"brand-light": import("@angular/forms").FormControl<string>;
|
|
238
239
|
"brand-primary": import("@angular/forms").FormControl<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"branding-theme-form.component.d.ts","sourceRoot":"","sources":["../../../../../branding/shared/lazy/branding-theme-form/branding-theme-form.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,SAAS,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAe,MAAM,gBAAgB,CAAC;AAWhF,OAAO,EAEL,YAAY,EAEZ,oBAAoB,EAErB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EAEtB,MAAM,0CAA0C,CAAC;AAElD,OAAO,EAAE,UAAU,EAA8B,MAAM,MAAM,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;;AAGjD,qBAOa,0BAA2B,YAAW,oBAAoB,EAAE,SAAS;IAgB9E,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,aAAa;IAnBvB,QAAQ,CAAC,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAiB;IACvC,SAAS,EAAE,UAAU,CAAC,0BAA0B,CAAC,UAAU,CAAC,CAAC,CAAC;IAC9D,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,yBAAyB,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAC/C,OAAO,CAAC,SAAS,CAAa;IAE9B,OAAO,CAAC,aAAa,CAA2B;IAChD,OAAO,CAAC,sBAAsB,CAA0D;IACxF,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAG3B;gBAGD,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,qBAAqB,EACrC,aAAa,EAAE,oBAAoB;IA+D7C,WAAW,IAAI,IAAI;IAInB,mCAAmC,CAAC,KAAK,CAAC,EAAE,MAAM;IAOlD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAU7B,gBAAgB,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAInD,iBAAiB,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI;IAIvC,MAAM,IAAI,IAAI;IAId,QAAQ
|
|
1
|
+
{"version":3,"file":"branding-theme-form.component.d.ts","sourceRoot":"","sources":["../../../../../branding/shared/lazy/branding-theme-form/branding-theme-form.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,SAAS,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAe,MAAM,gBAAgB,CAAC;AAWhF,OAAO,EAEL,YAAY,EAEZ,oBAAoB,EAErB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EAEtB,MAAM,0CAA0C,CAAC;AAElD,OAAO,EAAE,UAAU,EAA8B,MAAM,MAAM,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;;AAGjD,qBAOa,0BAA2B,YAAW,oBAAoB,EAAE,SAAS;IAgB9E,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,aAAa;IAnBvB,QAAQ,CAAC,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAiB;IACvC,SAAS,EAAE,UAAU,CAAC,0BAA0B,CAAC,UAAU,CAAC,CAAC,CAAC;IAC9D,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,yBAAyB,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAC/C,OAAO,CAAC,SAAS,CAAa;IAE9B,OAAO,CAAC,aAAa,CAA2B;IAChD,OAAO,CAAC,sBAAsB,CAA0D;IACxF,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAG3B;gBAGD,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,qBAAqB,EACrC,aAAa,EAAE,oBAAoB;IA+D7C,WAAW,IAAI,IAAI;IAInB,mCAAmC,CAAC,KAAK,CAAC,EAAE,MAAM;IAOlD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAU7B,gBAAgB,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAInD,iBAAiB,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI;IAIvC,MAAM,IAAI,IAAI;IAId,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAIR,gBAAgB,CAAC,QAAQ,EAAE,mBAAmB;IAqB9C,kBAAkB,CAAC,KAAK,EAAE,0BAA0B,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,GAAG,MAAM;IAmBnF,OAAO,CAAC,SAAS;yCAhKN,0BAA0B;2CAA1B,0BAA0B;CAmKtC"}
|
|
@@ -7,4 +7,5 @@ export * from './branding-tags-cell-renderer/branding-tags-cell-renderer.compone
|
|
|
7
7
|
export * from './branding-import-modal/branding-import-modal.service';
|
|
8
8
|
export * from './branding-import-modal/branding-import-modal.component';
|
|
9
9
|
export * from './branding-tags-header-cell-renderer/branding-tags-header-cell-renderer.component';
|
|
10
|
+
export * from './branding-assets/branding-assets.component';
|
|
10
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../branding/shared/lazy/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6DAA6D,CAAC;AAC5E,cAAc,yCAAyC,CAAC;AACxD,cAAc,qDAAqD,CAAC;AACpE,cAAc,qEAAqE,CAAC;AACpF,cAAc,qEAAqE,CAAC;AACpF,cAAc,uDAAuD,CAAC;AACtE,cAAc,yDAAyD,CAAC;AACxE,cAAc,mFAAmF,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../branding/shared/lazy/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6DAA6D,CAAC;AAC5E,cAAc,yCAAyC,CAAC;AACxD,cAAc,qDAAqD,CAAC;AACpE,cAAc,qEAAqE,CAAC;AACpF,cAAc,qEAAqE,CAAC;AACpF,cAAc,uDAAuD,CAAC;AACtE,cAAc,yDAAyD,CAAC;AACxE,cAAc,mFAAmF,CAAC;AAClG,cAAc,6CAA6C,CAAC"}
|
|
@@ -1,11 +1,19 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Router } from '@angular/router';
|
|
2
|
+
import { ExtensionFactory, Route, Tab } from '@c8y/ngx-components';
|
|
2
3
|
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@angular/router";
|
|
4
4
|
export declare const BRANDING_EDIT_CHILD_ROUTES: Route[];
|
|
5
|
-
export declare const BRANDING_ROUTING:
|
|
5
|
+
export declare const BRANDING_ROUTING: Route[];
|
|
6
|
+
export declare class BrandingVariantsAndAssetsTabFactory implements ExtensionFactory<Tab> {
|
|
7
|
+
private router;
|
|
8
|
+
tabs: Tab[];
|
|
9
|
+
constructor(router: Router);
|
|
10
|
+
get(): Tab[];
|
|
11
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BrandingVariantsAndAssetsTabFactory, never>;
|
|
12
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<BrandingVariantsAndAssetsTabFactory>;
|
|
13
|
+
}
|
|
6
14
|
export declare class SharedBrandingModule {
|
|
7
15
|
static ɵfac: i0.ɵɵFactoryDeclaration<SharedBrandingModule, never>;
|
|
8
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<SharedBrandingModule, never,
|
|
16
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<SharedBrandingModule, never, never, never>;
|
|
9
17
|
static ɵinj: i0.ɵɵInjectorDeclaration<SharedBrandingModule>;
|
|
10
18
|
}
|
|
11
19
|
//# sourceMappingURL=shared-branding.module.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared-branding.module.d.ts","sourceRoot":"","sources":["../../../branding/shared/shared-branding.module.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,
|
|
1
|
+
{"version":3,"file":"shared-branding.module.d.ts","sourceRoot":"","sources":["../../../branding/shared/shared-branding.module.ts"],"names":[],"mappings":"AACA,OAAO,EAA0D,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEjG,OAAO,EAEL,gBAAgB,EAKhB,KAAK,EACL,GAAG,EACJ,MAAM,qBAAqB,CAAC;;AAS7B,eAAO,MAAM,0BAA0B,EAAE,KAAK,EAsB7C,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,KAAK,EA8FnC,CAAC;AAEF,qBACa,mCAAoC,YAAW,gBAAgB,CAAC,GAAG,CAAC;IAenE,OAAO,CAAC,MAAM;IAd1B,IAAI,EAAE,GAAG,EAAE,CAaT;gBACkB,MAAM,EAAE,MAAM;IAClC,GAAG,IAAI,GAAG,EAAE;yCAhBD,mCAAmC;6CAAnC,mCAAmC;CAsB/C;AAED,qBAUa,oBAAoB;yCAApB,oBAAoB;0CAApB,oBAAoB;0CAApB,oBAAoB;CAAG"}
|
|
@@ -3,8 +3,14 @@ import * as i0 from "@angular/core";
|
|
|
3
3
|
export declare class ClipboardService {
|
|
4
4
|
private alertService;
|
|
5
5
|
constructor(alertService: AlertService);
|
|
6
|
-
writeText(text: string
|
|
7
|
-
|
|
6
|
+
writeText(text: string, messages?: {
|
|
7
|
+
success?: string;
|
|
8
|
+
error?: string;
|
|
9
|
+
}): Promise<void>;
|
|
10
|
+
readText(messages?: {
|
|
11
|
+
success?: string;
|
|
12
|
+
error?: string;
|
|
13
|
+
}): Promise<string>;
|
|
8
14
|
static ɵfac: i0.ɵɵFactoryDeclaration<ClipboardService, never>;
|
|
9
15
|
static ɵprov: i0.ɵɵInjectableDeclaration<ClipboardService>;
|
|
10
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clipboard.service.d.ts","sourceRoot":"","sources":["../../../core/clipboard/clipboard.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;;AAEtD,qBAGa,gBAAgB;IACf,OAAO,CAAC,YAAY;gBAAZ,YAAY,EAAE,YAAY;IAExC,SAAS,CAAC,IAAI,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"clipboard.service.d.ts","sourceRoot":"","sources":["../../../core/clipboard/clipboard.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;;AAEtD,qBAGa,gBAAgB;IACf,OAAO,CAAC,YAAY;gBAAZ,YAAY,EAAE,YAAY;IAExC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IASvE,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;yCAZrE,gBAAgB;6CAAhB,gBAAgB;CAqB5B"}
|
|
@@ -20,7 +20,8 @@ export declare enum GENERIC_FILE_TYPE {
|
|
|
20
20
|
TEXT = "text",
|
|
21
21
|
VIDEO = "video",
|
|
22
22
|
WORD = "word",
|
|
23
|
-
EPL = "epl"
|
|
23
|
+
EPL = "epl",
|
|
24
|
+
FONT = "font"
|
|
24
25
|
}
|
|
25
26
|
export declare class FilesService {
|
|
26
27
|
private systemOptionsService;
|
|
@@ -61,6 +62,9 @@ export declare class FilesService {
|
|
|
61
62
|
readonly epl: {
|
|
62
63
|
readonly exts: readonly ["mon"];
|
|
63
64
|
};
|
|
65
|
+
readonly font: {
|
|
66
|
+
readonly exts: readonly ["ttf", "otf", "woff", "woff2"];
|
|
67
|
+
};
|
|
64
68
|
};
|
|
65
69
|
private fileSizeLimitCfg;
|
|
66
70
|
constructor(systemOptionsService: SystemOptionsService, inventoryBinaryService: InventoryBinaryService);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.service.d.ts","sourceRoot":"","sources":["../../../core/common/files.service.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACrB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAmB,UAAU,EAAkB,MAAM,MAAM,CAAC;AAEnE,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;;AAEhC,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,IAAI,CAAC;CACb;AAED,oBAAY,iBAAiB;IAC3B,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,KAAK,UAAU;IACf,KAAK,UAAU;IACf,GAAG,QAAQ;IACX,UAAU,eAAe;IACzB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,IAAI,SAAS;IACb,GAAG,QAAQ;
|
|
1
|
+
{"version":3,"file":"files.service.d.ts","sourceRoot":"","sources":["../../../core/common/files.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -253,7 +253,11 @@ const colorBrandingVars = [
|
|
|
253
253
|
'right-drawer-link-color-hover',
|
|
254
254
|
'right-drawer-text-color-muted'
|
|
255
255
|
];
|
|
256
|
-
const stringBrandingVars = [
|
|
256
|
+
const stringBrandingVars = [
|
|
257
|
+
'brand-logo-img',
|
|
258
|
+
'navigator-platform-logo',
|
|
259
|
+
'login-platform-animation-img'
|
|
260
|
+
];
|
|
257
261
|
const stringOrNumberBrandingVars = ['navigator-platform-logo-height'];
|
|
258
262
|
const allBrandingCSSVars = [
|
|
259
263
|
...numberBrandingVars,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"c8y-ngx-components-branding-shared-data.mjs","sources":["../../branding/shared/data/apply-branding-locally.service.ts","../../branding/shared/data/branding-shades.service.ts","../../branding/shared/data/branding-version.service.ts","../../branding/shared/data/branding.type.ts","../../branding/shared/data/branding-tracking.service.ts","../../branding/shared/data/store-branding.service.ts","../../branding/shared/data/c8y-ngx-components-branding-shared-data.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { OptionsService } from '@c8y/ngx-components';\nimport { BrandingOptionsJson } from './branding.type';\nimport { applyBrandingOptions, getOptionsToMerge, mergeOptions } from '@c8y/bootstrap';\n\n@Injectable({ providedIn: 'root' })\nexport class ApplyBrandingLocallyService {\n private keysToRemove: Array<string> | null;\n\n constructor(private options: OptionsService) {}\n\n applyBranding(optionsJson?: BrandingOptionsJson) {\n if (!this.keysToRemove) {\n this.keysToRemove = Object.keys(this.combineOptions());\n }\n const combinedOptions = this.combineOptions(optionsJson);\n const newKeysToRemove = Object.keys(combinedOptions);\n\n // avoid to remove keys that would actually be set again afterwards\n const keysToActuallyRemove = this.keysToRemove.filter(key => !newKeysToRemove.includes(key));\n this.removeKeysFromOptions(keysToActuallyRemove);\n\n this.keysToRemove = newKeysToRemove;\n\n applyBrandingOptions(combinedOptions);\n this.applyApplicationOptions(combinedOptions);\n }\n\n resetBranding() {\n this.applyBranding();\n }\n\n private applyApplicationOptions(optionsJson: any) {\n Object.entries(optionsJson).forEach(([key, value]) => {\n this.options.set(key, value);\n });\n }\n\n private removeKeysFromOptions(keys: string[]) {\n for (const key of keys) {\n this.options.delete(key);\n }\n }\n\n private combineOptions(optionsJson?: BrandingOptionsJson) {\n const optionsToMerge = getOptionsToMerge();\n if (!optionsToMerge) {\n // should never happen as the options should be set quite early in bootstrapping process.\n throw Error(`Failed to retrieve options for merging`);\n }\n if (optionsJson) {\n optionsToMerge.dynamicOptions = optionsJson;\n }\n return mergeOptions(optionsToMerge);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { default as chroma } from 'chroma-js';\n\n@Injectable({ providedIn: 'root' })\nexport class BrandingShadesService {\n getShadeColorBrandingCssVars(newBrandPrimary: string) {\n const shades = this.generateShades(newBrandPrimary);\n return this.shadesToObject(shades);\n }\n\n isValidShadeColor(color: string): boolean {\n try {\n return chroma.valid(color);\n } catch {\n return false;\n }\n }\n\n hasCustomShadesSet(\n previousBrandPrimary: string,\n otherVars: Record<string, string | number>\n ): boolean {\n if (previousBrandPrimary && otherVars) {\n const oldShades = this.generateShades(previousBrandPrimary);\n const oldShadesObj = this.shadesToObject(oldShades);\n for (const shadeKey of Object.keys(oldShadesObj)) {\n const fromVars = otherVars[shadeKey];\n const generated = oldShadesObj[shadeKey];\n if (fromVars === null || fromVars === undefined) {\n continue;\n }\n if (fromVars !== generated) {\n return true;\n }\n }\n }\n return false;\n }\n\n private shadesToObject(shades: string[]) {\n const brandingCssVars: Record<`c8y-brand-${number}0`, string> = {};\n let i = 1;\n for (const shade of shades) {\n const key = `c8y-brand-${i}0` as const;\n brandingCssVars[key] = shade;\n i++;\n }\n\n return brandingCssVars;\n }\n\n private generateShades(inputColor: string) {\n const referenceShades = [\n '#134158',\n '#1C5569',\n '#058192', // primary color\n '#22A6AA',\n '#3CC1B7',\n '#8ADBD5',\n '#C5EDEA',\n '#EBF9F8'\n ];\n // Calculate the luminance of the reference shades\n const referenceLuminances = referenceShades.map(color => chroma(color).luminance());\n const inputColorAsHex = chroma(inputColor);\n // Generate shades of the input color with the same luminance as the reference shades\n const generatedShades = referenceLuminances.map(luminance =>\n chroma(inputColor).luminance(luminance).hex('rgb')\n );\n // Calculate the distance between the input color and each color in the generatedShades array\n const distances = generatedShades.map(color => chroma.deltaE(inputColorAsHex, color));\n // Find the index of the color with the smallest distance\n const index = distances.indexOf(Math.min(...distances));\n generatedShades[index] = inputColorAsHex.hex('rgb');\n return generatedShades;\n }\n}\n","import { Injectable } from '@angular/core';\n\n/**\n * Service for creating and manipulating branding versions.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class BrandingVersionService {\n static readonly nameAndIterationSeparator = '-';\n\n /**\n * Creates the initial branding version for a given name.\n * @param name The name of the branding.\n * @returns The initial branding version.\n */\n createInitialBrandingVersion<T extends string>(name: T) {\n return `${name}${BrandingVersionService.nameAndIterationSeparator}${1}` as const;\n }\n\n /**\n * Splits a branding version into its name and iteration.\n * @param version The branding version to split.\n * @returns The name and iteration of the branding version.\n *\n * Errors are thrown if the version is not in the expected format.\n */\n splitBrandingIntoNameAndIteration(version: string): { name: string; iteration: number } {\n const splitted = version.split(BrandingVersionService.nameAndIterationSeparator);\n if (splitted.length < 2) {\n throw Error(\n `A valid version should at least conatin one '${BrandingVersionService.nameAndIterationSeparator}', this is not the case for '${version}'`\n );\n }\n\n const lastValueOfSplittedArray = splitted[splitted.length - 1];\n if (lastValueOfSplittedArray === '' || !/[0-9]+/.test(lastValueOfSplittedArray)) {\n throw Error(\n `The second part of the version should be a positive integer, this is not the case for '${lastValueOfSplittedArray}' from '${version}'`\n );\n }\n\n const iteration = Number.parseInt(lastValueOfSplittedArray);\n if (Number.isNaN(iteration) && iteration <= 0) {\n throw Error(\n `The second part of the version should be a positive integer, this is not the case for '${iteration}' from '${version}'`\n );\n }\n\n const name = splitted.slice(0, -1).join(BrandingVersionService.nameAndIterationSeparator);\n if (!name) {\n throw Error(\n `The first part of the version should not be empty, this is the case for '${name}' from '${version}'`\n );\n }\n\n return { iteration, name };\n }\n\n /**\n * Bumps the iteration of a branding version.\n * @param version The branding version to bump.\n * @returns The bumped branding version.\n *\n * Errors are thrown if the version is not in the expected format.\n */\n bumpBrandingIteration(version: string) {\n const { name, iteration } = this.splitBrandingIntoNameAndIteration(version);\n return `${name}${BrandingVersionService.nameAndIterationSeparator}${iteration + 1}` as const;\n }\n}\n","import type { FormBuilder, FormControl } from '@angular/forms';\nimport { Alert, colorValidator } from '@c8y/ngx-components';\nimport type { ApplicationOptions } from '@c8y/options';\n\ntype ParamIntersection<T> = {\n [K in keyof T]: (x: T[K]) => void;\n}[keyof T] extends (x: infer I) => void\n ? I\n : never;\n\nexport type BrandingFormValue = ReturnType<typeof createGenericBrandingForm>['value'];\nexport type BrandingFormKeys = keyof BrandingFormValue;\nexport type BrandingFormTopLevelKeys = (typeof brandingFormGroupTopLevelEntries)[number];\nexport type BrandingFormTopLevelKeysToUnpack =\n (typeof brandingFormGroupTopLevelEntriesToUnpack)[number];\n\nexport type TopLevelFormKeysNotToUnpack = Exclude<\n BrandingFormTopLevelKeys,\n BrandingFormTopLevelKeysToUnpack\n>;\nexport type UnpackedTopLevelFormKeys = ParamIntersection<\n Pick<BrandingFormValue, BrandingFormTopLevelKeysToUnpack>\n>;\nexport type NotUnpackedTopLevelFormKeys = Pick<BrandingFormValue, TopLevelFormKeysNotToUnpack>;\nexport type TopLevelForm = NotUnpackedTopLevelFormKeys & UnpackedTopLevelFormKeys;\nexport type TopLevelValues = TopLevelForm;\n\nexport type BrandingCSSVarsForm = Omit<BrandingFormValue, BrandingFormTopLevelKeys>;\n\nexport type BrandingCSSVarsValues = ParamIntersection<BrandingCSSVarsForm> &\n ReturnType<typeof createBrandingForm>['value'];\n\nexport type BrandingOptionsJson = TopLevelValues & {\n brandingCssVars?: BrandingCSSVarsValues;\n} & Partial<ApplicationOptions>;\n\nexport const brandingFormGroupTopLevelEntries = [\n 'cookieBanner',\n 'genericApplicationOptions',\n 'darkThemeAvailable',\n 'messageBanner'\n] as const satisfies ReadonlyArray<BrandingFormKeys>;\nexport const brandingFormGroupTopLevelEntriesToUnpack = [\n 'genericApplicationOptions'\n] as const satisfies ReadonlyArray<(typeof brandingFormGroupTopLevelEntries)[number]>;\n\nexport const numberBrandingVars = ['brand-logo-img-height', 'btn-border-radius-base'] as const;\nexport const colorBrandingVars = [\n 'brand-dark',\n 'brand-light',\n 'brand-primary',\n 'c8y-brand-10',\n 'c8y-brand-20',\n 'c8y-brand-30',\n 'c8y-brand-40',\n 'c8y-brand-50',\n 'c8y-brand-60',\n 'c8y-brand-70',\n 'c8y-brand-80',\n 'palette-status-info',\n 'palette-status-warning',\n 'palette-status-success',\n 'palette-status-danger',\n 'palette-status-info-light',\n 'palette-status-warning-light',\n 'palette-status-success-light',\n 'palette-status-danger-light',\n 'palette-status-info-dark',\n 'palette-status-warning-dark',\n 'palette-status-success-dark',\n 'palette-status-danger-dark',\n 'body-background-color',\n 'text-color',\n 'text-muted',\n 'link-color',\n 'link-hover-color',\n 'action-bar-background-default',\n 'action-bar-color-actions-hover',\n 'action-bar-color-actions',\n 'action-bar-color-default',\n 'action-bar-icon-color',\n 'header-color',\n 'header-text-color',\n 'header-hover-color',\n 'navigator-bg-color',\n 'navigator-active-bg',\n 'navigator-border-active',\n 'navigator-header-bg',\n 'navigator-title-color',\n 'navigator-separator-color',\n 'navigator-text-color',\n 'navigator-color-active',\n 'right-drawer-background-default',\n 'right-drawer-text-color-default',\n 'right-drawer-separator-color',\n 'right-drawer-link-color',\n 'right-drawer-link-color-hover',\n 'right-drawer-text-color-muted'\n] as const;\nexport const stringBrandingVars = ['brand-logo-img', 'navigator-platform-logo'] as const;\n\nexport const stringOrNumberBrandingVars = ['navigator-platform-logo-height'] as const;\n\nexport const allBrandingCSSVars = [\n ...numberBrandingVars,\n ...stringBrandingVars,\n ...colorBrandingVars\n] as const;\n\nexport function createGenericBrandingForm(formBuilder: FormBuilder) {\n const form = formBuilder.group({\n darkThemeAvailable: formBuilder.control<boolean>(false),\n cookieBanner: formBuilder.group({\n cookieBannerTitle: formBuilder.control<string>(undefined),\n cookieBannerText: formBuilder.control<string>(undefined),\n cookieBannerDisabled: formBuilder.control(false),\n policyUrl: formBuilder.control<string>(undefined),\n policyVersion: formBuilder.control<string>(undefined)\n }),\n messageBanner: formBuilder.group({\n messageBannerEnabled: formBuilder.control(false),\n messageBannerContent: formBuilder.control<string>(''),\n messageBannerType: formBuilder.control<Alert['type']>('info')\n }),\n baseTypography: formBuilder.group({\n 'font-url': formBuilder.control<string>(undefined),\n 'font-family-base': formBuilder.control<string>(undefined)\n }),\n headingsAndNavigatorTypography: formBuilder.group({\n 'font-family-headings': formBuilder.control<string>(undefined),\n 'navigator-font-family': formBuilder.control<string>('var(--font-family-base)')\n }),\n genericApplicationOptions: formBuilder.group({\n globalTitle: formBuilder.control<string>(undefined),\n faviconUrl: formBuilder.control<string>(undefined)\n })\n });\n return form;\n}\n\nexport function createBrandingForm(formBuilder: FormBuilder) {\n const colorControls = colorBrandingVars.reduce(\n (acc, key) => {\n acc[key] = formBuilder.control<string>(undefined, { asyncValidators: [colorValidator()] });\n return acc;\n },\n {} as { [key in (typeof colorBrandingVars)[number]]: FormControl<string> }\n );\n const stringControls = stringBrandingVars.reduce(\n (acc, key) => {\n acc[key] = formBuilder.control<string>(undefined);\n return acc;\n },\n {} as { [key in (typeof stringBrandingVars)[number]]: FormControl<string> }\n );\n const numberControls = numberBrandingVars.reduce(\n (acc, key) => {\n acc[key] = formBuilder.control<number>(undefined);\n return acc;\n },\n {} as { [key in (typeof numberBrandingVars)[number]]: FormControl<number> }\n );\n const stringOrNumberControls = stringOrNumberBrandingVars.reduce(\n (acc, key) => {\n acc[key] = formBuilder.control<number>(undefined);\n return acc;\n },\n {} as {\n [key in (typeof stringOrNumberBrandingVars)[number]]: FormControl<string | number>;\n }\n );\n const form = formBuilder.group({\n ...colorControls,\n ...stringControls,\n ...numberControls,\n ...stringOrNumberControls\n });\n\n return form;\n}\n","import { Injectable, Optional } from '@angular/core';\nimport { GainsightService, PxEventData } from '@c8y/ngx-components';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BrandingTrackingService {\n readonly prefix = 'brandingManager';\n constructor(@Optional() private gainsight: GainsightService) {}\n\n getStartedUsingBranding() {\n this.triggerEvent('getStartedUsingBranding');\n }\n\n deleteAllBrandings() {\n this.triggerEvent('deleteAllBrandings');\n }\n\n exportBranding() {\n this.triggerEvent('exportBranding');\n }\n\n addNewVersion() {\n this.triggerEvent('addNewVersion');\n }\n\n duplicateVersion() {\n this.triggerEvent('duplicateVersion');\n }\n\n applyToApps(apps: string[]) {\n this.triggerEvent('applyToApps', { apps });\n }\n\n importBranding() {\n this.triggerEvent('importBranding');\n }\n\n deleteBrandingVariant() {\n this.triggerEvent('deleteBrandingVariant');\n }\n\n openPreviewForBranding() {\n this.triggerEvent('openPreviewForBranding');\n }\n\n private triggerEvent(action: string, props?: PxEventData) {\n if (!this.gainsight) {\n return;\n }\n\n const finalProps = {\n ...props,\n action\n };\n\n return this.gainsight.triggerEvent(this.prefix, finalProps);\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n ApplicationAvailability,\n ApplicationType,\n FetchClient,\n IApplication,\n IApplicationBinary,\n IManagedObject,\n InventoryBinaryService,\n InventoryService\n} from '@c8y/client';\nimport { ApplicationService } from '@c8y/client';\nimport { AppStateService, ThemeSwitcherService, ZipService } from '@c8y/ngx-components';\nimport { defer, BehaviorSubject, Observable } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\nimport { cloneDeep, uniq } from 'lodash-es';\nimport { BrandingVersionService } from './branding-version.service';\nimport { BrandingOptionsJson, allBrandingCSSVars, numberBrandingVars } from './branding.type';\nimport { StaticAsset, StaticAssetsService } from '@c8y/ngx-components/static-assets/data';\nimport { BrandingTrackingService } from './branding-tracking.service';\n\nexport interface BrandVersion {\n name: string;\n id: string;\n revision: number;\n version: string;\n tags: string[];\n owner?: string;\n lastUpdated?: string;\n publicOptionsApp?: IApplication;\n}\n\nexport interface BrandingFileDetails {\n fileName: string;\n blob: Blob;\n jsonContent?: any;\n}\n\nexport interface BrandingFileDetailsLegacy {\n path: string;\n value: string;\n blob?: Blob;\n fileName: string;\n urlWrapped: boolean;\n}\n\n/**\n * Service to load and store the branding of the tenant.\n */\n@Injectable({ providedIn: 'root' })\nexport class StoreBrandingService {\n readonly fileNames = {\n options: 'options.json',\n manifest: 'cumulocity.json',\n exportZipName: 'public-options.zip'\n } as const;\n readonly manifestValues = {\n name: 'public-options',\n contextPath: 'public-options',\n key: 'public-options-key',\n description: 'Application containing static assets used by e.g. branding.',\n noAppSwitcher: true,\n type: ApplicationType.HOSTED,\n availability: ApplicationAvailability.SHARED\n } as const satisfies IApplication;\n refreshTriggerBrandingVariants = new BehaviorSubject<void>(null);\n constructor(\n private applicationService: ApplicationService,\n private inventory: InventoryService,\n private binary: InventoryBinaryService,\n private zip: ZipService,\n private fetch: FetchClient,\n private brandingVersionService: BrandingVersionService,\n private appState: AppStateService,\n private staticAssets: StaticAssetsService,\n private themeSwitcher: ThemeSwitcherService,\n private brandingTracking: BrandingTrackingService\n ) {}\n\n /**\n * Sets the `latest` tag on the provided branding version. Making it the global active branding.\n */\n async markAsActive(brandingVersion: BrandVersion, app?: IApplication): Promise<void> {\n const publicOptions = app || (await this.getPublicOptionsApp());\n const tags = brandingVersion.tags || [];\n const version = brandingVersion.version;\n await this.applicationService.setPackageVersionTag(publicOptions, version, [...tags, 'latest']);\n }\n\n /**\n * Opens a new tab with to preview the branding. The branding must have been saved beforehand.\n * @param brandingName the name of the branding to be previewed\n */\n openPreviewForBranding(brandingName: string) {\n this.brandingTracking.openPreviewForBranding();\n window.open(\n `/apps/${\n this.appState.currentApplication.value?.contextPath || 'cockpit'\n }/index.html?brandingPreview=true&dynamicOptionsUrl=/apps/public/public-options@${brandingName}/options.json`,\n '_blank',\n 'noopener,noreferrer'\n );\n }\n\n /**\n * Returns the brandings of the tenant.\n * If no public options app is found, publicOptions will be undefined and variants an empty array.\n * For old brandings (created without versioning) a default version is returned.\n */\n async loadBrandingVariants(\n app?: IApplication\n ): Promise<{ publicOptions: IApplication | undefined; variants: BrandVersion[] }> {\n const publicOptions = app || (await this.getPublicOptionsApp());\n if (!publicOptions) {\n return { publicOptions: undefined, variants: [] };\n }\n const { data: versions } = await this.applicationService.listVersions(publicOptions);\n let mappedVersions: BrandVersion[] =\n versions\n ?.map(tmp => {\n try {\n const { name, iteration } =\n this.brandingVersionService.splitBrandingIntoNameAndIteration(tmp.version);\n return {\n revision: iteration,\n name: name,\n id: tmp.binaryId,\n version: tmp.version,\n tags: tmp.tags || [],\n publicOptionsApp: publicOptions\n };\n } catch (e) {\n console.warn('Failed to parse version', tmp, e);\n return undefined;\n }\n })\n ?.filter(Boolean) || [];\n if (!versions && publicOptions.activeVersionId) {\n mappedVersions = [\n {\n name: 'default',\n id: publicOptions.activeVersionId,\n version: 'default-1',\n revision: 1,\n tags: ['latest', 'default'],\n publicOptionsApp: publicOptions\n }\n ];\n }\n\n const variants = await this.getMetadataOfBrandingBinaries(mappedVersions);\n return { publicOptions, variants };\n }\n\n /**\n * As the branding is not immediately available after creation, this method will wait for the branding to be present.\n * @param version The version of the branding to be retrieved.\n */\n async waitForBrandingToBePresent(version: string): Promise<void> {\n const numberOfAttempts = 120;\n const sleepDurationInSeconds = 1;\n for (let i = 0; i < numberOfAttempts; i++) {\n try {\n // do not sleep before the first attempt\n if (i !== 0) {\n await new Promise(resolve => setTimeout(resolve, sleepDurationInSeconds * 1_000));\n }\n await this.getBrandingOptionsForVersion(version);\n console.info(`Branding \"${version}\" available now.`);\n return;\n } catch (e) {\n console.warn(\n `Branding \"${version}\" not yet present, retrying in ${sleepDurationInSeconds} seconds...`,\n e\n );\n }\n }\n throw new Error(\n `Branding \"${version}\" not available after ${numberOfAttempts * sleepDurationInSeconds} seconds, giving up.`\n );\n }\n\n /**\n * Will create a the initial branding based on the currently applied CSS variables.\n */\n async getStartedUsingBranding(): Promise<void> {\n const allVariables: Record<string, string> = {};\n const themeToRetrieveVars = ['light', 'dark'] as const;\n const unretrievableVars = new Array<string>();\n for (const theme of themeToRetrieveVars) {\n this.themeSwitcher.temporaryChangeTheme(theme);\n const styles = getComputedStyle(document.body);\n const variablesToSkip = [\n 'navigator-platform-logo',\n 'brand-logo-img'\n ] satisfies (typeof allBrandingCSSVars)[number][];\n const values = allBrandingCSSVars\n .filter(cssVar => !variablesToSkip.includes(cssVar as any))\n .reduce((prev, key) => {\n const directValue = styles.getPropertyValue(`--${key}`);\n const c8yPrefixedValue = styles.getPropertyValue(`--c8y-${key}`);\n const newKey = theme === 'light' ? key : `dark-${key}`;\n if (!directValue && !c8yPrefixedValue) {\n unretrievableVars.push(newKey);\n return prev;\n }\n let value: string | number = directValue || c8yPrefixedValue;\n if (numberBrandingVars.includes(key as any)) {\n try {\n value = Number.parseFloat(value.replace(/[A-Za-z]/g, '').trim());\n } catch (e) {\n console.warn(\n `Failed to parse number for \"${key}\" value that failed to parse: \"${value}\"`,\n e\n );\n return prev;\n }\n }\n return Object.assign(prev, { [newKey]: value });\n }, {});\n Object.assign(allVariables, values);\n }\n this.themeSwitcher.resetTemporaryTheme();\n\n try {\n await this.createPublicOptionsAppFromInheritedOptions(allVariables);\n } catch (e) {\n console.warn(e);\n }\n }\n\n getZipForBinary(\n binaryId: string,\n fileName: string = this.fileNames.exportZipName\n ): Observable<File> {\n return defer(() => this.binary.download(binaryId)).pipe(\n switchMap(response => response.blob()),\n map(blob => new File([blob], fileName))\n );\n }\n\n /**\n * Deletes the public options app and therefore all brandings.\n * The public options app can be optionally provided to avoid another request for it.\n */\n async deleteAllBrandings(publicOptions?: IApplication): Promise<void> {\n publicOptions = publicOptions || (await this.getPublicOptionsApp());\n await this.applicationService.delete(publicOptions);\n }\n\n /**\n * Enhances the provided branding versions with metadata from the linked binaries.\n * It will add the owner and lastUpdated fields to the versions.\n * The provided array is altered.\n */\n async getMetadataOfBrandingBinaries(versions: BrandVersion[]): Promise<BrandVersion[]> {\n const binaryIds = uniq(versions.map(tmp => tmp.id));\n if (!binaryIds.length) {\n return versions;\n }\n const { data: metadata } = await this.inventory.list({\n ids: binaryIds.join(','),\n pageSize: 2000\n });\n return versions.map(version => {\n const metadataForVersion =\n metadata.find(tmp => tmp.id === version.id) || ({} as IManagedObject);\n const { owner, lastUpdated } = metadataForVersion;\n return Object.assign(version, { owner, lastUpdated });\n });\n }\n\n /**\n * Saves the provided branding as a new version for the public options app.\n * The public options app can be optionally provided to avoid another request for it.\n */\n async saveBranding(\n blob: Blob | File,\n version: string,\n tags: string[] = [],\n publicOptionsApp?: IApplication\n ): Promise<{\n version: string;\n binary: IApplicationBinary;\n tags: string[];\n }> {\n const file = blob instanceof File ? blob : new File([blob], `public-options-${version}.zip`);\n const publicOptions = publicOptionsApp || (await this.getPublicOptionsApp());\n\n const { data: binary } = await this.applicationService\n .binary(publicOptions)\n .uploadApplicationVersion(file, version, tags);\n if (!publicOptions.activeVersionId || tags.includes('latest')) {\n await this.applicationService.update({\n id: publicOptions.id,\n activeVersionId: `${binary.binaryId}`\n });\n }\n this.refreshTriggerBrandingVariants.next();\n return { version, binary, tags };\n }\n\n /**\n * Removes a branding version from the public options app.\n * The public options app can be optionally provided to avoid another request for it.\n */\n async deleteBrandingVersion(version: string, publicOptions?: IApplication): Promise<void> {\n publicOptions = publicOptions || (await this.getPublicOptionsApp());\n await this.applicationService.deleteVersionPackage(publicOptions, { version });\n this.refreshTriggerBrandingVariants.next();\n }\n\n /**\n * Returns the blob of a zip file containing the provided branding options (options.json) and the manifest (cumulocity.json).\n */\n async getBrandingZip(content: Record<string, any> = {}): Promise<Blob> {\n content.lastUpdated = new Date().toISOString();\n const contentAsString = JSON.stringify(content);\n const zip = await this.zip.createZip([\n { fileName: this.fileNames.options, blob: new Blob([contentAsString]) },\n { fileName: this.fileNames.manifest, blob: new Blob([JSON.stringify(this.manifestValues)]) }\n ]);\n return zip;\n }\n\n /**\n * Adds a new branding version to the public options app.\n * The public options app can be optionally provided to avoid another request for it.\n */\n async addBranding(\n version: string,\n content: BrandingOptionsJson = {},\n tags: string[] = [],\n publicOptionsApp?: IApplication\n ): Promise<{\n version: string;\n binary: IApplicationBinary;\n tags: string[];\n }> {\n const zip = await this.getBrandingZip(content);\n\n return await this.saveBranding(zip, version, tags, publicOptionsApp);\n }\n\n /**\n * Returns the branding options for the provided version.\n * If no branding was found (e.g. status 404), an error is thrown.\n */\n async getBrandingOptionsForVersion(version?: string): Promise<BrandingOptionsJson> {\n const url = `/apps/public/public-options${version ? `@${version}` : ''}/${this.fileNames.options}?nocache=${new Date().getTime()}`;\n const response = await this.fetch.fetch(url);\n if (response.status !== 200) {\n throw Error(`Unexpected status code: ${response.status}`);\n }\n\n const content = await response.json();\n return content as BrandingOptionsJson;\n }\n\n /**\n * Saves a new iteration of an already existing branding.\n */\n async saveExistingBranding(\n branding: Record<string, any>,\n currentVersion: string,\n tagsOfCurrentVersion: string[] = [],\n newVersion?: string\n ): Promise<string> {\n const publicOptions = await this.getPublicOptionsApp();\n const versionToBeSet = newVersion\n ? this.brandingVersionService.createInitialBrandingVersion(newVersion)\n : this.brandingVersionService.bumpBrandingIteration(currentVersion);\n\n const finalTags = tagsOfCurrentVersion;\n // only apply latest tag directly\n // there seems to be some special handling for the latest tag in the backend, that allows to directly move it while uploading the new version.\n // for all other tags this results in a 409 conflict. We therefore need to first delete the old version, before setting the other tags on the new version.\n if (!newVersion) {\n tagsOfCurrentVersion = tagsOfCurrentVersion.filter(tag => tag === 'latest');\n }\n await this.addBranding(versionToBeSet, branding, tagsOfCurrentVersion, publicOptions);\n if (!newVersion) {\n try {\n await this.deleteBrandingVersion(currentVersion, publicOptions);\n } catch (e) {\n if (e.res.status !== 404) {\n throw e;\n }\n }\n await this.applicationService.setPackageVersionTag(publicOptions, versionToBeSet, finalTags);\n }\n\n return versionToBeSet;\n }\n\n /**\n * Combines current branding options with the provided branding variables and creates a new public options app.\n * Any assets in the branding will be cloned.\n */\n async createPublicOptionsAppFromInheritedOptions(brandingVars?: Record<string, string>): Promise<{\n version: string;\n binary: IApplicationBinary;\n tags: string[];\n }> {\n let currentlyAppliedBranding: BrandingOptionsJson;\n let fallBackBranding: BrandingOptionsJson = {};\n try {\n currentlyAppliedBranding = await this.getBrandingOptionsForVersion();\n fallBackBranding = cloneDeep(currentlyAppliedBranding);\n } catch (e) {\n console.warn('Failed to get currently applied branding, proceeding with empty branding.', e);\n }\n\n if (brandingVars) {\n currentlyAppliedBranding = currentlyAppliedBranding || {};\n const brandingCssVars = currentlyAppliedBranding.brandingCssVars || {};\n Object.assign(brandingCssVars, brandingVars);\n currentlyAppliedBranding.brandingCssVars = brandingCssVars;\n }\n\n if (currentlyAppliedBranding) {\n try {\n const { oldAssets, newAssets } = await this.staticAssets.cloneAssetsIntoTenant('branding');\n currentlyAppliedBranding = this.replaceBrandingAssetsInBrandingOptions(\n currentlyAppliedBranding,\n oldAssets,\n newAssets\n );\n } catch (e) {\n console.warn('Failed to relocate branding assets into current tenant.', e);\n }\n }\n\n const publicOptionsApp = await this.createPublicOptionsApp();\n\n const defaultBrandingName = `default`;\n const result = await this.addBranding(\n this.brandingVersionService.createInitialBrandingVersion(defaultBrandingName),\n currentlyAppliedBranding || {},\n ['latest', defaultBrandingName],\n publicOptionsApp\n );\n\n const fallbackBrandingName = `fallback`;\n await this.addBranding(\n this.brandingVersionService.createInitialBrandingVersion(fallbackBrandingName),\n fallBackBranding,\n [fallbackBrandingName],\n publicOptionsApp\n );\n\n return result;\n }\n\n /**\n * Replaces the assets in the branding options with the new assets.\n * Goes through the provided `oldAssets` and replaces their occurrences in the branding with the corresponding `newAssets` entry sharing the same fileName.\n * Returns the updated branding options.\n */\n replaceBrandingAssetsInBrandingOptions(\n branding: BrandingOptionsJson,\n oldAssets: StaticAsset[],\n newAssets: StaticAsset[]\n ): BrandingOptionsJson {\n let brandingAsJSONString = JSON.stringify(branding);\n for (const oldAsset of oldAssets) {\n const newLocatedAsset = newAssets.find(tmp => tmp.fileName === oldAsset.fileName);\n if (!newLocatedAsset) {\n continue;\n }\n // if the path is the same, we don't need to replace it.\n if (oldAsset.path === newLocatedAsset.path) {\n continue;\n }\n\n // TODO: use proper replaceAll once it's available with es2021\n brandingAsJSONString = brandingAsJSONString.split(oldAsset.path).join(newLocatedAsset.path);\n }\n return JSON.parse(brandingAsJSONString);\n }\n\n private async getPublicOptionsApp() {\n try {\n const { data: manifest } = await this.applicationService.getManifestOfContextPath(\n this.manifestValues.contextPath\n );\n const { data: app } = await this.applicationService.detail(manifest.id);\n if (app.owner.tenant.id !== this.appState.currentTenant.value?.name) {\n return undefined;\n }\n return app;\n } catch (e) {\n // e.g. reached when no app with the given context path exists\n return undefined;\n }\n }\n\n private async createPublicOptionsApp() {\n const { data: app } = await this.applicationService.create(this.manifestValues);\n return app;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i3.BrandingVersionService","i5.BrandingTrackingService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"c8y-ngx-components-branding-shared-data.mjs","sources":["../../branding/shared/data/apply-branding-locally.service.ts","../../branding/shared/data/branding-shades.service.ts","../../branding/shared/data/branding-version.service.ts","../../branding/shared/data/branding.type.ts","../../branding/shared/data/branding-tracking.service.ts","../../branding/shared/data/store-branding.service.ts","../../branding/shared/data/c8y-ngx-components-branding-shared-data.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { OptionsService } from '@c8y/ngx-components';\nimport { BrandingOptionsJson } from './branding.type';\nimport { applyBrandingOptions, getOptionsToMerge, mergeOptions } from '@c8y/bootstrap';\n\n@Injectable({ providedIn: 'root' })\nexport class ApplyBrandingLocallyService {\n private keysToRemove: Array<string> | null;\n\n constructor(private options: OptionsService) {}\n\n applyBranding(optionsJson?: BrandingOptionsJson) {\n if (!this.keysToRemove) {\n this.keysToRemove = Object.keys(this.combineOptions());\n }\n const combinedOptions = this.combineOptions(optionsJson);\n const newKeysToRemove = Object.keys(combinedOptions);\n\n // avoid to remove keys that would actually be set again afterwards\n const keysToActuallyRemove = this.keysToRemove.filter(key => !newKeysToRemove.includes(key));\n this.removeKeysFromOptions(keysToActuallyRemove);\n\n this.keysToRemove = newKeysToRemove;\n\n applyBrandingOptions(combinedOptions);\n this.applyApplicationOptions(combinedOptions);\n }\n\n resetBranding() {\n this.applyBranding();\n }\n\n private applyApplicationOptions(optionsJson: any) {\n Object.entries(optionsJson).forEach(([key, value]) => {\n this.options.set(key, value);\n });\n }\n\n private removeKeysFromOptions(keys: string[]) {\n for (const key of keys) {\n this.options.delete(key);\n }\n }\n\n private combineOptions(optionsJson?: BrandingOptionsJson) {\n const optionsToMerge = getOptionsToMerge();\n if (!optionsToMerge) {\n // should never happen as the options should be set quite early in bootstrapping process.\n throw Error(`Failed to retrieve options for merging`);\n }\n if (optionsJson) {\n optionsToMerge.dynamicOptions = optionsJson;\n }\n return mergeOptions(optionsToMerge);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { default as chroma } from 'chroma-js';\n\n@Injectable({ providedIn: 'root' })\nexport class BrandingShadesService {\n getShadeColorBrandingCssVars(newBrandPrimary: string) {\n const shades = this.generateShades(newBrandPrimary);\n return this.shadesToObject(shades);\n }\n\n isValidShadeColor(color: string): boolean {\n try {\n return chroma.valid(color);\n } catch {\n return false;\n }\n }\n\n hasCustomShadesSet(\n previousBrandPrimary: string,\n otherVars: Record<string, string | number>\n ): boolean {\n if (previousBrandPrimary && otherVars) {\n const oldShades = this.generateShades(previousBrandPrimary);\n const oldShadesObj = this.shadesToObject(oldShades);\n for (const shadeKey of Object.keys(oldShadesObj)) {\n const fromVars = otherVars[shadeKey];\n const generated = oldShadesObj[shadeKey];\n if (fromVars === null || fromVars === undefined) {\n continue;\n }\n if (fromVars !== generated) {\n return true;\n }\n }\n }\n return false;\n }\n\n private shadesToObject(shades: string[]) {\n const brandingCssVars: Record<`c8y-brand-${number}0`, string> = {};\n let i = 1;\n for (const shade of shades) {\n const key = `c8y-brand-${i}0` as const;\n brandingCssVars[key] = shade;\n i++;\n }\n\n return brandingCssVars;\n }\n\n private generateShades(inputColor: string) {\n const referenceShades = [\n '#134158',\n '#1C5569',\n '#058192', // primary color\n '#22A6AA',\n '#3CC1B7',\n '#8ADBD5',\n '#C5EDEA',\n '#EBF9F8'\n ];\n // Calculate the luminance of the reference shades\n const referenceLuminances = referenceShades.map(color => chroma(color).luminance());\n const inputColorAsHex = chroma(inputColor);\n // Generate shades of the input color with the same luminance as the reference shades\n const generatedShades = referenceLuminances.map(luminance =>\n chroma(inputColor).luminance(luminance).hex('rgb')\n );\n // Calculate the distance between the input color and each color in the generatedShades array\n const distances = generatedShades.map(color => chroma.deltaE(inputColorAsHex, color));\n // Find the index of the color with the smallest distance\n const index = distances.indexOf(Math.min(...distances));\n generatedShades[index] = inputColorAsHex.hex('rgb');\n return generatedShades;\n }\n}\n","import { Injectable } from '@angular/core';\n\n/**\n * Service for creating and manipulating branding versions.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class BrandingVersionService {\n static readonly nameAndIterationSeparator = '-';\n\n /**\n * Creates the initial branding version for a given name.\n * @param name The name of the branding.\n * @returns The initial branding version.\n */\n createInitialBrandingVersion<T extends string>(name: T) {\n return `${name}${BrandingVersionService.nameAndIterationSeparator}${1}` as const;\n }\n\n /**\n * Splits a branding version into its name and iteration.\n * @param version The branding version to split.\n * @returns The name and iteration of the branding version.\n *\n * Errors are thrown if the version is not in the expected format.\n */\n splitBrandingIntoNameAndIteration(version: string): { name: string; iteration: number } {\n const splitted = version.split(BrandingVersionService.nameAndIterationSeparator);\n if (splitted.length < 2) {\n throw Error(\n `A valid version should at least conatin one '${BrandingVersionService.nameAndIterationSeparator}', this is not the case for '${version}'`\n );\n }\n\n const lastValueOfSplittedArray = splitted[splitted.length - 1];\n if (lastValueOfSplittedArray === '' || !/[0-9]+/.test(lastValueOfSplittedArray)) {\n throw Error(\n `The second part of the version should be a positive integer, this is not the case for '${lastValueOfSplittedArray}' from '${version}'`\n );\n }\n\n const iteration = Number.parseInt(lastValueOfSplittedArray);\n if (Number.isNaN(iteration) && iteration <= 0) {\n throw Error(\n `The second part of the version should be a positive integer, this is not the case for '${iteration}' from '${version}'`\n );\n }\n\n const name = splitted.slice(0, -1).join(BrandingVersionService.nameAndIterationSeparator);\n if (!name) {\n throw Error(\n `The first part of the version should not be empty, this is the case for '${name}' from '${version}'`\n );\n }\n\n return { iteration, name };\n }\n\n /**\n * Bumps the iteration of a branding version.\n * @param version The branding version to bump.\n * @returns The bumped branding version.\n *\n * Errors are thrown if the version is not in the expected format.\n */\n bumpBrandingIteration(version: string) {\n const { name, iteration } = this.splitBrandingIntoNameAndIteration(version);\n return `${name}${BrandingVersionService.nameAndIterationSeparator}${iteration + 1}` as const;\n }\n}\n","import type { FormBuilder, FormControl } from '@angular/forms';\nimport { Alert, colorValidator } from '@c8y/ngx-components';\nimport type { ApplicationOptions } from '@c8y/options';\n\ntype ParamIntersection<T> = {\n [K in keyof T]: (x: T[K]) => void;\n}[keyof T] extends (x: infer I) => void\n ? I\n : never;\n\nexport type BrandingFormValue = ReturnType<typeof createGenericBrandingForm>['value'];\nexport type BrandingFormKeys = keyof BrandingFormValue;\nexport type BrandingFormTopLevelKeys = (typeof brandingFormGroupTopLevelEntries)[number];\nexport type BrandingFormTopLevelKeysToUnpack =\n (typeof brandingFormGroupTopLevelEntriesToUnpack)[number];\n\nexport type TopLevelFormKeysNotToUnpack = Exclude<\n BrandingFormTopLevelKeys,\n BrandingFormTopLevelKeysToUnpack\n>;\nexport type UnpackedTopLevelFormKeys = ParamIntersection<\n Pick<BrandingFormValue, BrandingFormTopLevelKeysToUnpack>\n>;\nexport type NotUnpackedTopLevelFormKeys = Pick<BrandingFormValue, TopLevelFormKeysNotToUnpack>;\nexport type TopLevelForm = NotUnpackedTopLevelFormKeys & UnpackedTopLevelFormKeys;\nexport type TopLevelValues = TopLevelForm;\n\nexport type BrandingCSSVarsForm = Omit<BrandingFormValue, BrandingFormTopLevelKeys>;\n\nexport type BrandingCSSVarsValues = ParamIntersection<BrandingCSSVarsForm> &\n ReturnType<typeof createBrandingForm>['value'];\n\nexport type BrandingOptionsJson = TopLevelValues & {\n brandingCssVars?: BrandingCSSVarsValues;\n} & Partial<ApplicationOptions>;\n\nexport const brandingFormGroupTopLevelEntries = [\n 'cookieBanner',\n 'genericApplicationOptions',\n 'darkThemeAvailable',\n 'messageBanner'\n] as const satisfies ReadonlyArray<BrandingFormKeys>;\nexport const brandingFormGroupTopLevelEntriesToUnpack = [\n 'genericApplicationOptions'\n] as const satisfies ReadonlyArray<(typeof brandingFormGroupTopLevelEntries)[number]>;\n\nexport const numberBrandingVars = ['brand-logo-img-height', 'btn-border-radius-base'] as const;\nexport const colorBrandingVars = [\n 'brand-dark',\n 'brand-light',\n 'brand-primary',\n 'c8y-brand-10',\n 'c8y-brand-20',\n 'c8y-brand-30',\n 'c8y-brand-40',\n 'c8y-brand-50',\n 'c8y-brand-60',\n 'c8y-brand-70',\n 'c8y-brand-80',\n 'palette-status-info',\n 'palette-status-warning',\n 'palette-status-success',\n 'palette-status-danger',\n 'palette-status-info-light',\n 'palette-status-warning-light',\n 'palette-status-success-light',\n 'palette-status-danger-light',\n 'palette-status-info-dark',\n 'palette-status-warning-dark',\n 'palette-status-success-dark',\n 'palette-status-danger-dark',\n 'body-background-color',\n 'text-color',\n 'text-muted',\n 'link-color',\n 'link-hover-color',\n 'action-bar-background-default',\n 'action-bar-color-actions-hover',\n 'action-bar-color-actions',\n 'action-bar-color-default',\n 'action-bar-icon-color',\n 'header-color',\n 'header-text-color',\n 'header-hover-color',\n 'navigator-bg-color',\n 'navigator-active-bg',\n 'navigator-border-active',\n 'navigator-header-bg',\n 'navigator-title-color',\n 'navigator-separator-color',\n 'navigator-text-color',\n 'navigator-color-active',\n 'right-drawer-background-default',\n 'right-drawer-text-color-default',\n 'right-drawer-separator-color',\n 'right-drawer-link-color',\n 'right-drawer-link-color-hover',\n 'right-drawer-text-color-muted'\n] as const;\nexport const stringBrandingVars = [\n 'brand-logo-img',\n 'navigator-platform-logo',\n 'login-platform-animation-img'\n] as const;\n\nexport const stringOrNumberBrandingVars = ['navigator-platform-logo-height'] as const;\n\nexport const allBrandingCSSVars = [\n ...numberBrandingVars,\n ...stringBrandingVars,\n ...colorBrandingVars\n] as const;\n\nexport function createGenericBrandingForm(formBuilder: FormBuilder) {\n const form = formBuilder.group({\n darkThemeAvailable: formBuilder.control<boolean>(false),\n cookieBanner: formBuilder.group({\n cookieBannerTitle: formBuilder.control<string>(undefined),\n cookieBannerText: formBuilder.control<string>(undefined),\n cookieBannerDisabled: formBuilder.control(false),\n policyUrl: formBuilder.control<string>(undefined),\n policyVersion: formBuilder.control<string>(undefined)\n }),\n messageBanner: formBuilder.group({\n messageBannerEnabled: formBuilder.control(false),\n messageBannerContent: formBuilder.control<string>(''),\n messageBannerType: formBuilder.control<Alert['type']>('info')\n }),\n baseTypography: formBuilder.group({\n 'font-url': formBuilder.control<string>(undefined),\n 'font-family-base': formBuilder.control<string>(undefined)\n }),\n headingsAndNavigatorTypography: formBuilder.group({\n 'font-family-headings': formBuilder.control<string>(undefined),\n 'navigator-font-family': formBuilder.control<string>('var(--font-family-base)')\n }),\n genericApplicationOptions: formBuilder.group({\n globalTitle: formBuilder.control<string>(undefined),\n faviconUrl: formBuilder.control<string>(undefined)\n })\n });\n return form;\n}\n\nexport function createBrandingForm(formBuilder: FormBuilder) {\n const colorControls = colorBrandingVars.reduce(\n (acc, key) => {\n acc[key] = formBuilder.control<string>(undefined, { asyncValidators: [colorValidator()] });\n return acc;\n },\n {} as { [key in (typeof colorBrandingVars)[number]]: FormControl<string> }\n );\n const stringControls = stringBrandingVars.reduce(\n (acc, key) => {\n acc[key] = formBuilder.control<string>(undefined);\n return acc;\n },\n {} as { [key in (typeof stringBrandingVars)[number]]: FormControl<string> }\n );\n const numberControls = numberBrandingVars.reduce(\n (acc, key) => {\n acc[key] = formBuilder.control<number>(undefined);\n return acc;\n },\n {} as { [key in (typeof numberBrandingVars)[number]]: FormControl<number> }\n );\n const stringOrNumberControls = stringOrNumberBrandingVars.reduce(\n (acc, key) => {\n acc[key] = formBuilder.control<number>(undefined);\n return acc;\n },\n {} as {\n [key in (typeof stringOrNumberBrandingVars)[number]]: FormControl<string | number>;\n }\n );\n const form = formBuilder.group({\n ...colorControls,\n ...stringControls,\n ...numberControls,\n ...stringOrNumberControls\n });\n\n return form;\n}\n","import { Injectable, Optional } from '@angular/core';\nimport { GainsightService, PxEventData } from '@c8y/ngx-components';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BrandingTrackingService {\n readonly prefix = 'brandingManager';\n constructor(@Optional() private gainsight: GainsightService) {}\n\n getStartedUsingBranding() {\n this.triggerEvent('getStartedUsingBranding');\n }\n\n deleteAllBrandings() {\n this.triggerEvent('deleteAllBrandings');\n }\n\n exportBranding() {\n this.triggerEvent('exportBranding');\n }\n\n addNewVersion() {\n this.triggerEvent('addNewVersion');\n }\n\n duplicateVersion() {\n this.triggerEvent('duplicateVersion');\n }\n\n applyToApps(apps: string[]) {\n this.triggerEvent('applyToApps', { apps });\n }\n\n importBranding() {\n this.triggerEvent('importBranding');\n }\n\n deleteBrandingVariant() {\n this.triggerEvent('deleteBrandingVariant');\n }\n\n openPreviewForBranding() {\n this.triggerEvent('openPreviewForBranding');\n }\n\n private triggerEvent(action: string, props?: PxEventData) {\n if (!this.gainsight) {\n return;\n }\n\n const finalProps = {\n ...props,\n action\n };\n\n return this.gainsight.triggerEvent(this.prefix, finalProps);\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n ApplicationAvailability,\n ApplicationType,\n FetchClient,\n IApplication,\n IApplicationBinary,\n IManagedObject,\n InventoryBinaryService,\n InventoryService\n} from '@c8y/client';\nimport { ApplicationService } from '@c8y/client';\nimport { AppStateService, ThemeSwitcherService, ZipService } from '@c8y/ngx-components';\nimport { defer, BehaviorSubject, Observable } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\nimport { cloneDeep, uniq } from 'lodash-es';\nimport { BrandingVersionService } from './branding-version.service';\nimport { BrandingOptionsJson, allBrandingCSSVars, numberBrandingVars } from './branding.type';\nimport { StaticAsset, StaticAssetsService } from '@c8y/ngx-components/static-assets/data';\nimport { BrandingTrackingService } from './branding-tracking.service';\n\nexport interface BrandVersion {\n name: string;\n id: string;\n revision: number;\n version: string;\n tags: string[];\n owner?: string;\n lastUpdated?: string;\n publicOptionsApp?: IApplication;\n}\n\nexport interface BrandingFileDetails {\n fileName: string;\n blob: Blob;\n jsonContent?: any;\n}\n\nexport interface BrandingFileDetailsLegacy {\n path: string;\n value: string;\n blob?: Blob;\n fileName: string;\n urlWrapped: boolean;\n}\n\n/**\n * Service to load and store the branding of the tenant.\n */\n@Injectable({ providedIn: 'root' })\nexport class StoreBrandingService {\n readonly fileNames = {\n options: 'options.json',\n manifest: 'cumulocity.json',\n exportZipName: 'public-options.zip'\n } as const;\n readonly manifestValues = {\n name: 'public-options',\n contextPath: 'public-options',\n key: 'public-options-key',\n description: 'Application containing static assets used by e.g. branding.',\n noAppSwitcher: true,\n type: ApplicationType.HOSTED,\n availability: ApplicationAvailability.SHARED\n } as const satisfies IApplication;\n refreshTriggerBrandingVariants = new BehaviorSubject<void>(null);\n constructor(\n private applicationService: ApplicationService,\n private inventory: InventoryService,\n private binary: InventoryBinaryService,\n private zip: ZipService,\n private fetch: FetchClient,\n private brandingVersionService: BrandingVersionService,\n private appState: AppStateService,\n private staticAssets: StaticAssetsService,\n private themeSwitcher: ThemeSwitcherService,\n private brandingTracking: BrandingTrackingService\n ) {}\n\n /**\n * Sets the `latest` tag on the provided branding version. Making it the global active branding.\n */\n async markAsActive(brandingVersion: BrandVersion, app?: IApplication): Promise<void> {\n const publicOptions = app || (await this.getPublicOptionsApp());\n const tags = brandingVersion.tags || [];\n const version = brandingVersion.version;\n await this.applicationService.setPackageVersionTag(publicOptions, version, [...tags, 'latest']);\n }\n\n /**\n * Opens a new tab with to preview the branding. The branding must have been saved beforehand.\n * @param brandingName the name of the branding to be previewed\n */\n openPreviewForBranding(brandingName: string) {\n this.brandingTracking.openPreviewForBranding();\n window.open(\n `/apps/${\n this.appState.currentApplication.value?.contextPath || 'cockpit'\n }/index.html?brandingPreview=true&dynamicOptionsUrl=/apps/public/public-options@${brandingName}/options.json`,\n '_blank',\n 'noopener,noreferrer'\n );\n }\n\n /**\n * Returns the brandings of the tenant.\n * If no public options app is found, publicOptions will be undefined and variants an empty array.\n * For old brandings (created without versioning) a default version is returned.\n */\n async loadBrandingVariants(\n app?: IApplication\n ): Promise<{ publicOptions: IApplication | undefined; variants: BrandVersion[] }> {\n const publicOptions = app || (await this.getPublicOptionsApp());\n if (!publicOptions) {\n return { publicOptions: undefined, variants: [] };\n }\n const { data: versions } = await this.applicationService.listVersions(publicOptions);\n let mappedVersions: BrandVersion[] =\n versions\n ?.map(tmp => {\n try {\n const { name, iteration } =\n this.brandingVersionService.splitBrandingIntoNameAndIteration(tmp.version);\n return {\n revision: iteration,\n name: name,\n id: tmp.binaryId,\n version: tmp.version,\n tags: tmp.tags || [],\n publicOptionsApp: publicOptions\n };\n } catch (e) {\n console.warn('Failed to parse version', tmp, e);\n return undefined;\n }\n })\n ?.filter(Boolean) || [];\n if (!versions && publicOptions.activeVersionId) {\n mappedVersions = [\n {\n name: 'default',\n id: publicOptions.activeVersionId,\n version: 'default-1',\n revision: 1,\n tags: ['latest', 'default'],\n publicOptionsApp: publicOptions\n }\n ];\n }\n\n const variants = await this.getMetadataOfBrandingBinaries(mappedVersions);\n return { publicOptions, variants };\n }\n\n /**\n * As the branding is not immediately available after creation, this method will wait for the branding to be present.\n * @param version The version of the branding to be retrieved.\n */\n async waitForBrandingToBePresent(version: string): Promise<void> {\n const numberOfAttempts = 120;\n const sleepDurationInSeconds = 1;\n for (let i = 0; i < numberOfAttempts; i++) {\n try {\n // do not sleep before the first attempt\n if (i !== 0) {\n await new Promise(resolve => setTimeout(resolve, sleepDurationInSeconds * 1_000));\n }\n await this.getBrandingOptionsForVersion(version);\n console.info(`Branding \"${version}\" available now.`);\n return;\n } catch (e) {\n console.warn(\n `Branding \"${version}\" not yet present, retrying in ${sleepDurationInSeconds} seconds...`,\n e\n );\n }\n }\n throw new Error(\n `Branding \"${version}\" not available after ${numberOfAttempts * sleepDurationInSeconds} seconds, giving up.`\n );\n }\n\n /**\n * Will create a the initial branding based on the currently applied CSS variables.\n */\n async getStartedUsingBranding(): Promise<void> {\n const allVariables: Record<string, string> = {};\n const themeToRetrieveVars = ['light', 'dark'] as const;\n const unretrievableVars = new Array<string>();\n for (const theme of themeToRetrieveVars) {\n this.themeSwitcher.temporaryChangeTheme(theme);\n const styles = getComputedStyle(document.body);\n const variablesToSkip = [\n 'navigator-platform-logo',\n 'brand-logo-img'\n ] satisfies (typeof allBrandingCSSVars)[number][];\n const values = allBrandingCSSVars\n .filter(cssVar => !variablesToSkip.includes(cssVar as any))\n .reduce((prev, key) => {\n const directValue = styles.getPropertyValue(`--${key}`);\n const c8yPrefixedValue = styles.getPropertyValue(`--c8y-${key}`);\n const newKey = theme === 'light' ? key : `dark-${key}`;\n if (!directValue && !c8yPrefixedValue) {\n unretrievableVars.push(newKey);\n return prev;\n }\n let value: string | number = directValue || c8yPrefixedValue;\n if (numberBrandingVars.includes(key as any)) {\n try {\n value = Number.parseFloat(value.replace(/[A-Za-z]/g, '').trim());\n } catch (e) {\n console.warn(\n `Failed to parse number for \"${key}\" value that failed to parse: \"${value}\"`,\n e\n );\n return prev;\n }\n }\n return Object.assign(prev, { [newKey]: value });\n }, {});\n Object.assign(allVariables, values);\n }\n this.themeSwitcher.resetTemporaryTheme();\n\n try {\n await this.createPublicOptionsAppFromInheritedOptions(allVariables);\n } catch (e) {\n console.warn(e);\n }\n }\n\n getZipForBinary(\n binaryId: string,\n fileName: string = this.fileNames.exportZipName\n ): Observable<File> {\n return defer(() => this.binary.download(binaryId)).pipe(\n switchMap(response => response.blob()),\n map(blob => new File([blob], fileName))\n );\n }\n\n /**\n * Deletes the public options app and therefore all brandings.\n * The public options app can be optionally provided to avoid another request for it.\n */\n async deleteAllBrandings(publicOptions?: IApplication): Promise<void> {\n publicOptions = publicOptions || (await this.getPublicOptionsApp());\n await this.applicationService.delete(publicOptions);\n }\n\n /**\n * Enhances the provided branding versions with metadata from the linked binaries.\n * It will add the owner and lastUpdated fields to the versions.\n * The provided array is altered.\n */\n async getMetadataOfBrandingBinaries(versions: BrandVersion[]): Promise<BrandVersion[]> {\n const binaryIds = uniq(versions.map(tmp => tmp.id));\n if (!binaryIds.length) {\n return versions;\n }\n const { data: metadata } = await this.inventory.list({\n ids: binaryIds.join(','),\n pageSize: 2000\n });\n return versions.map(version => {\n const metadataForVersion =\n metadata.find(tmp => tmp.id === version.id) || ({} as IManagedObject);\n const { owner, lastUpdated } = metadataForVersion;\n return Object.assign(version, { owner, lastUpdated });\n });\n }\n\n /**\n * Saves the provided branding as a new version for the public options app.\n * The public options app can be optionally provided to avoid another request for it.\n */\n async saveBranding(\n blob: Blob | File,\n version: string,\n tags: string[] = [],\n publicOptionsApp?: IApplication\n ): Promise<{\n version: string;\n binary: IApplicationBinary;\n tags: string[];\n }> {\n const file = blob instanceof File ? blob : new File([blob], `public-options-${version}.zip`);\n const publicOptions = publicOptionsApp || (await this.getPublicOptionsApp());\n\n const { data: binary } = await this.applicationService\n .binary(publicOptions)\n .uploadApplicationVersion(file, version, tags);\n if (!publicOptions.activeVersionId || tags.includes('latest')) {\n await this.applicationService.update({\n id: publicOptions.id,\n activeVersionId: `${binary.binaryId}`\n });\n }\n this.refreshTriggerBrandingVariants.next();\n return { version, binary, tags };\n }\n\n /**\n * Removes a branding version from the public options app.\n * The public options app can be optionally provided to avoid another request for it.\n */\n async deleteBrandingVersion(version: string, publicOptions?: IApplication): Promise<void> {\n publicOptions = publicOptions || (await this.getPublicOptionsApp());\n await this.applicationService.deleteVersionPackage(publicOptions, { version });\n this.refreshTriggerBrandingVariants.next();\n }\n\n /**\n * Returns the blob of a zip file containing the provided branding options (options.json) and the manifest (cumulocity.json).\n */\n async getBrandingZip(content: Record<string, any> = {}): Promise<Blob> {\n content.lastUpdated = new Date().toISOString();\n const contentAsString = JSON.stringify(content);\n const zip = await this.zip.createZip([\n { fileName: this.fileNames.options, blob: new Blob([contentAsString]) },\n { fileName: this.fileNames.manifest, blob: new Blob([JSON.stringify(this.manifestValues)]) }\n ]);\n return zip;\n }\n\n /**\n * Adds a new branding version to the public options app.\n * The public options app can be optionally provided to avoid another request for it.\n */\n async addBranding(\n version: string,\n content: BrandingOptionsJson = {},\n tags: string[] = [],\n publicOptionsApp?: IApplication\n ): Promise<{\n version: string;\n binary: IApplicationBinary;\n tags: string[];\n }> {\n const zip = await this.getBrandingZip(content);\n\n return await this.saveBranding(zip, version, tags, publicOptionsApp);\n }\n\n /**\n * Returns the branding options for the provided version.\n * If no branding was found (e.g. status 404), an error is thrown.\n */\n async getBrandingOptionsForVersion(version?: string): Promise<BrandingOptionsJson> {\n const url = `/apps/public/public-options${version ? `@${version}` : ''}/${this.fileNames.options}?nocache=${new Date().getTime()}`;\n const response = await this.fetch.fetch(url);\n if (response.status !== 200) {\n throw Error(`Unexpected status code: ${response.status}`);\n }\n\n const content = await response.json();\n return content as BrandingOptionsJson;\n }\n\n /**\n * Saves a new iteration of an already existing branding.\n */\n async saveExistingBranding(\n branding: Record<string, any>,\n currentVersion: string,\n tagsOfCurrentVersion: string[] = [],\n newVersion?: string\n ): Promise<string> {\n const publicOptions = await this.getPublicOptionsApp();\n const versionToBeSet = newVersion\n ? this.brandingVersionService.createInitialBrandingVersion(newVersion)\n : this.brandingVersionService.bumpBrandingIteration(currentVersion);\n\n const finalTags = tagsOfCurrentVersion;\n // only apply latest tag directly\n // there seems to be some special handling for the latest tag in the backend, that allows to directly move it while uploading the new version.\n // for all other tags this results in a 409 conflict. We therefore need to first delete the old version, before setting the other tags on the new version.\n if (!newVersion) {\n tagsOfCurrentVersion = tagsOfCurrentVersion.filter(tag => tag === 'latest');\n }\n await this.addBranding(versionToBeSet, branding, tagsOfCurrentVersion, publicOptions);\n if (!newVersion) {\n try {\n await this.deleteBrandingVersion(currentVersion, publicOptions);\n } catch (e) {\n if (e.res.status !== 404) {\n throw e;\n }\n }\n await this.applicationService.setPackageVersionTag(publicOptions, versionToBeSet, finalTags);\n }\n\n return versionToBeSet;\n }\n\n /**\n * Combines current branding options with the provided branding variables and creates a new public options app.\n * Any assets in the branding will be cloned.\n */\n async createPublicOptionsAppFromInheritedOptions(brandingVars?: Record<string, string>): Promise<{\n version: string;\n binary: IApplicationBinary;\n tags: string[];\n }> {\n let currentlyAppliedBranding: BrandingOptionsJson;\n let fallBackBranding: BrandingOptionsJson = {};\n try {\n currentlyAppliedBranding = await this.getBrandingOptionsForVersion();\n fallBackBranding = cloneDeep(currentlyAppliedBranding);\n } catch (e) {\n console.warn('Failed to get currently applied branding, proceeding with empty branding.', e);\n }\n\n if (brandingVars) {\n currentlyAppliedBranding = currentlyAppliedBranding || {};\n const brandingCssVars = currentlyAppliedBranding.brandingCssVars || {};\n Object.assign(brandingCssVars, brandingVars);\n currentlyAppliedBranding.brandingCssVars = brandingCssVars;\n }\n\n if (currentlyAppliedBranding) {\n try {\n const { oldAssets, newAssets } = await this.staticAssets.cloneAssetsIntoTenant('branding');\n currentlyAppliedBranding = this.replaceBrandingAssetsInBrandingOptions(\n currentlyAppliedBranding,\n oldAssets,\n newAssets\n );\n } catch (e) {\n console.warn('Failed to relocate branding assets into current tenant.', e);\n }\n }\n\n const publicOptionsApp = await this.createPublicOptionsApp();\n\n const defaultBrandingName = `default`;\n const result = await this.addBranding(\n this.brandingVersionService.createInitialBrandingVersion(defaultBrandingName),\n currentlyAppliedBranding || {},\n ['latest', defaultBrandingName],\n publicOptionsApp\n );\n\n const fallbackBrandingName = `fallback`;\n await this.addBranding(\n this.brandingVersionService.createInitialBrandingVersion(fallbackBrandingName),\n fallBackBranding,\n [fallbackBrandingName],\n publicOptionsApp\n );\n\n return result;\n }\n\n /**\n * Replaces the assets in the branding options with the new assets.\n * Goes through the provided `oldAssets` and replaces their occurrences in the branding with the corresponding `newAssets` entry sharing the same fileName.\n * Returns the updated branding options.\n */\n replaceBrandingAssetsInBrandingOptions(\n branding: BrandingOptionsJson,\n oldAssets: StaticAsset[],\n newAssets: StaticAsset[]\n ): BrandingOptionsJson {\n let brandingAsJSONString = JSON.stringify(branding);\n for (const oldAsset of oldAssets) {\n const newLocatedAsset = newAssets.find(tmp => tmp.fileName === oldAsset.fileName);\n if (!newLocatedAsset) {\n continue;\n }\n // if the path is the same, we don't need to replace it.\n if (oldAsset.path === newLocatedAsset.path) {\n continue;\n }\n\n // TODO: use proper replaceAll once it's available with es2021\n brandingAsJSONString = brandingAsJSONString.split(oldAsset.path).join(newLocatedAsset.path);\n }\n return JSON.parse(brandingAsJSONString);\n }\n\n private async getPublicOptionsApp() {\n try {\n const { data: manifest } = await this.applicationService.getManifestOfContextPath(\n this.manifestValues.contextPath\n );\n const { data: app } = await this.applicationService.detail(manifest.id);\n if (app.owner.tenant.id !== this.appState.currentTenant.value?.name) {\n return undefined;\n }\n return app;\n } catch (e) {\n // e.g. reached when no app with the given context path exists\n return undefined;\n }\n }\n\n private async createPublicOptionsApp() {\n const { data: app } = await this.applicationService.create(this.manifestValues);\n return app;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i3.BrandingVersionService","i5.BrandingTrackingService"],"mappings":"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"}
|