keevo-components 2.0.16 → 2.0.18
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/keevo-components.mjs +5 -0
- package/esm2022/lib/api/base-components/base-component-button.mjs +39 -0
- package/esm2022/lib/api/base-components/base-component-chart.mjs +104 -0
- package/esm2022/lib/api/base-components/base-component-crud-form.mjs +302 -0
- package/esm2022/lib/api/base-components/base-component-crud-list.mjs +91 -0
- package/esm2022/lib/api/base-components/base-component-crud.mjs +80 -0
- package/esm2022/lib/api/base-components/base-component-dropdown-external.mjs +31 -0
- package/esm2022/lib/api/base-components/base-component-dropdown.mjs +238 -0
- package/esm2022/lib/api/base-components/base-component-input.mjs +101 -0
- package/esm2022/lib/api/base-components/base-component-multi-select.mjs +174 -0
- package/esm2022/lib/api/base-components/base-component-table.mjs +354 -0
- package/esm2022/lib/api/base-components/base-component.mjs +51 -0
- package/esm2022/lib/api/components/chart/chart.config.mjs +2 -0
- package/esm2022/lib/api/components/chart/chart.model.mjs +2 -0
- package/esm2022/lib/api/components/chart/orchart.config.mjs +2 -0
- package/esm2022/lib/api/components/chart/orchartnode.mjs +2 -0
- package/esm2022/lib/api/components/dropdown/filtro.combo.mjs +2 -0
- package/esm2022/lib/api/components/stepper/kv-stepperpanel.mjs +2 -0
- package/esm2022/lib/api/components/table/action-item.mjs +2 -0
- package/esm2022/lib/api/components/table/kv-menuitem.mjs +46 -0
- package/esm2022/lib/api/components/table/table-dropdown-control.mjs +2 -0
- package/esm2022/lib/api/components/table/table.config.column.mjs +2 -0
- package/esm2022/lib/api/components/table/table.config.mjs +2 -0
- package/esm2022/lib/api/components/table/table.paginate.mjs +10 -0
- package/esm2022/lib/api/components/table/tabledit.config.mjs +2 -0
- package/esm2022/lib/api/components/table/tableedit.config.column.mjs +2 -0
- package/esm2022/lib/api/components/tree-table/tree-table-keys.mjs +2 -0
- package/esm2022/lib/api/components/tree-table/tree-table.config.mjs +3 -0
- package/esm2022/lib/api/directives/directives.module.mjs +30 -0
- package/esm2022/lib/api/directives/drag/drag.directive.mjs +52 -0
- package/esm2022/lib/api/directives/stepper/dynamicinput.directive.mjs +31 -0
- package/esm2022/lib/api/directives/template/template.directive.mjs +24 -0
- package/esm2022/lib/api/helpers/component-providers.mjs +16 -0
- package/esm2022/lib/api/helpers/keevo-validators.mjs +131 -0
- package/esm2022/lib/api/helpers/translate-primeng.mjs +23 -0
- package/esm2022/lib/api/modules/primeng.module.mjs +275 -0
- package/esm2022/lib/api/pipes/capitalize.pipe.mjs +47 -0
- package/esm2022/lib/api/pipes/cpfcnpj.pipe.mjs +25 -0
- package/esm2022/lib/api/pipes/mask.pipe.mjs +29 -0
- package/esm2022/lib/api/pipes/pipes.module.mjs +39 -0
- package/esm2022/lib/api/pipes/telefone.pipe.mjs +45 -0
- package/esm2022/lib/api/services/base.api.service.mjs +74 -0
- package/esm2022/lib/api/services/breadcrumbs.service.mjs +62 -0
- package/esm2022/lib/api/services/chat.service.mjs +37 -0
- package/esm2022/lib/api/services/component.service.mjs +37 -0
- package/esm2022/lib/api/services/docs.service.mjs +129 -0
- package/esm2022/lib/api/services/form.service.mjs +95 -0
- package/esm2022/lib/api/services/image.cutter.service.mjs +191 -0
- package/esm2022/lib/api/services/imagens.service.mjs +28 -0
- package/esm2022/lib/api/services/notification.service.mjs +69 -0
- package/esm2022/lib/api/services/object.service.mjs +39 -0
- package/esm2022/lib/api/services/orgchart.service.mjs +64 -0
- package/esm2022/lib/api/types/breadcrumb.model.mjs +2 -0
- package/esm2022/lib/components/keevo-components.module.mjs +207 -0
- package/esm2022/lib/components/kv-avatar/kv-avatar.component.mjs +133 -0
- package/esm2022/lib/components/kv-avatar/kv-avatar.module.mjs +55 -0
- package/esm2022/lib/components/kv-button/kv-button.component.mjs +24 -0
- package/esm2022/lib/components/kv-button/kv-button.module.mjs +28 -0
- package/esm2022/lib/components/kv-buttons/kv-button-personalize/kv-button-personalize.component.mjs +25 -0
- package/esm2022/lib/components/kv-buttons/kv-button-popup/kv-button-popup.component.mjs +35 -0
- package/esm2022/lib/components/kv-buttons/kv-button-secondary/kv-button-secondary.component.mjs +17 -0
- package/esm2022/lib/components/kv-buttons/kv-button-success/kv-button-success.component.mjs +17 -0
- package/esm2022/lib/components/kv-buttons/kv-button.module.mjs +39 -0
- package/esm2022/lib/components/kv-card-selection/kv-card-selection.component.mjs +60 -0
- package/esm2022/lib/components/kv-card-selection/kv-card-selection.module.mjs +31 -0
- package/esm2022/lib/components/kv-carousel/kv-carousel.component.mjs +34 -0
- package/esm2022/lib/components/kv-carousel/kv-carousel.module.mjs +28 -0
- package/esm2022/lib/components/kv-chart/kv-chart.component.mjs +166 -0
- package/esm2022/lib/components/kv-chart/kv-chart.module.mjs +32 -0
- package/esm2022/lib/components/kv-content-viewer/kv-content-viewer.component.mjs +146 -0
- package/esm2022/lib/components/kv-content-viewer/kv-content-viewer.module.mjs +36 -0
- package/esm2022/lib/components/kv-error/kv-error.component.mjs +26 -0
- package/esm2022/lib/components/kv-error/kv-error.module.mjs +35 -0
- package/esm2022/lib/components/kv-file-upload/kv-file-upload.component.mjs +162 -0
- package/esm2022/lib/components/kv-file-upload/kv-file-upload.module.mjs +18 -0
- package/esm2022/lib/components/kv-file-viewer/kv-file-viewer.component.mjs +46 -0
- package/esm2022/lib/components/kv-file-viewer/kv-file-viewer.module.mjs +20 -0
- package/esm2022/lib/components/kv-file-viewer-novo/kv-file-viewer-novo.component.mjs +68 -0
- package/esm2022/lib/components/kv-file-viewer-novo/kv-file-viewer-novo.module.mjs +24 -0
- package/esm2022/lib/components/kv-filter-card/kv-filter-card.component.mjs +29 -0
- package/esm2022/lib/components/kv-filter-card/kv-filter-card.module.mjs +34 -0
- package/esm2022/lib/components/kv-filter-fieldset/kv-filter-fieldset.component.mjs +26 -0
- package/esm2022/lib/components/kv-filter-fieldset/kv-filter-fieldset.module.mjs +28 -0
- package/esm2022/lib/components/kv-g-icon/kv-g-icon.component.mjs +11 -0
- package/esm2022/lib/components/kv-g-icon/kv-g-icon.module.mjs +19 -0
- package/esm2022/lib/components/kv-home-card/kv-home-card.component.mjs +27 -0
- package/esm2022/lib/components/kv-home-card/kv-home-card.module.mjs +32 -0
- package/esm2022/lib/components/kv-image-upload/kv-image-upload.component.mjs +135 -0
- package/esm2022/lib/components/kv-image-upload/kv-image-upload.module.mjs +18 -0
- package/esm2022/lib/components/kv-inputs/kv-check/kv-check.component.mjs +29 -0
- package/esm2022/lib/components/kv-inputs/kv-dropdown/kv-dropdown.component.mjs +102 -0
- package/esm2022/lib/components/kv-inputs/kv-editor/kv-editor.component.mjs +150 -0
- package/esm2022/lib/components/kv-inputs/kv-input-calendar/kv-input-calendar.component.mjs +168 -0
- package/esm2022/lib/components/kv-inputs/kv-input-mask/kv-input-mask.component.mjs +30 -0
- package/esm2022/lib/components/kv-inputs/kv-input-number/kv-input-number.component.mjs +59 -0
- package/esm2022/lib/components/kv-inputs/kv-input-password/kv-input-password.component.mjs +33 -0
- package/esm2022/lib/components/kv-inputs/kv-input-text/kv-input-text.component.mjs +38 -0
- package/esm2022/lib/components/kv-inputs/kv-input-text-checkbox/kv-input-text-checkbox.component.mjs +47 -0
- package/esm2022/lib/components/kv-inputs/kv-input-textarea/kv-input-textarea.component.mjs +43 -0
- package/esm2022/lib/components/kv-inputs/kv-input-time/kv-input-time.component.mjs +24 -0
- package/esm2022/lib/components/kv-inputs/kv-inputs.module.mjs +131 -0
- package/esm2022/lib/components/kv-inputs/kv-multi-select/kv-multi-select.component.mjs +57 -0
- package/esm2022/lib/components/kv-inputs/kv-radio-group/kv-radio-group.component.mjs +60 -0
- package/esm2022/lib/components/kv-inputs/kv-select-button/kv-select-button.component.mjs +46 -0
- package/esm2022/lib/components/kv-inputs/kv-select-buttons/kv-select-buttons.component.mjs +36 -0
- package/esm2022/lib/components/kv-inputs/kv-switch/kv-switch.component.mjs +42 -0
- package/esm2022/lib/components/kv-inputs/kv-tree-multi-select/kv-tree-multi-select.component.mjs +58 -0
- package/esm2022/lib/components/kv-label/kv-label.component.mjs +15 -0
- package/esm2022/lib/components/kv-label/kv-label.module.mjs +24 -0
- package/esm2022/lib/components/kv-layout/dropdown-master/dropdown-master.component.mjs +28 -0
- package/esm2022/lib/components/kv-layout/kv-layout.module.mjs +72 -0
- package/esm2022/lib/components/kv-layout/layout/kv-layout.component.mjs +430 -0
- package/esm2022/lib/components/kv-layout/top-icons/top-icons.component.mjs +15 -0
- package/esm2022/lib/components/kv-loader/kv-loader.component.mjs +16 -0
- package/esm2022/lib/components/kv-loader/kv-loader.module.mjs +28 -0
- package/esm2022/lib/components/kv-loader/kv-loader.service.mjs +29 -0
- package/esm2022/lib/components/kv-login/kv-login.component.mjs +62 -0
- package/esm2022/lib/components/kv-login/kv-login.module.mjs +47 -0
- package/esm2022/lib/components/kv-modal/kv-modal.component.mjs +98 -0
- package/esm2022/lib/components/kv-modal/kv-modal.module.mjs +20 -0
- package/esm2022/lib/components/kv-orgchart/kv-orgchart.component.mjs +225 -0
- package/esm2022/lib/components/kv-orgchart/kv-orgchart.module.mjs +59 -0
- package/esm2022/lib/components/kv-page-form/kv-page-form.component.mjs +217 -0
- package/esm2022/lib/components/kv-page-form/kv-page-form.module.mjs +41 -0
- package/esm2022/lib/components/kv-page-stepper/kv-page-stepper.component.mjs +205 -0
- package/esm2022/lib/components/kv-page-stepper/kv-page-stepper.module.mjs +51 -0
- package/esm2022/lib/components/kv-pick-list/kv-pick-list.component.mjs +183 -0
- package/esm2022/lib/components/kv-pick-list/kv-pick-list.module.mjs +39 -0
- package/esm2022/lib/components/kv-progress-bar/kv-progress-bar.component.mjs +58 -0
- package/esm2022/lib/components/kv-progress-bar/kv-progress-bar.module.mjs +28 -0
- package/esm2022/lib/components/kv-report/kv-report.component.mjs +44 -0
- package/esm2022/lib/components/kv-report/kv-report.module.mjs +24 -0
- package/esm2022/lib/components/kv-stepper/kv-stepper.component.mjs +74 -0
- package/esm2022/lib/components/kv-stepper/kv-stepper.module.mjs +47 -0
- package/esm2022/lib/components/kv-table/kv-table.component.mjs +673 -0
- package/esm2022/lib/components/kv-table/kv-table.module.mjs +40 -0
- package/esm2022/lib/components/kv-table-edit/kv-table-edit.component.mjs +323 -0
- package/esm2022/lib/components/kv-table-edit/kv-table-edit.module.mjs +45 -0
- package/esm2022/lib/components/kv-table-expandable/kv-table-expandable.component.mjs +516 -0
- package/esm2022/lib/components/kv-table-expandable/kv-table-expandable.module.mjs +40 -0
- package/esm2022/lib/components/kv-tree-table/kv-tree-table.component.mjs +331 -0
- package/esm2022/lib/components/kv-tree-table/kv-tree-table.module.mjs +39 -0
- package/esm2022/lib/components/kv-tree-view/kv-tree-view.component.mjs +70 -0
- package/esm2022/lib/components/kv-tree-view/kv-tree-view.module.mjs +28 -0
- package/esm2022/lib/components/kv-workspace/empresa/kv-workspace-empresa.component.mjs +40 -0
- package/esm2022/lib/components/kv-workspace/kv-workspace.module.mjs +68 -0
- package/esm2022/lib/components/kv-workspace/logo/kv-workspace-logo.component.mjs +22 -0
- package/esm2022/lib/components/kv-workspace/master/kv-workspace-master.component.mjs +78 -0
- package/esm2022/lib/components/kv-workspace/workspace/kv-workspace.component.mjs +87 -0
- package/esm2022/public-api.mjs +256 -0
- package/fesm2022/keevo-components.mjs +60 -14
- package/fesm2022/keevo-components.mjs.map +1 -1
- package/lib/components/kv-button/kv-button.component.d.ts +1 -1
- package/lib/components/kv-content-viewer/kv-content-viewer.component.d.ts +2 -1
- package/lib/components/kv-pick-list/kv-pick-list.component.d.ts +2 -0
- package/lib/components/kv-stepper/kv-stepper.component.d.ts +1 -1
- package/lib/components/kv-table/kv-table.component.d.ts +1 -1
- package/lib/components/kv-table-expandable/kv-table-expandable.component.d.ts +1 -1
- package/package.json +3 -1
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, model, Output, signal, ViewChild, ViewContainerRef, } from '@angular/core';
|
|
2
|
+
import { OrgChart } from 'd3-org-chart';
|
|
3
|
+
import * as d3 from 'd3';
|
|
4
|
+
import { fromEvent } from 'rxjs';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../../api/services/orgchart.service";
|
|
7
|
+
import * as i2 from "primeng/api";
|
|
8
|
+
import * as i3 from "@angular/common";
|
|
9
|
+
import * as i4 from "primeng/tooltip";
|
|
10
|
+
import * as i5 from "primeng/dropdown";
|
|
11
|
+
import * as i6 from "../kv-button/kv-button.component";
|
|
12
|
+
export class KvOrgchartComponent {
|
|
13
|
+
constructor(cdr, service, filterService) {
|
|
14
|
+
this.cdr = cdr;
|
|
15
|
+
this.service = service;
|
|
16
|
+
this.filterService = filterService;
|
|
17
|
+
this.dataSource = model(null);
|
|
18
|
+
this.filtrosOpt = signal([]);
|
|
19
|
+
this.selectedOpt = null;
|
|
20
|
+
//#region Emissores de evento
|
|
21
|
+
this.onNodeClick = new EventEmitter();
|
|
22
|
+
// #endregion
|
|
23
|
+
this.compact = true;
|
|
24
|
+
this.mostraMenu = false;
|
|
25
|
+
}
|
|
26
|
+
//#region Iniciar OrgChart e Atualização de dados
|
|
27
|
+
ngOnInit() {
|
|
28
|
+
this.iniciarHandlersDeEventos();
|
|
29
|
+
}
|
|
30
|
+
ngAfterViewInit() {
|
|
31
|
+
if (!this.chart) {
|
|
32
|
+
this.chart = new OrgChart();
|
|
33
|
+
}
|
|
34
|
+
this.iniciarChart();
|
|
35
|
+
}
|
|
36
|
+
iniciarChart() {
|
|
37
|
+
if (!this.dataSource() || !this.chart) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const chartContainer = this.chartContainer.nativeElement;
|
|
41
|
+
this.chart
|
|
42
|
+
.createZoom(() => {
|
|
43
|
+
return d3.zoom().filter((e) => {
|
|
44
|
+
const element = e.srcElement;
|
|
45
|
+
if (element.classList.contains('no-zoom')) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
return true;
|
|
49
|
+
});
|
|
50
|
+
})
|
|
51
|
+
.container(chartContainer)
|
|
52
|
+
.data(this.dataSource())
|
|
53
|
+
.nodeWidth(() => this.config.cardWidht)
|
|
54
|
+
.nodeHeight((d) => {
|
|
55
|
+
return d.data.expanded && this.config.cardExpandedHeight
|
|
56
|
+
? this.config.cardExpandedHeight
|
|
57
|
+
: this.config.cardHeight;
|
|
58
|
+
})
|
|
59
|
+
.compact(false)
|
|
60
|
+
.buttonContent(({ node, state }) => {
|
|
61
|
+
return `<div style="color:#FFFFFF; border-radius:100%;font-size:5px;margin:auto auto;background-color:#64748B;">
|
|
62
|
+
<span>
|
|
63
|
+
${node.children && node.children.length > 0
|
|
64
|
+
? `<i class="material-symbols-outlined">
|
|
65
|
+
keyboard_arrow_up
|
|
66
|
+
</i>`
|
|
67
|
+
: `<i class="material-symbols-outlined">
|
|
68
|
+
keyboard_arrow_down
|
|
69
|
+
</i>`}
|
|
70
|
+
</span>
|
|
71
|
+
</div>`;
|
|
72
|
+
})
|
|
73
|
+
.linkUpdate((node, index, nodes) => {
|
|
74
|
+
d3.select(nodes[index])
|
|
75
|
+
.attr('stroke-width', this.config.conectionWidth || '2px')
|
|
76
|
+
.style('stroke', this.config.connectionColor || '#d6d6d6');
|
|
77
|
+
})
|
|
78
|
+
.nodeContent((d) => {
|
|
79
|
+
const node = {
|
|
80
|
+
data: d.data.data,
|
|
81
|
+
children: d.children,
|
|
82
|
+
id: d.data.id,
|
|
83
|
+
parentId: d.data.parentId,
|
|
84
|
+
expanded: d.data.expanded,
|
|
85
|
+
orgConfig: d.orgConfig,
|
|
86
|
+
};
|
|
87
|
+
const x = this.renderNodeTemplate(node);
|
|
88
|
+
return x;
|
|
89
|
+
})
|
|
90
|
+
.nodeUpdate(function (d) {
|
|
91
|
+
d.data.orgConfig.clicks.forEach((click) => {
|
|
92
|
+
d3.select(this)
|
|
93
|
+
.select(click)
|
|
94
|
+
.on('click', (e, d) => {
|
|
95
|
+
const dados = d;
|
|
96
|
+
const node = {
|
|
97
|
+
data: dados.data.data,
|
|
98
|
+
children: dados.children,
|
|
99
|
+
id: dados.data.id,
|
|
100
|
+
parentId: dados.data.parentId,
|
|
101
|
+
expanded: dados.data.expanded,
|
|
102
|
+
orgConfig: dados.orgConfig,
|
|
103
|
+
};
|
|
104
|
+
window.dispatchEvent(new CustomEvent('KvOrgChart_NodeClick', {
|
|
105
|
+
detail: {
|
|
106
|
+
node,
|
|
107
|
+
seletor: click,
|
|
108
|
+
},
|
|
109
|
+
}));
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
})
|
|
113
|
+
.defaultFont('Roboto')
|
|
114
|
+
.render();
|
|
115
|
+
this.chart.expandAll();
|
|
116
|
+
}
|
|
117
|
+
ngOnChanges(changes) {
|
|
118
|
+
if (changes['dataSource']) {
|
|
119
|
+
this.iniciarChart();
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
//#endregion
|
|
123
|
+
// #region Renderização de template
|
|
124
|
+
renderNodeTemplate(node) {
|
|
125
|
+
this.viewContainerRef.clear();
|
|
126
|
+
const view = this.viewContainerRef.createEmbeddedView(this.nodeTemplate, {
|
|
127
|
+
node: node,
|
|
128
|
+
});
|
|
129
|
+
this.cdr.detectChanges();
|
|
130
|
+
return view.rootNodes[0].outerHTML;
|
|
131
|
+
}
|
|
132
|
+
iniciarHandlersDeEventos() {
|
|
133
|
+
this.nodeClickSubscription = fromEvent(window, 'KvOrgChart_NodeClick').subscribe((event) => {
|
|
134
|
+
this.emitirClick(event.detail.node, event.detail.seletor);
|
|
135
|
+
});
|
|
136
|
+
this.nodeAddSubscription = this.service.nodeAdd$.subscribe((node) => {
|
|
137
|
+
this.adicionarNode(node);
|
|
138
|
+
});
|
|
139
|
+
this.nodeRemoveSubscription = this.service.nodeRemove$.subscribe((id) => {
|
|
140
|
+
this.removerNode(id);
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
ngOnDestroy() {
|
|
144
|
+
this.nodeClickSubscription.unsubscribe();
|
|
145
|
+
this.nodeAddSubscription.unsubscribe();
|
|
146
|
+
this.nodeRemoveSubscription.unsubscribe();
|
|
147
|
+
}
|
|
148
|
+
emitirClick(node, seletorCss) {
|
|
149
|
+
const event = {
|
|
150
|
+
node: node,
|
|
151
|
+
seletorCss: seletorCss ?? '',
|
|
152
|
+
};
|
|
153
|
+
this.onNodeClick.emit(event);
|
|
154
|
+
}
|
|
155
|
+
adicionarNode(node) {
|
|
156
|
+
const arr = [...this.dataSource(), node];
|
|
157
|
+
this.dataSource.set(arr);
|
|
158
|
+
this.iniciarChart();
|
|
159
|
+
}
|
|
160
|
+
removerNode(id) {
|
|
161
|
+
const indPai = this.dataSource().some((x) => x.parentId == id);
|
|
162
|
+
if (indPai) {
|
|
163
|
+
alert('Não é possível remover um nó que possui filhos');
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
const arr = this.dataSource().filter((x) => x.id != id);
|
|
167
|
+
this.dataSource.set(arr);
|
|
168
|
+
this.iniciarChart();
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
// #endregion
|
|
172
|
+
// #region Funções de utilidade
|
|
173
|
+
pesquisar(e) {
|
|
174
|
+
const valor = e.target.value;
|
|
175
|
+
this.filtrosOpt.set(this.filtrarArray(valor));
|
|
176
|
+
}
|
|
177
|
+
filtrarArray(valor) {
|
|
178
|
+
if (valor && this.config.filters) {
|
|
179
|
+
const dataSource = this.dataSource();
|
|
180
|
+
const valorLower = valor.toLowerCase(); // Converte o valor de busca para minúsculas
|
|
181
|
+
const arr = dataSource.filter((node) => {
|
|
182
|
+
return this.config.filters.every((filter) => {
|
|
183
|
+
// Converte os valores para minúsculas e verifica se contém a string de busca
|
|
184
|
+
return node.data[filter].toLowerCase().includes(valorLower);
|
|
185
|
+
});
|
|
186
|
+
});
|
|
187
|
+
return arr ?? null;
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
return null;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
centralizarNo(id) {
|
|
194
|
+
console.log(id);
|
|
195
|
+
this.chart.setCentered(id).render();
|
|
196
|
+
this.filter.hide();
|
|
197
|
+
this.filter.clear();
|
|
198
|
+
}
|
|
199
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvOrgchartComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.OrgChartService }, { token: i2.FilterService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
200
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.8", type: KvOrgchartComponent, selector: "kv-orgchart", inputs: { dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: false, isRequired: false, transformFunction: null }, nodeTemplate: { classPropertyName: "nodeTemplate", publicName: "nodeTemplate", isSignal: false, isRequired: false, transformFunction: null }, filterItemTemplate: { classPropertyName: "filterItemTemplate", publicName: "filterItemTemplate", isSignal: false, isRequired: false, transformFunction: null }, filterSelectedItemTemplate: { classPropertyName: "filterSelectedItemTemplate", publicName: "filterSelectedItemTemplate", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { dataSource: "dataSourceChange", onNodeClick: "onNodeClick" }, viewQueries: [{ propertyName: "chartContainer", first: true, predicate: ["chartContainer"], descendants: true }, { propertyName: "viewContainerRef", first: true, predicate: ["nodeTemplate"], descendants: true, read: ViewContainerRef }, { propertyName: "filter", first: true, predicate: ["filter"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div #chartContainer id=\"chartContainer\" [ngClass]=\"{ backGround: true }\">\r\n <div class=\"div-botoes w-full flex gap-1\">\r\n <div\r\n id=\"menubar\"\r\n class=\"shadow-2 flex justify-content-between align-content-center\"\r\n >\r\n <div class=\"grid formgrid p-fluid flex-grow-1\">\r\n <!-- <div #filterContainer class=\"col-4 grid formgrid p-fluid\">\r\n <kv-input-text class=\"col-12\" #filtro (onInput)=\"pesquisar($event)\">\r\n </kv-input-text>\r\n </div>\r\n\r\n @if(filtrosOpt().length > 0) {\r\n \r\n <div id=\"filtro-org-chart\" [style.width.px]=\"filterContainer.offsetWidth*0.9\">\r\n\r\n @for (opt of filtrosOpt(); track $index) {\r\n <div class=\"filtro-org-chart-item\">\r\n {{ opt.data.name }}\r\n\r\n </div>\r\n\r\n }\r\n\r\n </div>\r\n\r\n } -->\r\n\r\n <p-dropdown\r\n #filter\r\n placeholder=\"Filtrar...\"\r\n [style]=\"{\r\n height: '30px',\r\n 'display': 'flex',\r\n 'align-items': 'center',\r\n 'margin-left': '15px',\r\n 'max-width': '95%'\r\n }\"\r\n [filter]=\"true\"\r\n [filterFields]=\"config.filters\"\r\n [options]=\"this.dataSource()!\"\r\n [showClear]=\"true\"\r\n (onChange)=\"centralizarNo($event.value.id)\"\r\n >\r\n <!-- [itemTemplate]=\"itemTemplate\"\r\n [selectedItemTemplate]=\"selectedItemTemplate\" -->\r\n <!-- [filteredOptions]=\"this.dataSource()!\" -->\r\n <!-- [filterFields]=\"data.name\" -->\r\n\r\n <ng-template #itemTemplate let-item pTemplate=\"item\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"filterItemTemplate!\"\r\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template #selectedItemTemplate let-item pTemplate=\"selectedItem\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"filterSelectedItemTemplate!\"\r\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\r\n />\r\n </ng-template>\r\n </p-dropdown>\r\n </div>\r\n\r\n <!-- Actions bar -->\r\n <div class=\"flex gap-1 flex-row flex-grow-0\">\r\n <div style=\"width: 30px\" class=\"mr-2\">\r\n <kv-button\r\n (onClick)=\"chart.expandAll()\"\r\n class=\"button-expand-all\"\r\n [fullWidth]=\"false\"\r\n size=\"small\"\r\n severity=\"tertiary\"\r\n [icon]=\"'expand_all'\"\r\n [pTooltip]=\"'Expandir Todos'\"\r\n >\r\n </kv-button>\r\n </div>\r\n\r\n <div style=\"width: 30px\" class=\"mr-2\">\r\n <kv-button\r\n (onClick)=\"chart.collapseAll()\"\r\n class=\"button-colappse-all\"\r\n [fullWidth]=\"false\"\r\n size=\"small\"\r\n severity=\"tertiary\"\r\n [icon]=\"'collapse_all'\"\r\n [pTooltip]=\"'Recolher Todos'\"\r\n >\r\n </kv-button>\r\n </div>\r\n\r\n <div style=\"width: 30px\" class=\"mr-2\">\r\n <kv-button\r\n (onClick)=\"chart.fit().render()\"\r\n class=\"button-focus-center\"\r\n [fullWidth]=\"false\"\r\n size=\"small\"\r\n severity=\"primary\"\r\n [icon]=\"'center_focus_weak'\"\r\n [pTooltip]=\"'Centralizar Organograma'\"\r\n >\r\n </kv-button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<link\r\n rel=\"stylesheet\"\r\n href=\"https://fonts.googleapis.com/icon?family=Material+Icons\"\r\n/>\r\n\r\n<link\r\n rel=\"stylesheet\"\r\n href=\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@48,400,0,0\"\r\n/>\r\n\r\n<div style=\"display: none\">\r\n <ng-template #nodeTemplate let-node>\r\n <div class=\"node-content\">erro</div>\r\n </ng-template>\r\n</div>\r\n", styles: ["#chartContainer{height:100%;overflow:hidden}:host ::ng-deep #chartContainer svg.svg-chart-container{height:100%!important;position:relative;width:100%;top:-56px;z-index:0;background-color:#fff}.div-botoes{z-index:1;width:100%;position:relative}:host ::ng-deep .p-organizationChart{overflow:hidden}svg{width:100%;height:100%}#menubar{width:100%;padding:5px;border-radius:8px;background:#eaeaea}.filtro-input{width:300px}#filtro-org-chart{height:300px;overflow-y:auto;overflow-x:hidden;position:absolute;top:40px;left:8px;background:#fff;color:#4b5563;border:0 none;border-radius:6px;box-shadow:0 2px 12px #0000001a}.filtro-org-chart-item{cursor:pointer;height:35px;padding:3px}.filtro-org-chart-item:hover{background-color:#d9dadb}.filtro-org-chart-item:active{background-color:#c0c1c2}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i4.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i5.Dropdown, selector: "p-dropdown", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: i6.KvButtonComponent, selector: "kv-button", inputs: ["fullWidth", "type", "loading", "severity", "size", "icon", "iconPosition", "label", "disabled"], outputs: ["onClick"] }] }); }
|
|
201
|
+
}
|
|
202
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvOrgchartComponent, decorators: [{
|
|
203
|
+
type: Component,
|
|
204
|
+
args: [{ selector: 'kv-orgchart', template: "<div #chartContainer id=\"chartContainer\" [ngClass]=\"{ backGround: true }\">\r\n <div class=\"div-botoes w-full flex gap-1\">\r\n <div\r\n id=\"menubar\"\r\n class=\"shadow-2 flex justify-content-between align-content-center\"\r\n >\r\n <div class=\"grid formgrid p-fluid flex-grow-1\">\r\n <!-- <div #filterContainer class=\"col-4 grid formgrid p-fluid\">\r\n <kv-input-text class=\"col-12\" #filtro (onInput)=\"pesquisar($event)\">\r\n </kv-input-text>\r\n </div>\r\n\r\n @if(filtrosOpt().length > 0) {\r\n \r\n <div id=\"filtro-org-chart\" [style.width.px]=\"filterContainer.offsetWidth*0.9\">\r\n\r\n @for (opt of filtrosOpt(); track $index) {\r\n <div class=\"filtro-org-chart-item\">\r\n {{ opt.data.name }}\r\n\r\n </div>\r\n\r\n }\r\n\r\n </div>\r\n\r\n } -->\r\n\r\n <p-dropdown\r\n #filter\r\n placeholder=\"Filtrar...\"\r\n [style]=\"{\r\n height: '30px',\r\n 'display': 'flex',\r\n 'align-items': 'center',\r\n 'margin-left': '15px',\r\n 'max-width': '95%'\r\n }\"\r\n [filter]=\"true\"\r\n [filterFields]=\"config.filters\"\r\n [options]=\"this.dataSource()!\"\r\n [showClear]=\"true\"\r\n (onChange)=\"centralizarNo($event.value.id)\"\r\n >\r\n <!-- [itemTemplate]=\"itemTemplate\"\r\n [selectedItemTemplate]=\"selectedItemTemplate\" -->\r\n <!-- [filteredOptions]=\"this.dataSource()!\" -->\r\n <!-- [filterFields]=\"data.name\" -->\r\n\r\n <ng-template #itemTemplate let-item pTemplate=\"item\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"filterItemTemplate!\"\r\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template #selectedItemTemplate let-item pTemplate=\"selectedItem\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"filterSelectedItemTemplate!\"\r\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\r\n />\r\n </ng-template>\r\n </p-dropdown>\r\n </div>\r\n\r\n <!-- Actions bar -->\r\n <div class=\"flex gap-1 flex-row flex-grow-0\">\r\n <div style=\"width: 30px\" class=\"mr-2\">\r\n <kv-button\r\n (onClick)=\"chart.expandAll()\"\r\n class=\"button-expand-all\"\r\n [fullWidth]=\"false\"\r\n size=\"small\"\r\n severity=\"tertiary\"\r\n [icon]=\"'expand_all'\"\r\n [pTooltip]=\"'Expandir Todos'\"\r\n >\r\n </kv-button>\r\n </div>\r\n\r\n <div style=\"width: 30px\" class=\"mr-2\">\r\n <kv-button\r\n (onClick)=\"chart.collapseAll()\"\r\n class=\"button-colappse-all\"\r\n [fullWidth]=\"false\"\r\n size=\"small\"\r\n severity=\"tertiary\"\r\n [icon]=\"'collapse_all'\"\r\n [pTooltip]=\"'Recolher Todos'\"\r\n >\r\n </kv-button>\r\n </div>\r\n\r\n <div style=\"width: 30px\" class=\"mr-2\">\r\n <kv-button\r\n (onClick)=\"chart.fit().render()\"\r\n class=\"button-focus-center\"\r\n [fullWidth]=\"false\"\r\n size=\"small\"\r\n severity=\"primary\"\r\n [icon]=\"'center_focus_weak'\"\r\n [pTooltip]=\"'Centralizar Organograma'\"\r\n >\r\n </kv-button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<link\r\n rel=\"stylesheet\"\r\n href=\"https://fonts.googleapis.com/icon?family=Material+Icons\"\r\n/>\r\n\r\n<link\r\n rel=\"stylesheet\"\r\n href=\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@48,400,0,0\"\r\n/>\r\n\r\n<div style=\"display: none\">\r\n <ng-template #nodeTemplate let-node>\r\n <div class=\"node-content\">erro</div>\r\n </ng-template>\r\n</div>\r\n", styles: ["#chartContainer{height:100%;overflow:hidden}:host ::ng-deep #chartContainer svg.svg-chart-container{height:100%!important;position:relative;width:100%;top:-56px;z-index:0;background-color:#fff}.div-botoes{z-index:1;width:100%;position:relative}:host ::ng-deep .p-organizationChart{overflow:hidden}svg{width:100%;height:100%}#menubar{width:100%;padding:5px;border-radius:8px;background:#eaeaea}.filtro-input{width:300px}#filtro-org-chart{height:300px;overflow-y:auto;overflow-x:hidden;position:absolute;top:40px;left:8px;background:#fff;color:#4b5563;border:0 none;border-radius:6px;box-shadow:0 2px 12px #0000001a}.filtro-org-chart-item{cursor:pointer;height:35px;padding:3px}.filtro-org-chart-item:hover{background-color:#d9dadb}.filtro-org-chart-item:active{background-color:#c0c1c2}\n"] }]
|
|
205
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.OrgChartService }, { type: i2.FilterService }], propDecorators: { config: [{
|
|
206
|
+
type: Input
|
|
207
|
+
}], chartContainer: [{
|
|
208
|
+
type: ViewChild,
|
|
209
|
+
args: ['chartContainer']
|
|
210
|
+
}], viewContainerRef: [{
|
|
211
|
+
type: ViewChild,
|
|
212
|
+
args: ['nodeTemplate', { read: ViewContainerRef }]
|
|
213
|
+
}], nodeTemplate: [{
|
|
214
|
+
type: Input
|
|
215
|
+
}], filterItemTemplate: [{
|
|
216
|
+
type: Input
|
|
217
|
+
}], filterSelectedItemTemplate: [{
|
|
218
|
+
type: Input
|
|
219
|
+
}], onNodeClick: [{
|
|
220
|
+
type: Output
|
|
221
|
+
}], filter: [{
|
|
222
|
+
type: ViewChild,
|
|
223
|
+
args: ['filter']
|
|
224
|
+
}] } });
|
|
225
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3Ytb3JnY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3Ytb3JnY2hhcnQva3Ytb3JnY2hhcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3Ytb3JnY2hhcnQva3Ytb3JnY2hhcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUNMLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUlOLFNBQVMsRUFDVCxnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUl6QixPQUFPLEVBQUUsU0FBUyxFQUFnQixNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7QUFZL0MsTUFBTSxPQUFPLG1CQUFtQjtJQThCOUIsWUFDVSxHQUFzQixFQUN0QixPQUF3QixFQUN4QixhQUE0QjtRQUY1QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQUN4QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQTVCdEMsZUFBVSxHQUFHLEtBQUssQ0FBd0IsSUFBSSxDQUFDLENBQUM7UUFFaEQsZUFBVSxHQUFHLE1BQU0sQ0FBaUIsRUFBRSxDQUFDLENBQUM7UUFDeEMsZ0JBQVcsR0FBRyxJQUFJLENBQUE7UUFhbEIsNkJBQTZCO1FBRW5CLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUVoRCxhQUFhO1FBRWIsWUFBTyxHQUFZLElBQUksQ0FBQztRQUN4QixlQUFVLEdB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Q2YsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUE7UUFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ3JCLENBQUM7OEdBclBVLG1CQUFtQjtrR0FBbkIsbUJBQW1CLGlqQ0FZSyxnQkFBZ0IscUlDN0NyRCxzbUlBNkhBOzsyRkQ1RmEsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGFBQWE7Z0pBY2QsTUFBTTtzQkFBZCxLQUFLO2dCQUN1QixjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQjtnQkFFM0IsZ0JBQWdCO3NCQURmLFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQUU1QyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRywwQkFBMEI7c0JBQWxDLEtBQUs7Z0JBTUksV0FBVztzQkFBcEIsTUFBTTtnQkFzTmMsTUFBTTtzQkFBMUIsU0FBUzt1QkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgbW9kZWwsXHJcbiAgT3V0cHV0LFxyXG4gIHNpZ25hbCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIHZpZXdDaGlsZCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0NvbnRhaW5lclJlZixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IE9yZ0NoYXJ0IH0gZnJvbSAnZDMtb3JnLWNoYXJ0JztcclxuaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xyXG5cclxuaW1wb3J0IE9yZ0NoYXJ0Q29uZmlnIGZyb20gJy4uLy4uL2FwaS9jb21wb25lbnRzL2NoYXJ0L29yY2hhcnQuY29uZmlnJztcclxuaW1wb3J0IE9yZ0NoYXJ0Tm9kZSBmcm9tICcuLi8uLi9hcGkvY29tcG9uZW50cy9jaGFydC9vcmNoYXJ0bm9kZSc7XHJcbmltcG9ydCB7IGZyb21FdmVudCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE9yZ0NoYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uL2FwaS9zZXJ2aWNlcy9vcmdjaGFydC5zZXJ2aWNlJztcclxuXHJcbmltcG9ydCB7IEZpbHRlclNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IERyb3Bkb3duLCBEcm9wZG93bk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZHJvcGRvd24nO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAna3Ytb3JnY2hhcnQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9rdi1vcmdjaGFydC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4va3Ytb3JnY2hhcnQuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEt2T3JnY2hhcnRDb21wb25lbnQge1xyXG5cclxuXHJcbiAgY2hhcnQhOiBhbnk7XHJcblxyXG4gIGRhdGFTb3VyY2UgPSBtb2RlbDxPcmdDaGFydE5vZGVbXSB8IG51bGw+KG51bGwpO1xyXG5cclxuICBmaWx0cm9zT3B0ID0gc2lnbmFsPE9yZ0NoYXJ0Tm9kZVtdPihbXSk7XHJcbiAgc2VsZWN0ZWRPcHQgPSBudWxsXHJcblxyXG4gIEBJbnB1dCgpIGNvbmZpZyE6IE9yZ0NoYXJ0Q29uZmlnO1xyXG4gIEBWaWV3Q2hpbGQoJ2NoYXJ0Q29udGFpbmVyJykgY2hhcnRDb250YWluZXIhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ25vZGVUZW1wbGF0ZScsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KVxyXG4gIHZpZXdDb250YWluZXJSZWYhOiBWaWV3Q29udGFpbmVyUmVmO1xyXG4gIEBJbnB1dCgpIG5vZGVUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIEBJbnB1dCgpIGZpbHRlckl0ZW1UZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQElucHV0KCkgZmlsdGVyU2VsZWN0ZWRJdGVtVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuXHJcblxyXG4gIC8vI3JlZ2lvbiBFbWlzc29yZXMgZGUgZXZlbnRvXHJcblxyXG4gIEBPdXRwdXQoKSBvbk5vZGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAvLyAjZW5kcmVnaW9uXHJcblxyXG4gIGNvbXBhY3Q6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIG1vc3RyYU1lbnU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIHNlcnZpY2U6IE9yZ0NoYXJ0U2VydmljZSxcclxuICAgIHByaXZhdGUgZmlsdGVyU2VydmljZTogRmlsdGVyU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgLy8jcmVnaW9uIEluaWNpYXIgT3JnQ2hhcnQgZSBBdHVhbGl6YcOnw6NvIGRlIGRhZG9zXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmluaWNpYXJIYW5kbGVyc0RlRXZlbnRvcygpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgaWYgKCF0aGlzLmNoYXJ0KSB7XHJcbiAgICAgIHRoaXMuY2hhcnQgPSBuZXcgT3JnQ2hhcnQoKTtcclxuICAgIH1cclxuICAgIHRoaXMuaW5pY2lhckNoYXJ0KCk7XHJcbiAgfVxyXG5cclxuICBpbmljaWFyQ2hhcnQoKSB7XHJcbiAgICBpZiAoIXRoaXMuZGF0YVNvdXJjZSgpIHx8ICF0aGlzLmNoYXJ0KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjaGFydENvbnRhaW5lciA9IHRoaXMuY2hhcnRDb250YWluZXIubmF0aXZlRWxlbWVudDtcclxuICAgIHRoaXMuY2hhcnRcclxuICAgICAgLmNyZWF0ZVpvb20oKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiBkMy56b29tKCkuZmlsdGVyKChlKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBlbGVtZW50OiBIVE1MRWxlbWVudCA9IGUuc3JjRWxlbWVudDtcclxuICAgICAgICAgIGlmIChlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnbm8tem9vbScpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KVxyXG4gICAgICAuY29udGFpbmVyKGNoYXJ0Q29udGFpbmVyKVxyXG4gICAgICAuZGF0YSh0aGlzLmRhdGFTb3VyY2UoKSlcclxuICAgICAgLm5vZGVXaWR0aCgoKSA9PiB0aGlzLmNvbmZpZy5jYXJkV2lkaHQpXHJcbiAgICAgIC5ub2RlSGVpZ2h0KChkOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4gZC5kYXRhLmV4cGFuZGVkICYmIHRoaXMuY29uZmlnLmNhcmRFeHBhbmRlZEhlaWdodFxyXG4gICAgICAgICAgPyB0aGlzLmNvbmZpZy5jYXJkRXhwYW5kZWRIZWlnaHRcclxuICAgICAgICAgIDogdGhpcy5jb25maWcuY2FyZEhlaWdodDtcclxuICAgICAgfSlcclxuICAgICAgLmNvbXBhY3QoZmFsc2UpXHJcbiAgICAgIC5idXR0b25Db250ZW50KCh7IG5vZGUsIHN0YXRlIH06IHsgbm9kZTogYW55OyBzdGF0ZTogYW55IH0pID0+IHtcclxuICAgICAgICByZXR1cm4gYDxkaXYgc3R5bGU9XCJjb2xvcjojRkZGRkZGOyBib3JkZXItcmFkaXVzOjEwMCU7Zm9udC1zaXplOjVweDttYXJnaW46YXV0byBhdXRvO2JhY2tncm91bmQtY29sb3I6IzY0NzQ4QjtcIj5cclxuICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgJHtcclxuICAgICAgICAgICAgbm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDBcclxuICAgICAgICAgICAgICA/IGA8aSBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj5cclxuICAgICAgICAgICAgICBrZXlib2FyZF9hcnJvd191cFxyXG4gICAgICAgICAgICAgIDwvaT5gXHJcbiAgICAgICAgICAgICAgOiBgPGkgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+XHJcbiAgICAgICAgICAgICAga2V5Ym9hcmRfYXJyb3dfZG93blxyXG4gICAgICAgICAgICA8L2k+YFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5gO1xyXG4gICAgICB9KVxyXG4gICAgICAubGlua1VwZGF0ZSgobm9kZTogYW55LCBpbmRleDogYW55LCBub2RlczogYW55KSA9PiB7XHJcbiAgICAgICAgZDMuc2VsZWN0KG5vZGVzW2luZGV4XSlcclxuICAgICAgICAgIC5hdHRyKCdzdHJva2Utd2lkdGgnLCB0aGlzLmNvbmZpZy5jb25lY3Rpb25XaWR0aCB8fCAnMnB4JylcclxuICAgICAgICAgIC5zdHlsZSgnc3Ryb2tlJywgdGhpcy5jb25maWcuY29ubmVjdGlvbkNvbG9yIHx8ICcjZDZkNmQ2Jyk7XHJcbiAgICAgIH0pXHJcbiAgICAgIC5ub2RlQ29udGVudCgoZDogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3Qgbm9kZTogT3JnQ2hhcnROb2RlID0ge1xyXG4gICAgICAgICAgZGF0YTogZC5kYXRhLmRhdGEsXHJcbiAgICAgICAgICBjaGlsZHJlbjogZC5jaGlsZHJlbixcclxuICAgICAgICAgIGlkOiBkLmRhdGEuaWQsXHJcbiAgICAgICAgICBwYXJlbnRJZDogZC5kYXRhLnBhcmVudElkLFxyXG4gICAgICAgICAgZXhwYW5kZWQ6IGQuZGF0YS5leHBhbmRlZCxcclxuICAgICAgICAgIG9yZ0NvbmZpZzogZC5vcmdDb25maWcsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zdCB4ID0gdGhpcy5yZW5kZXJOb2RlVGVtcGxhdGUobm9kZSk7XHJcbiAgICAgICAgcmV0dXJuIHg7XHJcbiAgICAgIH0pXHJcbiAgICAgIC5ub2RlVXBkYXRlKGZ1bmN0aW9uICh0aGlzOiBhbnksIGQ6IGFueSkge1xyXG4gICAgICAgIGQuZGF0YS5vcmdDb25maWcuY2xpY2tzLmZvckVhY2goKGNsaWNrOiBhbnkpID0+IHtcclxuICAgICAgICAgIGQzLnNlbGVjdCh0aGlzKVxyXG4gICAgICAgICAgICAuc2VsZWN0KGNsaWNrKVxyXG4gICAgICAgICAgICAub24oJ2NsaWNrJywgKGUsIGQpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBkYWRvczogYW55ID0gZDtcclxuICAgICAgICAgICAgICBjb25zdCBub2RlOiBPcmdDaGFydE5vZGUgPSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhOiBkYWRvcy5kYXRhLmRhdGEsXHJcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogZGFkb3MuY2hpbGRyZW4sXHJcbiAgICAgICAgICAgICAgICBpZDogZGFkb3MuZGF0YS5pZCxcclxuICAgICAgICAgICAgICAgIHBhcmVudElkOiBkYWRvcy5kYXRhLnBhcmVudElkLFxyXG4gICAgICAgICAgICAgICAgZXhwYW5kZWQ6IGRhZG9zLmRhdGEuZXhwYW5kZWQsXHJcbiAgICAgICAgICAgICAgICBvcmdDb25maWc6IGRhZG9zLm9yZ0NvbmZpZyxcclxuICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChcclxuICAgICAgICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgnS3ZPcmdDaGFydF9Ob2RlQ2xpY2snLCB7XHJcbiAgICAgICAgICAgICAgICAgIGRldGFpbDoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5vZGUsXHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZXRvcjogY2xpY2ssXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KVxyXG4gICAgICAuZGVmYXVsdEZvbnQoJ1JvYm90bycpXHJcbiAgICAgIC5yZW5kZXIoKTtcclxuXHJcbiAgICB0aGlzLmNoYXJ0LmV4cGFuZEFsbCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ2RhdGFTb3VyY2UnXSkge1xyXG4gICAgICB0aGlzLmluaWNpYXJDaGFydCgpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8gI3JlZ2lvbiBSZW5kZXJpemHDp8OjbyBkZSB0ZW1wbGF0ZVxyXG4gIHJlbmRlck5vZGVUZW1wbGF0ZShub2RlOiBPcmdDaGFydE5vZGUpOiBzdHJpbmcge1xyXG4gICAgdGhpcy52aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XHJcbiAgICBjb25zdCB2aWV3ID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLm5vZGVUZW1wbGF0ZSwge1xyXG4gICAgICBub2RlOiBub2RlLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICByZXR1cm4gdmlldy5yb290Tm9kZXNbMF0ub3V0ZXJIVE1MO1xyXG4gIH1cclxuICAvLyAjZW5kcmVnaW9uXHJcblxyXG4gIC8vICNyZWdpb24gRXZlbnRvc1xyXG4gIHByaXZhdGUgbm9kZUNsaWNrU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgbm9kZUFkZFN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIG5vZGVSZW1vdmVTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIGluaWNpYXJIYW5kbGVyc0RlRXZlbnRvcygpIHtcclxuICAgIHRoaXMubm9kZUNsaWNrU3Vic2NyaXB0aW9uID0gZnJvbUV2ZW50PEN1c3RvbUV2ZW50PihcclxuICAgICAgd2luZG93LFxyXG4gICAgICAnS3ZPcmdDaGFydF9Ob2RlQ2xpY2snXHJcbiAgICApLnN1YnNjcmliZSgoZXZlbnQ6IEN1c3RvbUV2ZW50KSA9PiB7XHJcbiAgICAgIHRoaXMuZW1pdGlyQ2xpY2soZXZlbnQuZGV0YWlsLm5vZGUsIGV2ZW50LmRldGFpbC5zZWxldG9yKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMubm9kZUFkZFN1YnNjcmlwdGlvbiA9IHRoaXMuc2VydmljZS5ub2RlQWRkJC5zdWJzY3JpYmUoXHJcbiAgICAgIChub2RlOiBPcmdDaGFydE5vZGUpID0+IHtcclxuICAgICAgICB0aGlzLmFkaWNpb25hck5vZGUobm9kZSk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5ub2RlUmVtb3ZlU3Vic2NyaXB0aW9uID0gdGhpcy5zZXJ2aWNlLm5vZGVSZW1vdmUkLnN1YnNjcmliZShcclxuICAgICAgKGlkOiBudW1iZXIpID0+IHtcclxuICAgICAgICB0aGlzLnJlbW92ZXJOb2RlKGlkKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLm5vZGVDbGlja1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5ub2RlQWRkU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLm5vZGVSZW1vdmVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIGVtaXRpckNsaWNrKG5vZGU6IE5vZGUsIHNlbGV0b3JDc3M/OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGV2ZW50ID0ge1xyXG4gICAgICBub2RlOiBub2RlLFxyXG4gICAgICBzZWxldG9yQ3NzOiBzZWxldG9yQ3NzID8/ICcnLFxyXG4gICAgfTtcclxuICAgIHRoaXMub25Ob2RlQ2xpY2suZW1pdChldmVudCk7XHJcbiAgfVxyXG4gIGFkaWNpb25hck5vZGUobm9kZTogT3JnQ2hhcnROb2RlKSB7XHJcbiAgICBjb25zdCBhcnIgPSBbLi4udGhpcy5kYXRhU291cmNlKCkhLCBub2RlXTtcclxuICAgIHRoaXMuZGF0YVNvdXJjZS5zZXQoYXJyKTtcclxuICAgIHRoaXMuaW5pY2lhckNoYXJ0KCk7XHJcbiAgfVxyXG4gIHJlbW92ZXJOb2RlKGlkOiBudW1iZXIpIHtcclxuICAgIGNvbnN0IGluZFBhaSA9IHRoaXMuZGF0YVNvdXJjZSgpIS5zb21lKCh4OiBhbnkpID0+IHgucGFyZW50SWQgPT0gaWQpO1xyXG4gICAgaWYgKGluZFBhaSkge1xyXG4gICAgICBhbGVydCgnTsOjbyDDqSBwb3Nzw612ZWwgcmVtb3ZlciB1bSBuw7MgcXVlIHBvc3N1aSBmaWxob3MnKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGFyciA9IHRoaXMuZGF0YVNvdXJjZSgpIS5maWx0ZXIoKHg6IGFueSkgPT4geC5pZCAhPSBpZCk7XHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5zZXQoYXJyKTtcclxuICAgICAgdGhpcy5pbmljaWFyQ2hhcnQoKTtcclxuICAgIH1cclxuICB9XHJcbiAgLy8gI2VuZHJlZ2lvblxyXG5cclxuXHJcblxyXG4gIC8vICNyZWdpb24gRnVuw6fDtWVzIGRlIHV0aWxpZGFkZVxyXG5cclxuICBwZXNxdWlzYXIoZTogYW55KSB7XHJcbiAgICBjb25zdCB2YWxvciA9IGUudGFyZ2V0LnZhbHVlXHJcbiAgICB0aGlzLmZpbHRyb3NPcHQuc2V0KHRoaXMuZmlsdHJhckFycmF5KHZhbG9yKSEpXHJcbiAgfVxyXG5cclxuICBmaWx0cmFyQXJyYXkodmFsb3I6IHN0cmluZyk6IE9yZ0NoYXJ0Tm9kZVtdIHwgbnVsbCB7XHJcbiAgICBpZiAodmFsb3IgJiYgdGhpcy5jb25maWcuZmlsdGVycykge1xyXG4gICAgICBjb25zdCBkYXRhU291cmNlID0gdGhpcy5kYXRhU291cmNlKCkhO1xyXG4gICAgICBjb25zdCB2YWxvckxvd2VyID0gdmFsb3IudG9Mb3dlckNhc2UoKTsgLy8gQ29udmVydGUgbyB2YWxvciBkZSBidXNjYSBwYXJhIG1pbsO6c2N1bGFzXHJcblxyXG4gICAgICBjb25zdCBhcnIgPSBkYXRhU291cmNlLmZpbHRlcigobm9kZTogT3JnQ2hhcnROb2RlKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLmZpbHRlcnMhLmV2ZXJ5KChmaWx0ZXI6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgLy8gQ29udmVydGUgb3MgdmFsb3JlcyBwYXJhIG1pbsO6c2N1bGFzIGUgdmVyaWZpY2Egc2UgY29udMOpbSBhIHN0cmluZyBkZSBidXNjYVxyXG4gICAgICAgICAgcmV0dXJuIG5vZGUuZGF0YVtmaWx0ZXJdLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModmFsb3JMb3dlcik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgcmV0dXJuIGFyciA/PyBudWxsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkKCdmaWx0ZXInKSBmaWx0ZXIhOiBEcm9wZG93bjtcclxuXHJcblxyXG4gIGNlbnRyYWxpemFyTm8oaWQ6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coaWQpXHJcbiAgICB0aGlzLmNoYXJ0LnNldENlbnRlcmVkKGlkKS5yZW5kZXIoKVxyXG4gICAgdGhpcy5maWx0ZXIuaGlkZSgpXHJcbiAgICB0aGlzLmZpbHRlci5jbGVhcigpXHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gI2VuZHJlZ2lvblxyXG59XHJcbiIsIjxkaXYgI2NoYXJ0Q29udGFpbmVyIGlkPVwiY2hhcnRDb250YWluZXJcIiBbbmdDbGFzc109XCJ7IGJhY2tHcm91bmQ6IHRydWUgfVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJkaXYtYm90b2VzIHctZnVsbCBmbGV4IGdhcC0xXCI+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGlkPVwibWVudWJhclwiXHJcbiAgICAgIGNsYXNzPVwic2hhZG93LTIgZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1jb250ZW50LWNlbnRlclwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGZvcm1ncmlkIHAtZmx1aWQgZmxleC1ncm93LTFcIj5cclxuICAgICAgICA8IS0tIDxkaXYgI2ZpbHRlckNvbnRhaW5lciBjbGFzcz1cImNvbC00IGdyaWQgZm9ybWdyaWQgcC1mbHVpZFwiPlxyXG4gICAgICAgICAgICA8a3YtaW5wdXQtdGV4dCBjbGFzcz1cImNvbC0xMlwiICNmaWx0cm8gKG9uSW5wdXQpPVwicGVzcXVpc2FyKCRldmVudClcIj5cclxuICAgICAgICAgICAgPC9rdi1pbnB1dC10ZXh0PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgQGlmKGZpbHRyb3NPcHQoKS5sZW5ndGggPiAwKSB7XHJcbiBcclxuICAgICAgICAgICAgICA8ZGl2IGlkPVwiZmlsdHJvLW9yZy1jaGFydFwiIFtzdHlsZS53aWR0aC5weF09XCJmaWx0ZXJDb250YWluZXIub2Zmc2V0V2lkdGgqMC45XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgQGZvciAob3B0IG9mIGZpbHRyb3NPcHQoKTsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0cm8tb3JnLWNoYXJ0LWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBvcHQuZGF0YS5uYW1lIH19XHJcblxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIH0gLS0+XHJcblxyXG4gICAgICAgIDxwLWRyb3Bkb3duXHJcbiAgICAgICAgICAjZmlsdGVyXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIkZpbHRyYXIuLi5cIlxyXG4gICAgICAgICAgW3N0eWxlXT1cIntcclxuICAgICAgICAgICAgaGVpZ2h0OiAnMzBweCcsXHJcbiAgICAgICAgICAgICdkaXNwbGF5JzogJ2ZsZXgnLFxyXG4gICAgICAgICAgICAnYWxpZ24taXRlbXMnOiAnY2VudGVyJyxcclxuICAgICAgICAgICAgJ21hcmdpbi1sZWZ0JzogJzE1cHgnLFxyXG4gICAgICAgICAgICAnbWF4LXdpZHRoJzogJzk1JSdcclxuICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgW2ZpbHRlcl09XCJ0cnVlXCJcclxuICAgICAgICAgIFtmaWx0ZXJGaWVsZHNdPVwiY29uZmlnLmZpbHRlcnNcIlxyXG4gICAgICAgICAgW29wdGlvbnNdPVwidGhpcy5kYXRhU291cmNlKCkhXCJcclxuICAgICAgICAgIFtzaG93Q2xlYXJdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAob25DaGFuZ2UpPVwiY2VudHJhbGl6YXJObygkZXZlbnQudmFsdWUuaWQpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8IS0tIFtpdGVtVGVtcGxhdGVdPVwiaXRlbVRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICBbc2VsZWN0ZWRJdGVtVGVtcGxhdGVdPVwic2VsZWN0ZWRJdGVtVGVtcGxhdGVcIiAtLT5cclxuICAgICAgICAgIDwhLS0gW2ZpbHRlcmVkT3B0aW9uc109XCJ0aGlzLmRhdGFTb3VyY2UoKSFcIiAtLT5cclxuICAgICAgICAgIDwhLS0gW2ZpbHRlckZpZWxkc109XCJkYXRhLm5hbWVcIiAtLT5cclxuXHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2l0ZW1UZW1wbGF0ZSBsZXQtaXRlbSBwVGVtcGxhdGU9XCJpdGVtXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJmaWx0ZXJJdGVtVGVtcGxhdGUhXCJcclxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0gfVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc2VsZWN0ZWRJdGVtVGVtcGxhdGUgbGV0LWl0ZW0gcFRlbXBsYXRlPVwic2VsZWN0ZWRJdGVtXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJmaWx0ZXJTZWxlY3RlZEl0ZW1UZW1wbGF0ZSFcIlxyXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbSB9XCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9wLWRyb3Bkb3duPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gQWN0aW9ucyBiYXIgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC0xIGZsZXgtcm93IGZsZXgtZ3Jvdy0wXCI+XHJcbiAgICAgICAgPGRpdiBzdHlsZT1cIndpZHRoOiAzMHB4XCIgY2xhc3M9XCJtci0yXCI+XHJcbiAgICAgICAgICA8a3YtYnV0dG9uXHJcbiAgICAgICAgICAgIChvbkNsaWNrKT1cImNoYXJ0LmV4cGFuZEFsbCgpXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJidXR0b24tZXhwYW5kLWFsbFwiXHJcbiAgICAgICAgICAgIFtmdWxsV2lkdGhdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICBzaXplPVwic21hbGxcIlxyXG4gICAgICAgICAgICBzZXZlcml0eT1cInRlcnRpYXJ5XCJcclxuICAgICAgICAgICAgW2ljb25dPVwiJ2V4cGFuZF9hbGwnXCJcclxuICAgICAgICAgICAgW3BUb29sdGlwXT1cIidFeHBhbmRpciBUb2RvcydcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgPC9rdi1idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDogMzBweFwiIGNsYXNzPVwibXItMlwiPlxyXG4gICAgICAgICAgPGt2LWJ1dHRvblxyXG4gICAgICAgICAgICAob25DbGljayk9XCJjaGFydC5jb2xsYXBzZUFsbCgpXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJidXR0b24tY29sYXBwc2UtYWxsXCJcclxuICAgICAgICAgICAgW2Z1bGxXaWR0aF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXHJcbiAgICAgICAgICAgIHNldmVyaXR5PVwidGVydGlhcnlcIlxyXG4gICAgICAgICAgICBbaWNvbl09XCInY29sbGFwc2VfYWxsJ1wiXHJcbiAgICAgICAgICAgIFtwVG9vbHRpcF09XCInUmVjb2xoZXIgVG9kb3MnXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgIDwva3YtYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwid2lkdGg6IDMwcHhcIiBjbGFzcz1cIm1yLTJcIj5cclxuICAgICAgICAgIDxrdi1idXR0b25cclxuICAgICAgICAgICAgKG9uQ2xpY2spPVwiY2hhcnQuZml0KCkucmVuZGVyKClcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImJ1dHRvbi1mb2N1cy1jZW50ZXJcIlxyXG4gICAgICAgICAgICBbZnVsbFdpZHRoXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcclxuICAgICAgICAgICAgc2V2ZXJpdHk9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgW2ljb25dPVwiJ2NlbnRlcl9mb2N1c193ZWFrJ1wiXHJcbiAgICAgICAgICAgIFtwVG9vbHRpcF09XCInQ2VudHJhbGl6YXIgT3JnYW5vZ3JhbWEnXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgIDwva3YtYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxsaW5rXHJcbiAgcmVsPVwic3R5bGVzaGVldFwiXHJcbiAgaHJlZj1cImh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vaWNvbj9mYW1pbHk9TWF0ZXJpYWwrSWNvbnNcIlxyXG4vPlxyXG5cclxuPGxpbmtcclxuICByZWw9XCJzdHlsZXNoZWV0XCJcclxuICBocmVmPVwiaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1NYXRlcmlhbCtTeW1ib2xzK091dGxpbmVkOm9wc3osd2dodCxGSUxMLEdSQURANDgsNDAwLDAsMFwiXHJcbi8+XHJcblxyXG48ZGl2IHN0eWxlPVwiZGlzcGxheTogbm9uZVwiPlxyXG4gIDxuZy10ZW1wbGF0ZSAjbm9kZVRlbXBsYXRlIGxldC1ub2RlPlxyXG4gICAgPGRpdiBjbGFzcz1cIm5vZGUtY29udGVudFwiPmVycm88L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { kvErrorModule } from './../kv-error/kv-error.module';
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import { CommonModule } from '@angular/common';
|
|
4
|
+
import { KvOrgchartComponent } from './kv-orgchart.component';
|
|
5
|
+
import { PrimeNgModule } from '../../api/modules/primeng.module';
|
|
6
|
+
import { OrganizationChartModule } from 'primeng/organizationchart';
|
|
7
|
+
import { KvButtonModule } from '../kv-button/kv-button.module';
|
|
8
|
+
import { KvInputsModule } from '../kv-inputs/kv-inputs.module';
|
|
9
|
+
import { AutoCompleteModule } from 'primeng/autocomplete';
|
|
10
|
+
import { DropdownModule } from 'primeng/dropdown';
|
|
11
|
+
import { FormsModule } from '@angular/forms';
|
|
12
|
+
import { FloatLabelModule } from 'primeng/floatlabel';
|
|
13
|
+
import * as i0 from "@angular/core";
|
|
14
|
+
export class KvOrgchartModule {
|
|
15
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvOrgchartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
16
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.8", ngImport: i0, type: KvOrgchartModule, declarations: [KvOrgchartComponent], imports: [CommonModule,
|
|
17
|
+
PrimeNgModule,
|
|
18
|
+
FormsModule,
|
|
19
|
+
kvErrorModule,
|
|
20
|
+
PrimeNgModule,
|
|
21
|
+
OrganizationChartModule,
|
|
22
|
+
KvButtonModule,
|
|
23
|
+
KvInputsModule,
|
|
24
|
+
AutoCompleteModule,
|
|
25
|
+
DropdownModule,
|
|
26
|
+
FloatLabelModule], exports: [KvOrgchartComponent] }); }
|
|
27
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvOrgchartModule, imports: [CommonModule,
|
|
28
|
+
PrimeNgModule,
|
|
29
|
+
FormsModule,
|
|
30
|
+
kvErrorModule,
|
|
31
|
+
PrimeNgModule,
|
|
32
|
+
OrganizationChartModule,
|
|
33
|
+
KvButtonModule,
|
|
34
|
+
KvInputsModule,
|
|
35
|
+
AutoCompleteModule,
|
|
36
|
+
DropdownModule,
|
|
37
|
+
FloatLabelModule] }); }
|
|
38
|
+
}
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvOrgchartModule, decorators: [{
|
|
40
|
+
type: NgModule,
|
|
41
|
+
args: [{
|
|
42
|
+
imports: [
|
|
43
|
+
CommonModule,
|
|
44
|
+
PrimeNgModule,
|
|
45
|
+
FormsModule,
|
|
46
|
+
kvErrorModule,
|
|
47
|
+
PrimeNgModule,
|
|
48
|
+
OrganizationChartModule,
|
|
49
|
+
KvButtonModule,
|
|
50
|
+
KvInputsModule,
|
|
51
|
+
AutoCompleteModule,
|
|
52
|
+
DropdownModule,
|
|
53
|
+
FloatLabelModule
|
|
54
|
+
],
|
|
55
|
+
declarations: [KvOrgchartComponent],
|
|
56
|
+
exports: [KvOrgchartComponent]
|
|
57
|
+
}]
|
|
58
|
+
}] });
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3Ytb3JnY2hhcnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3Ytb3JnY2hhcnQva3Ytb3JnY2hhcnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRCxPQUFPLEVBQUcsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQW1CdEQsTUFBTSxPQUFPLGdCQUFnQjs4R0FBaEIsZ0JBQWdCOytHQUFoQixnQkFBZ0IsaUJBSFosbUJBQW1CLGFBWmhDLFlBQVk7WUFDWixhQUFhO1lBQ2IsV0FBVztZQUNYLGFBQWE7WUFDYixhQUFhO1lBQ2IsdUJBQXVCO1lBQ3ZCLGNBQWM7WUFDZCxjQUFjO1lBQ2Qsa0JBQWtCO1lBQ2xCLGNBQWM7WUFDZCxnQkFBZ0IsYUFHUixtQkFBbUI7K0dBRWxCLGdCQUFnQixZQWZ6QixZQUFZO1lBQ1osYUFBYTtZQUNiLFdBQVc7WUFDWCxhQUFhO1lBQ2IsYUFBYTtZQUNiLHVCQUF1QjtZQUN2QixjQUFjO1lBQ2QsY0FBYztZQUNkLGtCQUFrQjtZQUNsQixjQUFjO1lBQ2QsZ0JBQWdCOzsyRkFLUCxnQkFBZ0I7a0JBakI1QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsV0FBVzt3QkFDWCxhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsdUJBQXVCO3dCQUN2QixjQUFjO3dCQUNkLGNBQWM7d0JBQ2Qsa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLGdCQUFnQjtxQkFDakI7b0JBQ0QsWUFBWSxFQUFFLENBQUMsbUJBQW1CLENBQUM7b0JBQ25DLE9BQU8sRUFBRSxDQUFDLG1CQUFtQixDQUFDO2lCQUMvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGt2RXJyb3JNb2R1bGUgfSBmcm9tICcuLy4uL2t2LWVycm9yL2t2LWVycm9yLm1vZHVsZSc7XHJcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEt2T3JnY2hhcnRDb21wb25lbnQgfSBmcm9tICcuL2t2LW9yZ2NoYXJ0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFByaW1lTmdNb2R1bGUgfSBmcm9tICcuLi8uLi9hcGkvbW9kdWxlcy9wcmltZW5nLm1vZHVsZSc7XHJcbmltcG9ydCB7IE9yZ2FuaXphdGlvbkNoYXJ0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9vcmdhbml6YXRpb25jaGFydCc7XHJcbmltcG9ydCB7IEt2QnV0dG9uTW9kdWxlIH0gZnJvbSAnLi4va3YtYnV0dG9uL2t2LWJ1dHRvbi5tb2R1bGUnO1xyXG5pbXBvcnQgeyBLdklucHV0c01vZHVsZSB9IGZyb20gJy4uL2t2LWlucHV0cy9rdi1pbnB1dHMubW9kdWxlJztcclxuaW1wb3J0IHsgQXV0b0NvbXBsZXRlTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9hdXRvY29tcGxldGUnO1xyXG5pbXBvcnQgeyAgRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2Ryb3Bkb3duJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEZsb2F0TGFiZWxNb2R1bGUgfSBmcm9tICdwcmltZW5nL2Zsb2F0bGFiZWwnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBQcmltZU5nTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBrdkVycm9yTW9kdWxlLFxyXG4gICAgUHJpbWVOZ01vZHVsZSxcclxuICAgIE9yZ2FuaXphdGlvbkNoYXJ0TW9kdWxlLFxyXG4gICAgS3ZCdXR0b25Nb2R1bGUsXHJcbiAgICBLdklucHV0c01vZHVsZSxcclxuICAgIEF1dG9Db21wbGV0ZU1vZHVsZSxcclxuICAgIERyb3Bkb3duTW9kdWxlLFxyXG4gICAgRmxvYXRMYWJlbE1vZHVsZVxyXG4gIF0sXHJcbiAgZGVjbGFyYXRpb25zOiBbS3ZPcmdjaGFydENvbXBvbmVudF0sXHJcbiAgZXhwb3J0czogW0t2T3JnY2hhcnRDb21wb25lbnRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBLdk9yZ2NoYXJ0TW9kdWxlIHsgfVxyXG4iXX0=
|