UNPKG

@versatiledatakit/shared

Version:

Versatile Data Kit Shared library enables reusability of shared features like: NgRx Redux, Error Handlers, Utils, Generic Components, etc.

912 lines 314 kB
/* * Copyright 2023-2025 Broadcom * SPDX-License-Identifier: Apache-2.0 */ import { Component, ContentChild, Inject, Input, TemplateRef, ViewChild } from '@angular/core'; import { CollectionsUtil } from '../../../utils'; import { TaurusObject } from '../../../common'; import { filterErrorRecords } from '../../../core'; import { SHARED_FEATURES_CONFIG_TOKEN } from '../../_token'; import { PlaceholderService } from '../services'; import * as i0 from "@angular/core"; import * as i1 from "../services"; import * as i2 from "@angular/common"; import * as i3 from "./empty-state/empty-state.component"; const _c0 = ["errorTemplate"]; const _c1 = ["errorTemplate4xx"]; const _c2 = ["errorTemplate400"]; const _c3 = ["errorTemplate401"]; const _c4 = ["errorTemplate403"]; const _c5 = ["errorTemplate404"]; const _c6 = ["errorTemplate405"]; const _c7 = ["errorTemplate409"]; const _c8 = ["errorTemplate422"]; const _c9 = ["errorTemplate5xx"]; const _c10 = ["errorTemplate500"]; const _c11 = ["errorTemplate503"]; const _c12 = ["emptyTemplate"]; const _c13 = ["errorTemplateSystemDefault"]; function PlaceholderComponent_ng_container_1_ng_container_2_ng_container_1_ng_container_1_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainer(0); } } const _c14 = function (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) { return { errors: a0, problem: a1, description: a2, mitigation: a3, escalation: a4, impactedServices: a5, what: a6, why: a7, consequences: a8, countermeasures: a9, imageSrc: a10, imageWidth: a11, imageOpacity: a12 }; }; const _c15 = function (a0) { return { $implicit: a0 }; }; function PlaceholderComponent_ng_container_1_ng_container_2_ng_container_1_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainerStart(0); i0.ɵɵtemplate(1, PlaceholderComponent_ng_container_1_ng_container_2_ng_container_1_ng_container_1_Template, 1, 0, "ng-container", 7); i0.ɵɵelementContainerEnd(); } if (rf & 2) { const error_r8 = ctx.$implicit; const ctx_r7 = i0.ɵɵnextContext(3); i0.ɵɵadvance(1); i0.ɵɵproperty("ngTemplateOutlet", ctx_r7.resolveErrorTemplate(error_r8))("ngTemplateOutletContext", i0.ɵɵpureFunction1(16, _c15, i0.ɵɵpureFunctionV(2, _c14, [error_r8.record, error_r8.problem, error_r8.description, error_r8.mitigation, error_r8.escalation, error_r8.impactedServices, error_r8.apiMessage == null ? null : error_r8.apiMessage.what, error_r8.apiMessage == null ? null : error_r8.apiMessage.why, error_r8.apiMessage == null ? null : error_r8.apiMessage.consequences, error_r8.apiMessage == null ? null : error_r8.apiMessage.countermeasures, error_r8.imageSrc, error_r8.imageWidth, error_r8.imageOpacity]))); } } function PlaceholderComponent_ng_container_1_ng_container_2_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainerStart(0); i0.ɵɵtemplate(1, PlaceholderComponent_ng_container_1_ng_container_2_ng_container_1_Template, 2, 18, "ng-container", 6); i0.ɵɵelementContainerEnd(); } if (rf & 2) { const ctx_r4 = i0.ɵɵnextContext(2); i0.ɵɵadvance(1); i0.ɵɵproperty("ngForOf", ctx_r4.identifiedErrorsWithApiMessage); } } function PlaceholderComponent_ng_container_1_ng_template_3_ng_container_0_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainer(0); } } function PlaceholderComponent_ng_container_1_ng_template_3_Template(rf, ctx) { if (rf & 1) { i0.ɵɵtemplate(0, PlaceholderComponent_ng_container_1_ng_template_3_ng_container_0_Template, 1, 0, "ng-container", 7); } if (rf & 2) { const ctx_r6 = i0.ɵɵnextContext(2); i0.ɵɵproperty("ngTemplateOutlet", ctx_r6.resolveErrorTemplate(ctx_r6.identifiedErrorWithApiMessage))("ngTemplateOutletContext", i0.ɵɵpureFunction1(16, _c15, i0.ɵɵpureFunctionV(2, _c14, [ctx_r6.identifiedErrorWithApiMessage.record, ctx_r6.identifiedErrorWithApiMessage.problem, ctx_r6.identifiedErrorWithApiMessage.description, ctx_r6.identifiedErrorWithApiMessage.mitigation, ctx_r6.identifiedErrorWithApiMessage.escalation, ctx_r6.identifiedErrorWithApiMessage.impactedServices, ctx_r6.identifiedErrorWithApiMessage.apiMessage == null ? null : ctx_r6.identifiedErrorWithApiMessage.apiMessage.what, ctx_r6.identifiedErrorWithApiMessage.apiMessage == null ? null : ctx_r6.identifiedErrorWithApiMessage.apiMessage.why, ctx_r6.identifiedErrorWithApiMessage.apiMessage == null ? null : ctx_r6.identifiedErrorWithApiMessage.apiMessage.consequences, ctx_r6.identifiedErrorWithApiMessage.apiMessage == null ? null : ctx_r6.identifiedErrorWithApiMessage.apiMessage.countermeasures, ctx_r6.identifiedErrorWithApiMessage.imageSrc, ctx_r6.identifiedErrorWithApiMessage.imageWidth, ctx_r6.identifiedErrorWithApiMessage.imageOpacity]))); } } const _c16 = function (a0) { return { "shared__placeholder-error-container--system-default": a0 }; }; function PlaceholderComponent_ng_container_1_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainerStart(0); i0.ɵɵelementStart(1, "div", 3); i0.ɵɵtemplate(2, PlaceholderComponent_ng_container_1_ng_container_2_Template, 2, 1, "ng-container", 4); i0.ɵɵtemplate(3, PlaceholderComponent_ng_container_1_ng_template_3_Template, 1, 18, "ng-template", null, 5, i0.ɵɵtemplateRefExtractor); i0.ɵɵelementEnd(); i0.ɵɵelementContainerEnd(); } if (rf & 2) { const _r5 = i0.ɵɵreference(4); const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵadvance(1); i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(3, _c16, ctx_r0.isErrorTemplateSystemDefault)); i0.ɵɵadvance(1); i0.ɵɵproperty("ngIf", ctx_r0.renderAllErrors)("ngIfElse", _r5); } } function PlaceholderComponent_ng_container_2_ng_container_1_ng_container_1_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainer(0); } } function PlaceholderComponent_ng_container_2_ng_container_1_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainerStart(0); i0.ɵɵtemplate(1, PlaceholderComponent_ng_container_2_ng_container_1_ng_container_1_Template, 1, 0, "ng-container", 9); i0.ɵɵelementContainerEnd(); } if (rf & 2) { const ctx_r11 = i0.ɵɵnextContext(2); i0.ɵɵadvance(1); i0.ɵɵproperty("ngTemplateOutlet", ctx_r11.emptyTemplateRef); } } function PlaceholderComponent_ng_container_2_ng_template_2_ng_container_0_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainerStart(0); i0.ɵɵelementStart(1, "shared-empty-state", 11); i0.ɵɵelement(2, "img", 12); i0.ɵɵelementEnd(); i0.ɵɵelementContainerEnd(); } if (rf & 2) { const ctx_r15 = i0.ɵɵnextContext(3); i0.ɵɵadvance(1); i0.ɵɵproperty("title", ctx_r15.emptyMessage); i0.ɵɵadvance(1); i0.ɵɵstyleProp("width", ctx_r15.emptyImgWidth)("opacity", ctx_r15.emptyImgOpacity); i0.ɵɵproperty("src", ctx_r15.emptyImgSrc, i0.ɵɵsanitizeUrl); } } function PlaceholderComponent_ng_container_2_ng_template_2_ng_template_1_Template(rf, ctx) { if (rf & 1) { i0.ɵɵtext(0); } if (rf & 2) { const ctx_r17 = i0.ɵɵnextContext(3); i0.ɵɵtextInterpolate(ctx_r17.emptyMessage); } } function PlaceholderComponent_ng_container_2_ng_template_2_Template(rf, ctx) { if (rf & 1) { i0.ɵɵtemplate(0, PlaceholderComponent_ng_container_2_ng_template_2_ng_container_0_Template, 3, 6, "ng-container", 4); i0.ɵɵtemplate(1, PlaceholderComponent_ng_container_2_ng_template_2_ng_template_1_Template, 1, 1, "ng-template", null, 10, i0.ɵɵtemplateRefExtractor); } if (rf & 2) { const _r16 = i0.ɵɵreference(2); const ctx_r13 = i0.ɵɵnextContext(2); i0.ɵɵproperty("ngIf", ctx_r13.showCustomEmptyStateImage)("ngIfElse", _r16); } } function PlaceholderComponent_ng_container_2_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainerStart(0); i0.ɵɵtemplate(1, PlaceholderComponent_ng_container_2_ng_container_1_Template, 2, 1, "ng-container", 4); i0.ɵɵtemplate(2, PlaceholderComponent_ng_container_2_ng_template_2_Template, 3, 2, "ng-template", null, 8, i0.ɵɵtemplateRefExtractor); i0.ɵɵelementContainerEnd(); } if (rf & 2) { const _r12 = i0.ɵɵreference(3); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵadvance(1); i0.ɵɵproperty("ngIf", ctx_r1.emptyTemplateRef)("ngIfElse", _r12); } } function PlaceholderComponent_ng_template_3_img_1_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelement(0, "img", 16); } if (rf & 2) { const error_r18 = i0.ɵɵnextContext().$implicit; i0.ɵɵstyleProp("width", error_r18.imageWidth)("opacity", error_r18.imageOpacity); i0.ɵɵproperty("src", error_r18.imageSrc, i0.ɵɵsanitizeUrl); } } function PlaceholderComponent_ng_template_3_ng_template_2_Template(rf, ctx) { if (rf & 1) { i0.ɵɵnamespaceSVG(); i0.ɵɵelementStart(0, "svg", 17)(1, "defs")(2, "g", 18); i0.ɵɵelement(3, "g", 19); i0.ɵɵelementStart(4, "mask", 20)(5, "g")(6, "g")(7, "g", 21); i0.ɵɵelement(8, "path", 22); i0.ɵɵelementEnd()()()()(); i0.ɵɵelementStart(9, "linearGradient", 23); i0.ɵɵelement(10, "stop", 24)(11, "stop", 25)(12, "stop", 26)(13, "stop", 27)(14, "stop", 28)(15, "stop", 29)(16, "stop", 30)(17, "stop", 31); i0.ɵɵelementEnd(); i0.ɵɵelementStart(18, "linearGradient", 32); i0.ɵɵelement(19, "stop", 33)(20, "stop", 34); i0.ɵɵelementEnd(); i0.ɵɵelementStart(21, "linearGradient", 35); i0.ɵɵelement(22, "stop", 33)(23, "stop", 34); i0.ɵɵelementEnd(); i0.ɵɵelementStart(24, "linearGradient", 36); i0.ɵɵelement(25, "stop", 37)(26, "stop", 38)(27, "stop", 39)(28, "stop", 40)(29, "stop", 41); i0.ɵɵelementEnd(); i0.ɵɵelementStart(30, "linearGradient", 42); i0.ɵɵelement(31, "stop", 43)(32, "stop", 44); i0.ɵɵelementEnd(); i0.ɵɵelementStart(33, "linearGradient", 45); i0.ɵɵelement(34, "stop", 46)(35, "stop", 44); i0.ɵɵelementEnd(); i0.ɵɵelementStart(36, "linearGradient", 47); i0.ɵɵelement(37, "stop", 48)(38, "stop", 49)(39, "stop", 50)(40, "stop", 51)(41, "stop", 44); i0.ɵɵelementEnd(); i0.ɵɵelementStart(42, "linearGradient", 52); i0.ɵɵelement(43, "stop", 33)(44, "stop", 34); i0.ɵɵelementEnd(); i0.ɵɵelementStart(45, "linearGradient", 53); i0.ɵɵelement(46, "stop", 33)(47, "stop", 34); i0.ɵɵelementEnd(); i0.ɵɵelementStart(48, "linearGradient", 54); i0.ɵɵelement(49, "stop", 24)(50, "stop", 55)(51, "stop", 56)(52, "stop", 57)(53, "stop", 58)(54, "stop", 59)(55, "stop", 60)(56, "stop", 31); i0.ɵɵelementEnd(); i0.ɵɵelementStart(57, "linearGradient", 61); i0.ɵɵelement(58, "stop", 33)(59, "stop", 34); i0.ɵɵelementEnd(); i0.ɵɵelementStart(60, "linearGradient", 62); i0.ɵɵelement(61, "stop", 33)(62, "stop", 34); i0.ɵɵelementEnd(); i0.ɵɵelementStart(63, "linearGradient", 63); i0.ɵɵelement(64, "stop", 24)(65, "stop", 25)(66, "stop", 26)(67, "stop", 27)(68, "stop", 28)(69, "stop", 29)(70, "stop", 30)(71, "stop", 31); i0.ɵɵelementEnd(); i0.ɵɵelementStart(72, "linearGradient", 64); i0.ɵɵelement(73, "stop", 65)(74, "stop", 66); i0.ɵɵelementEnd(); i0.ɵɵelementStart(75, "linearGradient", 67); i0.ɵɵelement(76, "stop", 68)(77, "stop", 69)(78, "stop", 70); i0.ɵɵelementEnd(); i0.ɵɵelementStart(79, "linearGradient", 71); i0.ɵɵelement(80, "stop", 33)(81, "stop", 72)(82, "stop", 73); i0.ɵɵelementEnd(); i0.ɵɵelementStart(83, "linearGradient", 74); i0.ɵɵelement(84, "stop", 33)(85, "stop", 72)(86, "stop", 73); i0.ɵɵelementEnd()(); i0.ɵɵelementStart(87, "g", 75)(88, "g", 76); i0.ɵɵelement(89, "path", 77)(90, "path", 78); i0.ɵɵelementEnd(); i0.ɵɵelementStart(91, "g", 79); i0.ɵɵelement(92, "animateTransform", 80)(93, "animateTransform", 81)(94, "animateTransform", 82)(95, "animateTransform", 83)(96, "path", 84)(97, "path", 85)(98, "path", 86); i0.ɵɵelementEnd(); i0.ɵɵelementStart(99, "g", 87); i0.ɵɵelement(100, "animateTransform", 88)(101, "animateTransform", 89)(102, "animateTransform", 90)(103, "animateTransform", 91)(104, "path", 92)(105, "path", 93)(106, "path", 94); i0.ɵɵelementEnd(); i0.ɵɵelementStart(107, "g", 95); i0.ɵɵelement(108, "animateTransform", 96)(109, "animateTransform", 97)(110, "animateTransform", 98)(111, "path", 99)(112, "path", 100); i0.ɵɵelementEnd(); i0.ɵɵelementStart(113, "g", 101)(114, "g", 102); i0.ɵɵelement(115, "path", 103); i0.ɵɵelementEnd(); i0.ɵɵelement(116, "animate", 104); i0.ɵɵelementEnd(); i0.ɵɵelementStart(117, "g", 101)(118, "g", 105); i0.ɵɵelement(119, "path", 106); i0.ɵɵelementEnd(); i0.ɵɵelement(120, "animate", 107); i0.ɵɵelementEnd(); i0.ɵɵelementStart(121, "g")(122, "g", 108); i0.ɵɵelement(123, "path", 109); i0.ɵɵelementEnd(); i0.ɵɵelement(124, "animate", 110); i0.ɵɵelementEnd(); i0.ɵɵelementStart(125, "g", 111); i0.ɵɵelement(126, "path", 112)(127, "path", 113)(128, "path", 114)(129, "path", 115)(130, "path", 116)(131, "path", 117)(132, "path", 118)(133, "path", 119)(134, "path", 120)(135, "path", 121)(136, "path", 122); i0.ɵɵelementEnd(); i0.ɵɵelementStart(137, "g", 101)(138, "g", 123); i0.ɵɵelement(139, "path", 124)(140, "path", 125)(141, "path", 126)(142, "path", 127)(143, "path", 128)(144, "path", 129); i0.ɵɵelementEnd(); i0.ɵɵelement(145, "animate", 104); i0.ɵɵelementEnd(); i0.ɵɵelementStart(146, "g", 101)(147, "g", 130); i0.ɵɵelement(148, "path", 131)(149, "path", 125)(150, "path", 126)(151, "path", 127)(152, "path", 128)(153, "path", 129); i0.ɵɵelementEnd(); i0.ɵɵelement(154, "animate", 107); i0.ɵɵelementEnd(); i0.ɵɵelementStart(155, "g")(156, "g", 132); i0.ɵɵelement(157, "path", 133)(158, "path", 125)(159, "path", 126)(160, "path", 127)(161, "path", 128)(162, "path", 129); i0.ɵɵelementEnd(); i0.ɵɵelement(163, "animate", 110); i0.ɵɵelementEnd(); i0.ɵɵelementStart(164, "g", 134)(165, "g", 135)(166, "g", 136); i0.ɵɵelement(167, "path", 137)(168, "path", 138)(169, "path", 139)(170, "animate", 140); i0.ɵɵelementEnd(); i0.ɵɵelementStart(171, "g", 141); i0.ɵɵelement(172, "path", 142)(173, "path", 143)(174, "animate", 144); i0.ɵɵelementEnd(); i0.ɵɵelementStart(175, "g", 145); i0.ɵɵelement(176, "path", 146)(177, "path", 138)(178, "animate", 147); i0.ɵɵelementEnd(); i0.ɵɵelementStart(179, "g", 148); i0.ɵɵelement(180, "path", 137)(181, "path", 139)(182, "animate", 149); i0.ɵɵelementEnd(); i0.ɵɵelementStart(183, "g", 150); i0.ɵɵelement(184, "path", 137)(185, "path", 138)(186, "path", 139)(187, "animate", 151); i0.ɵɵelementEnd()()(); i0.ɵɵelementStart(188, "g", 101)(189, "g", 152); i0.ɵɵelement(190, "path", 153); i0.ɵɵelementEnd(); i0.ɵɵelement(191, "animate", 104); i0.ɵɵelementEnd(); i0.ɵɵelementStart(192, "g", 101)(193, "g", 154); i0.ɵɵelement(194, "path", 155); i0.ɵɵelementEnd(); i0.ɵɵelement(195, "animate", 107); i0.ɵɵelementEnd(); i0.ɵɵelementStart(196, "g")(197, "g", 156); i0.ɵɵelement(198, "path", 157); i0.ɵɵelementEnd(); i0.ɵɵelement(199, "animate", 110); i0.ɵɵelementEnd(); i0.ɵɵelementStart(200, "g", 101)(201, "g", 158); i0.ɵɵelement(202, "path", 159)(203, "path", 160)(204, "path", 161)(205, "use", 162)(206, "path", 163); i0.ɵɵelementEnd(); i0.ɵɵelement(207, "animate", 104); i0.ɵɵelementEnd(); i0.ɵɵelementStart(208, "g", 101)(209, "g", 164); i0.ɵɵelement(210, "path", 165)(211, "path", 160)(212, "path", 161)(213, "use", 162)(214, "path", 163); i0.ɵɵelementEnd(); i0.ɵɵelement(215, "animate", 107); i0.ɵɵelementEnd(); i0.ɵɵelementStart(216, "g")(217, "g", 166); i0.ɵɵelement(218, "path", 167)(219, "path", 163)(220, "path", 168)(221, "path", 169); i0.ɵɵelementEnd(); i0.ɵɵelement(222, "animate", 110); i0.ɵɵelementEnd(); i0.ɵɵelementStart(223, "g", 170); i0.ɵɵelement(224, "path", 171)(225, "animate", 104); i0.ɵɵelementEnd(); i0.ɵɵelementStart(226, "g", 172); i0.ɵɵelement(227, "path", 173)(228, "animate", 107); i0.ɵɵelementEnd(); i0.ɵɵelementStart(229, "g", 174); i0.ɵɵelement(230, "path", 175)(231, "animate", 110); i0.ɵɵelementEnd()()(); } if (rf & 2) { const error_r18 = i0.ɵɵnextContext().$implicit; i0.ɵɵstyleProp("width", error_r18.imageWidth)("height", "auto")("margin-bottom", "-50px"); } } function PlaceholderComponent_ng_template_3_ng_container_9_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainerStart(0); i0.ɵɵelementStart(1, "span"); i0.ɵɵtext(2); i0.ɵɵelementEnd(); i0.ɵɵelementContainerEnd(); } if (rf & 2) { const error_r18 = i0.ɵɵnextContext().$implicit; i0.ɵɵadvance(2); i0.ɵɵtextInterpolate1(" ", error_r18.mitigation, ""); } } function PlaceholderComponent_ng_template_3_ng_container_10_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainerStart(0); i0.ɵɵelement(1, "br")(2, "span", 176); i0.ɵɵelementContainerEnd(); } if (rf & 2) { const error_r18 = i0.ɵɵnextContext().$implicit; i0.ɵɵadvance(2); i0.ɵɵproperty("innerHTML", error_r18.escalation, i0.ɵɵsanitizeHtml); } } function PlaceholderComponent_ng_template_3_h4_11_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "h4")(1, "span"); i0.ɵɵtext(2); i0.ɵɵelementEnd()(); } if (rf & 2) { const error_r18 = i0.ɵɵnextContext().$implicit; i0.ɵɵadvance(2); i0.ɵɵtextInterpolate1("Impacted services: ", error_r18.impactedServices, ""); } } function PlaceholderComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "div", 13); i0.ɵɵtemplate(1, PlaceholderComponent_ng_template_3_img_1_Template, 1, 5, "img", 14); i0.ɵɵtemplate(2, PlaceholderComponent_ng_template_3_ng_template_2_Template, 232, 6, "ng-template", null, 15, i0.ɵɵtemplateRefExtractor); i0.ɵɵelementStart(4, "h2"); i0.ɵɵtext(5); i0.ɵɵelementEnd(); i0.ɵɵelementStart(6, "h3")(7, "span"); i0.ɵɵtext(8); i0.ɵɵelementEnd(); i0.ɵɵtemplate(9, PlaceholderComponent_ng_template_3_ng_container_9_Template, 3, 1, "ng-container", 1); i0.ɵɵtemplate(10, PlaceholderComponent_ng_template_3_ng_container_10_Template, 3, 1, "ng-container", 1); i0.ɵɵelementEnd(); i0.ɵɵtemplate(11, PlaceholderComponent_ng_template_3_h4_11_Template, 3, 1, "h4", 1); i0.ɵɵelementEnd(); } if (rf & 2) { const error_r18 = ctx.$implicit; const _r20 = i0.ɵɵreference(3); i0.ɵɵadvance(1); i0.ɵɵproperty("ngIf", error_r18.imageSrc)("ngIfElse", _r20); i0.ɵɵadvance(4); i0.ɵɵtextInterpolate(error_r18.problem); i0.ɵɵadvance(3); i0.ɵɵtextInterpolate(error_r18.description); i0.ɵɵadvance(1); i0.ɵɵproperty("ngIf", error_r18.mitigation && error_r18.mitigation.length > 0); i0.ɵɵadvance(1); i0.ɵɵproperty("ngIf", error_r18.escalation && error_r18.escalation.length > 0); i0.ɵɵadvance(1); i0.ɵɵproperty("ngIf", error_r18.impactedServices && error_r18.impactedServices.length > 0); } } // empty state const EmptyMessage = { Generic: 'No assets found!' }; const EmptyImgSource = { Generic: 'assets/images/empty/empty-generic.svg' }; const EmptyImgStyle = { Opacity: 1, Width: '64px' }; // error state const ErrorProblem = { Generic: '%s %s currently unavailable', Offline: 'No Internet Connection', NotFound: '%s %s not found' }; const ErrorDescription = { Generic: '%s can not be loaded, due to technical error on our end.', Offline: 'Application recorded network outage.', NotFound: `%s for requested identifier does not exist in the system.` }; const ErrorMitigation = { Generic: 'Please try again later.', Offline: 'Please check your internet connection.', NotFound: '' }; const ErrorEscalation = { // anchor href interpolated in Component constructor with provided config Generic: `If the issue persists, please <a href="%service_req_url%" target="_blank" rel="noopener">open a service request.</a>`, Offline: '', // anchor href interpolated in Component constructor with provided config NotFound: `If you think it is a bug, please <a href="%service_req_url%" target="_blank">open a service request.</a>` }; const ErrorImgSource = { Generic: 'assets/images/placeholder/server-error.svg', Offline: '', NotFound: 'assets/images/placeholder/not-found.svg' }; const ErrorImgStyle = { Opacity: 1, Width: { Generic: '200px', Offline: '280px', NotFound: '150px' } }; /* eslint-enable @typescript-eslint/naming-convention */ /** * ** Generic placeholder component. * * - Could be use in generic Component template but also, inside Clarity Datagrid as content projection of <clr-dg-placeholder> component. * - Handles empty state and error state according provided parameters (instructions). */ export class PlaceholderComponent extends TaurusObject { /** * ** Constructor. */ constructor(elementRef, renderer2, placeholderService, featureConfig) { super(); this.elementRef = elementRef; this.renderer2 = renderer2; this.placeholderService = placeholderService; this.featureConfig = featureConfig; /** * ** Flag to show or hide custom empty state image. * * - default value is FALSE. */ this.showCustomEmptyStateImage = false; /** * ** Flag to show or hide default empty state image in grid. * * - default value is FALSE. */ this.hideDefaultEmptyStateImageInGrid = false; /** * ** Flag to instruct component to show all processed error or to peak the most important one, which is latest, according the HTTP Status code. */ this.renderAllErrors = false; /** * ** Array of error codes for which Placeholder should listen and on ChangeDetection cycle to look for exact match into errorsQueue. */ this.listenForErrors = []; /** * ** Array of error codes pattern for which Placeholder should listen and on ChangeDetection cycle to look for match into errorsQueue. */ this.listenForErrorPatterns = []; /** * ** Context singular or plural. * * - If true - it's plural * - If false - it's singular */ this.plural = false; /** * ** Flag that identifies if error ot empty state template should be rendered. */ this.showError = false; /** * ** Flag that indicates for error template is used system default. */ this.isErrorTemplateSystemDefault = false; /** * ** Identified ErrorRecords in {@link errorsQueue} that exact match {@link listenForErrors} or match {@link listenForErrorPatterns} * * - injected to custom error template if provided * - used when only one error should be shown */ this.identifiedErrors = []; /** * ** Identified ErrorRecord in {@link errorsQueue} that exact match {@link listenForErrors} or match {@link listenForErrorPatterns} * * - injected to custom error template if provided * - used when only one error should be shown */ this.identifiedErrorWithApiMessage = { record: [], problem: '', description: '', mitigation: '', escalation: '', impactedServices: '', apiMessage: null, imageSrc: '', imageWidth: ErrorImgStyle.Width.Generic, imageOpacity: ErrorImgStyle.Opacity }; /** * ** Identified ErrorRecords in {@link errorsQueue} that exact match {@link listenForErrors} or match {@link listenForErrorPatterns} * * - injected to custom error template if provided * - used if iteration of errors is requested */ this.identifiedErrorsWithApiMessage = []; // empty state private fields this._emptyMessage = EmptyMessage.Generic; this._isEmptyMessageExternal = false; this._emptyImgSrc = EmptyImgSource.Generic; this._isEmptyImgSrcExternal = false; this._emptyImgWidth = EmptyImgStyle.Width; this._emptyImgOpacity = EmptyImgStyle.Opacity; this._hideDefaultEmptyStateImageInGrid = false; // error state private fields this._errorsQueue = []; this._errorContext = 'Page data'; const serviceRequestUrl = featureConfig?.placeholder?.serviceRequestUrl ? featureConfig.placeholder.serviceRequestUrl : '#'; ErrorEscalation.Generic = CollectionsUtil.interpolateString(ErrorEscalation.Generic, { searchValue: '%service_req_url%', replaceValue: serviceRequestUrl }); ErrorEscalation.NotFound = CollectionsUtil.interpolateString(ErrorEscalation.NotFound, { searchValue: '%service_req_url%', replaceValue: serviceRequestUrl }); } // empty state /** * ** Text for empty state, if component is rendered without errors or there is no listened error code(s). */ set emptyMessage(value) { if (CollectionsUtil.isString(value) && value.length > 0) { this._isEmptyMessageExternal = true; this._emptyMessage = value; } else { this._isEmptyMessageExternal = false; this._emptyMessage = EmptyMessage.Generic; } } /** * ** Text for empty state. * * - Visualized only if component is rendered without errors or there is no listened error code(s). */ get emptyMessage() { return this._emptyMessage; } /** * ** Empty state image source url. * * - Visualized only if component is rendered without errors or there is no listened error code(s). */ set emptyImgSrc(value) { if (CollectionsUtil.isString(value) && value.length > 0) { this._isEmptyImgSrcExternal = true; this._emptyImgSrc = value; } else { this._isEmptyImgSrcExternal = false; this._emptyImgSrc = EmptyImgSource.Generic; } } /** * ** Empty state image source url. * * - Visualized only if component is rendered without errors or there is no listened error code(s). */ get emptyImgSrc() { return this._emptyImgSrc; } /** * ** Empty state image width. * * - Visualized only if component is rendered without errors or there is no listened error code(s). */ set emptyImgWidth(value) { if (CollectionsUtil.isString(value) && value.length > 0) { this._emptyImgWidth = value; } else { this._emptyImgWidth = EmptyImgStyle.Width; } } /** * ** Empty state image width. * * - Visualized only if component is rendered without errors or there is no listened error code(s). */ get emptyImgWidth() { return this._emptyImgWidth; } /** * ** Empty state image opacity. * * - Visualized only if component is rendered without errors or there is no listened error code(s). */ set emptyImgOpacity(value) { if (CollectionsUtil.isNumber(value) && value >= 1 && value <= 1) { this._emptyImgOpacity = value; } else { this._emptyImgOpacity = EmptyImgStyle.Opacity; } } /** * ** Empty state image opacity. * * - Visualized only if component is rendered without errors or there is no listened error code(s). */ get emptyImgOpacity() { return this._emptyImgOpacity; } // error state /** * ** Errors queue of ErrorRecords injected from parents transitive. */ set errorsQueue(value) { if (CollectionsUtil.isArray(value)) { this._errorsQueue = value; } else { this._errorsQueue = []; } } /** * ** Errors queue of ErrorRecords injected from parents transitive. */ get errorsQueue() { return this._errorsQueue; } /** * ** Error context. * * - Visualized only if listened error code(s) exist in errorsQueue. */ get errorContext() { return this._errorContext; } /** * ** Error context. */ set errorContext(value) { if (CollectionsUtil.isString(value) && value.length > 0) { this._errorContext = value; } else { this._errorContext = 'Page data'; } } /** * ** Resolves custom or system error for identified Error. */ resolveErrorTemplate(identifiedErrorRecordWithMessage) { const httpStatusCode = identifiedErrorRecordWithMessage?.record[0]?.httpStatusCode; let templateRef; // find exact match for custom template depend on Http Status Code switch (httpStatusCode) { case 400 /* BadRequest */: templateRef = this.errorTemplateRefBadRequest; break; case 401 /* Unauthorized */: templateRef = this.errorTemplateRefUnauthorized; break; case 403 /* Forbidden */: templateRef = this.errorTemplateRefForbidden; break; case 404 /* NotFound */: templateRef = this.errorTemplateRefNotFound; break; case 405 /* MethodNotAllowed */: templateRef = this.errorTemplateRefMethodNotAllowed; break; case 409 /* Conflict */: templateRef = this.errorTemplateRefConflict; break; case 422 /* UnprocessableEntity */: templateRef = this.errorTemplateRefUnprocessableEntity; break; case 500 /* InternalServerError */: templateRef = this.errorTemplateRefInternalServerError; break; case 503 /* ServiceUnavailable */: templateRef = this.errorTemplateRefServiceUnavailable; break; default: // No-op. } this.isErrorTemplateSystemDefault = false; // if found exact match for custom template to Http Status Code return immediately if (templateRef instanceof TemplateRef) { return templateRef; } // find match for custom template depend on group 4xx of Http Status Codes if (httpStatusCode >= 400 && httpStatusCode < 500 && this.errorTemplateRefClientErrors instanceof TemplateRef) { return this.errorTemplateRefClientErrors; } // find match for custom template depend on group 5xx of Http Status Codes if (httpStatusCode >= 500 && this.errorTemplateRefServerErrors instanceof TemplateRef) { return this.errorTemplateRefServerErrors; } // fallback to custom generic error template if (this.errorTemplateRefGeneric instanceof TemplateRef) { return this.errorTemplateRefGeneric; } this.isErrorTemplateSystemDefault = true; // return system default error template return this.errorTemplateRefSystemDefault; } /** * @inheritDoc */ ngOnChanges(changes) { if (PlaceholderComponent._isPropertyChanged(changes, 'loading') || PlaceholderComponent._isPropertyChanged(changes, 'errorsQueue') || PlaceholderComponent._isPropertyChanged(changes, 'listenForErrors') || PlaceholderComponent._isPropertyChanged(changes, 'listenForErrorPatterns')) { this._executeRefineCycle(); } } /** * @inheritDoc */ ngOnInit() { this._executeRefineCycle(); } _executeRefineCycle() { try { this._refineErrorState(); this.placeholderService.refineElementsState(this.elementRef, this._hideDefaultEmptyStateImageInGrid); } catch (e) { console.error(e); } } _refineErrorState() { // filter error records and return only records that for component is listening const filteredErrorRecords = filterErrorRecords(this.errorsQueue, this.listenForErrors, this.listenForErrorPatterns); // listened errors records exist, then show error state this.showError = filteredErrorRecords.length > 0; // check is empty state image in grid should be hidden // if error always hide // if empty hide/show depends on injected flag this._hideDefaultEmptyStateImageInGrid = this.showError || this.hideDefaultEmptyStateImageInGrid; // reset buffers that transport data to view template (HTML template) this._resetTransportBuffers(); if (!this.showError) { return; } // populate buffers that transport data to view template (HTML template) this._populateTransportBuffers(filteredErrorRecords); } _resetTransportBuffers() { this.identifiedErrors = []; this.identifiedErrorWithApiMessage = { record: [], problem: '', description: '', mitigation: '', escalation: '', impactedServices: '', apiMessage: null, imageSrc: '', imageWidth: ErrorImgStyle.Width.Generic, imageOpacity: ErrorImgStyle.Opacity }; this.identifiedErrorsWithApiMessage = []; } _populateTransportBuffers(errorRecords) { this.identifiedErrors = [...errorRecords]; this.identifiedErrorWithApiMessage = this._getErrorsToIdentifiedError(errorRecords); this.identifiedErrorsWithApiMessage = errorRecords.map((record) => this._getErrorToIdentifiedError(record)); } _getErrorToIdentifiedError(record) { if (window && window.navigator && !window.navigator.onLine) { return { record: [record], problem: ErrorProblem.Offline, description: ErrorDescription.Offline, mitigation: ErrorMitigation.Offline, escalation: ErrorEscalation.Offline, impactedServices: '', apiMessage: this.placeholderService.extractErrorInformation(record.error), imageSrc: ErrorImgSource.Offline, imageWidth: ErrorImgStyle.Width.Offline, imageOpacity: ErrorImgStyle.Opacity }; } if (record && record.httpStatusCode === 404 /* NotFound */) { return { record: [record], problem: CollectionsUtil.interpolateString(ErrorProblem.NotFound, this._errorContext, this.plural ? 'are' : 'is'), description: CollectionsUtil.interpolateString(ErrorDescription.NotFound, this._errorContext, this.plural ? 'are' : 'is'), mitigation: ErrorMitigation.NotFound, escalation: ErrorEscalation.NotFound, impactedServices: '', apiMessage: this.placeholderService.extractErrorInformation(record.error), imageSrc: ErrorImgSource.NotFound, imageWidth: ErrorImgStyle.Width.NotFound, imageOpacity: ErrorImgStyle.Opacity }; } return { record: [record], problem: CollectionsUtil.interpolateString(ErrorProblem.Generic, this._errorContext, this.plural ? 'are' : 'is'), description: CollectionsUtil.interpolateString(ErrorDescription.Generic, this._errorContext, this.plural ? 'are' : 'is'), mitigation: ErrorMitigation.Generic, escalation: ErrorEscalation.Generic, impactedServices: PlaceholderService.extractClassPublicName(record), apiMessage: this.placeholderService.extractErrorInformation(record.error), imageSrc: ErrorImgSource.Generic, imageWidth: ErrorImgStyle.Width.Generic, imageOpacity: ErrorImgStyle.Opacity }; } _getErrorsToIdentifiedError(errorRecords) { if (window && window.navigator && !window.navigator.onLine) { return { record: errorRecords, problem: ErrorProblem.Offline, description: ErrorDescription.Offline, mitigation: ErrorMitigation.Offline, escalation: ErrorEscalation.Offline, impactedServices: '', apiMessage: this.placeholderService.extractErrorInformation(new Error('No Internet Connection')), imageSrc: ErrorImgSource.Offline, imageWidth: ErrorImgStyle.Width.Offline, imageOpacity: ErrorImgStyle.Opacity }; } const latestIdentifiedError = errorRecords[0]; let filteredErrors = []; let filteredErrorsTmp; // search for ServiceUnavailable 503 filteredErrorsTmp = errorRecords.filter((r) => r.httpStatusCode === 503 /* ServiceUnavailable */); if (filteredErrorsTmp.length > 0) { // if time between latest and identified service unavailable is less than 2s show Service Unavailable if (latestIdentifiedError.code === filteredErrorsTmp[0].code || latestIdentifiedError.time - filteredErrorsTmp[0].time < 2000) { filteredErrors = filteredErrorsTmp; } } // search for InternalServerError 500 filteredErrorsTmp = errorRecords.filter((r) => r.httpStatusCode === 500 /* InternalServerError */); if (filteredErrors.length === 0 && filteredErrorsTmp.length > 0) { // if time between latest and identified internal server error is less than 2s show Internal Server Error if (latestIdentifiedError.code === filteredErrorsTmp[0].code || latestIdentifiedError.time - filteredErrorsTmp[0].time < 2000) { filteredErrors = filteredErrorsTmp; } } // search for NotFound 404 filteredErrorsTmp = errorRecords.filter((r) => r.httpStatusCode === 404 /* NotFound */); if (filteredErrors.length === 0 && filteredErrorsTmp.length > 0) { // if time between latest and identified not found is less than 2s show Not Found if (latestIdentifiedError.code === filteredErrorsTmp[0].code || latestIdentifiedError.time - filteredErrorsTmp[0].time < 2000) { filteredErrors = filteredErrorsTmp; return { record: filteredErrors, problem: CollectionsUtil.interpolateString(ErrorProblem.NotFound, this._errorContext, this.plural ? 'are' : 'is'), description: CollectionsUtil.interpolateString(ErrorDescription.NotFound, this._errorContext, this.plural ? 'are' : 'is'), mitigation: ErrorMitigation.NotFound, escalation: ErrorEscalation.NotFound, impactedServices: '', apiMessage: this.placeholderService.extractErrorInformation(filteredErrors[0].error), imageSrc: ErrorImgSource.NotFound, imageWidth: ErrorImgStyle.Width.NotFound, imageOpacity: ErrorImgStyle.Opacity }; } } // fallback to all identified services if (filteredErrors.length === 0) { filteredErrors = errorRecords; } return { record: filteredErrors, problem: CollectionsUtil.interpolateString(ErrorProblem.Generic, this._errorContext, this.plural ? 'are' : 'is'), description: CollectionsUtil.interpolateString(ErrorDescription.Generic, this._errorContext), mitigation: ErrorMitigation.Generic, escalation: ErrorEscalation.Generic, impactedServices: PlaceholderService.extractClassesPublicNames(filteredErrors), apiMessage: this.placeholderService.extractErrorInformation(filteredErrors[0].error), imageSrc: ErrorImgSource.Generic, imageWidth: ErrorImgStyle.Width.Generic, imageOpacity: ErrorImgStyle.Opacity }; } static _isPropertyChanged(changes, field) { return changes[field] && changes[field].currentValue !== changes[field].previousValue; } } PlaceholderComponent.ɵfac = function PlaceholderComponent_Factory(t) { return new (t || PlaceholderComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i1.PlaceholderService), i0.ɵɵdirectiveInject(SHARED_FEATURES_CONFIG_TOKEN)); }; PlaceholderComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PlaceholderComponent, selectors: [["shared-placeholder"]], contentQueries: function PlaceholderComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) { i0.ɵɵcontentQuery(dirIndex, _c0, 5, TemplateRef); i0.ɵɵcontentQuery(dirIndex, _c1, 5, TemplateRef); i0.ɵɵcontentQuery(dirIndex, _c2, 5, TemplateRef); i0.ɵɵcontentQuery(dirIndex, _c3, 5, TemplateRef); i0.ɵɵcontentQuery(dirIndex, _c4, 5, TemplateRef); i0.ɵɵcontentQuery(dirIndex, _c5, 5, TemplateRef); i0.ɵɵcontentQuery(dirIndex, _c6, 5, TemplateRef); i0.ɵɵcontentQuery(dirIndex, _c7, 5, TemplateRef); i0.ɵɵcontentQuery(dirIndex, _c8, 5, TemplateRef); i0.ɵɵcontentQuery(dirIndex, _c9, 5, TemplateRef); i0.ɵɵcontentQuery(dirIndex, _c10, 5, TemplateRef); i0.ɵɵcontentQuery(dirIndex, _c11, 5, TemplateRef); i0.ɵɵcontentQuery(dirIndex, _c12, 5, TemplateRef); } if (rf & 2) { let _t; i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.errorTemplateRefGeneric = _t.first); i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.errorTemplateRefClientErrors = _t.first); i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.errorTemplateRefBadRequest = _t.first); i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.errorTemplateRefUnauthorized = _t.first); i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.errorTemplateRefForbidden = _t.first); i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.errorTemplateRefNotFound = _t.first); i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.errorTemplateRefMethodNotAllowed = _t.first); i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.errorTemplateRefConflict = _t.first); i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.errorTemplateRefUnprocessableEntity = _t.first); i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.errorTemplateRefServerErrors = _t.first); i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.errorTemplateRefInternalServerError = _t.first); i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.errorTemplateRefServiceUnavailable = _t.first); i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.emptyTemplateRef = _t.first); } }, viewQuery: function PlaceholderComponent_Query(rf, ctx) { if (rf & 1) { i0.ɵɵviewQuery(_c13, 5, TemplateRef); } if (rf & 2) { let _t; i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.errorTemplateRefSystemDefault = _t.first); } }, inputs: { loading: "loading", emptyMessage: "emptyMessage", emptyImgSrc: "emptyImgSrc", emptyImgWidth: "emptyImgWidth", emptyImgOpacity: "emptyImgOpacity", showCustomEmptyStateImage: "showCustomEmptyStateImage", hideDefaultEmptyStateImageInGrid: "hideDefaultEmptyStateImageInGrid", errorsQueue: "errorsQueue", renderAllErrors: "renderAllErrors", listenForErrors: "listenForErrors", listenForErrorPatterns: "listenForErrorPatterns", errorContext: "errorContext", plural: "plural" }, features: [i0.ɵɵProvidersFeature([PlaceholderService]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 5, vars: 2, consts: [[1, "shared__placeholder"], [4, "ngIf"], ["errorTemplateSystemDefault", ""], [1, "shared__placeholder-error-container", 3, "ngClass"], [4, "ngIf", "ngIfElse"], ["renderSingleChosenError", ""], [4, "ngFor", "ngForOf"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], ["defaultEmptyTemplate", ""], [4, "ngTemplateOutlet"], ["onlyEmptyStateMessage", ""], [3, "title"], ["alt", "Empty state icon", 3, "src"], [1, "shared__placeholder-error-template--system-default"], ["alt", "Error state icon", 3, "src", "width", "opacity", 4, "ngIf", "ngIfElse"], ["offlineErrorImageTemplate", ""], ["alt", "Error state icon", 3, "src"], ["id", "Robot_unplugg_animation", "image-rendering", "auto", "baseProfile", "basic", "version", "1.1", "preserveAspectRatio", "xMidYMid meet", "x", "0px", "y", "0px", "width", "280", "height", "203", "xmlns", "http://www.w3.org/2000/svg", "viewBox", "0 0 550 400", 0, "xmlns", "xlink", "http://www.w3.org/1999/xlink"], ["id", "character.ai_hand-and-plug_.__3CClip-Group.__3E", "overflow", "visible"], ["mask", "url(#mask_)"], ["id", "mask_"], ["id", "Layer84_0_FILL"], ["fill", "#FFF", "stroke", "none", "d", "M0 35.9L19.05 35.9 19.05 1.65 0 1.65 0 35.9Z", "fill-opacity", "1"], ["id", "Gradient_1", "gradientUnits", "userSpaceOnUse", "x1", "257.1", "y1", "72.3", "x2", "27.599", "y2", "72.3", "spreadMethod", "pad"], ["offset", "0%", "stop-color", "#FFF"], ["offset", "13.333%", "stop-color", "#F8E5D2"], ["offset", "28.627%", "stop-color", "#F1CAA4"], ["offset", "44.313%", "stop-color", "#ECB47F"], ["offset", "59.215%", "stop-color", "#E8A364"], ["offset", "73.725%", "stop-color", "#E59751"], ["offset", "87.843%", "stop-color", "#E38F47"], ["offset", "100%", "stop-color", "#E38D44"], ["id", "Gradient_2", "gradientUnits", "userSpaceOnUse", "x1", "28.087", "y1", "51.35", "x2", "20.612", "y2", "56.050", "spreadMethod", "pad"], ["offset", "27.843%", "stop-color", "#58B6A5"], ["offset", "83.529%", "stop-color", "#41938A"], ["id", "Gradient_3", "gradientUnits", "userSpaceOnUse", "x1", "37.912", "y1", "28.637", "x2", "6.687", "y2", "37.562", "spreadMethod", "pad"], ["id", "Gradient_4", "gradientUnits", "userSpaceOnUse", "x1", "7.937", "y1", "68.012", "x2", "58.262", "y2", "15.987", "spreadMethod", "pad"], ["offset", "4.705%", "stop-color", "#D2E6F5"], ["offset", "16.862%", "stop-color", "#CCE3F4"], ["offset", "33.725%", "stop-color", "#BCDBF1"], ["offset", "53.333%", "stop-color", "#A2CEED"], ["offset", "65.882%", "stop-color", "#90C5E9"], ["id", "Gradient_5", "gradientUnits", "userSpaceOnUse", "x1", "67.137", "y1", "-4.287", "x2", "39.162", "y2", "31.587", "spreadMethod", "pad"], ["offset", "0%", "stop-color", "#D2E6F5"], ["offset", "100%", "stop-color", "#90C5E9"], ["id", "Gradient_6", "gradientUnits", "userSpaceOnUse", "x1", "65.149", "y1", "60.125", "x2", "118.45", "y2", "46.974", "spreadMethod", "pad"], ["offset", "0%", "stop-color", "#5B96CC"], ["id", "Gradient_7", "gradientUnits", "userSpaceOnUse", "x1", "58.55", "y1", "111.087", "x2", "44.95", "y2", "1.112", "spreadMethod", "pad"], ["offset", "47.450%", "stop-color", "#D2E6F5"], ["offset", "58.039%", "stop-color", "#CCE3F4"], ["offset", "72.549%", "stop-color", "#BCDBF1"], ["offset", "89.411%", "stop-color", "#A2CEED"], ["id", "Gradient_8", "gradientUnits", "userSpaceOnUse", "x1", "94.55", "y1", "173.375", "x2", "94.55", "y2", "95.425", "spreadMethod", "pad"], ["id", "Gradient_9", "gradientUnits", "userSpaceOnUse", "x1", "35.15", "y1", "97.6", "x2", "35.15", "y2", "181.9", "spreadMethod", "pad"], ["id", "Gradient_10", "gradientUnits", "userSpaceOnUse", "x1", "-3", "y1", "74.55", "x2", "151.8", "y2", "74.55", "spreadMethod", "pad"], ["offset", "9.019%", "stop-color", "#FAEEE1"], ["offset", "26.274%", "stop-color", "#F3D0AF"], ["offset", "43.137%", "stop-color", "#EDB886"], ["offset", "59.607%", "stop-color", "#E8A567"], ["offset", "74.901%", "stop-color", "#E59853"], ["offset", "88.627%", "stop-color", "#E39048"], ["id", "Gradient_11", "gradientUnits", "userSpaceOnUse", "x1", "42.675", "y1", "21.737", "x2", "-6.074", "y2", "33.762", "spreadMethod", "pad"], ["id", "Gradient_12", "gradientUnits", "userSpaceOnUse", "x1", "37.125", "y1", "21.737", "x2", "-11.625", "y2", "33.762", "spreadMethod", "pad"], ["id", "Gradient_13", "gradientUnits", "userSpaceOnUse", "x1", "257.1", "y1", "72.25", "x2", "27.599", "y2", "72.25", "spreadMethod", "pad"], ["id", "Gradient_14", "gradientUnits", "userSpaceOnUse", "x1", "59.5", "y1", "-65.375", "x2", "59.5", "y2", "111.675", "spreadMethod", "pad"], ["offset", "11.764%", "stop-color", "#90C5E9", "stop-opacity", "0"], ["offset", "100%", "stop-color", "#90C5E9", "stop-opacity", ".498"], ["id", "Gradient_15", "gradientUnits", "userSpaceOnUse", "x1", "0", "y1", "-144.75", "x2", "0", "y2", "144.75", "spreadMethod", "pad"], ["offset", "12.549%", "stop-color", "#90C5E9", "stop-opacity", "0"], ["offset", "60%", "stop-color", "#90C5E9", "stop-opacity", ".498"], ["offset", "96.078%", "stop-color", "#90C5E9", "stop-opacity", "0"], ["id", "Gradient_16", "gradientUnits", "userSpaceOnUse", "x1", "19.200", "y1", "57.312", "x2", "11.9", "y2", "-1.812", "spreadMethod", "pad"], ["offset", "55.294%", "stop-color", "#56B3A3"], ["offset", "79.607%", "stop-color", "#41938A"], ["id", "Gradient_17", "gradientUnits", "userSpaceOnUse", "x1", "23.950", "y1", "57.312", "x2", "16.65", "y2", "-1.812", "spreadMethod", "pad"], ["id", "Scene-1", "overflow", "visible"], ["id", "Symbol-94", "transform", "translate(275.2 183.3)"], ["fill", "url(#Gradient_15)", "stroke", "none", "d", "M215.1 -144.75L73.7 -143.95 -215.05 144.75 -74.45 144.75 215.1 -144.75Z"], ["fill", "url(#Gradient_14)", "stroke", "none", "d", "M210.1 -65.4L85.15 -64.9 -91.1 111.65 33.3 111.65 210.1 -65.4Z"], ["id", "Symbol-93", "transform", "translate(213.6 32.3)"], ["attributeName", "transform", "additive", "replace", "type", "translate", "repeatCount", "indefinite", "dur", "9.042s", "keyTimes", "0;.005;.009;.014;.018;.023;.028;.032;.037;.041;.046;.051;.055;.06;.065;.069;.074;.078;.083;.088;.092;.097;.101;.106;.111;.115;.12;.124;.129;.433;.438;.442;.447;.452;.456;.461;1", "values", "228.45,80.45;228.501,80.45;228.453,80.498;228.505,80.447;228.505,80.547;228.508,80.546;228.459,80.496;228.46,80.494;228.512,80.444;228.461,80.532;228.462,80.482;228.514,80.431;228.516