raise-common-lib-new 0.0.63 → 0.0.64
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/esm2022/lib/actions/toolbar/index.component.mjs +4 -3
- package/esm2022/lib/actions/toolbar-item/index.component.mjs +2 -2
- package/esm2022/lib/common-grid/grid-action/grid-action-item/grid-action-item.component.mjs +1 -1
- package/esm2022/lib/common-grid/grid-action/grid-action.component.mjs +3 -2
- package/esm2022/lib/common-grid/index.component.mjs +6 -3
- package/esm2022/lib/dashboard/api.mjs +33 -0
- package/esm2022/lib/dashboard/bar-charts/bar-charts.component.mjs +430 -0
- package/esm2022/lib/dashboard/bar-charts/utils.mjs +18 -0
- package/esm2022/lib/dashboard/dashboard-properties/data-mart-new/data-mart-new.component.mjs +442 -0
- package/esm2022/lib/dashboard/dashboard.service.mjs +295 -0
- package/esm2022/lib/dashboard/dashboardPorlets.service.mjs +2169 -0
- package/esm2022/lib/dashboard/dialog-group/download/index.component.mjs +212 -0
- package/esm2022/lib/dashboard/dialog-group/empty-icon-prompt/empty-icon-prompt.component.mjs +36 -0
- package/esm2022/lib/dashboard/gadget-group/gadget-pivot/gadget-pivot.component.mjs +3211 -0
- package/esm2022/lib/dashboard/gadget-group/gadget-pivot-chart/gadget-pivot.component.mjs +3117 -0
- package/esm2022/lib/dashboard/gadget-group/gadget-table/gadget-table.component.mjs +1099 -0
- package/esm2022/lib/dashboard/gadget-group/gadget-transpose/gadget-transpose.component.mjs +583 -0
- package/esm2022/lib/dashboard/pane-group-new.component.mjs +2031 -0
- package/esm2022/lib/dashboard/sidebar-iconlist/field-filter/field-filter.component.mjs +637 -0
- package/esm2022/lib/dashboard/sidebar-iconlist/field-format/field-format.component.mjs +753 -0
- package/esm2022/lib/dashboard/sidebar-iconlist/portlet-type-new/portlet-type-new.component.mjs +216 -0
- package/esm2022/lib/dashboard/sidebar-iconlist/sidebar-iconlist-new.component.mjs +1239 -0
- package/esm2022/lib/dialog/common-delete-dialog/index.component.mjs +1 -1
- package/esm2022/lib/dialog/common-dialog/index.component.mjs +16 -5
- package/esm2022/lib/float-box/index.component.mjs +18 -4
- package/esm2022/lib/form/checkbox-group/index.component.mjs +35 -5
- package/esm2022/lib/form/drawer-form/drawer-form.component.mjs +177 -76
- package/esm2022/lib/layout/drawer/index.component.mjs +2 -2
- package/esm2022/lib/layout/page-list/index.component.mjs +9 -3
- package/esm2022/lib/layout/page-tab/index.component.mjs +5 -3
- package/esm2022/lib/layout/rs-stepper/constants.mjs +2 -0
- package/esm2022/lib/layout/rs-stepper/index.component.mjs +148 -0
- package/esm2022/lib/raise-common-lib.module.mjs +114 -7
- package/esm2022/lib/service/InjectionToken.mjs +5 -0
- package/esm2022/lib/service/keep-alive.service.mjs +2 -2
- package/esm2022/lib/smart-popup/index.component.mjs +1084 -0
- package/esm2022/public-api.mjs +19 -1
- package/fesm2022/raise-common-lib-new.mjs +18037 -220
- package/fesm2022/raise-common-lib-new.mjs.map +1 -1
- package/lib/common-grid/index.component.d.ts +2 -1
- package/lib/dashboard/api.d.ts +24 -0
- package/lib/dashboard/bar-charts/bar-charts.component.d.ts +63 -0
- package/lib/dashboard/bar-charts/utils.d.ts +1 -0
- package/lib/dashboard/dashboard-properties/data-mart-new/data-mart-new.component.d.ts +52 -0
- package/lib/dashboard/dashboard.service.d.ts +152 -0
- package/lib/dashboard/dashboardPorlets.service.d.ts +214 -0
- package/lib/dashboard/dialog-group/download/index.component.d.ts +36 -0
- package/lib/dashboard/dialog-group/empty-icon-prompt/empty-icon-prompt.component.d.ts +15 -0
- package/lib/dashboard/gadget-group/gadget-pivot/gadget-pivot.component.d.ts +128 -0
- package/lib/dashboard/gadget-group/gadget-pivot-chart/gadget-pivot.component.d.ts +131 -0
- package/lib/dashboard/gadget-group/gadget-table/gadget-table.component.d.ts +77 -0
- package/lib/dashboard/gadget-group/gadget-transpose/gadget-transpose.component.d.ts +47 -0
- package/lib/dashboard/pane-group-new.component.d.ts +169 -0
- package/lib/dashboard/sidebar-iconlist/field-filter/field-filter.component.d.ts +56 -0
- package/lib/dashboard/sidebar-iconlist/field-format/field-format.component.d.ts +62 -0
- package/lib/dashboard/sidebar-iconlist/portlet-type-new/portlet-type-new.component.d.ts +30 -0
- package/lib/dashboard/sidebar-iconlist/sidebar-iconlist-new.component.d.ts +150 -0
- package/lib/dialog/common-dialog/index.component.d.ts +3 -1
- package/lib/float-box/index.component.d.ts +4 -3
- package/lib/form/checkbox-group/index.component.d.ts +5 -0
- package/lib/form/drawer-form/drawer-form.component.d.ts +21 -8
- package/lib/layout/page-list/index.component.d.ts +3 -1
- package/lib/layout/page-tab/index.component.d.ts +1 -0
- package/lib/layout/rs-stepper/constants.d.ts +5 -0
- package/lib/layout/rs-stepper/index.component.d.ts +31 -0
- package/lib/raise-common-lib.module.d.ts +61 -40
- package/lib/service/InjectionToken.d.ts +4 -0
- package/lib/smart-popup/index.component.d.ts +60 -0
- package/package.json +1 -1
- package/public-api.d.ts +18 -0
- package/src/assets/img/dashboard_icon/AddPerson.svg +4 -0
- package/src/assets/img/dashboard_icon/Angle-double-left.svg +12 -0
- package/src/assets/img/dashboard_icon/Angle-double-right.svg +12 -0
- package/src/assets/img/dashboard_icon/Arrow_collapse.svg +3 -0
- package/src/assets/img/dashboard_icon/Arrow_expand.svg +3 -0
- package/src/assets/img/dashboard_icon/Close.svg +4 -0
- package/src/assets/img/dashboard_icon/Edit_label.svg +3 -0
- package/src/assets/img/dashboard_icon/RemoveMini.svg +3 -0
- package/src/assets/img/dashboard_icon/ShareTo.svg +3 -0
- package/src/assets/img/dashboard_icon/add-dashboard.svg +4 -0
- package/src/assets/img/dashboard_icon/add-tab.svg +4 -0
- package/src/assets/img/dashboard_icon/angle-left.svg +12 -0
- package/src/assets/img/dashboard_icon/angle-right.svg +12 -0
- package/src/assets/img/dashboard_icon/area-white.svg +3 -0
- package/src/assets/img/dashboard_icon/area.svg +3 -0
- package/src/assets/img/dashboard_icon/bar-white.svg +14 -0
- package/src/assets/img/dashboard_icon/bar.svg +14 -0
- package/src/assets/img/dashboard_icon/basic-icon-filter.svg +14 -0
- package/src/assets/img/dashboard_icon/chart-combined-active.svg +7 -0
- package/src/assets/img/dashboard_icon/chart-combined.svg +7 -0
- package/src/assets/img/dashboard_icon/column-white.svg +14 -0
- package/src/assets/img/dashboard_icon/column.svg +26 -0
- package/src/assets/img/dashboard_icon/customize.png +0 -0
- package/src/assets/img/dashboard_icon/dashboard-description.svg +18 -0
- package/src/assets/img/dashboard_icon/dashboard-download.svg +18 -0
- package/src/assets/img/dashboard_icon/dashboard-drag.svg +28 -0
- package/src/assets/img/dashboard_icon/dashboard-duplicate.svg +24 -0
- package/src/assets/img/dashboard_icon/dashboard-icon.svg +12 -0
- package/src/assets/img/dashboard_icon/dashboard-properties.svg +18 -0
- package/src/assets/img/dashboard_icon/dashboard-rename.svg +18 -0
- package/src/assets/img/dashboard_icon/dashboard-share.svg +20 -0
- package/src/assets/img/dashboard_icon/dashboard-tab-delete.svg +4 -0
- package/src/assets/img/dashboard_icon/dashboard_Share.svg +3 -0
- package/src/assets/img/dashboard_icon/dashboard_ToolsHide.svg +4 -0
- package/src/assets/img/dashboard_icon/datamart_.svg +5 -0
- package/src/assets/img/dashboard_icon/datamart_Admin.svg +3 -0
- package/src/assets/img/dashboard_icon/datamart_Asset Portfolio.svg +4 -0
- package/src/assets/img/dashboard_icon/datamart_Bank.svg +3 -0
- package/src/assets/img/dashboard_icon/datamart_CRM.svg +6 -0
- package/src/assets/img/dashboard_icon/datamart_Company.svg +6 -0
- package/src/assets/img/dashboard_icon/datamart_Compliance.svg +3 -0
- package/src/assets/img/dashboard_icon/datamart_Contact.svg +3 -0
- package/src/assets/img/dashboard_icon/datamart_DASHBOARD.svg +4 -0
- package/src/assets/img/dashboard_icon/datamart_DOCX.svg +4 -0
- package/src/assets/img/dashboard_icon/datamart_ESG.svg +4 -0
- package/src/assets/img/dashboard_icon/datamart_Financials - Company.svg +3 -0
- package/src/assets/img/dashboard_icon/datamart_Fund.svg +4 -0
- package/src/assets/img/dashboard_icon/datamart_FundFinancial.svg +4 -0
- package/src/assets/img/dashboard_icon/datamart_HTML.svg +4 -0
- package/src/assets/img/dashboard_icon/datamart_Logs.svg +8 -0
- package/src/assets/img/dashboard_icon/datamart_PDF.svg +5 -0
- package/src/assets/img/dashboard_icon/datamart_Project.svg +3 -0
- package/src/assets/img/dashboard_icon/datamart_Templates.svg +7 -0
- package/src/assets/img/dashboard_icon/datamart_Track Change.svg +3 -0
- package/src/assets/img/dashboard_icon/datamart_VirtualGroup.svg +5 -0
- package/src/assets/img/dashboard_icon/datamart_XLS.svg +4 -0
- package/src/assets/img/dashboard_icon/desktop_selected.svg +10 -0
- package/src/assets/img/dashboard_icon/desktop_unselected.svg +10 -0
- package/src/assets/img/dashboard_icon/favourite-grey.svg +3 -0
- package/src/assets/img/dashboard_icon/favourite-yellow.svg +3 -0
- package/src/assets/img/dashboard_icon/forms-checkbox-square-tick.svg +3 -0
- package/src/assets/img/dashboard_icon/ftable-white.svg +24 -0
- package/src/assets/img/dashboard_icon/ftable.svg +24 -0
- package/src/assets/img/dashboard_icon/gadget-basic-arrow-down.svg +14 -0
- package/src/assets/img/dashboard_icon/gadget-basic-format.svg +21 -0
- package/src/assets/img/dashboard_icon/gadget-basic-sub-total.svg +18 -0
- package/src/assets/img/dashboard_icon/gadget-basic-total-1.svg +9 -0
- package/src/assets/img/dashboard_icon/gadget-basic-total.svg +16 -0
- package/src/assets/img/dashboard_icon/gadget-columns.svg +12 -0
- package/src/assets/img/dashboard_icon/gadget-delete.svg +18 -0
- package/src/assets/img/dashboard_icon/gadget-download.svg +18 -0
- package/src/assets/img/dashboard_icon/gadget-duplicate.svg +24 -0
- package/src/assets/img/dashboard_icon/gadget-edit.svg +18 -0
- package/src/assets/img/dashboard_icon/gadget-filters-light.svg +9 -0
- package/src/assets/img/dashboard_icon/gadget-filters.svg +9 -0
- package/src/assets/img/dashboard_icon/gadget-format-0.svg +8 -0
- package/src/assets/img/dashboard_icon/gadget-format-1.svg +8 -0
- package/src/assets/img/dashboard_icon/gadget-format.svg +19 -0
- package/src/assets/img/dashboard_icon/gadget-fullscreen.svg +30 -0
- package/src/assets/img/dashboard_icon/gadget-settings.svg +18 -0
- package/src/assets/img/dashboard_icon/gadget-sub-total-0.svg +18 -0
- package/src/assets/img/dashboard_icon/gadget-sub-total-1.svg +18 -0
- package/src/assets/img/dashboard_icon/gadget-thumbnail.svg +12 -0
- package/src/assets/img/dashboard_icon/gadget-type-light.svg +15 -0
- package/src/assets/img/dashboard_icon/gadget-type.svg +16 -0
- package/src/assets/img/dashboard_icon/geo-white.svg +14 -0
- package/src/assets/img/dashboard_icon/geo.svg +14 -0
- package/src/assets/img/dashboard_icon/historic-IRR-white.svg +9 -0
- package/src/assets/img/dashboard_icon/historic-IRR.svg +5 -0
- package/src/assets/img/dashboard_icon/information-1.png +0 -0
- package/src/assets/img/dashboard_icon/information-grey.svg +4 -0
- package/src/assets/img/dashboard_icon/menu-change-group.svg +3 -0
- package/src/assets/img/dashboard_icon/menu-close.svg +20 -0
- package/src/assets/img/dashboard_icon/menu-delete.svg +18 -0
- package/src/assets/img/dashboard_icon/menu-description.svg +19 -0
- package/src/assets/img/dashboard_icon/menu-download.svg +24 -0
- package/src/assets/img/dashboard_icon/menu-drag.svg +28 -0
- package/src/assets/img/dashboard_icon/menu-duplicate.svg +26 -0
- package/src/assets/img/dashboard_icon/menu-properties.svg +18 -0
- package/src/assets/img/dashboard_icon/menu-rename.svg +23 -0
- package/src/assets/img/dashboard_icon/menu-share.svg +20 -0
- package/src/assets/img/dashboard_icon/menu-toolbar.svg +10 -0
- package/src/assets/img/dashboard_icon/mobile_selected.svg +10 -0
- package/src/assets/img/dashboard_icon/mobile_unselected.svg +10 -0
- package/src/assets/img/dashboard_icon/more_Save.svg +3 -0
- package/src/assets/img/dashboard_icon/more_View.svg +3 -0
- package/src/assets/img/dashboard_icon/multi-series-white.svg +20 -0
- package/src/assets/img/dashboard_icon/multi-series.svg +6 -0
- package/src/assets/img/dashboard_icon/paint-bucket.svg +6 -0
- package/src/assets/img/dashboard_icon/pie-white.svg +16 -0
- package/src/assets/img/dashboard_icon/pie.svg +16 -0
- package/src/assets/img/dashboard_icon/pivot-chart-active.svg +8 -0
- package/src/assets/img/dashboard_icon/pivot-chart.svg +8 -0
- package/src/assets/img/dashboard_icon/pivot-white.svg +8 -0
- package/src/assets/img/dashboard_icon/pivot.svg +8 -0
- package/src/assets/img/dashboard_icon/pivot_column.svg +9 -0
- package/src/assets/img/dashboard_icon/pivot_column_active.svg +9 -0
- package/src/assets/img/dashboard_icon/pivot_line.svg +12 -0
- package/src/assets/img/dashboard_icon/pivot_line_active.svg +12 -0
- package/src/assets/img/dashboard_icon/print-A2.svg +3 -0
- package/src/assets/img/dashboard_icon/radar-white.svg +19 -0
- package/src/assets/img/dashboard_icon/radar.svg +19 -0
- package/src/assets/img/dashboard_icon/saveAs.svg +3 -0
- package/src/assets/img/dashboard_icon/search_input.svg +4 -0
- package/src/assets/img/dashboard_icon/table-3-white.svg +16 -0
- package/src/assets/img/dashboard_icon/table-3.svg +16 -0
- package/src/assets/img/dashboard_icon/table-filter-off.svg +5 -0
- package/src/assets/img/dashboard_icon/table-filter-on.svg +5 -0
- package/src/assets/img/dashboard_icon/tag_dashboard_selected.svg +3 -0
- package/src/assets/img/dashboard_icon/tag_dashboard_unselected.svg +3 -0
- package/src/assets/img/dashboard_icon/tag_share_selected.svg +3 -0
- package/src/assets/img/dashboard_icon/tag_share_unselected.svg +3 -0
- package/src/assets/img/dashboard_icon/tick.svg +26 -0
- package/src/assets/img/dashboard_icon/toolbar_AddDashboard.svg +5 -0
- package/src/assets/img/dashboard_icon/toolbar_AddGroup.svg +3 -0
- package/src/assets/img/dashboard_icon/toolbar_AddReport.svg +3 -0
- package/src/assets/img/dashboard_icon/toolbar_CollapseAll.svg +3 -0
- package/src/assets/img/dashboard_icon/toolbar_Customize.svg +3 -0
- package/src/assets/img/dashboard_icon/toolbar_DeleteDark.svg +3 -0
- package/src/assets/img/dashboard_icon/toolbar_Duplicate.svg +3 -0
- package/src/assets/img/dashboard_icon/toolbar_Edit.svg +3 -0
- package/src/assets/img/dashboard_icon/toolbar_ExpandAll.svg +3 -0
- package/src/assets/img/dashboard_icon/toolbar_Search.svg +3 -0
- package/src/assets/img/dashboard_icon/topbar-menu.svg +33 -0
- package/src/assets/img/dashboard_icon/topbar-refresh.svg +17 -0
- package/src/assets/img/dashboard_icon/topbar-tool-off.svg +12 -0
- package/src/assets/img/dashboard_icon/topbar-tool-on.svg +12 -0
- package/src/assets/img/dashboard_icon/trade-up-white.svg +14 -0
- package/src/assets/img/dashboard_icon/trade-up.svg +14 -0
- package/src/assets/img/dashboard_icon/transpose-white.svg +16 -0
- package/src/assets/img/dashboard_icon/transpose.svg +16 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Injectable } from "@angular/core";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class ApiList {
|
|
4
|
+
baseurl = "/api/";
|
|
5
|
+
urlList = {
|
|
6
|
+
GetSchema: "ws/DatamartWS/GetSchema",
|
|
7
|
+
GetPortletDataV2: "ws/DatamartWS/GetPortletDataV2",
|
|
8
|
+
GetDashboardV2: "ws/DashboardWS.asmx/GetDashboardV2",
|
|
9
|
+
SaveDashboardPortlets: "ws/DashboardWS.asmx/SaveDashboardPortlets",
|
|
10
|
+
GetPropertyList: "ws/CommonWS.asmx/GetPropertyList",
|
|
11
|
+
LPGetPropertyList: "ws/LPCommonWS.asmx/GetPropertyList",
|
|
12
|
+
GetDistinctColumnValsByPortletDataParam: "ws/DatamartWS/GetDistinctColumnValsByPortletDataParam",
|
|
13
|
+
FileGet: "ws/FileGet.ashx",
|
|
14
|
+
GetSources: "ws/DatamartWS/GetSources",
|
|
15
|
+
AddDataMartTables: "ws/DashboardWS.asmx/AddDataMartTables",
|
|
16
|
+
// GetPortletDataOrCreate: "ws/DatamartWS/GetPortletDataOrCreate",
|
|
17
|
+
GetPortletDataOrCreate: "ws/DashboardWS.asmx/GetPortletDataOrCreate",
|
|
18
|
+
GetAllCompanyByAccount: "ws/CompanyWS.asmx/GetAllCompanyByAccount",
|
|
19
|
+
GetDropdown: "ws/CommonWS.asmx/GetDropdown",
|
|
20
|
+
GetFinancialItems: "ws/DashboardWS.asmx/GetFinancialItems",
|
|
21
|
+
GetFundListByInvestorId: "ws/FundWS.asmx/GetFundListByInvestorId",
|
|
22
|
+
GetAllInvestee: "ws/DashboardWS.asmx/GetAllInvestee",
|
|
23
|
+
};
|
|
24
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ApiList, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
25
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ApiList, providedIn: "root" });
|
|
26
|
+
}
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ApiList, decorators: [{
|
|
28
|
+
type: Injectable,
|
|
29
|
+
args: [{
|
|
30
|
+
providedIn: "root",
|
|
31
|
+
}]
|
|
32
|
+
}] });
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmFpc2UtY29tbW9uLWxpYi9zcmMvbGliL2Rhc2hib2FyZC9hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLM0MsTUFBTSxPQUFPLE9BQU87SUFDbEIsT0FBTyxHQUFRLE9BQU8sQ0FBQztJQUNoQixPQUFPLEdBQUc7UUFDZixTQUFTLEVBQUUseUJBQXlCO1FBQ3BDLGdCQUFnQixFQUFFLGdDQUFnQztRQUNsRCxjQUFjLEVBQUUsb0NBQW9DO1FBQ3BELHFCQUFxQixFQUFFLDJDQUEyQztRQUNsRSxlQUFlLEVBQUUsa0NBQWtDO1FBQ25ELGlCQUFpQixFQUFFLG9DQUFvQztRQUN2RCx1Q0FBdUMsRUFDckMsdURBQXVEO1FBQ3pELE9BQU8sRUFBRSxpQkFBaUI7UUFDMUIsVUFBVSxFQUFFLDBCQUEwQjtRQUN0QyxpQkFBaUIsRUFBRSx1Q0FBdUM7UUFDMUQsa0VBQWtFO1FBQ2xFLHNCQUFzQixFQUFFLDRDQUE0QztRQUNwRSxzQkFBc0IsRUFBRSwwQ0FBMEM7UUFDbEUsV0FBVyxFQUFFLDhCQUE4QjtRQUMzQyxpQkFBaUIsRUFBRSx1Q0FBdUM7UUFDMUQsdUJBQXVCLEVBQUUsd0NBQXdDO1FBQ2pFLGNBQWMsRUFBRSxvQ0FBb0M7S0FDckQsQ0FBQzt3R0FyQlMsT0FBTzs0R0FBUCxPQUFPLGNBRk4sTUFBTTs7NEZBRVAsT0FBTztrQkFIbkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiBcInJvb3RcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIEFwaUxpc3Qge1xyXG4gIGJhc2V1cmw6IGFueSA9IFwiL2FwaS9cIjtcclxuICBwdWJsaWMgdXJsTGlzdCA9IHtcclxuICAgIEdldFNjaGVtYTogXCJ3cy9EYXRhbWFydFdTL0dldFNjaGVtYVwiLFxyXG4gICAgR2V0UG9ydGxldERhdGFWMjogXCJ3cy9EYXRhbWFydFdTL0dldFBvcnRsZXREYXRhVjJcIixcclxuICAgIEdldERhc2hib2FyZFYyOiBcIndzL0Rhc2hib2FyZFdTLmFzbXgvR2V0RGFzaGJvYXJkVjJcIixcclxuICAgIFNhdmVEYXNoYm9hcmRQb3J0bGV0czogXCJ3cy9EYXNoYm9hcmRXUy5hc214L1NhdmVEYXNoYm9hcmRQb3J0bGV0c1wiLFxyXG4gICAgR2V0UHJvcGVydHlMaXN0OiBcIndzL0NvbW1vbldTLmFzbXgvR2V0UHJvcGVydHlMaXN0XCIsXHJcbiAgICBMUEdldFByb3BlcnR5TGlzdDogXCJ3cy9MUENvbW1vbldTLmFzbXgvR2V0UHJvcGVydHlMaXN0XCIsXHJcbiAgICBHZXREaXN0aW5jdENvbHVtblZhbHNCeVBvcnRsZXREYXRhUGFyYW06XHJcbiAgICAgIFwid3MvRGF0YW1hcnRXUy9HZXREaXN0aW5jdENvbHVtblZhbHNCeVBvcnRsZXREYXRhUGFyYW1cIixcclxuICAgIEZpbGVHZXQ6IFwid3MvRmlsZUdldC5hc2h4XCIsXHJcbiAgICBHZXRTb3VyY2VzOiBcIndzL0RhdGFtYXJ0V1MvR2V0U291cmNlc1wiLFxyXG4gICAgQWRkRGF0YU1hcnRUYWJsZXM6IFwid3MvRGFzaGJvYXJkV1MuYXNteC9BZGREYXRhTWFydFRhYmxlc1wiLFxyXG4gICAgLy8gR2V0UG9ydGxldERhdGFPckNyZWF0ZTogXCJ3cy9EYXRhbWFydFdTL0dldFBvcnRsZXREYXRhT3JDcmVhdGVcIixcclxuICAgIEdldFBvcnRsZXREYXRhT3JDcmVhdGU6IFwid3MvRGFzaGJvYXJkV1MuYXNteC9HZXRQb3J0bGV0RGF0YU9yQ3JlYXRlXCIsXHJcbiAgICBHZXRBbGxDb21wYW55QnlBY2NvdW50OiBcIndzL0NvbXBhbnlXUy5hc214L0dldEFsbENvbXBhbnlCeUFjY291bnRcIiwgLy8g6I635Y+W5YWs5Y+45YiX6KGo77yI5omA5pyJ5pWw5o2u77yJXHJcbiAgICBHZXREcm9wZG93bjogXCJ3cy9Db21tb25XUy5hc214L0dldERyb3Bkb3duXCIsIC8vIOiOt+WPluS4i+aLieiPnOWNlVxyXG4gICAgR2V0RmluYW5jaWFsSXRlbXM6IFwid3MvRGFzaGJvYXJkV1MuYXNteC9HZXRGaW5hbmNpYWxJdGVtc1wiLFxyXG4gICAgR2V0RnVuZExpc3RCeUludmVzdG9ySWQ6IFwid3MvRnVuZFdTLmFzbXgvR2V0RnVuZExpc3RCeUludmVzdG9ySWRcIixcclxuICAgIEdldEFsbEludmVzdGVlOiBcIndzL0Rhc2hib2FyZFdTLmFzbXgvR2V0QWxsSW52ZXN0ZWVcIixcclxuICB9O1xyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,430 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { Component, Input, ViewChild, ViewEncapsulation, } from "@angular/core";
|
|
3
|
+
import { DecimalPipe } from "@angular/common";
|
|
4
|
+
import { debounce } from "./utils";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../dashboard.service";
|
|
7
|
+
import * as i2 from "@angular/common";
|
|
8
|
+
import * as i3 from "@syncfusion/ej2-angular-charts";
|
|
9
|
+
export class BarChartsComponent {
|
|
10
|
+
ref;
|
|
11
|
+
dashboardService;
|
|
12
|
+
decimalPipe;
|
|
13
|
+
content;
|
|
14
|
+
chart;
|
|
15
|
+
dataColumn = []; // 柱状图数据源
|
|
16
|
+
dataLine = []; // 折线图数据源
|
|
17
|
+
dataStackingColumn = []; // 堆积图数据源
|
|
18
|
+
columnType = "number";
|
|
19
|
+
lineType = "number";
|
|
20
|
+
themeColor = null;
|
|
21
|
+
portlet = null;
|
|
22
|
+
dashboard = null;
|
|
23
|
+
column = [];
|
|
24
|
+
columnLine = [];
|
|
25
|
+
config;
|
|
26
|
+
_dataStackingColumn = [];
|
|
27
|
+
marker;
|
|
28
|
+
specialKey = ["IRR", "DPI", "MOIC", "PIC", "RVPI", "TVPI"];
|
|
29
|
+
pageLoading = false;
|
|
30
|
+
zoomSettings = {
|
|
31
|
+
// enableMouseWheelZooming: true,
|
|
32
|
+
// enableSelectionZooming: true,
|
|
33
|
+
// toolbarItems: [],
|
|
34
|
+
// enablePan: true,
|
|
35
|
+
enable: false,
|
|
36
|
+
};
|
|
37
|
+
//Initializing Primary X Axis
|
|
38
|
+
primaryXAxis = {
|
|
39
|
+
valueType: "Category",
|
|
40
|
+
labelIntersectAction: "Rotate45",
|
|
41
|
+
majorGridLines: { width: 0 },
|
|
42
|
+
majorTickLines: { width: 0 },
|
|
43
|
+
edgeLabelPlacement: "Shift",
|
|
44
|
+
// enableScrollbar: true,
|
|
45
|
+
// enableTrim: true,
|
|
46
|
+
// enablePan: true,
|
|
47
|
+
// rotate: 0,
|
|
48
|
+
labelStyle: {
|
|
49
|
+
fontWeight: "normal",
|
|
50
|
+
color: "#44566c",
|
|
51
|
+
fontFamily: "Arial",
|
|
52
|
+
size: "13px",
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
//Initializing Primary Y Axis
|
|
56
|
+
primaryYAxis = {
|
|
57
|
+
title: "",
|
|
58
|
+
lineStyle: { width: 0 },
|
|
59
|
+
majorTickLines: { width: 0 },
|
|
60
|
+
majorGridLines: { color: "#f2f2f2" },
|
|
61
|
+
labelFormat: "n2",
|
|
62
|
+
};
|
|
63
|
+
chartArea = {
|
|
64
|
+
border: {
|
|
65
|
+
width: 0,
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
// 鼠标移到bar上面显示的box
|
|
69
|
+
tooltip = {
|
|
70
|
+
enable: true,
|
|
71
|
+
};
|
|
72
|
+
// 图例设置
|
|
73
|
+
legend = {
|
|
74
|
+
visible: true,
|
|
75
|
+
enableHighlight: true,
|
|
76
|
+
};
|
|
77
|
+
// custom code start
|
|
78
|
+
load(args) {
|
|
79
|
+
let selectedTheme = location.hash.split("/")[1];
|
|
80
|
+
selectedTheme = selectedTheme ? selectedTheme : "Material";
|
|
81
|
+
args.chart.theme = ((selectedTheme.charAt(0).toUpperCase() + selectedTheme.slice(1))
|
|
82
|
+
.replace(/-dark/i, "Dark")
|
|
83
|
+
.replace(/contrast/i, "Contrast"));
|
|
84
|
+
}
|
|
85
|
+
// custom code end
|
|
86
|
+
title = "";
|
|
87
|
+
height = "250px";
|
|
88
|
+
width = "100%";
|
|
89
|
+
customPalette = []; //默认颜色组
|
|
90
|
+
subscriptions = [];
|
|
91
|
+
exportType;
|
|
92
|
+
markerFormat = "";
|
|
93
|
+
constructor(ref, dashboardService, decimalPipe) {
|
|
94
|
+
this.ref = ref;
|
|
95
|
+
this.dashboardService = dashboardService;
|
|
96
|
+
this.decimalPipe = decimalPipe;
|
|
97
|
+
}
|
|
98
|
+
ngOnInit() {
|
|
99
|
+
this.config = this.portlet.config && JSON.parse(this.portlet.config);
|
|
100
|
+
this.initMarkerConfig();
|
|
101
|
+
this.initData();
|
|
102
|
+
this.subscriptions.push(this.dashboardService.getSwitchConfig().subscribe((res) => {
|
|
103
|
+
if (this.portlet.newId === res.id) {
|
|
104
|
+
this.config.hasMarker = res.checked;
|
|
105
|
+
this.portlet.config = JSON.stringify(this.config);
|
|
106
|
+
this.initMarkerConfig();
|
|
107
|
+
this.chart.refresh();
|
|
108
|
+
}
|
|
109
|
+
}), this.dashboardService.getMarkerFormat().subscribe((res) => {
|
|
110
|
+
if (this.portlet.newId === res.newId) {
|
|
111
|
+
this.config.markerFormat = res.markerFormat;
|
|
112
|
+
this.portlet.config = JSON.stringify(this.config);
|
|
113
|
+
this.markerFormat = res.markerFormat;
|
|
114
|
+
this.initMarkerConfig();
|
|
115
|
+
this.chart.refresh();
|
|
116
|
+
}
|
|
117
|
+
}));
|
|
118
|
+
}
|
|
119
|
+
initMarkerConfig() {
|
|
120
|
+
const format = this.config.portletType === "historicalIRR" ? "p2" : "n2";
|
|
121
|
+
this.pageLoading = false;
|
|
122
|
+
const hasMarker = this.config && this.config.hasMarker;
|
|
123
|
+
this.markerFormat = this.config && this.config.markerFormat;
|
|
124
|
+
this.marker = {
|
|
125
|
+
visible: hasMarker,
|
|
126
|
+
dataLabel: {
|
|
127
|
+
visible: hasMarker,
|
|
128
|
+
format,
|
|
129
|
+
},
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
textRender(e) {
|
|
133
|
+
this.dataLine.forEach((data) => {
|
|
134
|
+
Object.keys(data).forEach((key) => {
|
|
135
|
+
if (this.specialKey.includes(key)) {
|
|
136
|
+
if (!e.text) {
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
if (e.text != data[key]) {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
if (key === "IRR") {
|
|
143
|
+
e.text = (e.text * 100).toFixed(2) + "%";
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
e.text = Number(e.text).toFixed(2) + "x";
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
this.dataColumn.forEach((data) => {
|
|
152
|
+
Object.keys(data).forEach((key) => {
|
|
153
|
+
if (this.specialKey.includes(key)) {
|
|
154
|
+
if (!e.text) {
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
if (e.text != data[key]) {
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
if (key === "IRR") {
|
|
161
|
+
e.text = (e.text * 100).toFixed(2) + "%";
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
e.text = Number(e.text).toFixed(2) + "x";
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
});
|
|
169
|
+
if (!isNaN(e.text)) {
|
|
170
|
+
if (e.text !== 0) {
|
|
171
|
+
switch (this.markerFormat) {
|
|
172
|
+
case "M":
|
|
173
|
+
e.text =
|
|
174
|
+
this.decimalPipe.transform(e.text / 1000000, "1.2-2") + "m";
|
|
175
|
+
return;
|
|
176
|
+
case "K":
|
|
177
|
+
e.text = this.decimalPipe.transform(e.text / 1000, "1.2-2") + "k";
|
|
178
|
+
return;
|
|
179
|
+
case "bn":
|
|
180
|
+
e.text =
|
|
181
|
+
this.decimalPipe.transform(e.text / 1000000000, "1.2-2") + "b";
|
|
182
|
+
return;
|
|
183
|
+
case "T":
|
|
184
|
+
e.text =
|
|
185
|
+
this.decimalPipe.transform(e.text / 1000000000000, "1.2-2") + "t";
|
|
186
|
+
return;
|
|
187
|
+
default:
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
e.text = "";
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
initData() {
|
|
197
|
+
this.column = [];
|
|
198
|
+
this.columnLine = [];
|
|
199
|
+
if (this.dataColumn && this.dataColumn.length > 0) {
|
|
200
|
+
for (var i in this.dataColumn[0]) {
|
|
201
|
+
if (i != "period") {
|
|
202
|
+
this.column.push({
|
|
203
|
+
xName: "period",
|
|
204
|
+
yName: i,
|
|
205
|
+
name: i,
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
if (this.dataLine && this.dataLine.length > 0) {
|
|
211
|
+
for (var i in this.dataLine[0]) {
|
|
212
|
+
if (i != "period") {
|
|
213
|
+
this.columnLine.push({
|
|
214
|
+
xName: "period",
|
|
215
|
+
yName: i,
|
|
216
|
+
name: i,
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
if (this.themeColor && this.themeColor.length > 0) {
|
|
222
|
+
this.customPalette = this.themeColor;
|
|
223
|
+
}
|
|
224
|
+
this.ref.markForCheck();
|
|
225
|
+
}
|
|
226
|
+
ngOnChanges(changes) {
|
|
227
|
+
// if (
|
|
228
|
+
// (changes.dataColumn &&
|
|
229
|
+
// !this.arraysAreEqual(
|
|
230
|
+
// changes.dataColumn.currentValue,
|
|
231
|
+
// changes.dataColumn.previousValue
|
|
232
|
+
// )) ||
|
|
233
|
+
// (changes.dataLine &&
|
|
234
|
+
// !this.arraysAreEqual(
|
|
235
|
+
// changes.dataLine.currentValue,
|
|
236
|
+
// changes.dataLine.previousValue
|
|
237
|
+
// )) ||
|
|
238
|
+
// !this.arraysAreEqual(
|
|
239
|
+
// changes.themeColor ? changes.themeColor.currentValue : null,
|
|
240
|
+
// changes.themeColor ? changes.themeColor.previousValue : null
|
|
241
|
+
// )
|
|
242
|
+
// ) {
|
|
243
|
+
// this.initData();
|
|
244
|
+
// }
|
|
245
|
+
}
|
|
246
|
+
refreshChart() {
|
|
247
|
+
setTimeout(() => {
|
|
248
|
+
if (this.chart)
|
|
249
|
+
this.chart.refresh();
|
|
250
|
+
}, 0);
|
|
251
|
+
}
|
|
252
|
+
resizeObserver;
|
|
253
|
+
ngAfterViewInit() {
|
|
254
|
+
this.resizeObserver = new ResizeObserver((entries) => {
|
|
255
|
+
for (let entry of entries) {
|
|
256
|
+
const { width, height } = entry.contentRect;
|
|
257
|
+
// 在这里执行你想要的操作,比如更新图表或其他相关操作
|
|
258
|
+
this.changeSize(width, height);
|
|
259
|
+
}
|
|
260
|
+
});
|
|
261
|
+
if (this.content) {
|
|
262
|
+
this.resizeObserver.observe(this.content.nativeElement);
|
|
263
|
+
}
|
|
264
|
+
this.subscriptions.push(this.dashboardService.getStartRefresh().subscribe((dashboardId) => {
|
|
265
|
+
if (dashboardId === this.dashboard.id) {
|
|
266
|
+
this.pageLoading = true;
|
|
267
|
+
this.ref.markForCheck();
|
|
268
|
+
}
|
|
269
|
+
}));
|
|
270
|
+
this.subscriptions.push(this.dashboardService.getRefreshGadget().subscribe((e) => {
|
|
271
|
+
if (!e) {
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
const newId = e["newId"];
|
|
275
|
+
if (newId === this.portlet.newId || newId === this.portlet.id) {
|
|
276
|
+
this.initMarkerConfig();
|
|
277
|
+
this.refreshChart();
|
|
278
|
+
}
|
|
279
|
+
}));
|
|
280
|
+
}
|
|
281
|
+
ngOnDestroy() {
|
|
282
|
+
// 在组件销毁时取消监听
|
|
283
|
+
if (this.resizeObserver) {
|
|
284
|
+
this.resizeObserver.disconnect();
|
|
285
|
+
}
|
|
286
|
+
this.subscriptions.forEach((ele) => ele.unsubscribe());
|
|
287
|
+
}
|
|
288
|
+
changeSize(width, height) {
|
|
289
|
+
if (!width || !height) {
|
|
290
|
+
return;
|
|
291
|
+
}
|
|
292
|
+
this.width = `${width}px`;
|
|
293
|
+
this.height = `${height - 10}px`;
|
|
294
|
+
this.ref.markForCheck();
|
|
295
|
+
}
|
|
296
|
+
exportChart() {
|
|
297
|
+
this.chart.exportModule.export("PNG", "Chart");
|
|
298
|
+
}
|
|
299
|
+
OnChartAxisLabeRender(args) {
|
|
300
|
+
if (args.axis.propName == "primaryYAxis") {
|
|
301
|
+
if (this.columnType == "percent" ||
|
|
302
|
+
(this.dataColumn &&
|
|
303
|
+
this.dataColumn.length <= 0 &&
|
|
304
|
+
this.lineType == "percent")) {
|
|
305
|
+
args.text = this.formatPercentage(args.text);
|
|
306
|
+
}
|
|
307
|
+
else {
|
|
308
|
+
if (isNaN(args.text)) {
|
|
309
|
+
return;
|
|
310
|
+
}
|
|
311
|
+
args.text =
|
|
312
|
+
Number(args.text) >= 0
|
|
313
|
+
? this.getT(args.text)
|
|
314
|
+
: `-${this.getT(args.text)}`;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
else if (args.axis.propName == "yAxis2") {
|
|
318
|
+
if (this.lineType == "percent" &&
|
|
319
|
+
this.dataColumn &&
|
|
320
|
+
this.dataColumn.length > 0) {
|
|
321
|
+
args.text = this.formatPercentage(args.text);
|
|
322
|
+
}
|
|
323
|
+
else {
|
|
324
|
+
if (isNaN(args.text)) {
|
|
325
|
+
return;
|
|
326
|
+
}
|
|
327
|
+
args.text =
|
|
328
|
+
Number(args.text) >= 0
|
|
329
|
+
? this.getT(args.text)
|
|
330
|
+
: `-${this.getT(args.text)}`;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
getT(value) {
|
|
335
|
+
return String(value)
|
|
336
|
+
.replace(/[^0-9.]/g, "")
|
|
337
|
+
.replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,");
|
|
338
|
+
// return this.decimalPipe.transform(Number(value), "1.2-2");
|
|
339
|
+
}
|
|
340
|
+
formatPercentage(decimal) {
|
|
341
|
+
const percentage = (decimal * 100).toFixed(2);
|
|
342
|
+
return `${percentage}%`;
|
|
343
|
+
}
|
|
344
|
+
arraysAreEqual(arr1, arr2) {
|
|
345
|
+
if ((!arr1 && arr2) || (arr1 && !arr2)) {
|
|
346
|
+
return false;
|
|
347
|
+
}
|
|
348
|
+
if (!arr1 && !arr2) {
|
|
349
|
+
return true;
|
|
350
|
+
}
|
|
351
|
+
if (arr1.length !== arr2.length) {
|
|
352
|
+
return false;
|
|
353
|
+
}
|
|
354
|
+
for (let i = 0; i < arr1.length; i++) {
|
|
355
|
+
const obj1 = arr1[i];
|
|
356
|
+
const obj2 = arr2[i];
|
|
357
|
+
if (typeof obj1 !== "object" || typeof obj2 !== "object") {
|
|
358
|
+
if (obj1 !== obj2) {
|
|
359
|
+
return false;
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
else {
|
|
363
|
+
if (!this.objectsAreEqual(obj1, obj2)) {
|
|
364
|
+
return false;
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
return true;
|
|
369
|
+
}
|
|
370
|
+
objectsAreEqual(obj1, obj2) {
|
|
371
|
+
const keys1 = Object.keys(obj1);
|
|
372
|
+
const keys2 = Object.keys(obj2);
|
|
373
|
+
if (keys1.length !== keys2.length) {
|
|
374
|
+
return false;
|
|
375
|
+
}
|
|
376
|
+
for (let key of keys1) {
|
|
377
|
+
if (obj1[key] !== obj2[key]) {
|
|
378
|
+
return false;
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
return true;
|
|
382
|
+
}
|
|
383
|
+
onPointRender(e) {
|
|
384
|
+
if (e.point.y == 0) {
|
|
385
|
+
e.cancel = true;
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
tooltipRender(args) {
|
|
389
|
+
if (isNaN(args.data.pointY)) {
|
|
390
|
+
return;
|
|
391
|
+
}
|
|
392
|
+
if (this.config.portletType === "historicalIRR") {
|
|
393
|
+
args.text = `${args.data.pointX}: ${(args.data.pointY * 100).toFixed(2)}%`;
|
|
394
|
+
return;
|
|
395
|
+
}
|
|
396
|
+
args.text = `${args.data.pointX}: ${this.decimalPipe.transform(args.data.pointY, "1.2-2")}`;
|
|
397
|
+
}
|
|
398
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BarChartsComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.DashboardService }, { token: i2.DecimalPipe }], target: i0.ɵɵFactoryTarget.Component });
|
|
399
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: BarChartsComponent, selector: "rs-bar-charts", inputs: { dataColumn: "dataColumn", dataLine: "dataLine", dataStackingColumn: "dataStackingColumn", columnType: "columnType", lineType: "lineType", themeColor: "themeColor", portlet: "portlet", dashboard: "dashboard" }, providers: [DecimalPipe], viewQueries: [{ propertyName: "content", first: true, predicate: ["chartContent"], descendants: true }, { propertyName: "chart", first: true, predicate: ["chart"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\r\n\tclass=\"content\"\r\n\t#chartContent\r\n\tid=\"chartContent\"\r\n\t*ngIf=\"dataColumn || dataLine\"\r\n>\r\n\t<ejs-chart\r\n\t\t#chart\r\n\t\tstyle=\"display: block\"\r\n\t\talign=\"center\"\r\n\t\t[title]=\"title\"\r\n\t\t[primaryXAxis]=\"primaryXAxis\"\r\n\t\t[primaryYAxis]=\"primaryYAxis\"\r\n\t\t[tooltip]=\"tooltip\"\r\n\t\t(load)=\"load($event)\"\r\n\t\t[chartArea]=\"chartArea\"\r\n\t\twidth=\"100%\"\r\n\t\t[height]=\"height\"\r\n\t\t[width]=\"width\"\r\n\t\t[zoomSettings]=\"zoomSettings\"\r\n\t\t[legendSettings]=\"legend\"\r\n\t\t[palettes]=\"customPalette\"\r\n\t\t(pointRender)=\"onPointRender($event)\"\r\n\t\t[enableAnimation]=\"false\"\r\n\t\t(textRender)=\"textRender($event)\"\r\n\t\t(tooltipRender)=\"tooltipRender($event)\"\r\n\t\t(axisLabelRender)=\"OnChartAxisLabeRender($event)\"\r\n\t>\r\n\t\t<e-series-collection>\r\n\t\t\t<ng-container *ngIf=\"dataColumn && dataColumn.length > 0\">\r\n\t\t\t\t<e-series\r\n\t\t\t\t\t*ngFor=\"let i of column\"\r\n\t\t\t\t\t[dataSource]=\"dataColumn\"\r\n\t\t\t\t\ttype=\"Column\"\r\n\t\t\t\t\t[xName]=\"i.xName\"\r\n\t\t\t\t\t[marker]=\"marker\"\r\n\t\t\t\t\t[yName]=\"i.yName\"\r\n\t\t\t\t\t[name]=\"i.name\"\r\n\t\t\t\t\tcolumnSpacing=\"0.1\"\r\n\t\t\t\t\twidth=\"2\"\r\n\t\t\t\t\topacity=\"1\"\r\n\t\t\t\t>\r\n\t\t\t\t</e-series>\r\n\t\t\t</ng-container>\r\n\r\n\t\t\t<!-- \u53EA\u9009\u7B2C\u4E8C\u4E2AY\u8F74\u65F6\uFF0C\u663E\u793A\u6298\u7EBF\u56FE -->\r\n\t\t\t<ng-container\r\n\t\t\t\t*ngIf=\"\r\n\t\t\t\t\tdataLine &&\r\n\t\t\t\t\tdataLine.length > 0 &&\r\n\t\t\t\t\tdataColumn &&\r\n\t\t\t\t\tdataColumn.length <= 0\r\n\t\t\t\t\"\r\n\t\t\t>\r\n\t\t\t\t<e-series\r\n\t\t\t\t\t*ngFor=\"let i of columnLine\"\r\n\t\t\t\t\t[dataSource]=\"dataLine\"\r\n\t\t\t\t\ttype=\"Spline\"\r\n\t\t\t\t\t[xName]=\"i.xName\"\r\n\t\t\t\t\t[yName]=\"i.yName\"\r\n\t\t\t\t\t[marker]=\"marker\"\r\n\t\t\t\t\t[name]=\"i.name\"\r\n\t\t\t\t\tcolumnSpacing=\"0.1\"\r\n\t\t\t\t\twidth=\"2\"\r\n\t\t\t\t\topacity=\"1\"\r\n\t\t\t\t>\r\n\t\t\t\t</e-series>\r\n\t\t\t</ng-container>\r\n\r\n\t\t\t<!-- \u5982\u679C\u4E24\u4E2AY\u8F74\u662F\u540C\u7C7B\u578B\u6570\u636E\uFF0C\u5171\u7528\u4E00\u4E2AY\u8F74 -->\r\n\t\t\t<ng-container\r\n\t\t\t\t*ngIf=\"\r\n\t\t\t\t\tdataColumn &&\r\n\t\t\t\t\tdataColumn.length > 0 &&\r\n\t\t\t\t\tdataLine &&\r\n\t\t\t\t\tdataLine.length > 0 &&\r\n\t\t\t\t\tcolumnType == lineType\r\n\t\t\t\t\"\r\n\t\t\t>\r\n\t\t\t\t<e-series\r\n\t\t\t\t\t*ngFor=\"let i of columnLine\"\r\n\t\t\t\t\t[dataSource]=\"dataLine\"\r\n\t\t\t\t\ttype=\"Spline\"\r\n\t\t\t\t\t[xName]=\"i.xName\"\r\n\t\t\t\t\t[yName]=\"i.yName\"\r\n\t\t\t\t\t[name]=\"i.name\"\r\n\t\t\t\t\t[marker]=\"marker\"\r\n\t\t\t\t\tcolumnSpacing=\"0.1\"\r\n\t\t\t\t\twidth=\"2\"\r\n\t\t\t\t\topacity=\"1\"\r\n\t\t\t\t>\r\n\t\t\t\t</e-series>\r\n\t\t\t</ng-container>\r\n\r\n\t\t\t<!-- \u5982\u679C\u4E24\u4E2AY\u8F74\u662F\u4E0D\u540C\u7C7B\u578B\u6570\u636E\uFF0C\u5C31\u7528\u4E24\u4E2AY\u8F74 -->\r\n\t\t\t<ng-container\r\n\t\t\t\t*ngIf=\"\r\n\t\t\t\t\tdataColumn &&\r\n\t\t\t\t\tdataColumn.length > 0 &&\r\n\t\t\t\t\tdataLine &&\r\n\t\t\t\t\tdataLine.length > 0 &&\r\n\t\t\t\t\tcolumnType != lineType\r\n\t\t\t\t\"\r\n\t\t\t>\r\n\t\t\t\t<e-series\r\n\t\t\t\t\t*ngFor=\"let i of columnLine\"\r\n\t\t\t\t\t[dataSource]=\"dataLine\"\r\n\t\t\t\t\ttype=\"Spline\"\r\n\t\t\t\t\t[xName]=\"i.xName\"\r\n\t\t\t\t\t[yName]=\"i.yName\"\r\n\t\t\t\t\t[marker]=\"marker\"\r\n\t\t\t\t\t[name]=\"i.name\"\r\n\t\t\t\t\twidth=\"2\"\r\n\t\t\t\t\topacity=\"1\"\r\n\t\t\t\t\tyAxisName=\"yAxis2\"\r\n\t\t\t\t>\r\n\t\t\t\t</e-series>\r\n\t\t\t</ng-container>\r\n\t\t</e-series-collection>\r\n\r\n\t\t<e-axes>\r\n\t\t\t<ng-container\r\n\t\t\t\t*ngIf=\"\r\n\t\t\t\t\tdataColumn &&\r\n\t\t\t\t\tdataColumn.length > 0 &&\r\n\t\t\t\t\tdataLine &&\r\n\t\t\t\t\tdataLine.length > 0\r\n\t\t\t\t\"\r\n\t\t\t>\r\n\t\t\t\t<e-axis\r\n\t\t\t\t\topposedPosition=\"true\"\r\n\t\t\t\t\trowIndex=\"0\"\r\n\t\t\t\t\tname=\"yAxis2\"\r\n\t\t\t\t\t[majorGridLines]=\"{ width: 0 }\"\r\n\t\t\t\t\ttitle=\"\"\r\n\t\t\t\t\t[lineStyle]=\"{ width: 0 }\"\r\n\t\t\t\t\t[majorTickLines]=\"{ width: 0 }\"\r\n\t\t\t\t>\r\n\t\t\t\t</e-axis>\r\n\t\t\t</ng-container>\r\n\t\t</e-axes>\r\n\t</ejs-chart>\r\n\t<div class=\"full-box-mask\" *ngIf=\"pageLoading\">\r\n\t\t<mat-spinner\r\n\t\t\tstyle=\"z-index: 999\"\r\n\t\t\tmode=\"indeterminate\"\r\n\t\t\t[diameter]=\"24\"\r\n\t\t></mat-spinner>\r\n\t</div>\r\n</div>\r\n", styles: ["#chartContent{width:100%;height:100%;padding-top:10px}#chartContent .full-screen-mask{width:100%;height:100%;background:#0000004d;position:absolute;top:0;left:0;z-index:9999}#chartContent mat-spinner.mat-spinner.mat-progress-spinner.mat-primary.mat-progress-spinner-indeterminate-animation{position:absolute;top:45%;left:47.5%!important;transform:translate(-25%,-25%)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ChartComponent, selector: "ejs-chart", inputs: ["allowExport", "allowMultiSelection", "annotations", "axes", "background", "backgroundImage", "border", "chartArea", "columns", "crosshair", "currencyCode", "dataSource", "description", "enableAnimation", "enableAutoIntervalOnBothAxis", "enableCanvas", "enableExport", "enablePersistence", "enableRtl", "enableSideBySidePlacement", "height", "highlightColor", "highlightMode", "highlightPattern", "indicators", "isMultiSelect", "isTransposed", "legendSettings", "locale", "margin", "palettes", "primaryXAxis", "primaryYAxis", "rangeColorSettings", "rows", "selectedDataIndexes", "selectionMode", "selectionPattern", "series", "subTitle", "subTitleStyle", "tabIndex", "theme", "title", "titleStyle", "tooltip", "useGroupingSeparator", "width", "zoomSettings"], outputs: ["afterExport", "animationComplete", "annotationRender", "axisLabelClick", "axisLabelRender", "axisMultiLabelRender", "axisRangeCalculated", "beforeExport", "beforePrint", "beforeResize", "chartDoubleClick", "chartMouseClick", "chartMouseDown", "chartMouseLeave", "chartMouseMove", "chartMouseUp", "drag", "dragComplete", "dragEnd", "dragStart", "legendClick", "legendRender", "load", "loaded", "multiLevelLabelClick", "onZooming", "pointClick", "pointDoubleClick", "pointMove", "pointRender", "resized", "scrollChanged", "scrollEnd", "scrollStart", "selectionComplete", "seriesRender", "sharedTooltipRender", "textRender", "tooltipRender", "zoomComplete", "dataSourceChange"] }, { kind: "directive", type: i3.SeriesDirective, selector: "e-series-collection>e-series", inputs: ["animation", "bearFillColor", "binInterval", "border", "boxPlotMode", "bullFillColor", "cardinalSplineTension", "close", "colorName", "columnFacet", "columnSpacing", "columnWidth", "columnWidthInPixel", "connector", "cornerRadius", "dashArray", "dataSource", "dragSettings", "drawType", "emptyPointSettings", "enableComplexProperty", "enableSolidCandles", "enableTooltip", "errorBar", "fill", "groupName", "high", "intermediateSumIndexes", "isClosed", "legendImageUrl", "legendShape", "low", "marker", "maxRadius", "minRadius", "name", "negativeFillColor", "noRisers", "nonHighlightStyle", "opacity", "open", "paretoOptions", "pointColorMapping", "query", "segmentAxis", "segments", "selectionStyle", "showMean", "showNormalDistribution", "size", "splineType", "stackingGroup", "step", "sumIndexes", "summaryFillColor", "tooltipFormat", "tooltipMappingName", "trendlines", "type", "unSelectedStyle", "visible", "volume", "width", "xAxisName", "xName", "yAxisName", "yName", "zOrder"] }, { kind: "directive", type: i3.SeriesCollectionDirective, selector: "ej-chart>e-series-collection" }, { kind: "directive", type: i3.AxisDirective, selector: "e-axes>e-axis", inputs: ["border", "coefficient", "columnIndex", "crossesAt", "crossesInAxis", "crosshairTooltip", "description", "desiredIntervals", "edgeLabelPlacement", "enableAutoIntervalOnZooming", "enableScrollbarOnZooming", "enableTrim", "interval", "intervalType", "isIndexed", "isInversed", "labelFormat", "labelIntersectAction", "labelPadding", "labelPlacement", "labelPosition", "labelRotation", "labelStyle", "lineBreakAlignment", "lineStyle", "logBase", "majorGridLines", "majorTickLines", "maximum", "maximumLabelWidth", "maximumLabels", "minimum", "minorGridLines", "minorTickLines", "minorTicksPerInterval", "multiLevelLabels", "name", "opposedPosition", "placeNextToAxisLine", "plotOffset", "plotOffsetBottom", "plotOffsetLeft", "plotOffsetRight", "plotOffsetTop", "rangePadding", "rowIndex", "scrollbarSettings", "skeleton", "skeletonType", "span", "startAngle", "startFromZero", "stripLines", "tabIndex", "tickPosition", "title", "titlePadding", "titleRotation", "titleStyle", "valueType", "visible", "zoomFactor", "zoomPosition"] }, { kind: "directive", type: i3.AxesDirective, selector: "ejs-chart>e-axes" }], encapsulation: i0.ViewEncapsulation.None });
|
|
400
|
+
}
|
|
401
|
+
__decorate([
|
|
402
|
+
debounce(100)
|
|
403
|
+
], BarChartsComponent.prototype, "changeSize", null);
|
|
404
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BarChartsComponent, decorators: [{
|
|
405
|
+
type: Component,
|
|
406
|
+
args: [{ selector: "rs-bar-charts", encapsulation: ViewEncapsulation.None, providers: [DecimalPipe], template: "<div\r\n\tclass=\"content\"\r\n\t#chartContent\r\n\tid=\"chartContent\"\r\n\t*ngIf=\"dataColumn || dataLine\"\r\n>\r\n\t<ejs-chart\r\n\t\t#chart\r\n\t\tstyle=\"display: block\"\r\n\t\talign=\"center\"\r\n\t\t[title]=\"title\"\r\n\t\t[primaryXAxis]=\"primaryXAxis\"\r\n\t\t[primaryYAxis]=\"primaryYAxis\"\r\n\t\t[tooltip]=\"tooltip\"\r\n\t\t(load)=\"load($event)\"\r\n\t\t[chartArea]=\"chartArea\"\r\n\t\twidth=\"100%\"\r\n\t\t[height]=\"height\"\r\n\t\t[width]=\"width\"\r\n\t\t[zoomSettings]=\"zoomSettings\"\r\n\t\t[legendSettings]=\"legend\"\r\n\t\t[palettes]=\"customPalette\"\r\n\t\t(pointRender)=\"onPointRender($event)\"\r\n\t\t[enableAnimation]=\"false\"\r\n\t\t(textRender)=\"textRender($event)\"\r\n\t\t(tooltipRender)=\"tooltipRender($event)\"\r\n\t\t(axisLabelRender)=\"OnChartAxisLabeRender($event)\"\r\n\t>\r\n\t\t<e-series-collection>\r\n\t\t\t<ng-container *ngIf=\"dataColumn && dataColumn.length > 0\">\r\n\t\t\t\t<e-series\r\n\t\t\t\t\t*ngFor=\"let i of column\"\r\n\t\t\t\t\t[dataSource]=\"dataColumn\"\r\n\t\t\t\t\ttype=\"Column\"\r\n\t\t\t\t\t[xName]=\"i.xName\"\r\n\t\t\t\t\t[marker]=\"marker\"\r\n\t\t\t\t\t[yName]=\"i.yName\"\r\n\t\t\t\t\t[name]=\"i.name\"\r\n\t\t\t\t\tcolumnSpacing=\"0.1\"\r\n\t\t\t\t\twidth=\"2\"\r\n\t\t\t\t\topacity=\"1\"\r\n\t\t\t\t>\r\n\t\t\t\t</e-series>\r\n\t\t\t</ng-container>\r\n\r\n\t\t\t<!-- \u53EA\u9009\u7B2C\u4E8C\u4E2AY\u8F74\u65F6\uFF0C\u663E\u793A\u6298\u7EBF\u56FE -->\r\n\t\t\t<ng-container\r\n\t\t\t\t*ngIf=\"\r\n\t\t\t\t\tdataLine &&\r\n\t\t\t\t\tdataLine.length > 0 &&\r\n\t\t\t\t\tdataColumn &&\r\n\t\t\t\t\tdataColumn.length <= 0\r\n\t\t\t\t\"\r\n\t\t\t>\r\n\t\t\t\t<e-series\r\n\t\t\t\t\t*ngFor=\"let i of columnLine\"\r\n\t\t\t\t\t[dataSource]=\"dataLine\"\r\n\t\t\t\t\ttype=\"Spline\"\r\n\t\t\t\t\t[xName]=\"i.xName\"\r\n\t\t\t\t\t[yName]=\"i.yName\"\r\n\t\t\t\t\t[marker]=\"marker\"\r\n\t\t\t\t\t[name]=\"i.name\"\r\n\t\t\t\t\tcolumnSpacing=\"0.1\"\r\n\t\t\t\t\twidth=\"2\"\r\n\t\t\t\t\topacity=\"1\"\r\n\t\t\t\t>\r\n\t\t\t\t</e-series>\r\n\t\t\t</ng-container>\r\n\r\n\t\t\t<!-- \u5982\u679C\u4E24\u4E2AY\u8F74\u662F\u540C\u7C7B\u578B\u6570\u636E\uFF0C\u5171\u7528\u4E00\u4E2AY\u8F74 -->\r\n\t\t\t<ng-container\r\n\t\t\t\t*ngIf=\"\r\n\t\t\t\t\tdataColumn &&\r\n\t\t\t\t\tdataColumn.length > 0 &&\r\n\t\t\t\t\tdataLine &&\r\n\t\t\t\t\tdataLine.length > 0 &&\r\n\t\t\t\t\tcolumnType == lineType\r\n\t\t\t\t\"\r\n\t\t\t>\r\n\t\t\t\t<e-series\r\n\t\t\t\t\t*ngFor=\"let i of columnLine\"\r\n\t\t\t\t\t[dataSource]=\"dataLine\"\r\n\t\t\t\t\ttype=\"Spline\"\r\n\t\t\t\t\t[xName]=\"i.xName\"\r\n\t\t\t\t\t[yName]=\"i.yName\"\r\n\t\t\t\t\t[name]=\"i.name\"\r\n\t\t\t\t\t[marker]=\"marker\"\r\n\t\t\t\t\tcolumnSpacing=\"0.1\"\r\n\t\t\t\t\twidth=\"2\"\r\n\t\t\t\t\topacity=\"1\"\r\n\t\t\t\t>\r\n\t\t\t\t</e-series>\r\n\t\t\t</ng-container>\r\n\r\n\t\t\t<!-- \u5982\u679C\u4E24\u4E2AY\u8F74\u662F\u4E0D\u540C\u7C7B\u578B\u6570\u636E\uFF0C\u5C31\u7528\u4E24\u4E2AY\u8F74 -->\r\n\t\t\t<ng-container\r\n\t\t\t\t*ngIf=\"\r\n\t\t\t\t\tdataColumn &&\r\n\t\t\t\t\tdataColumn.length > 0 &&\r\n\t\t\t\t\tdataLine &&\r\n\t\t\t\t\tdataLine.length > 0 &&\r\n\t\t\t\t\tcolumnType != lineType\r\n\t\t\t\t\"\r\n\t\t\t>\r\n\t\t\t\t<e-series\r\n\t\t\t\t\t*ngFor=\"let i of columnLine\"\r\n\t\t\t\t\t[dataSource]=\"dataLine\"\r\n\t\t\t\t\ttype=\"Spline\"\r\n\t\t\t\t\t[xName]=\"i.xName\"\r\n\t\t\t\t\t[yName]=\"i.yName\"\r\n\t\t\t\t\t[marker]=\"marker\"\r\n\t\t\t\t\t[name]=\"i.name\"\r\n\t\t\t\t\twidth=\"2\"\r\n\t\t\t\t\topacity=\"1\"\r\n\t\t\t\t\tyAxisName=\"yAxis2\"\r\n\t\t\t\t>\r\n\t\t\t\t</e-series>\r\n\t\t\t</ng-container>\r\n\t\t</e-series-collection>\r\n\r\n\t\t<e-axes>\r\n\t\t\t<ng-container\r\n\t\t\t\t*ngIf=\"\r\n\t\t\t\t\tdataColumn &&\r\n\t\t\t\t\tdataColumn.length > 0 &&\r\n\t\t\t\t\tdataLine &&\r\n\t\t\t\t\tdataLine.length > 0\r\n\t\t\t\t\"\r\n\t\t\t>\r\n\t\t\t\t<e-axis\r\n\t\t\t\t\topposedPosition=\"true\"\r\n\t\t\t\t\trowIndex=\"0\"\r\n\t\t\t\t\tname=\"yAxis2\"\r\n\t\t\t\t\t[majorGridLines]=\"{ width: 0 }\"\r\n\t\t\t\t\ttitle=\"\"\r\n\t\t\t\t\t[lineStyle]=\"{ width: 0 }\"\r\n\t\t\t\t\t[majorTickLines]=\"{ width: 0 }\"\r\n\t\t\t\t>\r\n\t\t\t\t</e-axis>\r\n\t\t\t</ng-container>\r\n\t\t</e-axes>\r\n\t</ejs-chart>\r\n\t<div class=\"full-box-mask\" *ngIf=\"pageLoading\">\r\n\t\t<mat-spinner\r\n\t\t\tstyle=\"z-index: 999\"\r\n\t\t\tmode=\"indeterminate\"\r\n\t\t\t[diameter]=\"24\"\r\n\t\t></mat-spinner>\r\n\t</div>\r\n</div>\r\n", styles: ["#chartContent{width:100%;height:100%;padding-top:10px}#chartContent .full-screen-mask{width:100%;height:100%;background:#0000004d;position:absolute;top:0;left:0;z-index:9999}#chartContent mat-spinner.mat-spinner.mat-progress-spinner.mat-primary.mat-progress-spinner-indeterminate-animation{position:absolute;top:45%;left:47.5%!important;transform:translate(-25%,-25%)}\n"] }]
|
|
407
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.DashboardService }, { type: i2.DecimalPipe }]; }, propDecorators: { content: [{
|
|
408
|
+
type: ViewChild,
|
|
409
|
+
args: ["chartContent", { static: false }]
|
|
410
|
+
}], chart: [{
|
|
411
|
+
type: ViewChild,
|
|
412
|
+
args: ["chart", { static: false }]
|
|
413
|
+
}], dataColumn: [{
|
|
414
|
+
type: Input
|
|
415
|
+
}], dataLine: [{
|
|
416
|
+
type: Input
|
|
417
|
+
}], dataStackingColumn: [{
|
|
418
|
+
type: Input
|
|
419
|
+
}], columnType: [{
|
|
420
|
+
type: Input
|
|
421
|
+
}], lineType: [{
|
|
422
|
+
type: Input
|
|
423
|
+
}], themeColor: [{
|
|
424
|
+
type: Input
|
|
425
|
+
}], portlet: [{
|
|
426
|
+
type: Input
|
|
427
|
+
}], dashboard: [{
|
|
428
|
+
type: Input
|
|
429
|
+
}], changeSize: [] } });
|
|
430
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyLWNoYXJ0cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yYWlzZS1jb21tb24tbGliL3NyYy9saWIvZGFzaGJvYXJkL2Jhci1jaGFydHMvYmFyLWNoYXJ0cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yYWlzZS1jb21tb24tbGliL3NyYy9saWIvZGFzaGJvYXJkL2Jhci1jaGFydHMvYmFyLWNoYXJ0cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxLQUFLLEVBR0wsU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQVV2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7Ozs7QUFTbkMsTUFBTSxPQUFPLGtCQUFrQjtJQThGbkI7SUFDRDtJQUNDO0lBL0ZvQyxPQUFPLENBQWE7SUFDM0IsS0FBSyxDQUFpQjtJQUNwRCxVQUFVLEdBQVEsRUFBRSxDQUFDLENBQUMsVUFBVTtJQUNoQyxRQUFRLEdBQVEsRUFBRSxDQUFDLENBQUMsVUFBVTtJQUM5QixrQkFBa0IsR0FBUSxFQUFFLENBQUMsQ0FBQyxVQUFVO0lBQ3hDLFVBQVUsR0FBUSxRQUFRLENBQUM7SUFDM0IsUUFBUSxHQUFRLFFBQVEsQ0FBQztJQUN6QixVQUFVLEdBQVEsSUFBSSxDQUFDO0lBQ3ZCLE9BQU8sR0FBUSxJQUFJLENBQUM7SUFDcEIsU0FBUyxHQUFRLElBQUksQ0FBQztJQUN4QixNQUFNLEdBQVUsRUFBRSxDQUFDO0lBQ25CLFVBQVUsR0FBVSxFQUFFLENBQUM7SUFDdkIsTUFBTSxDQUFDO0lBQ1AsbUJBQW1CLEdBQUcsRUFBRSxDQUFDO0lBQ3pCLE1BQU0sQ0FBQztJQUNQLFVBQVUsR0FBRyxD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Q0FBQztZQUNMLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FDNUQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQ2hCLE9BQU8sQ0FDUixFQUFFLENBQUM7SUFDTixDQUFDO3dHQWxiVSxrQkFBa0I7NEZBQWxCLGtCQUFrQixvUUFGbEIsQ0FBQyxXQUFXLENBQUMseU9DM0IxQixreklBc0pBOztBRHVMRTtJQURDLFFBQVEsQ0FBQyxHQUFHLENBQUM7b0RBUWI7NEZBdlRVLGtCQUFrQjtrQkFQOUIsU0FBUzsrQkFDRSxlQUFlLGlCQUdWLGlCQUFpQixDQUFDLElBQUksYUFDMUIsQ0FBQyxXQUFXLENBQUM7aUtBR3NCLE9BQU87c0JBQXBELFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDTCxLQUFLO3NCQUEzQyxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQzVCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBc1NOLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1xyXG4gIElMb2FkZWRFdmVudEFyZ3MsXHJcbiAgQ2hhcnRUaGVtZSxcclxuICBDaGFydENvbXBvbmVudCxcclxuICBJVG9vbHRpcFJlbmRlckV2ZW50QXJncyxcclxufSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItY2hhcnRzXCI7XHJcbmltcG9ydCB7IERyb3BEb3duTGlzdCB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYW5ndWxhci1kcm9wZG93bnNcIjtcclxuaW1wb3J0IHsgRGFzaGJvYXJkU2VydmljZSB9IGZyb20gXCIuLi9kYXNoYm9hcmQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBEZWNpbWFsUGlwZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgZGVib3VuY2UgfSBmcm9tIFwiLi91dGlsc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwicnMtYmFyLWNoYXJ0c1wiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vYmFyLWNoYXJ0cy5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9iYXItY2hhcnRzLmNvbXBvbmVudC5zY3NzXCJdLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgcHJvdmlkZXJzOiBbRGVjaW1hbFBpcGVdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmFyQ2hhcnRzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBAVmlld0NoaWxkKFwiY2hhcnRDb250ZW50XCIsIHsgc3RhdGljOiBmYWxzZSB9KSBjb250ZW50OiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoXCJjaGFydFwiLCB7IHN0YXRpYzogZmFsc2UgfSkgY2hhcnQ6IENoYXJ0Q29tcG9uZW50O1xyXG4gIEBJbnB1dCgpIGRhdGFDb2x1bW46IGFueSA9IFtdOyAvLyAg5p+x54q25Zu+5pWw5o2u5rqQXHJcbiAgQElucHV0KCkgZGF0YUxpbmU6IGFueSA9IFtdOyAvLyAg5oqY57q/5Zu+5pWw5o2u5rqQXHJcbiAgQElucHV0KCkgZGF0YVN0YWNraW5nQ29sdW1uOiBhbnkgPSBbXTsgLy8gIOWghuenr+WbvuaVsOaNrua6kFxyXG4gIEBJbnB1dCgpIGNvbHVtblR5cGU6IGFueSA9IFwibnVtYmVyXCI7XHJcbiAgQElucHV0KCkgbGluZVR5cGU6IGFueSA9IFwibnVtYmVyXCI7XHJcbiAgQElucHV0KCkgdGhlbWVDb2xvcjogYW55ID0gbnVsbDtcclxuICBASW5wdXQoKSBwb3J0bGV0OiBhbnkgPSBudWxsO1xyXG4gIEBJbnB1dCgpIGRhc2hib2FyZDogYW55ID0gbnVsbDtcclxuICBwdWJsaWMgY29sdW1uOiBhbnlbXSA9IFtdO1xyXG4gIHB1YmxpYyBjb2x1bW5MaW5lOiBhbnlbXSA9IFtdO1xyXG4gIHB1YmxpYyBjb25maWc7XHJcbiAgcHVibGljIF9kYXRhU3RhY2tpbmdDb2x1bW4gPSBbXTtcclxuICBwdWJsaWMgbWFya2VyO1xyXG4gIHB1YmxpYyBzcGVjaWFsS2V5ID0gW1wiSVJSXCIsIFwiRFBJXCIsIFwiTU9JQ1wiLCBcIlBJQ1wiLCBcIlJWUElcIiwgXCJUVlBJXCJdO1xyXG4gIHBhZ2VMb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gIHB1YmxpYyB6b29tU2V0dGluZ3M6IE9iamVjdCA9IHtcclxuICAgIC8vIGVuYWJsZU1vdXNlV2hlZWxab29taW5nOiB0cnVlLFxyXG4gICAgLy8gZW5hYmxlU2VsZWN0aW9uWm9vbWluZzogdHJ1ZSxcclxuICAgIC8vIHRvb2xiYXJJdGVtczogW10sXHJcbiAgICAvLyBlbmFibGVQYW46IHRydWUsXHJcbiAgICBlbmFibGU6IGZhbHNlLFxyXG4gIH07XHJcblxyXG4gIC8vSW5pdGlhbGl6aW5nIFByaW1hcnkgWCBBeGlzXHJcbiAgcHVibGljIHByaW1hcnlYQXhpczogT2JqZWN0ID0ge1xyXG4gICAgdmFsdWVUeXBlOiBcIkNhdGVnb3J5XCIsXHJcbiAgICBsYWJlbEludGVyc2VjdEFjdGlvbjogXCJSb3RhdGU0NVwiLFxyXG4gICAgbWFqb3JHcmlkTGluZXM6IHsgd2lkdGg6IDAgfSxcclxuICAgIG1ham9yVGlja0xpbmVzOiB7IHdpZHRoOiAwIH0sXHJcbiAgICBlZGdlTGFiZWxQbGFjZW1lbnQ6IFwiU2hpZnRcIixcclxuXHJcbiAgICAvLyBlbmFibGVTY3JvbGxiYXI6IHRydWUsXHJcbiAgICAvLyBlbmFibGVUcmltOiB0cnVlLFxyXG4gICAgLy8gZW5hYmxlUGFuOiB0cnVlLFxyXG4gICAgLy8gcm90YXRlOiAwLFxyXG4gICAgbGFiZWxTdHlsZToge1xyXG4gICAgICBmb250V2VpZ2h0OiBcIm5vcm1hbFwiLFxyXG4gICAgICBjb2xvcjogXCIjNDQ1NjZjXCIsXHJcbiAgICAgIGZvbnRGYW1pbHk6IFwiQXJpYWxcIixcclxuICAgICAgc2l6ZTogXCIxM3B4XCIsXHJcbiAgICB9LFxyXG4gIH07XHJcblxyXG4gIC8vSW5pdGlhbGl6aW5nIFByaW1hcnkgWSBBeGlzXHJcbiAgcHVibGljIHByaW1hcnlZQXhpczogT2JqZWN0ID0ge1xyXG4gICAgdGl0bGU6IFwiXCIsIC8vRmlyc3QgWVxyXG4gICAgbGluZVN0eWxlOiB7IHdpZHRoOiAwIH0sXHJcbiAgICBtYWpvclRpY2tMaW5lczogeyB3aWR0aDogMCB9LFxyXG4gICAgbWFqb3JHcmlkTGluZXM6IHsgY29sb3I6IFwiI2YyZjJmMlwiIH0sIC8vIOiuvue9ruS4u+imgee9keagvOe6v+minOiJslxyXG4gICAgbGFiZWxGb3JtYXQ6IFwibjJcIixcclxuICB9O1xyXG5cclxuICBwdWJsaWMgY2hhcnRBcmVhOiBPYmplY3QgPSB7XHJcbiAgICBib3JkZXI6IHtcclxuICAgICAgd2lkdGg6IDAsXHJcbiAgICB9LFxyXG4gIH07XHJcblxyXG4gIC8vIOm8oOagh+enu+WIsGJhcuS4iumdouaYvuekuueahGJveFxyXG4gIHB1YmxpYyB0b29sdGlwOiBPYmplY3QgPSB7XHJcbiAgICBlbmFibGU6IHRydWUsXHJcbiAgfTtcclxuXHJcbiAgLy8g5Zu+5L6L6K6+572uXHJcbiAgcHVibGljIGxlZ2VuZDogT2JqZWN0ID0ge1xyXG4gICAgdmlzaWJsZTogdHJ1ZSxcclxuICAgIGVuYWJsZUhpZ2hsaWdodDogdHJ1ZSxcclxuICB9O1xyXG4gIC8vIGN1c3RvbSBjb2RlIHN0YXJ0XHJcbiAgcHVibGljIGxvYWQoYXJnczogSUxvYWRlZEV2ZW50QXJncyk6IHZvaWQge1xyXG4gICAgbGV0IHNlbGVjdGVkVGhlbWU6IHN0cmluZyA9IGxvY2F0aW9uLmhhc2guc3BsaXQoXCIvXCIpWzFdO1xyXG4gICAgc2VsZWN0ZWRUaGVtZSA9IHNlbGVjdGVkVGhlbWUgPyBzZWxlY3RlZFRoZW1lIDogXCJNYXRlcmlhbFwiO1xyXG4gICAgYXJncy5jaGFydC50aGVtZSA9IDxDaGFydFRoZW1lPihcclxuICAgICAgKHNlbGVjdGVkVGhlbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzZWxlY3RlZFRoZW1lLnNsaWNlKDEpKVxyXG4gICAgICAgIC5yZXBsYWNlKC8tZGFyay9pLCBcIkRhcmtcIilcclxuICAgICAgICAucmVwbGFjZSgvY29udHJhc3QvaSwgXCJDb250cmFzdFwiKVxyXG4gICAgKTtcclxuICB9XHJcbiAgLy8gY3VzdG9tIGNvZGUgZW5kXHJcbiAgcHVibGljIHRpdGxlOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICBoZWlnaHQ6IHN0cmluZyA9IFwiMjUwcHhcIjtcclxuICB3aWR0aDogc3RyaW5nID0gXCIxMDAlXCI7XHJcblxyXG4gIHB1YmxpYyBjdXN0b21QYWxldHRlOiBzdHJpbmdbXSA9IFtdOyAvL+m7mOiupOminOiJsue7hFxyXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICBwdWJsaWMgZXhwb3J0VHlwZTogRHJvcERvd25MaXN0O1xyXG4gIHB1YmxpYyBtYXJrZXJGb3JtYXQgPSBcIlwiO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHB1YmxpYyBkYXNoYm9hcmRTZXJ2aWNlOiBEYXNoYm9hcmRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkZWNpbWFsUGlwZTogRGVjaW1hbFBpcGVcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5jb25maWcgPSB0aGlzLnBvcnRsZXQuY29uZmlnICYmIEpTT04ucGFyc2UodGhpcy5wb3J0bGV0LmNvbmZpZyk7XHJcbiAgICB0aGlzLmluaXRNYXJrZXJDb25maWcoKTtcclxuICAgIHRoaXMuaW5pdERhdGEoKTtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2UuZ2V0U3dpdGNoQ29uZmlnKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLnBvcnRsZXQubmV3SWQgPT09IHJlcy5pZCkge1xyXG4gICAgICAgICAgdGhpcy5jb25maWcuaGFzTWFya2VyID0gcmVzLmNoZWNrZWQ7XHJcbiAgICAgICAgICB0aGlzLnBvcnRsZXQuY29uZmlnID0gSlNPTi5zdHJpbmdpZnkodGhpcy5jb25maWcpO1xyXG4gICAgICAgICAgdGhpcy5pbml0TWFya2VyQ29uZmlnKCk7XHJcbiAgICAgICAgICB0aGlzLmNoYXJ0LnJlZnJlc2goKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2UuZ2V0TWFya2VyRm9ybWF0KCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLnBvcnRsZXQubmV3SWQgPT09IHJlcy5uZXdJZCkge1xyXG4gICAgICAgICAgdGhpcy5jb25maWcubWFya2VyRm9ybWF0ID0gcmVzLm1hcmtlckZvcm1hdDtcclxuICAgICAgICAgIHRoaXMucG9ydGxldC5jb25maWcgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmNvbmZpZyk7XHJcbiAgICAgICAgICB0aGlzLm1hcmtlckZvcm1hdCA9IHJlcy5tYXJrZXJGb3JtYXQ7XHJcbiAgICAgICAgICB0aGlzLmluaXRNYXJrZXJDb25maWcoKTtcclxuICAgICAgICAgIHRoaXMuY2hhcnQucmVmcmVzaCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRNYXJrZXJDb25maWcoKSB7XHJcbiAgICBjb25zdCBmb3JtYXQgPSB0aGlzLmNvbmZpZy5wb3J0bGV0VHlwZSA9PT0gXCJoaXN0b3JpY2FsSVJSXCIgPyBcInAyXCIgOiBcIm4yXCI7XHJcbiAgICB0aGlzLnBhZ2VMb2FkaW5nID0gZmFsc2U7XHJcbiAgICBjb25zdCBoYXNNYXJrZXIgPSB0aGlzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZy5oYXNNYXJrZXI7XHJcbiAgICB0aGlzLm1hcmtlckZvcm1hdCA9IHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLm1hcmtlckZvcm1hdDtcclxuICAgIHRoaXMubWFya2VyID0ge1xyXG4gICAgICB2aXNpYmxlOiBoYXNNYXJrZXIsXHJcbiAgICAgIGRhdGFMYWJlbDoge1xyXG4gICAgICAgIHZpc2libGU6IGhhc01hcmtlcixcclxuICAgICAgICBmb3JtYXQsXHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG4gIH1cclxuICB0ZXh0UmVuZGVyKGUpIHtcclxuICAgIHRoaXMuZGF0YUxpbmUuZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG4gICAgICBPYmplY3Qua2V5cyhkYXRhKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5zcGVjaWFsS2V5LmluY2x1ZGVzKGtleSkpIHtcclxuICAgICAgICAgIGlmICghZS50ZXh0KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChlLnRleHQgIT0gZGF0YVtrZXldKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChrZXkgPT09IFwiSVJSXCIpIHtcclxuICAgICAgICAgICAgZS50ZXh0ID0gKGUudGV4dCAqIDEwMCkudG9GaXhlZCgyKSArIFwiJVwiO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZS50ZXh0ID0gTnVtYmVyKGUudGV4dCkudG9GaXhlZCgyKSArIFwieFwiO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGF0YUNvbHVtbi5mb3JFYWNoKChkYXRhKSA9PiB7XHJcbiAgICAgIE9iamVjdC5rZXlzKGRhdGEpLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLnNwZWNpYWxLZXkuaW5jbHVkZXMoa2V5KSkge1xyXG4gICAgICAgICAgaWYgKCFlLnRleHQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGUudGV4dCAhPSBkYXRhW2tleV0pIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmIChrZXkgPT09IFwiSVJSXCIpIHtcclxuICAgICAgICAgICAgZS50ZXh0ID0gKGUudGV4dCAqIDEwMCkudG9GaXhlZCgyKSArIFwiJVwiO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZS50ZXh0ID0gTnVtYmVyKGUudGV4dCkudG9GaXhlZCgyKSArIFwieFwiO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIGlmICghaXNOYU4oZS50ZXh0KSkge1xyXG4gICAgICBpZiAoZS50ZXh0ICE9PSAwKSB7XHJcbiAgICAgICAgc3dpdGNoICh0aGlzLm1hcmtlckZvcm1hdCkge1xyXG4gICAgICAgICAgY2FzZSBcIk1cIjpcclxuICAgICAgICAgICAgZS50ZXh0ID1cclxuICAgICAgICAgICAgICB0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybShlLnRleHQgLyAxMDAwMDAwLCBcIjEuMi0yXCIpICsgXCJtXCI7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIGNhc2UgXCJLXCI6XHJcbiAgICAgICAgICAgIGUudGV4dCA9IHRoaXMuZGVjaW1hbFBpcGUudHJhbnNmb3JtKGUudGV4dCAvIDEwMDAsIFwiMS4yLTJcIikgKyBcImtcIjtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgY2FzZSBcImJuXCI6XHJcbiAgICAgICAgICAgIGUudGV4dCA9XHJcbiAgICAgICAgICAgICAgdGhpcy5kZWNpbWFsUGlwZS50cmFuc2Zvcm0oZS50ZXh0IC8gMTAwMDAwMDAwMCwgXCIxLjItMlwiKSArIFwiYlwiO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICBjYXNlIFwiVFwiOlxyXG4gICAgICAgICAgICBlLnRleHQgPVxyXG4gICAgICAgICAgICAgIHRoaXMuZGVjaW1hbFBpcGUudHJhbnNmb3JtKGUudGV4dCAvIDEwMDAwMDAwMDAwMDAsIFwiMS4yLTJcIikgKyBcInRcIjtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBlLnRleHQgPSBcIlwiO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0RGF0YSgpIHtcclxuICAgIHRoaXMuY29sdW1uID0gW107XHJcbiAgICB0aGlzLmNvbHVtbkxpbmUgPSBbXTtcclxuICAgIGlmICh0aGlzLmRhdGFDb2x1bW4gJiYgdGhpcy5kYXRhQ29sdW1uLmxlbmd0aCA+IDApIHtcclxuICAgICAgZm9yICh2YXIgaSBpbiB0aGlzLmRhdGFDb2x1bW5bMF0pIHtcclxuICAgICAgICBpZiAoaSAhPSBcInBlcmlvZFwiKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbHVtbi5wdXNoKHtcclxuICAgICAgICAgICAgeE5hbWU6IFwicGVyaW9kXCIsXHJcbiAgICAgICAgICAgIHlOYW1lOiBpLFxyXG4gICAgICAgICAgICBuYW1lOiBpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZGF0YUxpbmUgJiYgdGhpcy5kYXRhTGluZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZvciAodmFyIGkgaW4gdGhpcy5kYXRhTGluZVswXSkge1xyXG4gICAgICAgIGlmIChpICE9IFwicGVyaW9kXCIpIHtcclxuICAgICAgICAgIHRoaXMuY29sdW1uTGluZS5wdXNoKHtcclxuICAgICAgICAgICAgeE5hbWU6IFwicGVyaW9kXCIsXHJcbiAgICAgICAgICAgIHlOYW1lOiBpLFxyXG4gICAgICAgICAgICBuYW1lOiBpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMudGhlbWVDb2xvciAmJiB0aGlzLnRoZW1lQ29sb3IubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmN1c3RvbVBhbGV0dGUgPSB0aGlzLnRoZW1lQ29sb3I7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIC8vIGlmIChcclxuICAgIC8vIFx0KGNoYW5nZXMuZGF0YUNvbHVtbiAmJlxyXG4gICAgLy8gXHRcdCF0aGlzLmFycmF5c0FyZUVxdWFsKFxyXG4gICAgLy8gXHRcdFx0Y2hhbmdlcy5kYXRhQ29sdW1uLmN1cnJlbnRWYWx1ZSxcclxuICAgIC8vIFx0XHRcdGNoYW5nZXMuZGF0YUNvbHVtbi5wcmV2aW91c1ZhbHVlXHJcbiAgICAvLyBcdFx0KSkgfHxcclxuICAgIC8vIFx0KGNoYW5nZXMuZGF0YUxpbmUgJiZcclxuICAgIC8vIFx0XHQhdGhpcy5hcnJheXNBcmVFcXVhbChcclxuICAgIC8vIFx0XHRcdGNoYW5nZXMuZGF0YUxpbmUuY3VycmVudFZhbHVlLFxyXG4gICAgLy8gXHRcdFx0Y2hhbmdlcy5kYXRhTGluZS5wcmV2aW91c1ZhbHVlXHJcbiAgICAvLyBcdFx0KSkgfHxcclxuICAgIC8vIFx0IXRoaXMuYXJyYXlzQXJlRXF1YWwoXHJcbiAgICAvLyBcdFx0Y2hhbmdlcy50aGVtZUNvbG9yID8gY2hhbmdlcy50aGVtZUNvbG9yLmN1cnJlbnRWYWx1ZSA6IG51bGwsXHJcbiAgICAvLyBcdFx0Y2hhbmdlcy50aGVtZUNvbG9yID8gY2hhbmdlcy50aGVtZUNvbG9yLnByZXZpb3VzVmFsdWUgOiBudWxsXHJcbiAgICAvLyBcdClcclxuICAgIC8vICkge1xyXG4gICAgLy8gXHR0aGlzLmluaXREYXRhKCk7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG5cclxuICByZWZyZXNoQ2hhcnQoKSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuY2hhcnQpIHRoaXMuY2hhcnQucmVmcmVzaCgpO1xyXG4gICAgfSwgMCk7XHJcbiAgfVxyXG5cclxuICByZXNpemVPYnNlcnZlcjogYW55O1xyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKGVudHJpZXMpID0+IHtcclxuICAgICAgZm9yIChsZXQgZW50cnkgb2YgZW50cmllcykge1xyXG4gICAgICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gZW50cnkuY29udGVudFJlY3Q7XHJcbiAgICAgICAgLy8g5Zyo6L+Z6YeM5omn6KGM5L2g5oOz6KaB55qE5pON5L2c77yM5q+U5aaC5pu05paw5Zu+6KGo5oiW5YW25LuW55u45YWz5pON5L2cXHJcbiAgICAgICAgdGhpcy5jaGFuZ2VTaXplKHdpZHRoLCBoZWlnaHQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmICh0aGlzLmNvbnRlbnQpIHtcclxuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuY29udGVudC5uYXRpdmVFbGVtZW50KTtcclxuICAgIH1cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2UuZ2V0U3RhcnRSZWZyZXNoKCkuc3Vic2NyaWJlKChkYXNoYm9hcmRJZCkgPT4ge1xyXG4gICAgICAgIGlmIChkYXNoYm9hcmRJZCA9PT0gdGhpcy5kYXNoYm9hcmQuaWQpIHtcclxuICAgICAgICAgIHRoaXMucGFnZUxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLmdldFJlZnJlc2hHYWRnZXQoKS5zdWJzY3JpYmUoKGUpID0+IHtcclxuICAgICAgICBpZiAoIWUpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgbmV3SWQgPSBlW1wibmV3SWRcIl07XHJcbiAgICAgICAgaWYgKG5ld0lkID09PSB0aGlzLnBvcnRsZXQubmV3SWQgfHwgbmV3SWQgPT09IHRoaXMucG9ydGxldC5pZCkge1xyXG4gICAgICAgICAgdGhpcy5pbml0TWFya2VyQ29uZmlnKCk7XHJcbiAgICAgICAgICB0aGlzLnJlZnJlc2hDaGFydCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIC8vIOWcqOe7hOS7tumUgOavgeaXtuWPlua2iOebkeWQrFxyXG4gICAgaWYgKHRoaXMucmVzaXplT2JzZXJ2ZXIpIHtcclxuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCgoZWxlKSA9PiBlbGUudW5zdWJzY3JpYmUoKSk7XHJcbiAgfVxyXG5cclxuICBAZGVib3VuY2UoMTAwKVxyXG4gIGNoYW5nZVNpemUod2lkdGgsIGhlaWdodCkge1xyXG4gICAgaWYgKCF3aWR0aCB8fCAhaGVpZ2h0KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMud2lkdGggPSBgJHt3aWR0aH1weGA7XHJcbiAgICB0aGlzLmhlaWdodCA9IGAke2hlaWdodCAtIDEwfXB4YDtcclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0Q2hhcnQoKSB7XHJcbiAgICB0aGlzLmNoYXJ0LmV4cG9ydE1vZHVsZS5leHBvcnQoXCJQTkdcIiwgXCJDaGFydFwiKTtcclxuICB9XHJcblxyXG4gIE9uQ2hhcnRBeGlzTGFiZVJlbmRlcihhcmdzOiBhbnkpIHtcclxuICAgIGlmIChhcmdzLmF4aXMucHJvcE5hbWUgPT0gXCJwcmltYXJ5WUF4aXNcIikge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5jb2x1bW5UeXBlID09IFwicGVyY2VudFwiIHx8XHJcbiAgICAgICAgKHRoaXMuZGF0YUNvbHVtbiAmJlxyXG4gICAgICAgICAgdGhpcy5kYXRhQ29sdW1uLmxlbmd0aCA8PSAwICYmXHJcbiAgICAgICAgICB0aGlzLmxpbmVUeXBlID09IFwicGVyY2VudFwiKVxyXG4gICAgICApIHtcclxuICAgICAgICBhcmdzLnRleHQgPSB0aGlzLmZvcm1hdFBlcmNlbnRhZ2UoYXJncy50ZXh0KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoaXNOYU4oYXJncy50ZXh0KSkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhcmdzLnRleHQgPVxyXG4gICAgICAgICAgTnVtYmVyKGFyZ3MudGV4dCkgPj0gMFxyXG4gICAgICAgICAgICA/IHRoaXMuZ2V0VChhcmdzLnRleHQpXHJcbiAgICAgICAgICAgIDogYC0ke3RoaXMuZ2V0VChhcmdzLnRleHQpfWA7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoYXJncy5heGlzLnByb3BOYW1lID09IFwieUF4aXMyXCIpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMubGluZVR5cGUgPT0gXCJwZXJjZW50XCIgJiZcclxuICAgICAgICB0aGlzLmRhdGFDb2x1bW4gJiZcclxuICAgICAgICB0aGlzLmRhdGFDb2x1bW4ubGVuZ3RoID4gMFxyXG4gICAgICApIHtcclxuICAgICAgICBhcmdzLnRleHQgPSB0aGlzLmZvcm1hdFBlcmNlbnRhZ2UoYXJncy50ZXh0KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoaXNOYU4oYXJncy50ZXh0KSkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhcmdzLnRleHQgPVxyXG4gICAgICAgICAgTnVtYmVyKGFyZ3MudGV4dCkgPj0gMFxyXG4gICAgICAgICAgICA/IHRoaXMuZ2V0VChhcmdzLnRleHQpXHJcbiAgICAgICAgICAgIDogYC0ke3RoaXMuZ2V0VChhcmdzLnRleHQpfWA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFQodmFsdWUpIHtcclxuICAgIHJldHVybiBTdHJpbmcodmFsdWUpXHJcbiAgICAgIC5yZXBsYWNlKC9bXjAtOS5dL2csIFwiXCIpXHJcbiAgICAgIC5yZXBsYWNlKC8oXFxkKSg/PShcXGR7M30pKyg/IVxcZCkpL2csIFwiJDEsXCIpO1xyXG4gICAgLy8gcmV0dXJuIHRoaXMuZGVjaW1hbFBpcGUudHJhbnNmb3JtKE51bWJlcih2YWx1ZSksIFwiMS4yLTJcIik7XHJcbiAgfVxyXG5cclxuICBmb3JtYXRQZXJjZW50YWdlKGRlY2ltYWwpIHtcclxuICAgIGNvbnN0IHBlcmNlbnRhZ2UgPSAoZGVjaW1hbCAqIDEwMCkudG9GaXhlZCgyKTtcclxuICAgIHJldHVybiBgJHtwZXJjZW50YWdlfSVgO1xyXG4gIH1cclxuXHJcbiAgYXJyYXlzQXJlRXF1YWwoYXJyMSwgYXJyMikge1xyXG4gICAgaWYgKCghYXJyMSAmJiBhcnIyKSB8fCAoYXJyMSAmJiAhYXJyMikpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghYXJyMSAmJiAhYXJyMikge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoYXJyMS5sZW5ndGggIT09IGFycjIubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFycjEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3Qgb2JqMSA9IGFycjFbaV07XHJcbiAgICAgIGNvbnN0IG9iajIgPSBhcnIyW2ldO1xyXG5cclxuICAgICAgaWYgKHR5cGVvZiBvYmoxICE9PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBvYmoyICE9PSBcIm9iamVjdFwiKSB7XHJcbiAgICAgICAgaWYgKG9iajEgIT09IG9iajIpIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLm9iamVjdHNBcmVFcXVhbChvYmoxLCBvYmoyKSkge1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgb2JqZWN0c0FyZUVxdWFsKG9iajEsIG9iajIpIHtcclxuICAgIGNvbnN0IGtleXMxID0gT2JqZWN0LmtleXMob2JqMSk7XHJcbiAgICBjb25zdCBrZXlzMiA9IE9iamVjdC5rZXlzKG9iajIpO1xyXG5cclxuICAgIGlmIChrZXlzMS5sZW5ndGggIT09IGtleXMyLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQga2V5IG9mIGtleXMxKSB7XHJcbiAgICAgIGlmIChvYmoxW2tleV0gIT09IG9iajJba2V5XSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgb25Qb2ludFJlbmRlcihlKSB7XHJcbiAgICBpZiAoZS5wb2ludC55ID09IDApIHtcclxuICAgICAgZS5jYW5jZWwgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHRvb2x0aXBSZW5kZXIoYXJnczogSVRvb2x0aXBSZW5kZXJFdmVudEFyZ3MgfCBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChpc05hTihhcmdzLmRhdGEucG9pbnRZKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5jb25maWcucG9ydGxldFR5cGUgPT09IFwiaGlzdG9yaWNhbElSUlwiKSB7XHJcbiAgICAgIGFyZ3MudGV4dCA9IGAke2FyZ3MuZGF0YS5wb2ludFh9OiAkeyhhcmdzLmRhdGEucG9pbnRZICogMTAwKS50b0ZpeGVkKFxyXG4gICAgICAgIDJcclxuICAgICAgKX0lYDtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgYXJncy50ZXh0ID0gYCR7YXJncy5kYXRhLnBvaW50WH06ICR7dGhpcy5kZWNpbWFsUGlwZS50cmFuc2Zvcm0oXHJcbiAgICAgIGFyZ3MuZGF0YS5wb2ludFksXHJcbiAgICAgIFwiMS4yLTJcIlxyXG4gICAgKX1gO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcblx0Y2xhc3M9XCJjb250ZW50XCJcclxuXHQjY2hhcnRDb250ZW50XHJcblx0aWQ9XCJjaGFydENvbnRlbnRcIlxyXG5cdCpuZ0lmPVwiZGF0YUNvbHVtbiB8fCBkYXRhTGluZVwiXHJcbj5cclxuXHQ8ZWpzLWNoYXJ0XHJcblx0XHQjY2hhcnRcclxuXHRcdHN0eWxlPVwiZGlzcGxheTogYmxvY2tcIlxyXG5cdFx0YWxpZ249XCJjZW50ZXJcIlxyXG5cdFx0W3RpdGxlXT1cInRpdGxlXCJcclxuXHRcdFtwcmltYXJ5WEF4aXNdPVwicHJpbWFyeVhBeGlzXCJcclxuXHRcdFtwcmltYXJ5WUF4aXNdPVwicHJpbWFyeVlBeGlzXCJcclxuXHRcdFt0b29sdGlwXT1cInRvb2x0aXBcIlxyXG5cdFx0KGxvYWQpPVwibG9hZCgkZXZlbnQpXCJcclxuXHRcdFtjaGFydEFyZWFdPVwiY2hhcnRBcmVhXCJcclxuXHRcdHdpZHRoPVwiMTAwJVwiXHJcblx0XHRbaGVpZ2h0XT1cImhlaWdodFwiXHJcblx0XHRbd2lkdGhdPVwid2lkdGhcIlxyXG5cdFx0W3pvb21TZXR0aW5nc109XCJ6b29tU2V0dGluZ3NcIlxyXG5cdFx0W2xlZ2VuZFNldHRpbmdzXT1cImxlZ2VuZFwiXHJcblx0XHRbcGFsZXR0ZXNdPVwiY3VzdG9tUGFsZXR0ZVwiXHJcblx0XHQocG9pbnRSZW5kZXIpPVwib25Qb2ludFJlbmRlcigkZXZlbnQpXCJcclxuXHRcdFtlbmFibGVBbmltYXRpb25dPVwiZmFsc2VcIlxyXG5cdFx0KHRleHRSZW5kZXIpPVwidGV4dFJlbmRlcigkZXZlbnQpXCJcclxuXHRcdCh0b29sdGlwUmVuZGVyKT1cInRvb2x0aXBSZW5kZXIoJGV2ZW50KVwiXHJcblx0XHQoYXhpc0xhYmVsUmVuZGVyKT1cIk9uQ2hhcnRBeGlzTGFiZVJlbmRlcigkZXZlbnQpXCJcclxuXHQ+XHJcblx0XHQ8ZS1zZXJpZXMtY29sbGVjdGlvbj5cclxuXHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGFDb2x1bW4gJiYgZGF0YUNvbHVtbi5sZW5ndGggPiAwXCI+XHJcblx0XHRcdFx0PGUtc2VyaWVzXHJcblx0XHRcdFx0XHQqbmdGb3I9XCJsZXQgaSBvZiBjb2x1bW5cIlxyXG5cdFx0XHRcdFx0W2RhdGFTb3VyY2VdPVwiZGF0YUNvbHVtblwiXHJcblx0XHRcdFx0XHR0eXBlPVwiQ29sdW1uXCJcclxuXHRcdFx0XHRcdFt4TmFtZV09XCJpLnhOYW1lXCJcclxuXHRcdFx0XHRcdFttYXJrZXJdPVwibWFya2VyXCJcclxuXHRcdFx0XHRcdFt5TmFtZV09XCJpLnlOYW1lXCJcclxuXHRcdFx0XHRcdFtuYW1lXT1cImkubmFtZVwiXHJcblx0XHRcdFx0XHRjb2x1bW5TcGFjaW5nPVwiMC4xXCJcclxuXHRcdFx0XHRcdHdpZHRoPVwiMlwiXHJcblx0XHRcdFx0XHRvcGFjaXR5PVwiMVwiXHJcblx0XHRcdFx0PlxyXG5cdFx0XHRcdDwvZS1zZXJpZXM+XHJcblx0XHRcdDwvbmctY29udGFpbmVyPlxyXG5cclxuXHRcdFx0PCEtLSDlj6rpgInnrKzkuozkuKpZ6L205pe277yM5pi+56S65oqY57q/5Zu+IC0tPlxyXG5cdFx0XHQ8bmctY29udGFpbmVyXHJcblx0XHRcdFx0Km5nSWY9XCJcclxuXHRcdFx0XHRcdGRhdGFMaW5lICYmXHJcblx0XHRcdFx0XHRkYXRhTGluZS5sZW5ndGggPiAwICYmXHJcblx0XHRcdFx0XHRkYXRhQ29sdW1uICYmXHJcblx0XHRcdFx0XHRkYXRhQ29sdW1uLmxlbmd0aCA8PSAwXHJcblx0XHRcdFx0XCJcclxuXHRcdFx0PlxyXG5cdFx0XHRcdDxlLXNlcmllc1xyXG5cdFx0XHRcdFx0Km5nRm9yPVwibGV0IGkgb2YgY29sdW1uTGluZVwiXHJcblx0XHRcdFx0XHRbZGF0YVNvdXJjZV09XCJkYXRhTGluZVwiXHJcblx0XHRcdFx0XHR0eXBlPVwiU3BsaW5lXCJcclxuXHRcdFx0XHRcdFt4TmFtZV09XCJpLnhOYW1lXCJcclxuXHRcdFx0XHRcdFt5TmFtZV09XCJpLnlOYW1lXCJcclxuXHRcdFx0XHRcdFttYXJrZXJdPVwibWFya2VyXCJcclxuXHRcdFx0XHRcdFtuYW1lXT1cImkubmFtZVwiXHJcblx0XHRcdFx0XHRjb2x1bW5TcGFjaW5nPVwiMC4xXCJcclxuXHRcdFx0XHRcdHdpZHRoPVwiMlwiXHJcblx0XHRcdFx0XHRvcGFjaXR5PVwiMVwiXHJcblx0XHRcdFx0PlxyXG5cdFx0XHRcdDwvZS1zZXJpZXM+XHJcblx0XHRcdDwvbmctY29udGFpbmVyPlxyXG5cclxuXHRcdFx0PCEtLSDlpoLmnpzkuKTkuKpZ6L205piv5ZCM57G75Z6L5pWw5o2u77yM5YWx55So5LiA5LiqWei9tCAtLT5cclxuXHRcdFx0PG5nLWNvbnRhaW5lclxyXG5cdFx0XHRcdCpuZ0lmPVwiXHJcblx0XHRcdFx0XHRkYXRhQ29sdW1uICYmXHJcblx0XHRcdFx0XHRkYXRhQ29sdW1uLmxlbmd0aCA+IDAgJiZcclxuXHRcdFx0XHRcdGRhdGFMaW5lICYmXHJcblx0XHRcdFx0XHRkYXRhTGluZS5sZW5ndGggPiAwICYmXHJcblx0XHRcdFx0XHRjb2x1bW5UeXBlID09IGxpbmVUeXBlXHJcblx0XHRcdFx0XCJcclxuXHRcdFx0PlxyXG5cdFx0XHRcdDxlLXNlcmllc1xyXG5cdFx0XHRcdFx0Km5nRm9yPVwibGV0IGkgb2YgY29sdW1uTGluZVwiXHJcblx0XHRcdFx0XHRbZGF0YVNvdXJjZV09XCJkYXRhTGluZVwiXHJcblx0XHRcdFx0XHR0eXBlPVwiU3BsaW5lXCJcclxuXHRcdFx0XHRcdFt4TmFtZV09XCJpLnhOYW1lXCJcclxuXHRcdFx0XHRcdFt5TmFtZV09XCJpLnlOYW1lXCJcclxuXHRcdFx0XHRcdFtuYW1lXT1cImkubmFtZVwiXHJcblx0XHRcdFx0XHRbbWFya2VyXT1cIm1hcmtlclwiXHJcblx0XHRcdFx0XHRjb2x1bW5TcGFjaW5nPVwiMC4xXCJcclxuXHRcdFx0XHRcdHdpZHRoPVwiMlwiXHJcblx0XHRcdFx0XHRvcGFjaXR5PVwiMVwiXHJcblx0XHRcdFx0PlxyXG5cdFx0XHRcdDwvZS1zZXJpZXM+XHJcblx0XHRcdDwvbmctY29udGFpbmVyPlxyXG5cclxuXHRcdFx0PCEtLSDlpoLmnpzkuKTkuKpZ6L205piv5LiN5ZCM57G75Z6L5pWw5o2u77yM5bCx55So5Lik5LiqWei9tCAtLT5cclxuXHRcdFx0PG5nLWNvbnRhaW5lclxyXG5cdFx0XHRcdCpuZ0lmPVwiXHJcblx0XHRcdFx0XHRkYXRhQ29sdW1uICYmXHJcblx0XHRcdFx0XHRkYXRhQ29sdW1uLmxlbmd0aCA+IDAgJiZcclxuXHRcdFx0XHRcdGRhdGFMaW5lICYmXHJcblx0XHRcdFx0XHRkYXRhTGluZS5sZW5ndGggPiAwICYmXHJcblx0XHRcdFx0XHRjb2x1bW5UeXBlICE9IGxpbmVUeXBlXHJcblx0XHRcdFx0XCJcclxuXHRcdFx0PlxyXG5cdFx0XHRcdDxlLXNlcmllc1xyXG5cdFx0XHRcdFx0Km5nRm9yPVwibGV0IGkgb2YgY29sdW1uTGluZVwiXHJcblx0XHRcdFx0XHRbZGF0YVNvdXJjZV09XCJkYXRhTGluZVwiXHJcblx0XHRcdFx0XHR0eXBlPVwiU3BsaW5lXCJcclxuXHRcdFx0XHRcdFt4TmFtZV09XCJpLnhOYW1lXCJcclxuXHRcdFx0XHRcdFt5TmFtZV09XCJpLnlOYW1lXCJcclxuXHRcdFx0XHRcdFttYXJrZXJdPVwibWFya2VyXCJcclxuXHRcdFx0XHRcdFtuYW1lXT1cImkubmFtZVwiXHJcblx0XHRcdFx0XHR3aWR0aD1cIjJcIlxyXG5cdFx0XHRcdFx0b3BhY2l0eT1cIjFcIlxyXG5cdFx0XHRcdFx0eUF4aXNOYW1lPVwieUF4aXMyXCJcclxuXHRcdFx0XHQ+XHJcblx0XHRcdFx0PC9lLXNlcmllcz5cclxuXHRcdFx0PC9uZy1jb250YWluZXI+XHJcblx0XHQ8L2Utc2VyaWVzLWNvbGxlY3Rpb24+XHJcblxyXG5cdFx0PGUtYXhlcz5cclxuXHRcdFx0PG5nLWNvbnRhaW5lclxyXG5cdFx0XHRcdCpuZ0lmPVwiXHJcblx0XHRcdFx0XHRkYXRhQ29sdW1uICYmXHJcblx0XHRcdFx0XHRkYXRhQ29sdW1uLmxlbmd0aCA+IDAgJiZcclxuXHRcdFx0XHRcdGRhdGFMaW5lICYmXHJcblx0XHRcdFx0XHRkYXRhTGluZS5sZW5ndGggPiAwXHJcblx0XHRcdFx0XCJcclxuXHRcdFx0PlxyXG5cdFx0XHRcdDxlLWF4aXNcclxuXHRcdFx0XHRcdG9wcG9zZWRQb3NpdGlvbj1cInRydWVcIlxyXG5cdFx0XHRcdFx0cm93SW5kZXg9XCIwXCJcclxuXHRcdFx0XHRcdG5hbWU9XCJ5QXhpczJcIlxyXG5cdFx0XHRcdFx0W21ham9yR3JpZExpbmVzXT1cInsgd2lkdGg6IDAgfVwiXHJcblx0XHRcdFx0XHR0aXRsZT1cIlwiXHJcblx0XHRcdFx0XHRbbGluZVN0eWxlXT1cInsgd2lkdGg6IDAgfVwiXHJcblx0XHRcdFx0XHRbbWFqb3JUaWNrTGluZXNdPVwieyB3aWR0aDogMCB9XCJcclxuXHRcdFx0XHQ+XHJcblx0XHRcdFx0PC9lLWF4aXM+XHJcblx0XHRcdDwvbmctY29udGFpbmVyPlxyXG5cdFx0PC9lLWF4ZXM+XHJcblx0PC9lanMtY2hhcnQ+XHJcblx0PGRpdiBjbGFzcz1cImZ1bGwtYm94LW1hc2tcIiAqbmdJZj1cInBhZ2VMb2FkaW5nXCI+XHJcblx0XHQ8bWF0LXNwaW5uZXJcclxuXHRcdFx0c3R5bGU9XCJ6LWluZGV4OiA5OTlcIlxyXG5cdFx0XHRtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiXHJcblx0XHRcdFtkaWFtZXRlcl09XCIyNFwiXHJcblx0XHQ+PC9tYXQtc3Bpbm5lcj5cclxuXHQ8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export function debounce(delay = 300) {
|
|
2
|
+
// tslint:disable-next-line: only-arrow-functions
|
|
3
|
+
return function (descriptor) {
|
|
4
|
+
const timeoutKey = Symbol();
|
|
5
|
+
const original = descriptor.value;
|
|
6
|
+
if (!original) {
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
descriptor.value = function (...args) {
|
|
10
|
+
clearTimeout(this[timeoutKey]);
|
|
11
|
+
this[timeoutKey] = setTimeout(function () {
|
|
12
|
+
original.apply(this, args);
|
|
13
|
+
}.bind(this), delay);
|
|
14
|
+
};
|
|
15
|
+
return descriptor;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yYWlzZS1jb21tb24tbGliL3NyYy9saWIvZGFzaGJvYXJkL2Jhci1jaGFydHMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLFFBQVEsQ0FBQyxRQUFnQixHQUFHO0lBQzNDLGlEQUFpRDtJQUNqRCxPQUFPLFVBQVUsVUFBOEI7UUFDOUMsTUFBTSxVQUFVLEdBQUcsTUFBTSxFQUFFLENBQUM7UUFFNUIsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztRQUNsQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2QsT0FBTztTQUNQO1FBRUQsVUFBVSxDQUFDLEtBQUssR0FBRyxVQUFVLEdBQUcsSUFBSTtZQUNuQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDL0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLFVBQVUsQ0FDNUI7Z0JBQ0MsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDNUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFDWixLQUFLLENBQ0wsQ0FBQztRQUNILENBQUMsQ0FBQztRQUVGLE9BQU8sVUFBVSxDQUFDO0lBQ25CLENBQUMsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZGVib3VuY2UoZGVsYXk6IG51bWJlciA9IDMwMCk6IE1ldGhvZERlY29yYXRvciB7XHJcblx0Ly8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBvbmx5LWFycm93LWZ1bmN0aW9uc1xyXG5cdHJldHVybiBmdW5jdGlvbiAoZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yKSB7XHJcblx0XHRjb25zdCB0aW1lb3V0S2V5ID0gU3ltYm9sKCk7XHJcblxyXG5cdFx0Y29uc3Qgb3JpZ2luYWwgPSBkZXNjcmlwdG9yLnZhbHVlO1xyXG5cdFx0aWYgKCFvcmlnaW5hbCkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0ZGVzY3JpcHRvci52YWx1ZSA9IGZ1bmN0aW9uICguLi5hcmdzKSB7XHJcblx0XHRcdGNsZWFyVGltZW91dCh0aGlzW3RpbWVvdXRLZXldKTtcclxuXHRcdFx0dGhpc1t0aW1lb3V0S2V5XSA9IHNldFRpbWVvdXQoXHJcblx0XHRcdFx0ZnVuY3Rpb24oKSB7XHJcblx0XHRcdFx0XHRvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcclxuXHRcdFx0XHR9LmJpbmQodGhpcyksXHJcblx0XHRcdFx0ZGVsYXlcclxuXHRcdFx0KTtcclxuXHRcdH07XHJcblxyXG5cdFx0cmV0dXJuIGRlc2NyaXB0b3I7XHJcblx0fTtcclxufVxyXG4iXX0=
|