@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
JavaScript
/*
* 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