fantasy-ngzorro 1.3.29 → 1.3.31

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.
Files changed (163) hide show
  1. package/bundles/fantasy-ngzorro.umd.js +6049 -6035
  2. package/bundles/fantasy-ngzorro.umd.js.map +1 -1
  3. package/bundles/fantasy-ngzorro.umd.min.js +1 -1
  4. package/bundles/fantasy-ngzorro.umd.min.js.map +1 -1
  5. package/esm2015/fantasy-ngzorro.js +39 -39
  6. package/esm2015/fantasy-ngzorro.module.js +18 -18
  7. package/esm2015/hd-button/hd-button.component.js +91 -91
  8. package/esm2015/hd-button/hd-button.module.js +22 -22
  9. package/esm2015/hd-button/hd-button.service.js +36 -36
  10. package/esm2015/hd-button-group/hd-button-group.component.js +32 -32
  11. package/esm2015/hd-button-group/hd-button-group.module.js +22 -22
  12. package/esm2015/hd-component.module.js +44 -44
  13. package/esm2015/hd-current-table/hd-current-table.component.js +224 -224
  14. package/esm2015/hd-current-table/hd-current-table.module.js +23 -23
  15. package/esm2015/hd-current-table/hd-current-table.service.js +34 -34
  16. package/esm2015/hd-detail-form/hd-detail-form.component.js +64 -64
  17. package/esm2015/hd-detail-form/hd-detail-form.module.js +20 -20
  18. package/esm2015/hd-detail-form/hd-detail-form.service.js +17 -17
  19. package/esm2015/hd-detail-lines/hd-detail-lines.component.js +266 -266
  20. package/esm2015/hd-detail-lines/hd-detail-lines.module.js +23 -23
  21. package/esm2015/hd-detail-lines/hd-detail-lines.service.js +18 -18
  22. package/esm2015/hd-detail-tip/hd-detail-tip.component.js +61 -61
  23. package/esm2015/hd-detail-tip/hd-detail-tip.module.js +22 -22
  24. package/esm2015/hd-filter/hd-filter.component.js +193 -193
  25. package/esm2015/hd-filter/hd-filter.module.js +25 -25
  26. package/esm2015/hd-filter/hd-filter.service.js +80 -70
  27. package/esm2015/hd-form/hd-form.component.js +369 -369
  28. package/esm2015/hd-form/hd-form.module.js +25 -25
  29. package/esm2015/hd-form/hd-form.service.js +129 -129
  30. package/esm2015/hd-form-lines/hd-form-lines.component.js +1537 -1537
  31. package/esm2015/hd-form-lines/hd-form-lines.module.js +29 -29
  32. package/esm2015/hd-form-lines/hd-form-lines.service.js +121 -121
  33. package/esm2015/hd-log/hd-log.component.js +30 -30
  34. package/esm2015/hd-log/hd-log.module.js +25 -25
  35. package/esm2015/hd-log/hd-log.service.js +47 -47
  36. package/esm2015/hd-popconfirm/hd-popconfirm.component.js +52 -52
  37. package/esm2015/hd-popconfirm/hd-popconfirm.module.js +27 -27
  38. package/esm2015/hd-space/hd-space.component.js +51 -51
  39. package/esm2015/hd-space/hd-space.module.js +23 -23
  40. package/esm2015/hd-space/hd-space.service.js +33 -33
  41. package/esm2015/hd-status/hd-status.component.js +50 -50
  42. package/esm2015/hd-status/hd-status.module.js +27 -27
  43. package/esm2015/hd-status/hd-status.service.js +33 -33
  44. package/esm2015/hd-table/hd-table.component.js +972 -972
  45. package/esm2015/hd-table/hd-table.module.js +43 -43
  46. package/esm2015/hd-table/hd-table.service.js +116 -116
  47. package/esm2015/hd-tip/hd-tip.component.js +37 -37
  48. package/esm2015/hd-tip/hd-tip.module.js +20 -20
  49. package/esm2015/index.js +7 -7
  50. package/esm2015/model/colWidth.js +36 -36
  51. package/esm2015/model/common-type.js +122 -122
  52. package/esm2015/model/staticConst.js +8 -8
  53. package/esm2015/public-api.js +20 -20
  54. package/esm2015/service/common-session.service.js +37 -37
  55. package/esm2015/utils.js +128 -128
  56. package/esm5/fantasy-ngzorro.js +39 -39
  57. package/esm5/fantasy-ngzorro.module.js +22 -22
  58. package/esm5/hd-button/hd-button.component.js +104 -104
  59. package/esm5/hd-button/hd-button.module.js +26 -26
  60. package/esm5/hd-button/hd-button.service.js +39 -39
  61. package/esm5/hd-button-group/hd-button-group.component.js +38 -38
  62. package/esm5/hd-button-group/hd-button-group.module.js +26 -26
  63. package/esm5/hd-component.module.js +48 -48
  64. package/esm5/hd-current-table/hd-current-table.component.js +260 -260
  65. package/esm5/hd-current-table/hd-current-table.module.js +27 -27
  66. package/esm5/hd-current-table/hd-current-table.service.js +46 -46
  67. package/esm5/hd-detail-form/hd-detail-form.component.js +77 -77
  68. package/esm5/hd-detail-form/hd-detail-form.module.js +24 -24
  69. package/esm5/hd-detail-form/hd-detail-form.service.js +20 -20
  70. package/esm5/hd-detail-lines/hd-detail-lines.component.js +314 -314
  71. package/esm5/hd-detail-lines/hd-detail-lines.module.js +27 -27
  72. package/esm5/hd-detail-lines/hd-detail-lines.service.js +22 -22
  73. package/esm5/hd-detail-tip/hd-detail-tip.component.js +72 -72
  74. package/esm5/hd-detail-tip/hd-detail-tip.module.js +26 -26
  75. package/esm5/hd-filter/hd-filter.component.js +232 -232
  76. package/esm5/hd-filter/hd-filter.module.js +29 -29
  77. package/esm5/hd-filter/hd-filter.service.js +92 -78
  78. package/esm5/hd-form/hd-form.component.js +424 -424
  79. package/esm5/hd-form/hd-form.module.js +29 -29
  80. package/esm5/hd-form/hd-form.service.js +141 -141
  81. package/esm5/hd-form-lines/hd-form-lines.component.js +1844 -1844
  82. package/esm5/hd-form-lines/hd-form-lines.module.js +33 -33
  83. package/esm5/hd-form-lines/hd-form-lines.service.js +137 -137
  84. package/esm5/hd-log/hd-log.component.js +35 -35
  85. package/esm5/hd-log/hd-log.module.js +29 -29
  86. package/esm5/hd-log/hd-log.service.js +50 -50
  87. package/esm5/hd-popconfirm/hd-popconfirm.component.js +65 -65
  88. package/esm5/hd-popconfirm/hd-popconfirm.module.js +31 -31
  89. package/esm5/hd-space/hd-space.component.js +56 -56
  90. package/esm5/hd-space/hd-space.module.js +27 -27
  91. package/esm5/hd-space/hd-space.service.js +40 -40
  92. package/esm5/hd-status/hd-status.component.js +62 -62
  93. package/esm5/hd-status/hd-status.module.js +31 -31
  94. package/esm5/hd-status/hd-status.service.js +35 -35
  95. package/esm5/hd-table/hd-table.component.js +1100 -1100
  96. package/esm5/hd-table/hd-table.module.js +47 -47
  97. package/esm5/hd-table/hd-table.service.js +136 -136
  98. package/esm5/hd-tip/hd-tip.component.js +42 -42
  99. package/esm5/hd-tip/hd-tip.module.js +24 -24
  100. package/esm5/index.js +7 -7
  101. package/esm5/model/colWidth.js +36 -36
  102. package/esm5/model/common-type.js +146 -146
  103. package/esm5/model/staticConst.js +8 -8
  104. package/esm5/public-api.js +20 -20
  105. package/esm5/service/common-session.service.js +54 -54
  106. package/esm5/utils.js +128 -128
  107. package/fantasy-ngzorro.d.ts +34 -34
  108. package/fantasy-ngzorro.metadata.json +1 -1
  109. package/fantasy-ngzorro.module.d.ts +2 -2
  110. package/fesm2015/fantasy-ngzorro.js +5234 -5224
  111. package/fesm2015/fantasy-ngzorro.js.map +1 -1
  112. package/fesm5/fantasy-ngzorro.js +6058 -6045
  113. package/fesm5/fantasy-ngzorro.js.map +1 -1
  114. package/hd-button/hd-button.component.d.ts +14 -14
  115. package/hd-button/hd-button.module.d.ts +2 -2
  116. package/hd-button/hd-button.service.d.ts +17 -17
  117. package/hd-button-group/hd-button-group.component.d.ts +7 -7
  118. package/hd-button-group/hd-button-group.module.d.ts +2 -2
  119. package/hd-component.module.d.ts +2 -2
  120. package/hd-current-table/hd-current-table.component.d.ts +43 -43
  121. package/hd-current-table/hd-current-table.module.d.ts +2 -2
  122. package/hd-current-table/hd-current-table.service.d.ts +13 -13
  123. package/hd-detail-form/hd-detail-form.component.d.ts +9 -9
  124. package/hd-detail-form/hd-detail-form.module.d.ts +2 -2
  125. package/hd-detail-form/hd-detail-form.service.d.ts +3 -3
  126. package/hd-detail-lines/hd-detail-lines.component.d.ts +48 -48
  127. package/hd-detail-lines/hd-detail-lines.module.d.ts +2 -2
  128. package/hd-detail-lines/hd-detail-lines.service.d.ts +7 -7
  129. package/hd-detail-tip/hd-detail-tip.component.d.ts +12 -12
  130. package/hd-detail-tip/hd-detail-tip.module.d.ts +2 -2
  131. package/hd-filter/hd-filter.component.d.ts +23 -23
  132. package/hd-filter/hd-filter.module.d.ts +2 -2
  133. package/hd-filter/hd-filter.service.d.ts +30 -25
  134. package/hd-form/hd-form.component.d.ts +25 -25
  135. package/hd-form/hd-form.module.d.ts +2 -2
  136. package/hd-form/hd-form.service.d.ts +51 -51
  137. package/hd-form-lines/hd-form-lines.component.d.ts +147 -147
  138. package/hd-form-lines/hd-form-lines.module.d.ts +2 -2
  139. package/hd-form-lines/hd-form-lines.service.d.ts +53 -53
  140. package/hd-log/hd-log.component.d.ts +6 -6
  141. package/hd-log/hd-log.module.d.ts +2 -2
  142. package/hd-log/hd-log.service.d.ts +6 -6
  143. package/hd-popconfirm/hd-popconfirm.component.d.ts +10 -10
  144. package/hd-popconfirm/hd-popconfirm.module.d.ts +2 -2
  145. package/hd-space/hd-space.component.d.ts +10 -10
  146. package/hd-space/hd-space.module.d.ts +2 -2
  147. package/hd-space/hd-space.service.d.ts +12 -12
  148. package/hd-status/hd-status.component.d.ts +9 -9
  149. package/hd-status/hd-status.module.d.ts +2 -2
  150. package/hd-status/hd-status.service.d.ts +11 -11
  151. package/hd-table/hd-table.component.d.ts +91 -91
  152. package/hd-table/hd-table.module.d.ts +2 -2
  153. package/hd-table/hd-table.service.d.ts +42 -42
  154. package/hd-tip/hd-tip.component.d.ts +8 -8
  155. package/hd-tip/hd-tip.module.d.ts +2 -2
  156. package/index.d.ts +2 -2
  157. package/model/colWidth.d.ts +17 -17
  158. package/model/common-type.d.ts +46 -46
  159. package/model/staticConst.d.ts +3 -3
  160. package/package.json +1 -1
  161. package/public-api.d.ts +15 -15
  162. package/service/common-session.service.d.ts +5 -5
  163. package/utils.d.ts +28 -28
@@ -1,1101 +1,1101 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
- import * as tslib_1 from "tslib";
6
- import { ChangeDetectorRef, Component, ContentChild, EventEmitter, Input, Output, TemplateRef } from '@angular/core';
7
- import * as localforage from 'localforage';
8
- import { InputBoolean } from 'ng-zorro-antd/core';
9
- import { of } from 'rxjs';
10
- import { delay } from 'rxjs/operators';
11
- import { ColWidth } from '../model/colWidth';
12
- import { Page } from '../model/common-type';
13
- import { CommonSessionService } from '../service/common-session.service';
14
- import { TableCacheOption, TreeGrid } from './hd-table.service';
15
- var HdTableComponent = /** @class */ (function () {
16
- function HdTableComponent(cdr, commonSessionService) {
17
- var _this = this;
18
- this.cdr = cdr;
19
- this.commonSessionService = commonSessionService;
20
- this.tableCols = [];
21
- this.showSelected = false;
22
- this.showOperateColWarpButton = false;
23
- this.selectField = 'billNumber';
24
- // 合计区域
25
- this.showTableTotal = false;
26
- this.sortEvent = new EventEmitter();
27
- this.selectEvent = new EventEmitter();
28
- this.tableSearchEvent = new EventEmitter();
29
- this.tableLoading = false;
30
- // 表格分页参数
31
- this.tablePageIndex = 1;
32
- this.tablePageIndexChange = new EventEmitter();
33
- this.tablePageSizeChange = new EventEmitter();
34
- this.scroll = null;
35
- // 表格勾选参数
36
- this.isAllDisplayDataChecked = false;
37
- this.isIndeterminate = false;
38
- this.listOfDisplayData = [];
39
- this.listOfAllData = [];
40
- this.mapOfCheckedId = {};
41
- this.mapOfCheckList = {};
42
- // 合计参数
43
- this.tableTotalOptionList = [];
44
- this.textWidthCache = {};
45
- // 缓存信息
46
- this.tableCacheOption = new TableCacheOption();
47
- this.tableColsCache = [];
48
- this.showTable = false;
49
- this.selectColListNodes = [];
50
- this.selectColListNodesCache = [];
51
- this.showListNodes = false;
52
- this.isDropdownVisible = false;
53
- // 设置列的可见操作数组
54
- this.nowListNodes = [];
55
- // 设置列的不可见操作数组
56
- this.hideListNodes = [];
57
- // 点击时需要有临时数组存放两个tree,用于取消时候恢复调整前的状态
58
- this.cancelNowListNodes = [];
59
- this.cancelHideListNodes = [];
60
- this.showDetail = false;
61
- this.localforage = null;
62
- this.localtionTmp = '';
63
- // 拖拽操作
64
- this.beforeDrop = (/**
65
- * @param {?} arg
66
- * @return {?}
67
- */
68
- function (arg) {
69
- if (arg.node.origin.disabled || !arg.dragNode.origin.checked || arg.pos === 0) {
70
- return of(false);
71
- }
72
- else {
73
- /** @type {?} */
74
- var node = new TreeGrid();
75
- node.checked = arg.dragNode.origin.checked;
76
- node.disabled = arg.dragNode.origin.disabled;
77
- node.expanded = arg.dragNode.origin.expanded;
78
- node.isLeaf = arg.dragNode.origin.isLeaf;
79
- node.key = arg.dragNode.origin.key;
80
- node.selectable = arg.dragNode.origin.selectable;
81
- node.title = arg.dragNode.origin.title;
82
- // 拖拽元素下标
83
- /** @type {?} */
84
- var dragNodeIndex = _this.nowListNodes.findIndex((/**
85
- * @param {?} item
86
- * @return {?}
87
- */
88
- function (item) { return item.title == arg.dragNode.origin.title; }));
89
- // 目标位置的下标
90
- /** @type {?} */
91
- var nodeIndex = _this.nowListNodes.findIndex((/**
92
- * @param {?} item
93
- * @return {?}
94
- */
95
- function (item) { return item.title == arg.node.origin.title; })) + (arg.pos === -1 ? 0 : arg.pos);
96
- _this.nowListNodes.splice(nodeIndex, 0, node);
97
- _this.nowListNodes.splice(nodeIndex >= dragNodeIndex ? dragNodeIndex : dragNodeIndex + 1, 1);
98
- return of(true).pipe(delay(100));
99
- }
100
- });
101
- this.localforage = localforage.createInstance({
102
- driver: localforage.INDEXEDDB,
103
- name: 'hd-fscm',
104
- // 设置存储库的名称
105
- version: 1.0,
106
- // 设置存储库的版本
107
- storeName: 'hd-fscm-store',
108
- });
109
- }
110
- /**
111
- * @return {?}
112
- */
113
- HdTableComponent.prototype.ngOnInit = /**
114
- * @return {?}
115
- */
116
- function () {
117
- var _this = this;
118
- this.localtionTmp = location.pathname;
119
- if (this.localtionTmp) {
120
- this.localtionTmp = this.localtionTmp.replace(/\//g, "_");
121
- }
122
- this.userSession = this.commonSessionService.getSession('__jy_authorization_session__');
123
- // 用于开发环境调试
124
- if (!this.userSession) {
125
- this.userSession = {
126
- userCode: 'dev'
127
- };
128
- }
129
- this.deleteHideItem();
130
- if (!this.tableCols || this.tableCols.length === 0) {
131
- return;
132
- }
133
- this.localforage.ready().then((/**
134
- * @return {?}
135
- */
136
- function () {
137
- _this.getInitLocalforage();
138
- })).catch((/**
139
- * @param {?} e
140
- * @return {?}
141
- */
142
- function (e) {
143
- console.log('localforage加载异常step1', e);
144
- throw 'localforage加载异常';
145
- }));
146
- };
147
- /**
148
- * @param {?} changes
149
- * @return {?}
150
- */
151
- HdTableComponent.prototype.ngOnChanges = /**
152
- * @param {?} changes
153
- * @return {?}
154
- */
155
- function (changes) {
156
- var _this = this;
157
- // 数据改变时,重置勾选状态
158
- if (changes && changes['tableData'] && changes['tableData']['currentValue'] && changes['tableData']['previousValue']) {
159
- if (changes['tableData']['currentValue']['pageSize'] !== changes['tableData']['previousValue']['pageSize']
160
- || changes['tableData']['currentValue']['pageNumber'] !== changes['tableData']['previousValue']['pageNumber']) {
161
- return;
162
- }
163
- this.resetStatus();
164
- }
165
- if (changes['tableCols'] && JSON.stringify(changes['tableCols'].currentValue) !== JSON.stringify(changes['tableCols'].previousValue)) {
166
- this.deleteHideItem();
167
- if (!this.tableCols || this.tableCols.length === 0) {
168
- return;
169
- }
170
- this.localforage.ready().then((/**
171
- * @return {?}
172
- */
173
- function () {
174
- _this.getInitLocalforage();
175
- })).catch((/**
176
- * @param {?} e
177
- * @return {?}
178
- */
179
- function (e) {
180
- console.log('localforage加载异常step2', e);
181
- throw 'localforage加载异常';
182
- }));
183
- }
184
- };
185
- /**
186
- * @return {?}
187
- */
188
- HdTableComponent.prototype.deleteHideItem = /**
189
- * @return {?}
190
- */
191
- function () {
192
- // 首先把isShow为false数据剔除掉
193
- this.tableCols = this.tableCols.filter((/**
194
- * @param {?} item
195
- * @return {?}
196
- */
197
- function (item) {
198
- // 如果对象没有 isShow 属性,则默认为 true,保留该对象
199
- if (!item.hasOwnProperty('isShow')) {
200
- return true;
201
- }
202
- // 如果对象有 isShow 属性,则检查其值是否为 true
203
- return item.isShow === true;
204
- }));
205
- };
206
- /**
207
- * @param {?} sort
208
- * @return {?}
209
- */
210
- HdTableComponent.prototype.sort = /**
211
- * @param {?} sort
212
- * @return {?}
213
- */
214
- function (sort) {
215
- this.sortEvent.emit(sort);
216
- };
217
- /**
218
- * @return {?}
219
- */
220
- HdTableComponent.prototype.getInitLocalforage = /**
221
- * @return {?}
222
- */
223
- function () {
224
- var _this = this;
225
- // 首先获取当前hd-table存储的数据 如果没有,则初始化下当前的数据
226
- this.localforage.getItem('hd-table_' + this.userSession.userCode + '_' + this.localtionTmp + '_' + this.uuid).then((/**
227
- * @param {?} value
228
- * @return {?}
229
- */
230
- function (value) {
231
- _this.tableCacheOption = value;
232
- if (_this.tableCacheOption.pageSize && _this.tableCacheOption.pageSize > 10) {
233
- _this.tablePageSize = _this.tableCacheOption.pageSize;
234
- }
235
- else {
236
- _this.tablePageSize = _this.tableCacheOption.pageSize || 10;
237
- }
238
- if (!_this.tableCacheOption.colWidths) {
239
- _this.tableCacheOption.colWidths = new Map();
240
- }
241
- _this.tablePageSizeChange.emit(_this.tablePageSize);
242
- _this.initTable();
243
- })).catch((/**
244
- * @param {?} err
245
- * @return {?}
246
- */
247
- function (err) {
248
- _this.tableCacheOption = new TableCacheOption();
249
- _this.tablePageSize = 10;
250
- _this.tableCacheOption.pageSize = 10;
251
- _this.tableCacheOption.colWidths = new Map();
252
- _this.tablePageSizeChange.emit(_this.tablePageSize);
253
- _this.initTable();
254
- }));
255
- };
256
- /**
257
- * @return {?}
258
- */
259
- HdTableComponent.prototype.initTable = /**
260
- * @return {?}
261
- */
262
- function () {
263
- this.showTable = false;
264
- if (!this.uuid) {
265
- throw 'hd-table缺失uuid参数,请使用编辑器插件生成并给hd-table赋予uuid属性';
266
- }
267
- if (this.judgeRepeatCols()) {
268
- this.dealCols();
269
- this.setCols();
270
- this.dealScroll();
271
- this.dealOperateBtn();
272
- this.showTable = true;
273
- }
274
- };
275
- // 设置列点击取消
276
- // 设置列点击取消
277
- /**
278
- * @return {?}
279
- */
280
- HdTableComponent.prototype.cancelDropdown =
281
- // 设置列点击取消
282
- /**
283
- * @return {?}
284
- */
285
- function () {
286
- this.isDropdownVisible = false;
287
- this.hideListNodes = JSON.parse(JSON.stringify(this.cancelHideListNodes));
288
- this.nowListNodes = JSON.parse(JSON.stringify(this.cancelNowListNodes));
289
- };
290
- // 点击触发设置列
291
- // 点击触发设置列
292
- /**
293
- * @return {?}
294
- */
295
- HdTableComponent.prototype.confirmDropdown =
296
- // 点击触发设置列
297
- /**
298
- * @return {?}
299
- */
300
- function () {
301
- // 临时存放下,取消的时候恢复原来的状态 深拷贝下对象数组
302
- this.cancelHideListNodes = JSON.parse(JSON.stringify(this.hideListNodes));
303
- this.cancelNowListNodes = JSON.parse(JSON.stringify(this.nowListNodes));
304
- this.isDropdownVisible = true;
305
- };
306
- /**
307
- * @return {?}
308
- */
309
- HdTableComponent.prototype.submitGrids = /**
310
- * @return {?}
311
- */
312
- function () {
313
- var _this = this;
314
- this.tableCacheOption.cols = [];
315
- this.nowListNodes.forEach((/**
316
- * @param {?} item
317
- * @return {?}
318
- */
319
- function (item) {
320
- _this.tableCacheOption.cols.push(item.title);
321
- }));
322
- this.saveTableCacheOption();
323
- this.initTable();
324
- this.isDropdownVisible = false;
325
- };
326
- // 从缓存设置列
327
- // 从缓存设置列
328
- /**
329
- * @return {?}
330
- */
331
- HdTableComponent.prototype.setCols =
332
- // 从缓存设置列
333
- /**
334
- * @return {?}
335
- */
336
- function () {
337
- var _this = this;
338
- this.showListNodes = false;
339
- this.nowListNodes = [];
340
- this.hideListNodes = [];
341
- if (this.tableCacheOption.cols) {
342
- var _a = this.tableColsCache.reduce((/**
343
- * @param {?} acc
344
- * @param {?} item
345
- * @return {?}
346
- */
347
- function (acc, item) {
348
- if (_this.tableCacheOption.cols.includes(item.title)) {
349
- acc.incols.push(item);
350
- }
351
- else {
352
- acc.notIncols.push(item);
353
- }
354
- return acc;
355
- }), { notIncols: [], incols: [] }), notIncols = _a.notIncols, incols = _a.incols;
356
- incols.sort((/**
357
- * @param {?} a
358
- * @param {?} b
359
- * @return {?}
360
- */
361
- function (a, b) {
362
- return _this.tableCacheOption.cols.indexOf(a.title) - _this.tableCacheOption.cols.indexOf(b.title);
363
- }));
364
- this.tableCols = incols.concat(notIncols);
365
- }
366
- this.tableCols.forEach((/**
367
- * @param {?} element
368
- * @param {?} index
369
- * @return {?}
370
- */
371
- function (element, index) {
372
- if (_this.tableCacheOption.cols) {
373
- element.isShow = _this.tableCacheOption.cols.includes(element.title) ? true : false;
374
- if (element.isShow) {
375
- _this.nowListNodes.push({
376
- title: element.title,
377
- key: element.title,
378
- disabled: element.fixed ? true : false,
379
- // selectable: false,
380
- checked: _this.tableCacheOption.cols.includes(element.title) ? true : false
381
- });
382
- }
383
- else {
384
- _this.hideListNodes.push({
385
- title: element.title,
386
- key: element.title,
387
- disabled: element.fixed ? true : false,
388
- // selectable: false,
389
- checked: _this.tableCacheOption.cols.includes(element.title) ? true : false
390
- });
391
- }
392
- }
393
- else {
394
- element.isShow = true;
395
- _this.nowListNodes.push({
396
- title: element.title,
397
- key: element.title,
398
- checked: true,
399
- // selectable: false,
400
- disabled: element.fixed ? true : false
401
- });
402
- }
403
- }));
404
- // 调整列宽为缓存宽度
405
- if (this.tableCacheOption && this.tableCacheOption.colWidths && this.tableCacheOption.colWidths.size !== 0) {
406
- this.tableCols.forEach((/**
407
- * @param {?} col
408
- * @return {?}
409
- */
410
- function (col) {
411
- if (_this.tableCacheOption.colWidths.has(col.title)) {
412
- col.width = _this.tableCacheOption.colWidths.get(col.title);
413
- }
414
- }));
415
- }
416
- this.dealCols();
417
- setTimeout((/**
418
- * @return {?}
419
- */
420
- function () {
421
- _this.showListNodes = true;
422
- }), 0);
423
- };
424
- /**
425
- * @param {?} arr
426
- * @param {?} elementToMoveTitle
427
- * @param {?} targetElementTitle
428
- * @param {?} pos
429
- * @return {?}
430
- */
431
- HdTableComponent.prototype.moveElementNearby = /**
432
- * @param {?} arr
433
- * @param {?} elementToMoveTitle
434
- * @param {?} targetElementTitle
435
- * @param {?} pos
436
- * @return {?}
437
- */
438
- function (arr, elementToMoveTitle, targetElementTitle, pos) {
439
- /** @type {?} */
440
- var tmpArray = JSON.parse(JSON.stringify(arr));
441
- /** @type {?} */
442
- var targetIndex = tmpArray.findIndex((/**
443
- * @param {?} item
444
- * @return {?}
445
- */
446
- function (item) { return item.title === targetElementTitle; }));
447
- /** @type {?} */
448
- var elementIndex = tmpArray.findIndex((/**
449
- * @param {?} item
450
- * @return {?}
451
- */
452
- function (item) { return item.title === elementToMoveTitle; }));
453
- /** @type {?} */
454
- var newIndex = pos < 0 ? (targetIndex + pos) : targetIndex;
455
- // 移除目标元素,并插入到新的位置
456
- /** @type {?} */
457
- var removedElement = tmpArray.splice(elementIndex, 1);
458
- tmpArray.splice(newIndex + 1, 0, removedElement[0]);
459
- return tmpArray;
460
- };
461
- // 勾选操作
462
- // 勾选操作
463
- /**
464
- * @param {?} event
465
- * @return {?}
466
- */
467
- HdTableComponent.prototype.checkAction =
468
- // 勾选操作
469
- /**
470
- * @param {?} event
471
- * @return {?}
472
- */
473
- function (event) {
474
- // 勾选只有在hideListNodes,取消勾选只有在nowListNodes
475
- if (event.node.origin.checked) {
476
- /** @type {?} */
477
- var node = new TreeGrid();
478
- node = this.hideListNodes.find((/**
479
- * @param {?} item
480
- * @return {?}
481
- */
482
- function (item) {
483
- return item.title === event.node.origin.title;
484
- }));
485
- node.checked = true;
486
- // 找到第一个fixed属性为right的title,找到插入元素的位置
487
- /** @type {?} */
488
- var title_1 = null;
489
- for (var i = this.tableColsCache.length - 1; i >= 0; i--) {
490
- if (this.tableColsCache[i].fixed === 'right') {
491
- title_1 = this.tableColsCache[i].title;
492
- break;
493
- }
494
- }
495
- /** @type {?} */
496
- var temporaryNodeList = this.nowListNodes.slice(0);
497
- if (!title_1) {
498
- temporaryNodeList.push(node);
499
- }
500
- else {
501
- /** @type {?} */
502
- var index = this.nowListNodes.findIndex((/**
503
- * @param {?} node
504
- * @return {?}
505
- */
506
- function (node) { return node.title === title_1; }));
507
- temporaryNodeList.splice(index, 0, node);
508
- }
509
- this.nowListNodes = temporaryNodeList;
510
- this.hideListNodes = this.hideListNodes.filter((/**
511
- * @param {?} item
512
- * @return {?}
513
- */
514
- function (item) {
515
- return item.title !== event.node.origin.title;
516
- }));
517
- }
518
- else {
519
- // if (this.hideListNodes.length === 0 && this.tableCacheOption && this.tableCacheOption.cols) {
520
- // this.hideListNodes = this.getHideListNodes();
521
- // }
522
- /** @type {?} */
523
- var temporaryNodeList_1 = this.hideListNodes.slice(0);
524
- this.nowListNodes.forEach((/**
525
- * @param {?} item
526
- * @return {?}
527
- */
528
- function (item) {
529
- if (item.title === event.node.origin.title) {
530
- /** @type {?} */
531
- var innerItem = JSON.parse(JSON.stringify(item));
532
- innerItem.checked = false;
533
- temporaryNodeList_1.push(innerItem);
534
- }
535
- }));
536
- this.hideListNodes = temporaryNodeList_1;
537
- // 为了防止未选择的数组顺序因为push方法而改变,通过初始数据获取显示的字段列表
538
- this.nowListNodes = this.nowListNodes.filter((/**
539
- * @param {?} item
540
- * @return {?}
541
- */
542
- function (item) {
543
- return item.title !== event.node.origin.title;
544
- }));
545
- }
546
- };
547
- // 防止未选择的数组顺序因为push方法而改变,从初始数据获取隐藏未显示的字段列表
548
- // 防止未选择的数组顺序因为push方法而改变,从初始数据获取隐藏未显示的字段列表
549
- /**
550
- * @return {?}
551
- */
552
- HdTableComponent.prototype.getHideListNodes =
553
- // 防止未选择的数组顺序因为push方法而改变,从初始数据获取隐藏未显示的字段列表
554
- /**
555
- * @return {?}
556
- */
557
- function () {
558
- var _this = this;
559
- /** @type {?} */
560
- var temporaryNodeList = [];
561
- // 从tableColsCache里面找没有在storage里面出现的字段,组成hideList
562
- this.tableColsCache.forEach((/**
563
- * @param {?} item
564
- * @return {?}
565
- */
566
- function (item) {
567
- if (!_this.tableCacheOption.cols.includes(item.title)) {
568
- /** @type {?} */
569
- var nodeItem = new TreeGrid();
570
- nodeItem.title = item.title;
571
- nodeItem.key = item.title;
572
- nodeItem.disabled = item.fixed ? true : false;
573
- nodeItem.checked = false;
574
- temporaryNodeList.push(nodeItem);
575
- }
576
- }));
577
- return temporaryNodeList;
578
- };
579
- /**
580
- * @return {?}
581
- */
582
- HdTableComponent.prototype.dealCols = /**
583
- * @return {?}
584
- */
585
- function () {
586
- if (!this.tableCols[0].minWidth) {
587
- this.tableCols.forEach((/**
588
- * @param {?} item
589
- * @return {?}
590
- */
591
- function (item) {
592
- /** @type {?} */
593
- var span = document.createElement('span');
594
- span.style.visibility = 'hidden';
595
- span.style.position = 'absolute';
596
- span.style.whiteSpace = 'nowrap';
597
- span.style.fontSize = '12px';
598
- span.style.display = 'inline-block'; // 将样式修改为 inline-block
599
- span.innerText = item.title;
600
- document.body.appendChild(span);
601
- item.minWidth = span.offsetWidth + 16;
602
- span.style.display = 'none';
603
- document.body.removeChild(span);
604
- }));
605
- }
606
- // 处理左右吸附的数据在数组中的位置
607
- /** @type {?} */
608
- var leftFixedCols = this.tableCols.filter((/**
609
- * @param {?} col
610
- * @return {?}
611
- */
612
- function (col) { return col.fixed === 'left'; }));
613
- /** @type {?} */
614
- var rightFixedCols = this.tableCols.filter((/**
615
- * @param {?} col
616
- * @return {?}
617
- */
618
- function (col) { return col.fixed === 'right'; }));
619
- /** @type {?} */
620
- var normalCols = this.tableCols.filter((/**
621
- * @param {?} col
622
- * @return {?}
623
- */
624
- function (col) { return !col.fixed; }));
625
- /** @type {?} */
626
- var resultCols = leftFixedCols.concat(normalCols).concat(rightFixedCols);
627
- this.tableCols = resultCols;
628
- if (!this.tableColsCache || this.tableColsCache.length === 0) {
629
- // 缓存一下表格的数据
630
- this.tableColsCache = tslib_1.__spread(this.tableCols);
631
- }
632
- };
633
- /**
634
- * @return {?}
635
- */
636
- HdTableComponent.prototype.saveTableCacheOption = /**
637
- * @return {?}
638
- */
639
- function () {
640
- this.localforage.setItem('hd-table_' + this.userSession.userCode + '_' + this.localtionTmp + '_' + this.uuid, this.tableCacheOption);
641
- };
642
- /**
643
- * @return {?}
644
- */
645
- HdTableComponent.prototype.judgeRepeatCols = /**
646
- * @return {?}
647
- */
648
- function () {
649
- for (var i = 0; i < this.tableCols.length; i++) {
650
- for (var j = i + 1; j < this.tableCols.length; j++) {
651
- if (this.tableCols[i].title === this.tableCols[j].title) {
652
- throw "hd-table\u7EC4\u4EF6\u4E2D\u5217\u540D " + this.tableCols[i].title + " \u91CD\u590D";
653
- }
654
- }
655
- }
656
- return true;
657
- };
658
- /**
659
- * @param {?} __0
660
- * @param {?} col
661
- * @return {?}
662
- */
663
- HdTableComponent.prototype.onResize = /**
664
- * @param {?} __0
665
- * @param {?} col
666
- * @return {?}
667
- */
668
- function (_a, col) {
669
- var width = _a.width;
670
- /** @type {?} */
671
- var tempWidth = 0;
672
- if (width > col.minWidth) {
673
- tempWidth = width;
674
- }
675
- else {
676
- tempWidth = col.minWidth;
677
- }
678
- this.tableCacheOption.colWidths.set(col.title, tempWidth);
679
- this.saveTableCacheOption();
680
- this.tableCols = this.tableCols.map((/**
681
- * @param {?} e
682
- * @return {?}
683
- */
684
- function (e) { return (e.title === col.title ? tslib_1.__assign({}, e, { width: tempWidth }) : e); }));
685
- this.dealScroll();
686
- };
687
- /**
688
- * @return {?}
689
- */
690
- HdTableComponent.prototype.dealOperateBtn = /**
691
- * @return {?}
692
- */
693
- function () {
694
- /** @type {?} */
695
- var operateCol = this.tableCols.find((/**
696
- * @param {?} col
697
- * @return {?}
698
- */
699
- function (col) { return col.title === '操作'; })) || null;
700
- if (operateCol) {
701
- /** @type {?} */
702
- var textStr_1 = '';
703
- operateCol.btnList.forEach((/**
704
- * @param {?} btn
705
- * @return {?}
706
- */
707
- function (btn) {
708
- if (!btn.isRepeat) {
709
- textStr_1 += btn.name;
710
- }
711
- }));
712
- /** @type {?} */
713
- var span = document.createElement('a');
714
- span.style.visibility = 'hidden';
715
- span.style.position = 'absolute';
716
- span.style.whiteSpace = 'nowrap';
717
- span.style.fontSize = '12px';
718
- span.style.display = 'inline-block'; // 将样式修改为 inline-block
719
- span.innerText = textStr_1;
720
- document.body.appendChild(span);
721
- operateCol.width = span.offsetWidth + (operateCol.btnList.filter((/**
722
- * @param {?} item
723
- * @return {?}
724
- */
725
- function (item) { return !item.isRepeat; })).length - 1) * 4 + 16;
726
- span.style.display = 'none';
727
- document.body.removeChild(span);
728
- }
729
- };
730
- /**
731
- * @param {?} fn
732
- * @param {?} event
733
- * @return {?}
734
- */
735
- HdTableComponent.prototype.triggerEvent = /**
736
- * @param {?} fn
737
- * @param {?} event
738
- * @return {?}
739
- */
740
- function (fn, event) {
741
- if (fn) {
742
- fn(event);
743
- }
744
- };
745
- /**
746
- * @return {?}
747
- */
748
- HdTableComponent.prototype.dealScroll = /**
749
- * @return {?}
750
- */
751
- function () {
752
- /** @type {?} */
753
- var colWidth = 0;
754
- if (this.showSelected) {
755
- colWidth += 40;
756
- }
757
- this.tableCols.forEach((/**
758
- * @param {?} item
759
- * @return {?}
760
- */
761
- function (item) {
762
- if (!item.width) {
763
- item.width = ColWidth.fixColWidth;
764
- }
765
- if (item.isShow) {
766
- item.fixedWidth = colWidth;
767
- colWidth += item.width;
768
- }
769
- }));
770
- if (this.tableTotal) {
771
- this.scroll = {
772
- x: '1px',
773
- y: 'calc(100vh - 180px)'
774
- };
775
- }
776
- else {
777
- this.scroll = {
778
- x: '1px',
779
- y: 'calc(100vh - 140px)'
780
- };
781
- }
782
- };
783
- /**
784
- * @param {?} text
785
- * @param {?} maxWidth
786
- * @return {?}
787
- */
788
- HdTableComponent.prototype.isTextOverflow = /**
789
- * @param {?} text
790
- * @param {?} maxWidth
791
- * @return {?}
792
- */
793
- function (text, maxWidth) {
794
- /** @type {?} */
795
- var cachedWidth = this.textWidthCache[text];
796
- if (cachedWidth !== undefined) {
797
- return cachedWidth + 15 >= maxWidth;
798
- }
799
- /** @type {?} */
800
- var span = document.createElement('span');
801
- span.style.visibility = 'hidden';
802
- span.style.position = 'absolute';
803
- span.style.whiteSpace = 'nowrap';
804
- span.style.fontSize = '12px';
805
- span.style.display = 'inline-block'; // 将样式修改为 inline-block
806
- span.innerText = text;
807
- document.body.appendChild(span);
808
- /** @type {?} */
809
- var isOverflow = span.offsetWidth + 15 >= maxWidth;
810
- this.textWidthCache[text] = span.offsetWidth;
811
- span.style.display = 'none';
812
- document.body.removeChild(span);
813
- return isOverflow;
814
- };
815
- // 表格勾选逻辑
816
- // 表格勾选逻辑
817
- /**
818
- * @param {?} $event
819
- * @return {?}
820
- */
821
- HdTableComponent.prototype.currentPageDataChange =
822
- // 表格勾选逻辑
823
- /**
824
- * @param {?} $event
825
- * @return {?}
826
- */
827
- function ($event) {
828
- this.listOfDisplayData = $event;
829
- this.refreshStatus();
830
- this.resetStatus();
831
- };
832
- /**
833
- * @param {?} reset
834
- * @return {?}
835
- */
836
- HdTableComponent.prototype.search = /**
837
- * @param {?} reset
838
- * @return {?}
839
- */
840
- function (reset) {
841
- this.tableCacheOption.pageSize = this.tablePageSize;
842
- this.saveTableCacheOption();
843
- if (reset) {
844
- this.tablePageSizeChange.emit(this.tablePageSize);
845
- }
846
- else {
847
- this.tablePageIndexChange.emit(this.tablePageIndex);
848
- // 触发父组件查询事件
849
- this.tableSearchEvent.emit(reset);
850
- }
851
- };
852
- /**
853
- * @return {?}
854
- */
855
- HdTableComponent.prototype.resetStatus = /**
856
- * @return {?}
857
- */
858
- function () {
859
- this.isAllDisplayDataChecked = false;
860
- this.isIndeterminate = false;
861
- this.mapOfCheckedId = {};
862
- this.mapOfCheckList = {};
863
- this.selectEvent.emit([]);
864
- };
865
- /**
866
- * @param {?=} event
867
- * @param {?=} data
868
- * @return {?}
869
- */
870
- HdTableComponent.prototype.refreshStatus = /**
871
- * @param {?=} event
872
- * @param {?=} data
873
- * @return {?}
874
- */
875
- function (event, data) {
876
- var _this = this;
877
- if (event === void 0) { event = false; }
878
- if (data === void 0) { data = null; }
879
- if (event && data) {
880
- !this.mapOfCheckList[data[this.selectField]] && (this.mapOfCheckList[data[this.selectField]] = data);
881
- }
882
- else if (!event && data) {
883
- this.mapOfCheckList[data[this.selectField]] && delete this.mapOfCheckList[data[this.selectField]];
884
- }
885
- this.isAllDisplayDataChecked = this.listOfDisplayData.every((/**
886
- * @param {?} item
887
- * @return {?}
888
- */
889
- function (item) { return _this.mapOfCheckedId[item[_this.selectField]]; }));
890
- this.isIndeterminate =
891
- this.listOfDisplayData.some((/**
892
- * @param {?} item
893
- * @return {?}
894
- */
895
- function (item) { return _this.mapOfCheckedId[item[_this.selectField]]; })) && !this.isAllDisplayDataChecked;
896
- // 触发select事件
897
- if (this.selectEvent) {
898
- /** @type {?} */
899
- var selectedList = Object.values(this.mapOfCheckList);
900
- this.selectEvent.emit(selectedList);
901
- }
902
- // 如果数据为空,则清空勾选标识
903
- if (this.tableData.content.length === 0) {
904
- this.isAllDisplayDataChecked = false;
905
- }
906
- };
907
- /**
908
- * @param {?} value
909
- * @return {?}
910
- */
911
- HdTableComponent.prototype.checkAll = /**
912
- * @param {?} value
913
- * @return {?}
914
- */
915
- function (value) {
916
- var _this = this;
917
- this.listOfDisplayData.forEach((/**
918
- * @param {?} item
919
- * @return {?}
920
- */
921
- function (item) {
922
- if (value) {
923
- !_this.mapOfCheckList[item[_this.selectField]] && (_this.mapOfCheckList[item[_this.selectField]] = item);
924
- }
925
- else {
926
- _this.mapOfCheckList[item[_this.selectField]] && delete _this.mapOfCheckList[item[_this.selectField]];
927
- }
928
- _this.mapOfCheckedId[item[_this.selectField]] = value;
929
- }));
930
- this.refreshStatus();
931
- };
932
- /**
933
- * @param {?} str
934
- * @return {?}
935
- */
936
- HdTableComponent.prototype.judgeColEmpty = /**
937
- * @param {?} str
938
- * @return {?}
939
- */
940
- function (str) {
941
- if (str || str === 0) {
942
- return str;
943
- }
944
- else {
945
- return '<空>';
946
- }
947
- };
948
- HdTableComponent.decorators = [
949
- { type: Component, args: [{
950
- selector: 'hd-table',
951
- template: "<ng-container>\n <hd-button-group>\n <ng-template #buttonGroupLeft>\n <ng-container *ngTemplateOutlet=\"tableLeftButton\"></ng-container>\n <hd-button *ngIf=\"showOperateColWarpButton\" type=\"default\" (click)=\"showDetail = !showDetail\">{{showDetail ?\n '\u7F29\u7565\u663E\u793A': '\u5C55\u5F00\u663E\u793A'}}</hd-button>\n </ng-template>\n <ng-template #buttonGroupRight>\n <ng-container *ngTemplateOutlet=\"tableRightButton\"></ng-container>\n <hd-button type=\"primary\" nz-dropdown nzTrigger=\"click\" [nzDropdownMenu]=\"menu\" (clickAction)=\"confirmDropdown()\"\n [nzVisible]=\"isDropdownVisible\">\u8BBE\u7F6E\u5217</hd-button>\n <nz-dropdown-menu #menu=\"nzDropdownMenu\">\n <div style=\"max-height: 400px;overflow-y: scroll;\">\n <div *ngIf=\"showListNodes && nowListNodes.length > 0\" nz-menu style=\"padding: 5px 10px;\">\n <nz-tree *ngIf=\"showListNodes\" [nzData]=\"nowListNodes\" nzCheckable nzDraggable nzBlockNode\n nzShowExpand=\"false\" (nzCheckBoxChange)=\"checkAction($event)\" [nzBeforeDrop]=\"beforeDrop\"\n [nzTreeTemplate]=\"nzTreeTemplate\">\n </nz-tree>\n <ng-template #nzTreeTemplate let-node>\n <span\n class=\"ng-tns-c31-110 draggable ng-star-inserted ant-tree-node-content-wrapper ant-tree-node-content-wrapper-close\"\n [title]=\"node.key\" draggable=\"true\" aria-grabbed=\"true\">\n <span class=\"ant-tree-title\">\n <div class=\"hd-table-tree-node\">\n <span>{{node.key}}</span>\n <div *ngIf=\"!node.origin.disabled\" class=\"hd-table-tree-node-img\">\n <i nz-icon nzType=\"caret-up\" nzTheme=\"outline\"></i>\n <i nz-icon nzType=\"caret-down\" nzTheme=\"outline\"></i>\n </div>\n </div>\n </span>\n </span>\n </ng-template>\n </div>\n <div *ngIf=\"showListNodes && hideListNodes.length > 0\" nz-menu style=\"padding: 5px 10px;\">\n <nz-tree *ngIf=\"showListNodes\" [nzData]=\"hideListNodes\" nzCheckable nzShowExpand=\"false\"\n (nzCheckBoxChange)=\"checkAction($event)\">\n </nz-tree>\n </div>\n </div>\n <div style=\"text-align: right;background: #fff;padding: 4px;\">\n <hd-button style=\"margin-right: 4px;\" type=\"default\" size=\"small\" (clickAction)=\"cancelDropdown()\">\u53D6\u6D88\n </hd-button>\n <hd-button type=\"primary\" size=\"small\" (clickAction)=\"submitGrids()\">\u5B8C\u6210</hd-button>\n </div>\n </nz-dropdown-menu>\n </ng-template>\n </hd-button-group>\n <hd-space type=\"row\" size=\"12\"></hd-space>\n <ng-container *ngTemplateOutlet=\"tableTotal\"></ng-container>\n <hd-space *ngIf=\"tableTotal\" type=\"row\" size=\"12\"></hd-space>\n <nz-table *ngIf=\"showTable\" #hdTable class=\"hd-table-container\" [nzScroll]=\"scroll\" nzShowSizeChanger\n nzShowSizeChanger nzShowQuickJumper nzFrontPagination=\"false\" nzSize=\"middle\" [nzData]=\"tableData.content\"\n [nzTotal]=\"tableData.totalElements\" [(nzPageIndex)]=\"tablePageIndex\" [nzLoading]=\"tableLoading\"\n [nzPageSizeOptions]=\"[ 10, 50, 100, 200 ]\" [(nzPageSize)]=\"tablePageSize\" (nzPageSizeChange)=\"search(true)\"\n (nzPageIndexChange)=\"search(false)\" (nzCurrentPageDataChange)=\"showSelected ? currentPageDataChange($event) : null\"\n [nzShowTotal]=\"tableTotalTemplate\">\n <thead (nzSortChange)=\"sort($event)\" nzSingleSort>\n <tr>\n <th nzWidth=\"40px\" nzLeft=\"0px\" *ngIf=\"showSelected\" nzShowCheckbox [(nzChecked)]=\"isAllDisplayDataChecked\"\n [nzIndeterminate]=\"isIndeterminate\" (nzCheckedChange)=\"checkAll($event)\"></th>\n <ng-container *ngFor=\"let col of tableCols\">\n <th *ngIf=\"col.isShow\" [nzWidth]=\"col.width + 'px'\" [nzAlign]=\"col.align\"\n [nzLeft]=\"col.fixed === 'left' ? col.fixedWidth + 'px' : null\"\n [nzRight]=\"col.fixed === 'right' ? 0 + 'px' : null\" nz-resizable nzBounds=\"window\" nzPreview\n (nzResizeEnd)=\"onResize($event, col)\" [nzShowSort]=\"col.canSort\" [nzSortKey]=\"col.name\">\n {{ col.title }}\n <nz-resize-handle nzDirection=\"right\">\n <div class=\"resize-trigger\"></div>\n </nz-resize-handle>\n </th>\n </ng-container>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let data of hdTable.data;index as i\">\n <td nzLeft=\"0px\" *ngIf=\"showSelected\" nzShowCheckbox [(nzChecked)]=\"mapOfCheckedId[data[selectField]]\"\n (nzCheckedChange)=\"refreshStatus($event, data)\"></td>\n <ng-container *ngFor=\"let col of tableCols\">\n <td *ngIf=\"col.isShow\" [ngStyle]=\"{'max-width': col.width + 'px'}\" [nzAlign]=\"col.align\"\n [nzLeft]=\"col.fixed === 'left' ? col.fixedWidth + 'px' : null\"\n [nzRight]=\"col.fixed === 'right' ? 0 + 'px' : null\"\n [ngClass]=\"(col.canWarp && showDetail) ? 'common-td-wrap' : ''\">\n <ng-container *ngIf=\"col.title === '\u64CD\u4F5C';else notOperateTemplate\">\n <div class=\"common-btn-group\">\n <ng-container *ngFor=\"let btn of col.btnList\">\n <ng-container *ngIf=\"!btn.showConfirm;else showConfirmTemplate\">\n <a *ngIf=\"btn.permission ? btn.permission(data) : true\"\n [class]=\"btn.name === '\u5220\u9664' ? 'common-danger-btn': ''\"\n (click)=\"triggerEvent(btn.click || null, data)\">{{ btn.name }}</a>\n </ng-container>\n <ng-template #showConfirmTemplate>\n <a *ngIf=\"btn.permission ? btn.permission(data) : true\"\n [class]=\"btn.name === '\u5220\u9664' ? 'common-danger-btn': ''\" nz-popconfirm\n [nzPopconfirmTitle]=\"'\u786E\u8BA4\u8981' + btn.name + '\u5417?'\"\n (nzOnConfirm)=\"triggerEvent(btn.click || null, data)\">{{\n btn.name }}</a>\n </ng-template>\n </ng-container>\n </div>\n </ng-container>\n <ng-template #notOperateTemplate>\n <ng-container *ngIf=\"col.name === 'state';else otherTemplate\">\n <hd-status [status]=\"data['state']\">{{ judgeColEmpty(col.render ? col.render(data) : data['state'])}}\n </hd-status>\n </ng-container>\n <ng-template #otherTemplate>\n <ng-container *ngIf=\"col.click;else noClickTemplate\">\n <ng-container\n *ngIf=\"!isTextOverflow(col.render ? col.render(data) : data[col.name], col.width);else overflowTemplate\">\n <a [ngStyle]=\"{'color': col?.color ? col.color : null}\"\n (click)=\"triggerEvent(col.click || null, data)\">{{ judgeColEmpty(col.render ? col.render(data) :\n data[col.name])}}</a>\n </ng-container>\n <ng-template #overflowTemplate>\n <a [ngStyle]=\"{'color': col?.color ? col.color : null}\" nz-tooltip\n [nzTooltipTitle]=\"col.render ? col.render(data) : data[col.name]\"\n (click)=\"triggerEvent(col.click || null, data)\">{{ judgeColEmpty(col.render ? col.render(data) :\n data[col.name])}}</a>\n </ng-template>\n </ng-container>\n <ng-template #noClickTemplate>\n <ng-container\n *ngIf=\"!isTextOverflow(col.render ? col.render(data) : data[col.name], col.width);else overflowTemplate\">\n <span [ngStyle]=\"{'color': col?.color ? col.color : null}\">{{ judgeColEmpty(col.render ?\n col.render(data) :\n data[col.name])}}</span>\n </ng-container>\n <ng-template #overflowTemplate>\n <span [ngStyle]=\"{'color': col?.color ? col.color : null}\" nz-tooltip\n [nzTooltipTitle]=\"col.render ? col.render(data) : data[col.name]\">\n {{ judgeColEmpty(col.render ? col.render(data) : data[col.name])}}</span>\n </ng-template>\n </ng-template>\n </ng-template>\n </ng-template>\n </td>\n </ng-container>\n </tr>\n <!-- \u5408\u8BA1\u6240\u6709\u6570\u636E\u533A\u57DF \u9700\u8981\u540E\u7AEF\u63A5\u53E3\u914D\u5408 -->\n <tr *ngIf=\"showTableTotal\" class=\"hd-table-total\">\n <td>\u5408\u8BA1</td>\n <ng-container *ngFor=\"let tableTotalOption of tableTotalOptionList\">\n <td>{{ tableTotalOption }}</td>\n </ng-container>\n </tr>\n </tbody>\n <ng-template #tableTotalTemplate>\n \u5171 {{tableData.totalElements}} \u6761\u6570\u636E\n </ng-template>\n </nz-table>\n</ng-container>",
952
- styles: ["::ng-deep .common-btn-group>a{font-size:12px;font-weight:400;color:#12a34f!important;white-space:nowrap}::ng-deep .common-btn-group .common-danger-btn:hover{color:#f05b24!important}::ng-deep .common-btn-group>a:hover{color:#20bd62!important}::ng-deep .common-btn-group>a:not(:last-child)::after{content:'';margin:0 2px}::ng-deep .common-billNumber>a{color:#3b77e3}button{box-shadow:unset;text-shadow:unset;padding:0 6px!important}::ng-deep .ant-form-item-label>label{color:#4b504e}::ng-deep .ant-input-number-input{height:28px}::ng-deep .ant-input-number{height:28px}textarea.ant-input{height:auto;min-height:28px}::ng-deep .ant-select-selection--multiple{min-height:28px}::ng-deep .ant-select-selection__rendered>ul>li{height:22px!important;margin-top:3px!important;line-height:22px!important}::ng-deep .ant-advanced-search-form .ant-form-item{margin-bottom:0!important}::ng-deep .ant-select-selection--single{height:28px!important}::ng-deep .ant-input{height:28px}::ng-deep .ant-input[disabled]:hover{border-color:#d9d9d9!important}::ng-deep .ant-select-selection__rendered{line-height:28px!important}::ng-deep .ant-calendar-range-picker-input{text-align:left!important}::ng-deep .ant-calendar-picker{width:100%!important}::ng-deep .ant-row{margin-right:0!important;margin-left:0!important}::ng-deep .ant-col-6{padding-left:12px;padding-right:12px}::ng-deep .ant-col-12{padding-left:12px;padding-right:12px}::ng-deep .ant-col-18{padding-left:12px;padding-right:12px}::ng-deep .ant-col-24{padding-left:12px;padding-right:12px}::ng-deep .ant-alert-info{background-color:#f5f8f6;border:1px solid #cfe3d4}:host ::ng-deep th{background:#f5f8f6!important;font-weight:700!important;white-space:nowrap;font-size:12px;font-family:PingFangSC-Medium,PingFang SC;color:#2a3634;padding:8px!important;box-sizing:border-box}:host ::ng-deep td{font-weight:400;font-style:normal;font-size:12px;color:#2a3634;text-align:left;white-space:nowrap;padding:8px!important;box-sizing:border-box}::ng-deep .ant-pagination-options{display:inline-flex;align-items:center}::ng-deep .ant-time-picker{width:100%}.ant-input-number-disabled,.ant-input[disabled],.ant-select-disabled{color:#4b504e}.nz-resizable-preview{position:absolute;top:0;left:0;z-index:8;border:1px dashed #d1d1d1}.nz-resizable-handle{position:absolute;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:9}.nz-resizable-handle-top{width:100%;height:10px;top:-5px;left:0}.nz-resizable-handle-right{height:100%}.nz-resizable-handle-bottom{width:100%;height:10px;bottom:-5px;left:0}.nz-resizable-handle-left{width:10px;height:100%;top:0;left:-5px}.nz-resizable-handle-topRight{width:20px;height:20px;top:-5px;right:-5px;z-index:10}.nz-resizable-handle-bottomRight{width:20px;height:20px;right:-5px;bottom:-5px;z-index:10}.nz-resizable-handle-bottomLeft{width:20px;height:20px;bottom:-5px;left:-5px;z-index:10}.nz-resizable-handle-topLeft{width:20px;height:20px;top:-5px;left:-5px;z-index:10}.nz-resizable:not(.nz-resizable-resizing) .nz-resizable-handle-bottom,.nz-resizable:not(.nz-resizable-resizing) .nz-resizable-handle-top{cursor:row-resize}.nz-resizable:not(.nz-resizable-resizing) .nz-resizable-handle-left,.nz-resizable:not(.nz-resizable-resizing) .nz-resizable-handle-right{cursor:col-resize}.nz-resizable:not(.nz-resizable-resizing) .nz-resizable-handle-bottomRight,.nz-resizable:not(.nz-resizable-resizing) .nz-resizable-handle-topLeft{cursor:nwse-resize}.nz-resizable:not(.nz-resizable-resizing) .nz-resizable-handle-bottomLeft,.nz-resizable:not(.nz-resizable-resizing) .nz-resizable-handle-topRight{cursor:nesw-resize}.hd-table-container ::ng-deep .ant-pagination-options-quick-jumper input{border-radius:2px;border:1px solid #d9d9d9}.hd-table-container ::ng-deep .ant-pagination-options .ant-select-selection{border-radius:2px}.hd-table-container ::ng-deep .ant-table-thead>tr>th{border-bottom:1px solid #ecf1ed;white-space:nowrap;text-overflow:ellipsis}.hd-table-container ::ng-deep .ant-table-tbody>tr>td{border-bottom:1px solid #ecf1ed;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.hd-table-container ::ng-deep .hd-table-total>td{border:0!important}::ng-deep .ant-dropdown-menu{border-radius:0}::ng-deep .ant-dropdown{margin-top:8px!important}.common-td-wrap{white-space:normal!important;word-break:break-all}.nz-resizable-preview{border-width:0 1px 0 0}.resize-trigger{width:10px;height:15px;position:relative;top:calc((100% - 15px)/ 2)}.resize-trigger::after{position:absolute;top:calc((100% - 15px)/ 2);left:0;background:#d5d5d5;content:'';width:1px;height:15px;z-index:1}.nz-resizable-handle-right{position:absolute;width:10px;top:0;right:-5px;z-index:inherit}.hd-table-tree-node{display:inline-flex;align-items:center;padding-right:10px}.hd-table-tree-node .hd-table-tree-node-img{display:flex;flex-direction:column;position:absolute;right:0;margin-top:-2.5px}.hd-table-tree-node .hd-table-tree-node-img i{opacity:.3}.hd-table-tree-node .hd-table-tree-node-img i:last-child{margin-top:-5px}img{width:20px;height:20px}.ant-table-th-left-sticky{z-index:2}::ng-deep .ant-table-thead>tr>th .ant-table-header-column .ant-table-column-sorters>:not(.ant-table-column-sorter){position:unset}"]
953
- }] }
954
- ];
955
- /** @nocollapse */
956
- HdTableComponent.ctorParameters = function () { return [
957
- { type: ChangeDetectorRef },
958
- { type: CommonSessionService }
959
- ]; };
960
- HdTableComponent.propDecorators = {
961
- uuid: [{ type: Input }],
962
- tableCols: [{ type: Input }],
963
- tableData: [{ type: Input }],
964
- showSelected: [{ type: Input }],
965
- showOperateColWarpButton: [{ type: Input }],
966
- selectField: [{ type: Input }],
967
- showTableTotal: [{ type: Input }],
968
- tableTotalOption: [{ type: Input }],
969
- sortEvent: [{ type: Output }],
970
- selectEvent: [{ type: Output }],
971
- tableSearchEvent: [{ type: Output }],
972
- tableLoading: [{ type: Input }],
973
- tablePageIndex: [{ type: Input }],
974
- tablePageSize: [{ type: Input }],
975
- tablePageIndexChange: [{ type: Output }],
976
- tablePageSizeChange: [{ type: Output }],
977
- tableTotal: [{ type: ContentChild, args: ["tableTotal", { static: false },] }],
978
- tableLeftButton: [{ type: ContentChild, args: ["tableLeftButton", { static: false },] }],
979
- tableRightButton: [{ type: ContentChild, args: ["tableRightButton", { static: false },] }]
980
- };
981
- tslib_1.__decorate([
982
- InputBoolean(),
983
- tslib_1.__metadata("design:type", Boolean)
984
- ], HdTableComponent.prototype, "showSelected", void 0);
985
- tslib_1.__decorate([
986
- InputBoolean(),
987
- tslib_1.__metadata("design:type", Boolean)
988
- ], HdTableComponent.prototype, "showOperateColWarpButton", void 0);
989
- tslib_1.__decorate([
990
- InputBoolean(),
991
- tslib_1.__metadata("design:type", Boolean)
992
- ], HdTableComponent.prototype, "showTableTotal", void 0);
993
- return HdTableComponent;
994
- }());
995
- export { HdTableComponent };
996
- if (false) {
997
- /** @type {?} */
998
- HdTableComponent.prototype.uuid;
999
- /** @type {?} */
1000
- HdTableComponent.prototype.tableCols;
1001
- /** @type {?} */
1002
- HdTableComponent.prototype.tableData;
1003
- /** @type {?} */
1004
- HdTableComponent.prototype.showSelected;
1005
- /** @type {?} */
1006
- HdTableComponent.prototype.showOperateColWarpButton;
1007
- /** @type {?} */
1008
- HdTableComponent.prototype.selectField;
1009
- /** @type {?} */
1010
- HdTableComponent.prototype.showTableTotal;
1011
- /** @type {?} */
1012
- HdTableComponent.prototype.tableTotalOption;
1013
- /** @type {?} */
1014
- HdTableComponent.prototype.sortEvent;
1015
- /** @type {?} */
1016
- HdTableComponent.prototype.selectEvent;
1017
- /** @type {?} */
1018
- HdTableComponent.prototype.tableSearchEvent;
1019
- /** @type {?} */
1020
- HdTableComponent.prototype.tableLoading;
1021
- /** @type {?} */
1022
- HdTableComponent.prototype.tablePageIndex;
1023
- /** @type {?} */
1024
- HdTableComponent.prototype.tablePageSize;
1025
- /** @type {?} */
1026
- HdTableComponent.prototype.tablePageIndexChange;
1027
- /** @type {?} */
1028
- HdTableComponent.prototype.tablePageSizeChange;
1029
- /** @type {?} */
1030
- HdTableComponent.prototype.tableTotal;
1031
- /** @type {?} */
1032
- HdTableComponent.prototype.tableLeftButton;
1033
- /** @type {?} */
1034
- HdTableComponent.prototype.tableRightButton;
1035
- /** @type {?} */
1036
- HdTableComponent.prototype.scroll;
1037
- /** @type {?} */
1038
- HdTableComponent.prototype.isAllDisplayDataChecked;
1039
- /** @type {?} */
1040
- HdTableComponent.prototype.isIndeterminate;
1041
- /** @type {?} */
1042
- HdTableComponent.prototype.listOfDisplayData;
1043
- /** @type {?} */
1044
- HdTableComponent.prototype.listOfAllData;
1045
- /** @type {?} */
1046
- HdTableComponent.prototype.listOfSelection;
1047
- /** @type {?} */
1048
- HdTableComponent.prototype.mapOfCheckedId;
1049
- /** @type {?} */
1050
- HdTableComponent.prototype.mapOfCheckList;
1051
- /** @type {?} */
1052
- HdTableComponent.prototype.tableTotalOptionList;
1053
- /**
1054
- * @type {?}
1055
- * @private
1056
- */
1057
- HdTableComponent.prototype.textWidthCache;
1058
- /** @type {?} */
1059
- HdTableComponent.prototype.tableCacheOption;
1060
- /** @type {?} */
1061
- HdTableComponent.prototype.userSession;
1062
- /** @type {?} */
1063
- HdTableComponent.prototype.tableColsCache;
1064
- /** @type {?} */
1065
- HdTableComponent.prototype.showTable;
1066
- /** @type {?} */
1067
- HdTableComponent.prototype.selectColListNodes;
1068
- /** @type {?} */
1069
- HdTableComponent.prototype.selectColListNodesCache;
1070
- /** @type {?} */
1071
- HdTableComponent.prototype.showListNodes;
1072
- /** @type {?} */
1073
- HdTableComponent.prototype.isDropdownVisible;
1074
- /** @type {?} */
1075
- HdTableComponent.prototype.nowListNodes;
1076
- /** @type {?} */
1077
- HdTableComponent.prototype.hideListNodes;
1078
- /** @type {?} */
1079
- HdTableComponent.prototype.cancelNowListNodes;
1080
- /** @type {?} */
1081
- HdTableComponent.prototype.cancelHideListNodes;
1082
- /** @type {?} */
1083
- HdTableComponent.prototype.showDetail;
1084
- /** @type {?} */
1085
- HdTableComponent.prototype.localforage;
1086
- /** @type {?} */
1087
- HdTableComponent.prototype.localtionTmp;
1088
- /** @type {?} */
1089
- HdTableComponent.prototype.beforeDrop;
1090
- /**
1091
- * @type {?}
1092
- * @private
1093
- */
1094
- HdTableComponent.prototype.cdr;
1095
- /**
1096
- * @type {?}
1097
- * @private
1098
- */
1099
- HdTableComponent.prototype.commonSessionService;
1100
- }
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ import * as tslib_1 from "tslib";
6
+ import { ChangeDetectorRef, Component, ContentChild, EventEmitter, Input, Output, TemplateRef } from '@angular/core';
7
+ import * as localforage from 'localforage';
8
+ import { InputBoolean } from 'ng-zorro-antd/core';
9
+ import { of } from 'rxjs';
10
+ import { delay } from 'rxjs/operators';
11
+ import { ColWidth } from '../model/colWidth';
12
+ import { Page } from '../model/common-type';
13
+ import { CommonSessionService } from '../service/common-session.service';
14
+ import { TableCacheOption, TreeGrid } from './hd-table.service';
15
+ var HdTableComponent = /** @class */ (function () {
16
+ function HdTableComponent(cdr, commonSessionService) {
17
+ var _this = this;
18
+ this.cdr = cdr;
19
+ this.commonSessionService = commonSessionService;
20
+ this.tableCols = [];
21
+ this.showSelected = false;
22
+ this.showOperateColWarpButton = false;
23
+ this.selectField = 'billNumber';
24
+ // 合计区域
25
+ this.showTableTotal = false;
26
+ this.sortEvent = new EventEmitter();
27
+ this.selectEvent = new EventEmitter();
28
+ this.tableSearchEvent = new EventEmitter();
29
+ this.tableLoading = false;
30
+ // 表格分页参数
31
+ this.tablePageIndex = 1;
32
+ this.tablePageIndexChange = new EventEmitter();
33
+ this.tablePageSizeChange = new EventEmitter();
34
+ this.scroll = null;
35
+ // 表格勾选参数
36
+ this.isAllDisplayDataChecked = false;
37
+ this.isIndeterminate = false;
38
+ this.listOfDisplayData = [];
39
+ this.listOfAllData = [];
40
+ this.mapOfCheckedId = {};
41
+ this.mapOfCheckList = {};
42
+ // 合计参数
43
+ this.tableTotalOptionList = [];
44
+ this.textWidthCache = {};
45
+ // 缓存信息
46
+ this.tableCacheOption = new TableCacheOption();
47
+ this.tableColsCache = [];
48
+ this.showTable = false;
49
+ this.selectColListNodes = [];
50
+ this.selectColListNodesCache = [];
51
+ this.showListNodes = false;
52
+ this.isDropdownVisible = false;
53
+ // 设置列的可见操作数组
54
+ this.nowListNodes = [];
55
+ // 设置列的不可见操作数组
56
+ this.hideListNodes = [];
57
+ // 点击时需要有临时数组存放两个tree,用于取消时候恢复调整前的状态
58
+ this.cancelNowListNodes = [];
59
+ this.cancelHideListNodes = [];
60
+ this.showDetail = false;
61
+ this.localforage = null;
62
+ this.localtionTmp = '';
63
+ // 拖拽操作
64
+ this.beforeDrop = (/**
65
+ * @param {?} arg
66
+ * @return {?}
67
+ */
68
+ function (arg) {
69
+ if (arg.node.origin.disabled || !arg.dragNode.origin.checked || arg.pos === 0) {
70
+ return of(false);
71
+ }
72
+ else {
73
+ /** @type {?} */
74
+ var node = new TreeGrid();
75
+ node.checked = arg.dragNode.origin.checked;
76
+ node.disabled = arg.dragNode.origin.disabled;
77
+ node.expanded = arg.dragNode.origin.expanded;
78
+ node.isLeaf = arg.dragNode.origin.isLeaf;
79
+ node.key = arg.dragNode.origin.key;
80
+ node.selectable = arg.dragNode.origin.selectable;
81
+ node.title = arg.dragNode.origin.title;
82
+ // 拖拽元素下标
83
+ /** @type {?} */
84
+ var dragNodeIndex = _this.nowListNodes.findIndex((/**
85
+ * @param {?} item
86
+ * @return {?}
87
+ */
88
+ function (item) { return item.title == arg.dragNode.origin.title; }));
89
+ // 目标位置的下标
90
+ /** @type {?} */
91
+ var nodeIndex = _this.nowListNodes.findIndex((/**
92
+ * @param {?} item
93
+ * @return {?}
94
+ */
95
+ function (item) { return item.title == arg.node.origin.title; })) + (arg.pos === -1 ? 0 : arg.pos);
96
+ _this.nowListNodes.splice(nodeIndex, 0, node);
97
+ _this.nowListNodes.splice(nodeIndex >= dragNodeIndex ? dragNodeIndex : dragNodeIndex + 1, 1);
98
+ return of(true).pipe(delay(100));
99
+ }
100
+ });
101
+ this.localforage = localforage.createInstance({
102
+ driver: localforage.INDEXEDDB,
103
+ name: 'hd-fscm',
104
+ // 设置存储库的名称
105
+ version: 1.0,
106
+ // 设置存储库的版本
107
+ storeName: 'hd-fscm-store',
108
+ });
109
+ }
110
+ /**
111
+ * @return {?}
112
+ */
113
+ HdTableComponent.prototype.ngOnInit = /**
114
+ * @return {?}
115
+ */
116
+ function () {
117
+ var _this = this;
118
+ this.localtionTmp = location.pathname;
119
+ if (this.localtionTmp) {
120
+ this.localtionTmp = this.localtionTmp.replace(/\//g, "_");
121
+ }
122
+ this.userSession = this.commonSessionService.getSession('__jy_authorization_session__');
123
+ // 用于开发环境调试
124
+ if (!this.userSession) {
125
+ this.userSession = {
126
+ userCode: 'dev'
127
+ };
128
+ }
129
+ this.deleteHideItem();
130
+ if (!this.tableCols || this.tableCols.length === 0) {
131
+ return;
132
+ }
133
+ this.localforage.ready().then((/**
134
+ * @return {?}
135
+ */
136
+ function () {
137
+ _this.getInitLocalforage();
138
+ })).catch((/**
139
+ * @param {?} e
140
+ * @return {?}
141
+ */
142
+ function (e) {
143
+ console.log('localforage加载异常step1', e);
144
+ throw 'localforage加载异常';
145
+ }));
146
+ };
147
+ /**
148
+ * @param {?} changes
149
+ * @return {?}
150
+ */
151
+ HdTableComponent.prototype.ngOnChanges = /**
152
+ * @param {?} changes
153
+ * @return {?}
154
+ */
155
+ function (changes) {
156
+ var _this = this;
157
+ // 数据改变时,重置勾选状态
158
+ if (changes && changes['tableData'] && changes['tableData']['currentValue'] && changes['tableData']['previousValue']) {
159
+ if (changes['tableData']['currentValue']['pageSize'] !== changes['tableData']['previousValue']['pageSize']
160
+ || changes['tableData']['currentValue']['pageNumber'] !== changes['tableData']['previousValue']['pageNumber']) {
161
+ return;
162
+ }
163
+ this.resetStatus();
164
+ }
165
+ if (changes['tableCols'] && JSON.stringify(changes['tableCols'].currentValue) !== JSON.stringify(changes['tableCols'].previousValue)) {
166
+ this.deleteHideItem();
167
+ if (!this.tableCols || this.tableCols.length === 0) {
168
+ return;
169
+ }
170
+ this.localforage.ready().then((/**
171
+ * @return {?}
172
+ */
173
+ function () {
174
+ _this.getInitLocalforage();
175
+ })).catch((/**
176
+ * @param {?} e
177
+ * @return {?}
178
+ */
179
+ function (e) {
180
+ console.log('localforage加载异常step2', e);
181
+ throw 'localforage加载异常';
182
+ }));
183
+ }
184
+ };
185
+ /**
186
+ * @return {?}
187
+ */
188
+ HdTableComponent.prototype.deleteHideItem = /**
189
+ * @return {?}
190
+ */
191
+ function () {
192
+ // 首先把isShow为false数据剔除掉
193
+ this.tableCols = this.tableCols.filter((/**
194
+ * @param {?} item
195
+ * @return {?}
196
+ */
197
+ function (item) {
198
+ // 如果对象没有 isShow 属性,则默认为 true,保留该对象
199
+ if (!item.hasOwnProperty('isShow')) {
200
+ return true;
201
+ }
202
+ // 如果对象有 isShow 属性,则检查其值是否为 true
203
+ return item.isShow === true;
204
+ }));
205
+ };
206
+ /**
207
+ * @param {?} sort
208
+ * @return {?}
209
+ */
210
+ HdTableComponent.prototype.sort = /**
211
+ * @param {?} sort
212
+ * @return {?}
213
+ */
214
+ function (sort) {
215
+ this.sortEvent.emit(sort);
216
+ };
217
+ /**
218
+ * @return {?}
219
+ */
220
+ HdTableComponent.prototype.getInitLocalforage = /**
221
+ * @return {?}
222
+ */
223
+ function () {
224
+ var _this = this;
225
+ // 首先获取当前hd-table存储的数据 如果没有,则初始化下当前的数据
226
+ this.localforage.getItem('hd-table_' + this.userSession.userCode + '_' + this.localtionTmp + '_' + this.uuid).then((/**
227
+ * @param {?} value
228
+ * @return {?}
229
+ */
230
+ function (value) {
231
+ _this.tableCacheOption = value;
232
+ if (_this.tableCacheOption.pageSize && _this.tableCacheOption.pageSize > 10) {
233
+ _this.tablePageSize = _this.tableCacheOption.pageSize;
234
+ }
235
+ else {
236
+ _this.tablePageSize = _this.tableCacheOption.pageSize || 10;
237
+ }
238
+ if (!_this.tableCacheOption.colWidths) {
239
+ _this.tableCacheOption.colWidths = new Map();
240
+ }
241
+ _this.tablePageSizeChange.emit(_this.tablePageSize);
242
+ _this.initTable();
243
+ })).catch((/**
244
+ * @param {?} err
245
+ * @return {?}
246
+ */
247
+ function (err) {
248
+ _this.tableCacheOption = new TableCacheOption();
249
+ _this.tablePageSize = 10;
250
+ _this.tableCacheOption.pageSize = 10;
251
+ _this.tableCacheOption.colWidths = new Map();
252
+ _this.tablePageSizeChange.emit(_this.tablePageSize);
253
+ _this.initTable();
254
+ }));
255
+ };
256
+ /**
257
+ * @return {?}
258
+ */
259
+ HdTableComponent.prototype.initTable = /**
260
+ * @return {?}
261
+ */
262
+ function () {
263
+ this.showTable = false;
264
+ if (!this.uuid) {
265
+ throw 'hd-table缺失uuid参数,请使用编辑器插件生成并给hd-table赋予uuid属性';
266
+ }
267
+ if (this.judgeRepeatCols()) {
268
+ this.dealCols();
269
+ this.setCols();
270
+ this.dealScroll();
271
+ this.dealOperateBtn();
272
+ this.showTable = true;
273
+ }
274
+ };
275
+ // 设置列点击取消
276
+ // 设置列点击取消
277
+ /**
278
+ * @return {?}
279
+ */
280
+ HdTableComponent.prototype.cancelDropdown =
281
+ // 设置列点击取消
282
+ /**
283
+ * @return {?}
284
+ */
285
+ function () {
286
+ this.isDropdownVisible = false;
287
+ this.hideListNodes = JSON.parse(JSON.stringify(this.cancelHideListNodes));
288
+ this.nowListNodes = JSON.parse(JSON.stringify(this.cancelNowListNodes));
289
+ };
290
+ // 点击触发设置列
291
+ // 点击触发设置列
292
+ /**
293
+ * @return {?}
294
+ */
295
+ HdTableComponent.prototype.confirmDropdown =
296
+ // 点击触发设置列
297
+ /**
298
+ * @return {?}
299
+ */
300
+ function () {
301
+ // 临时存放下,取消的时候恢复原来的状态 深拷贝下对象数组
302
+ this.cancelHideListNodes = JSON.parse(JSON.stringify(this.hideListNodes));
303
+ this.cancelNowListNodes = JSON.parse(JSON.stringify(this.nowListNodes));
304
+ this.isDropdownVisible = true;
305
+ };
306
+ /**
307
+ * @return {?}
308
+ */
309
+ HdTableComponent.prototype.submitGrids = /**
310
+ * @return {?}
311
+ */
312
+ function () {
313
+ var _this = this;
314
+ this.tableCacheOption.cols = [];
315
+ this.nowListNodes.forEach((/**
316
+ * @param {?} item
317
+ * @return {?}
318
+ */
319
+ function (item) {
320
+ _this.tableCacheOption.cols.push(item.title);
321
+ }));
322
+ this.saveTableCacheOption();
323
+ this.initTable();
324
+ this.isDropdownVisible = false;
325
+ };
326
+ // 从缓存设置列
327
+ // 从缓存设置列
328
+ /**
329
+ * @return {?}
330
+ */
331
+ HdTableComponent.prototype.setCols =
332
+ // 从缓存设置列
333
+ /**
334
+ * @return {?}
335
+ */
336
+ function () {
337
+ var _this = this;
338
+ this.showListNodes = false;
339
+ this.nowListNodes = [];
340
+ this.hideListNodes = [];
341
+ if (this.tableCacheOption.cols) {
342
+ var _a = this.tableColsCache.reduce((/**
343
+ * @param {?} acc
344
+ * @param {?} item
345
+ * @return {?}
346
+ */
347
+ function (acc, item) {
348
+ if (_this.tableCacheOption.cols.includes(item.title)) {
349
+ acc.incols.push(item);
350
+ }
351
+ else {
352
+ acc.notIncols.push(item);
353
+ }
354
+ return acc;
355
+ }), { notIncols: [], incols: [] }), notIncols = _a.notIncols, incols = _a.incols;
356
+ incols.sort((/**
357
+ * @param {?} a
358
+ * @param {?} b
359
+ * @return {?}
360
+ */
361
+ function (a, b) {
362
+ return _this.tableCacheOption.cols.indexOf(a.title) - _this.tableCacheOption.cols.indexOf(b.title);
363
+ }));
364
+ this.tableCols = incols.concat(notIncols);
365
+ }
366
+ this.tableCols.forEach((/**
367
+ * @param {?} element
368
+ * @param {?} index
369
+ * @return {?}
370
+ */
371
+ function (element, index) {
372
+ if (_this.tableCacheOption.cols) {
373
+ element.isShow = _this.tableCacheOption.cols.includes(element.title) ? true : false;
374
+ if (element.isShow) {
375
+ _this.nowListNodes.push({
376
+ title: element.title,
377
+ key: element.title,
378
+ disabled: element.fixed ? true : false,
379
+ // selectable: false,
380
+ checked: _this.tableCacheOption.cols.includes(element.title) ? true : false
381
+ });
382
+ }
383
+ else {
384
+ _this.hideListNodes.push({
385
+ title: element.title,
386
+ key: element.title,
387
+ disabled: element.fixed ? true : false,
388
+ // selectable: false,
389
+ checked: _this.tableCacheOption.cols.includes(element.title) ? true : false
390
+ });
391
+ }
392
+ }
393
+ else {
394
+ element.isShow = true;
395
+ _this.nowListNodes.push({
396
+ title: element.title,
397
+ key: element.title,
398
+ checked: true,
399
+ // selectable: false,
400
+ disabled: element.fixed ? true : false
401
+ });
402
+ }
403
+ }));
404
+ // 调整列宽为缓存宽度
405
+ if (this.tableCacheOption && this.tableCacheOption.colWidths && this.tableCacheOption.colWidths.size !== 0) {
406
+ this.tableCols.forEach((/**
407
+ * @param {?} col
408
+ * @return {?}
409
+ */
410
+ function (col) {
411
+ if (_this.tableCacheOption.colWidths.has(col.title)) {
412
+ col.width = _this.tableCacheOption.colWidths.get(col.title);
413
+ }
414
+ }));
415
+ }
416
+ this.dealCols();
417
+ setTimeout((/**
418
+ * @return {?}
419
+ */
420
+ function () {
421
+ _this.showListNodes = true;
422
+ }), 0);
423
+ };
424
+ /**
425
+ * @param {?} arr
426
+ * @param {?} elementToMoveTitle
427
+ * @param {?} targetElementTitle
428
+ * @param {?} pos
429
+ * @return {?}
430
+ */
431
+ HdTableComponent.prototype.moveElementNearby = /**
432
+ * @param {?} arr
433
+ * @param {?} elementToMoveTitle
434
+ * @param {?} targetElementTitle
435
+ * @param {?} pos
436
+ * @return {?}
437
+ */
438
+ function (arr, elementToMoveTitle, targetElementTitle, pos) {
439
+ /** @type {?} */
440
+ var tmpArray = JSON.parse(JSON.stringify(arr));
441
+ /** @type {?} */
442
+ var targetIndex = tmpArray.findIndex((/**
443
+ * @param {?} item
444
+ * @return {?}
445
+ */
446
+ function (item) { return item.title === targetElementTitle; }));
447
+ /** @type {?} */
448
+ var elementIndex = tmpArray.findIndex((/**
449
+ * @param {?} item
450
+ * @return {?}
451
+ */
452
+ function (item) { return item.title === elementToMoveTitle; }));
453
+ /** @type {?} */
454
+ var newIndex = pos < 0 ? (targetIndex + pos) : targetIndex;
455
+ // 移除目标元素,并插入到新的位置
456
+ /** @type {?} */
457
+ var removedElement = tmpArray.splice(elementIndex, 1);
458
+ tmpArray.splice(newIndex + 1, 0, removedElement[0]);
459
+ return tmpArray;
460
+ };
461
+ // 勾选操作
462
+ // 勾选操作
463
+ /**
464
+ * @param {?} event
465
+ * @return {?}
466
+ */
467
+ HdTableComponent.prototype.checkAction =
468
+ // 勾选操作
469
+ /**
470
+ * @param {?} event
471
+ * @return {?}
472
+ */
473
+ function (event) {
474
+ // 勾选只有在hideListNodes,取消勾选只有在nowListNodes
475
+ if (event.node.origin.checked) {
476
+ /** @type {?} */
477
+ var node = new TreeGrid();
478
+ node = this.hideListNodes.find((/**
479
+ * @param {?} item
480
+ * @return {?}
481
+ */
482
+ function (item) {
483
+ return item.title === event.node.origin.title;
484
+ }));
485
+ node.checked = true;
486
+ // 找到第一个fixed属性为right的title,找到插入元素的位置
487
+ /** @type {?} */
488
+ var title_1 = null;
489
+ for (var i = this.tableColsCache.length - 1; i >= 0; i--) {
490
+ if (this.tableColsCache[i].fixed === 'right') {
491
+ title_1 = this.tableColsCache[i].title;
492
+ break;
493
+ }
494
+ }
495
+ /** @type {?} */
496
+ var temporaryNodeList = this.nowListNodes.slice(0);
497
+ if (!title_1) {
498
+ temporaryNodeList.push(node);
499
+ }
500
+ else {
501
+ /** @type {?} */
502
+ var index = this.nowListNodes.findIndex((/**
503
+ * @param {?} node
504
+ * @return {?}
505
+ */
506
+ function (node) { return node.title === title_1; }));
507
+ temporaryNodeList.splice(index, 0, node);
508
+ }
509
+ this.nowListNodes = temporaryNodeList;
510
+ this.hideListNodes = this.hideListNodes.filter((/**
511
+ * @param {?} item
512
+ * @return {?}
513
+ */
514
+ function (item) {
515
+ return item.title !== event.node.origin.title;
516
+ }));
517
+ }
518
+ else {
519
+ // if (this.hideListNodes.length === 0 && this.tableCacheOption && this.tableCacheOption.cols) {
520
+ // this.hideListNodes = this.getHideListNodes();
521
+ // }
522
+ /** @type {?} */
523
+ var temporaryNodeList_1 = this.hideListNodes.slice(0);
524
+ this.nowListNodes.forEach((/**
525
+ * @param {?} item
526
+ * @return {?}
527
+ */
528
+ function (item) {
529
+ if (item.title === event.node.origin.title) {
530
+ /** @type {?} */
531
+ var innerItem = JSON.parse(JSON.stringify(item));
532
+ innerItem.checked = false;
533
+ temporaryNodeList_1.push(innerItem);
534
+ }
535
+ }));
536
+ this.hideListNodes = temporaryNodeList_1;
537
+ // 为了防止未选择的数组顺序因为push方法而改变,通过初始数据获取显示的字段列表
538
+ this.nowListNodes = this.nowListNodes.filter((/**
539
+ * @param {?} item
540
+ * @return {?}
541
+ */
542
+ function (item) {
543
+ return item.title !== event.node.origin.title;
544
+ }));
545
+ }
546
+ };
547
+ // 防止未选择的数组顺序因为push方法而改变,从初始数据获取隐藏未显示的字段列表
548
+ // 防止未选择的数组顺序因为push方法而改变,从初始数据获取隐藏未显示的字段列表
549
+ /**
550
+ * @return {?}
551
+ */
552
+ HdTableComponent.prototype.getHideListNodes =
553
+ // 防止未选择的数组顺序因为push方法而改变,从初始数据获取隐藏未显示的字段列表
554
+ /**
555
+ * @return {?}
556
+ */
557
+ function () {
558
+ var _this = this;
559
+ /** @type {?} */
560
+ var temporaryNodeList = [];
561
+ // 从tableColsCache里面找没有在storage里面出现的字段,组成hideList
562
+ this.tableColsCache.forEach((/**
563
+ * @param {?} item
564
+ * @return {?}
565
+ */
566
+ function (item) {
567
+ if (!_this.tableCacheOption.cols.includes(item.title)) {
568
+ /** @type {?} */
569
+ var nodeItem = new TreeGrid();
570
+ nodeItem.title = item.title;
571
+ nodeItem.key = item.title;
572
+ nodeItem.disabled = item.fixed ? true : false;
573
+ nodeItem.checked = false;
574
+ temporaryNodeList.push(nodeItem);
575
+ }
576
+ }));
577
+ return temporaryNodeList;
578
+ };
579
+ /**
580
+ * @return {?}
581
+ */
582
+ HdTableComponent.prototype.dealCols = /**
583
+ * @return {?}
584
+ */
585
+ function () {
586
+ if (!this.tableCols[0].minWidth) {
587
+ this.tableCols.forEach((/**
588
+ * @param {?} item
589
+ * @return {?}
590
+ */
591
+ function (item) {
592
+ /** @type {?} */
593
+ var span = document.createElement('span');
594
+ span.style.visibility = 'hidden';
595
+ span.style.position = 'absolute';
596
+ span.style.whiteSpace = 'nowrap';
597
+ span.style.fontSize = '12px';
598
+ span.style.display = 'inline-block'; // 将样式修改为 inline-block
599
+ span.innerText = item.title;
600
+ document.body.appendChild(span);
601
+ item.minWidth = span.offsetWidth + 16;
602
+ span.style.display = 'none';
603
+ document.body.removeChild(span);
604
+ }));
605
+ }
606
+ // 处理左右吸附的数据在数组中的位置
607
+ /** @type {?} */
608
+ var leftFixedCols = this.tableCols.filter((/**
609
+ * @param {?} col
610
+ * @return {?}
611
+ */
612
+ function (col) { return col.fixed === 'left'; }));
613
+ /** @type {?} */
614
+ var rightFixedCols = this.tableCols.filter((/**
615
+ * @param {?} col
616
+ * @return {?}
617
+ */
618
+ function (col) { return col.fixed === 'right'; }));
619
+ /** @type {?} */
620
+ var normalCols = this.tableCols.filter((/**
621
+ * @param {?} col
622
+ * @return {?}
623
+ */
624
+ function (col) { return !col.fixed; }));
625
+ /** @type {?} */
626
+ var resultCols = leftFixedCols.concat(normalCols).concat(rightFixedCols);
627
+ this.tableCols = resultCols;
628
+ if (!this.tableColsCache || this.tableColsCache.length === 0) {
629
+ // 缓存一下表格的数据
630
+ this.tableColsCache = tslib_1.__spread(this.tableCols);
631
+ }
632
+ };
633
+ /**
634
+ * @return {?}
635
+ */
636
+ HdTableComponent.prototype.saveTableCacheOption = /**
637
+ * @return {?}
638
+ */
639
+ function () {
640
+ this.localforage.setItem('hd-table_' + this.userSession.userCode + '_' + this.localtionTmp + '_' + this.uuid, this.tableCacheOption);
641
+ };
642
+ /**
643
+ * @return {?}
644
+ */
645
+ HdTableComponent.prototype.judgeRepeatCols = /**
646
+ * @return {?}
647
+ */
648
+ function () {
649
+ for (var i = 0; i < this.tableCols.length; i++) {
650
+ for (var j = i + 1; j < this.tableCols.length; j++) {
651
+ if (this.tableCols[i].title === this.tableCols[j].title) {
652
+ throw "hd-table\u7EC4\u4EF6\u4E2D\u5217\u540D " + this.tableCols[i].title + " \u91CD\u590D";
653
+ }
654
+ }
655
+ }
656
+ return true;
657
+ };
658
+ /**
659
+ * @param {?} __0
660
+ * @param {?} col
661
+ * @return {?}
662
+ */
663
+ HdTableComponent.prototype.onResize = /**
664
+ * @param {?} __0
665
+ * @param {?} col
666
+ * @return {?}
667
+ */
668
+ function (_a, col) {
669
+ var width = _a.width;
670
+ /** @type {?} */
671
+ var tempWidth = 0;
672
+ if (width > col.minWidth) {
673
+ tempWidth = width;
674
+ }
675
+ else {
676
+ tempWidth = col.minWidth;
677
+ }
678
+ this.tableCacheOption.colWidths.set(col.title, tempWidth);
679
+ this.saveTableCacheOption();
680
+ this.tableCols = this.tableCols.map((/**
681
+ * @param {?} e
682
+ * @return {?}
683
+ */
684
+ function (e) { return (e.title === col.title ? tslib_1.__assign({}, e, { width: tempWidth }) : e); }));
685
+ this.dealScroll();
686
+ };
687
+ /**
688
+ * @return {?}
689
+ */
690
+ HdTableComponent.prototype.dealOperateBtn = /**
691
+ * @return {?}
692
+ */
693
+ function () {
694
+ /** @type {?} */
695
+ var operateCol = this.tableCols.find((/**
696
+ * @param {?} col
697
+ * @return {?}
698
+ */
699
+ function (col) { return col.title === '操作'; })) || null;
700
+ if (operateCol) {
701
+ /** @type {?} */
702
+ var textStr_1 = '';
703
+ operateCol.btnList.forEach((/**
704
+ * @param {?} btn
705
+ * @return {?}
706
+ */
707
+ function (btn) {
708
+ if (!btn.isRepeat) {
709
+ textStr_1 += btn.name;
710
+ }
711
+ }));
712
+ /** @type {?} */
713
+ var span = document.createElement('a');
714
+ span.style.visibility = 'hidden';
715
+ span.style.position = 'absolute';
716
+ span.style.whiteSpace = 'nowrap';
717
+ span.style.fontSize = '12px';
718
+ span.style.display = 'inline-block'; // 将样式修改为 inline-block
719
+ span.innerText = textStr_1;
720
+ document.body.appendChild(span);
721
+ operateCol.width = span.offsetWidth + (operateCol.btnList.filter((/**
722
+ * @param {?} item
723
+ * @return {?}
724
+ */
725
+ function (item) { return !item.isRepeat; })).length - 1) * 4 + 16;
726
+ span.style.display = 'none';
727
+ document.body.removeChild(span);
728
+ }
729
+ };
730
+ /**
731
+ * @param {?} fn
732
+ * @param {?} event
733
+ * @return {?}
734
+ */
735
+ HdTableComponent.prototype.triggerEvent = /**
736
+ * @param {?} fn
737
+ * @param {?} event
738
+ * @return {?}
739
+ */
740
+ function (fn, event) {
741
+ if (fn) {
742
+ fn(event);
743
+ }
744
+ };
745
+ /**
746
+ * @return {?}
747
+ */
748
+ HdTableComponent.prototype.dealScroll = /**
749
+ * @return {?}
750
+ */
751
+ function () {
752
+ /** @type {?} */
753
+ var colWidth = 0;
754
+ if (this.showSelected) {
755
+ colWidth += 40;
756
+ }
757
+ this.tableCols.forEach((/**
758
+ * @param {?} item
759
+ * @return {?}
760
+ */
761
+ function (item) {
762
+ if (!item.width) {
763
+ item.width = ColWidth.fixColWidth;
764
+ }
765
+ if (item.isShow) {
766
+ item.fixedWidth = colWidth;
767
+ colWidth += item.width;
768
+ }
769
+ }));
770
+ if (this.tableTotal) {
771
+ this.scroll = {
772
+ x: '1px',
773
+ y: 'calc(100vh - 180px)'
774
+ };
775
+ }
776
+ else {
777
+ this.scroll = {
778
+ x: '1px',
779
+ y: 'calc(100vh - 140px)'
780
+ };
781
+ }
782
+ };
783
+ /**
784
+ * @param {?} text
785
+ * @param {?} maxWidth
786
+ * @return {?}
787
+ */
788
+ HdTableComponent.prototype.isTextOverflow = /**
789
+ * @param {?} text
790
+ * @param {?} maxWidth
791
+ * @return {?}
792
+ */
793
+ function (text, maxWidth) {
794
+ /** @type {?} */
795
+ var cachedWidth = this.textWidthCache[text];
796
+ if (cachedWidth !== undefined) {
797
+ return cachedWidth + 15 >= maxWidth;
798
+ }
799
+ /** @type {?} */
800
+ var span = document.createElement('span');
801
+ span.style.visibility = 'hidden';
802
+ span.style.position = 'absolute';
803
+ span.style.whiteSpace = 'nowrap';
804
+ span.style.fontSize = '12px';
805
+ span.style.display = 'inline-block'; // 将样式修改为 inline-block
806
+ span.innerText = text;
807
+ document.body.appendChild(span);
808
+ /** @type {?} */
809
+ var isOverflow = span.offsetWidth + 15 >= maxWidth;
810
+ this.textWidthCache[text] = span.offsetWidth;
811
+ span.style.display = 'none';
812
+ document.body.removeChild(span);
813
+ return isOverflow;
814
+ };
815
+ // 表格勾选逻辑
816
+ // 表格勾选逻辑
817
+ /**
818
+ * @param {?} $event
819
+ * @return {?}
820
+ */
821
+ HdTableComponent.prototype.currentPageDataChange =
822
+ // 表格勾选逻辑
823
+ /**
824
+ * @param {?} $event
825
+ * @return {?}
826
+ */
827
+ function ($event) {
828
+ this.listOfDisplayData = $event;
829
+ this.refreshStatus();
830
+ this.resetStatus();
831
+ };
832
+ /**
833
+ * @param {?} reset
834
+ * @return {?}
835
+ */
836
+ HdTableComponent.prototype.search = /**
837
+ * @param {?} reset
838
+ * @return {?}
839
+ */
840
+ function (reset) {
841
+ this.tableCacheOption.pageSize = this.tablePageSize;
842
+ this.saveTableCacheOption();
843
+ if (reset) {
844
+ this.tablePageSizeChange.emit(this.tablePageSize);
845
+ }
846
+ else {
847
+ this.tablePageIndexChange.emit(this.tablePageIndex);
848
+ // 触发父组件查询事件
849
+ this.tableSearchEvent.emit(reset);
850
+ }
851
+ };
852
+ /**
853
+ * @return {?}
854
+ */
855
+ HdTableComponent.prototype.resetStatus = /**
856
+ * @return {?}
857
+ */
858
+ function () {
859
+ this.isAllDisplayDataChecked = false;
860
+ this.isIndeterminate = false;
861
+ this.mapOfCheckedId = {};
862
+ this.mapOfCheckList = {};
863
+ this.selectEvent.emit([]);
864
+ };
865
+ /**
866
+ * @param {?=} event
867
+ * @param {?=} data
868
+ * @return {?}
869
+ */
870
+ HdTableComponent.prototype.refreshStatus = /**
871
+ * @param {?=} event
872
+ * @param {?=} data
873
+ * @return {?}
874
+ */
875
+ function (event, data) {
876
+ var _this = this;
877
+ if (event === void 0) { event = false; }
878
+ if (data === void 0) { data = null; }
879
+ if (event && data) {
880
+ !this.mapOfCheckList[data[this.selectField]] && (this.mapOfCheckList[data[this.selectField]] = data);
881
+ }
882
+ else if (!event && data) {
883
+ this.mapOfCheckList[data[this.selectField]] && delete this.mapOfCheckList[data[this.selectField]];
884
+ }
885
+ this.isAllDisplayDataChecked = this.listOfDisplayData.every((/**
886
+ * @param {?} item
887
+ * @return {?}
888
+ */
889
+ function (item) { return _this.mapOfCheckedId[item[_this.selectField]]; }));
890
+ this.isIndeterminate =
891
+ this.listOfDisplayData.some((/**
892
+ * @param {?} item
893
+ * @return {?}
894
+ */
895
+ function (item) { return _this.mapOfCheckedId[item[_this.selectField]]; })) && !this.isAllDisplayDataChecked;
896
+ // 触发select事件
897
+ if (this.selectEvent) {
898
+ /** @type {?} */
899
+ var selectedList = Object.values(this.mapOfCheckList);
900
+ this.selectEvent.emit(selectedList);
901
+ }
902
+ // 如果数据为空,则清空勾选标识
903
+ if (this.tableData.content.length === 0) {
904
+ this.isAllDisplayDataChecked = false;
905
+ }
906
+ };
907
+ /**
908
+ * @param {?} value
909
+ * @return {?}
910
+ */
911
+ HdTableComponent.prototype.checkAll = /**
912
+ * @param {?} value
913
+ * @return {?}
914
+ */
915
+ function (value) {
916
+ var _this = this;
917
+ this.listOfDisplayData.forEach((/**
918
+ * @param {?} item
919
+ * @return {?}
920
+ */
921
+ function (item) {
922
+ if (value) {
923
+ !_this.mapOfCheckList[item[_this.selectField]] && (_this.mapOfCheckList[item[_this.selectField]] = item);
924
+ }
925
+ else {
926
+ _this.mapOfCheckList[item[_this.selectField]] && delete _this.mapOfCheckList[item[_this.selectField]];
927
+ }
928
+ _this.mapOfCheckedId[item[_this.selectField]] = value;
929
+ }));
930
+ this.refreshStatus();
931
+ };
932
+ /**
933
+ * @param {?} str
934
+ * @return {?}
935
+ */
936
+ HdTableComponent.prototype.judgeColEmpty = /**
937
+ * @param {?} str
938
+ * @return {?}
939
+ */
940
+ function (str) {
941
+ if (str || str === 0) {
942
+ return str;
943
+ }
944
+ else {
945
+ return '<空>';
946
+ }
947
+ };
948
+ HdTableComponent.decorators = [
949
+ { type: Component, args: [{
950
+ selector: 'hd-table',
951
+ template: "<ng-container>\n <hd-button-group>\n <ng-template #buttonGroupLeft>\n <ng-container *ngTemplateOutlet=\"tableLeftButton\"></ng-container>\n <hd-button *ngIf=\"showOperateColWarpButton\" type=\"default\" (click)=\"showDetail = !showDetail\">{{showDetail ?\n '\u7F29\u7565\u663E\u793A': '\u5C55\u5F00\u663E\u793A'}}</hd-button>\n </ng-template>\n <ng-template #buttonGroupRight>\n <ng-container *ngTemplateOutlet=\"tableRightButton\"></ng-container>\n <hd-button type=\"primary\" nz-dropdown nzTrigger=\"click\" [nzDropdownMenu]=\"menu\" (clickAction)=\"confirmDropdown()\"\n [nzVisible]=\"isDropdownVisible\">\u8BBE\u7F6E\u5217</hd-button>\n <nz-dropdown-menu #menu=\"nzDropdownMenu\">\n <div style=\"max-height: 400px;overflow-y: scroll;\">\n <div *ngIf=\"showListNodes && nowListNodes.length > 0\" nz-menu style=\"padding: 5px 10px;\">\n <nz-tree *ngIf=\"showListNodes\" [nzData]=\"nowListNodes\" nzCheckable nzDraggable nzBlockNode\n nzShowExpand=\"false\" (nzCheckBoxChange)=\"checkAction($event)\" [nzBeforeDrop]=\"beforeDrop\"\n [nzTreeTemplate]=\"nzTreeTemplate\">\n </nz-tree>\n <ng-template #nzTreeTemplate let-node>\n <span\n class=\"ng-tns-c31-110 draggable ng-star-inserted ant-tree-node-content-wrapper ant-tree-node-content-wrapper-close\"\n [title]=\"node.key\" draggable=\"true\" aria-grabbed=\"true\">\n <span class=\"ant-tree-title\">\n <div class=\"hd-table-tree-node\">\n <span>{{node.key}}</span>\n <div *ngIf=\"!node.origin.disabled\" class=\"hd-table-tree-node-img\">\n <i nz-icon nzType=\"caret-up\" nzTheme=\"outline\"></i>\n <i nz-icon nzType=\"caret-down\" nzTheme=\"outline\"></i>\n </div>\n </div>\n </span>\n </span>\n </ng-template>\n </div>\n <div *ngIf=\"showListNodes && hideListNodes.length > 0\" nz-menu style=\"padding: 5px 10px;\">\n <nz-tree *ngIf=\"showListNodes\" [nzData]=\"hideListNodes\" nzCheckable nzShowExpand=\"false\"\n (nzCheckBoxChange)=\"checkAction($event)\">\n </nz-tree>\n </div>\n </div>\n <div style=\"text-align: right;background: #fff;padding: 4px;\">\n <hd-button style=\"margin-right: 4px;\" type=\"default\" size=\"small\" (clickAction)=\"cancelDropdown()\">\u53D6\u6D88\n </hd-button>\n <hd-button type=\"primary\" size=\"small\" (clickAction)=\"submitGrids()\">\u5B8C\u6210</hd-button>\n </div>\n </nz-dropdown-menu>\n </ng-template>\n </hd-button-group>\n <hd-space type=\"row\" size=\"12\"></hd-space>\n <ng-container *ngTemplateOutlet=\"tableTotal\"></ng-container>\n <hd-space *ngIf=\"tableTotal\" type=\"row\" size=\"12\"></hd-space>\n <nz-table *ngIf=\"showTable\" #hdTable class=\"hd-table-container\" [nzScroll]=\"scroll\" nzShowSizeChanger\n nzShowSizeChanger nzShowQuickJumper nzFrontPagination=\"false\" nzSize=\"middle\" [nzData]=\"tableData.content\"\n [nzTotal]=\"tableData.totalElements\" [(nzPageIndex)]=\"tablePageIndex\" [nzLoading]=\"tableLoading\"\n [nzPageSizeOptions]=\"[ 10, 50, 100, 200 ]\" [(nzPageSize)]=\"tablePageSize\" (nzPageSizeChange)=\"search(true)\"\n (nzPageIndexChange)=\"search(false)\" (nzCurrentPageDataChange)=\"showSelected ? currentPageDataChange($event) : null\"\n [nzShowTotal]=\"tableTotalTemplate\">\n <thead (nzSortChange)=\"sort($event)\" nzSingleSort>\n <tr>\n <th nzWidth=\"40px\" nzLeft=\"0px\" *ngIf=\"showSelected\" nzShowCheckbox [(nzChecked)]=\"isAllDisplayDataChecked\"\n [nzIndeterminate]=\"isIndeterminate\" (nzCheckedChange)=\"checkAll($event)\"></th>\n <ng-container *ngFor=\"let col of tableCols\">\n <th *ngIf=\"col.isShow\" [nzWidth]=\"col.width + 'px'\" [nzAlign]=\"col.align\"\n [nzLeft]=\"col.fixed === 'left' ? col.fixedWidth + 'px' : null\"\n [nzRight]=\"col.fixed === 'right' ? 0 + 'px' : null\" nz-resizable nzBounds=\"window\" nzPreview\n (nzResizeEnd)=\"onResize($event, col)\" [nzShowSort]=\"col.canSort\" [nzSortKey]=\"col.name\">\n {{ col.title }}\n <nz-resize-handle nzDirection=\"right\">\n <div class=\"resize-trigger\"></div>\n </nz-resize-handle>\n </th>\n </ng-container>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let data of hdTable.data;index as i\">\n <td nzLeft=\"0px\" *ngIf=\"showSelected\" nzShowCheckbox [(nzChecked)]=\"mapOfCheckedId[data[selectField]]\"\n (nzCheckedChange)=\"refreshStatus($event, data)\"></td>\n <ng-container *ngFor=\"let col of tableCols\">\n <td *ngIf=\"col.isShow\" [ngStyle]=\"{'max-width': col.width + 'px'}\" [nzAlign]=\"col.align\"\n [nzLeft]=\"col.fixed === 'left' ? col.fixedWidth + 'px' : null\"\n [nzRight]=\"col.fixed === 'right' ? 0 + 'px' : null\"\n [ngClass]=\"(col.canWarp && showDetail) ? 'common-td-wrap' : ''\">\n <ng-container *ngIf=\"col.title === '\u64CD\u4F5C';else notOperateTemplate\">\n <div class=\"common-btn-group\">\n <ng-container *ngFor=\"let btn of col.btnList\">\n <ng-container *ngIf=\"!btn.showConfirm;else showConfirmTemplate\">\n <a *ngIf=\"btn.permission ? btn.permission(data) : true\"\n [class]=\"btn.name === '\u5220\u9664' ? 'common-danger-btn': ''\"\n (click)=\"triggerEvent(btn.click || null, data)\">{{ btn.name }}</a>\n </ng-container>\n <ng-template #showConfirmTemplate>\n <a *ngIf=\"btn.permission ? btn.permission(data) : true\"\n [class]=\"btn.name === '\u5220\u9664' ? 'common-danger-btn': ''\" nz-popconfirm\n [nzPopconfirmTitle]=\"'\u786E\u8BA4\u8981' + btn.name + '\u5417?'\"\n (nzOnConfirm)=\"triggerEvent(btn.click || null, data)\">{{\n btn.name }}</a>\n </ng-template>\n </ng-container>\n </div>\n </ng-container>\n <ng-template #notOperateTemplate>\n <ng-container *ngIf=\"col.name === 'state';else otherTemplate\">\n <hd-status [status]=\"data['state']\">{{ judgeColEmpty(col.render ? col.render(data) : data['state'])}}\n </hd-status>\n </ng-container>\n <ng-template #otherTemplate>\n <ng-container *ngIf=\"col.click;else noClickTemplate\">\n <ng-container\n *ngIf=\"!isTextOverflow(col.render ? col.render(data) : data[col.name], col.width);else overflowTemplate\">\n <a [ngStyle]=\"{'color': col?.color ? col.color : null}\"\n (click)=\"triggerEvent(col.click || null, data)\">{{ judgeColEmpty(col.render ? col.render(data) :\n data[col.name])}}</a>\n </ng-container>\n <ng-template #overflowTemplate>\n <a [ngStyle]=\"{'color': col?.color ? col.color : null}\" nz-tooltip\n [nzTooltipTitle]=\"col.render ? col.render(data) : data[col.name]\"\n (click)=\"triggerEvent(col.click || null, data)\">{{ judgeColEmpty(col.render ? col.render(data) :\n data[col.name])}}</a>\n </ng-template>\n </ng-container>\n <ng-template #noClickTemplate>\n <ng-container\n *ngIf=\"!isTextOverflow(col.render ? col.render(data) : data[col.name], col.width);else overflowTemplate\">\n <span [ngStyle]=\"{'color': col?.color ? col.color : null}\">{{ judgeColEmpty(col.render ?\n col.render(data) :\n data[col.name])}}</span>\n </ng-container>\n <ng-template #overflowTemplate>\n <span [ngStyle]=\"{'color': col?.color ? col.color : null}\" nz-tooltip\n [nzTooltipTitle]=\"col.render ? col.render(data) : data[col.name]\">\n {{ judgeColEmpty(col.render ? col.render(data) : data[col.name])}}</span>\n </ng-template>\n </ng-template>\n </ng-template>\n </ng-template>\n </td>\n </ng-container>\n </tr>\n <!-- \u5408\u8BA1\u6240\u6709\u6570\u636E\u533A\u57DF \u9700\u8981\u540E\u7AEF\u63A5\u53E3\u914D\u5408 -->\n <tr *ngIf=\"showTableTotal\" class=\"hd-table-total\">\n <td>\u5408\u8BA1</td>\n <ng-container *ngFor=\"let tableTotalOption of tableTotalOptionList\">\n <td>{{ tableTotalOption }}</td>\n </ng-container>\n </tr>\n </tbody>\n <ng-template #tableTotalTemplate>\n \u5171 {{tableData.totalElements}} \u6761\u6570\u636E\n </ng-template>\n </nz-table>\n</ng-container>",
952
+ styles: ["::ng-deep .common-btn-group>a{font-size:12px;font-weight:400;color:#12a34f!important;white-space:nowrap}::ng-deep .common-btn-group .common-danger-btn:hover{color:#f05b24!important}::ng-deep .common-btn-group>a:hover{color:#20bd62!important}::ng-deep .common-btn-group>a:not(:last-child)::after{content:'';margin:0 2px}::ng-deep .common-billNumber>a{color:#3b77e3}button{box-shadow:unset;text-shadow:unset;padding:0 6px!important}::ng-deep .ant-form-item-label>label{color:#4b504e}::ng-deep .ant-input-number-input{height:28px}::ng-deep .ant-input-number{height:28px}textarea.ant-input{height:auto;min-height:28px}::ng-deep .ant-select-selection--multiple{min-height:28px}::ng-deep .ant-select-selection__rendered>ul>li{height:22px!important;margin-top:3px!important;line-height:22px!important}::ng-deep .ant-advanced-search-form .ant-form-item{margin-bottom:0!important}::ng-deep .ant-select-selection--single{height:28px!important}::ng-deep .ant-input{height:28px}::ng-deep .ant-input[disabled]:hover{border-color:#d9d9d9!important}::ng-deep .ant-select-selection__rendered{line-height:28px!important}::ng-deep .ant-calendar-range-picker-input{text-align:left!important}::ng-deep .ant-calendar-picker{width:100%!important}::ng-deep .ant-row{margin-right:0!important;margin-left:0!important}::ng-deep .ant-col-6{padding-left:12px;padding-right:12px}::ng-deep .ant-col-12{padding-left:12px;padding-right:12px}::ng-deep .ant-col-18{padding-left:12px;padding-right:12px}::ng-deep .ant-col-24{padding-left:12px;padding-right:12px}::ng-deep .ant-alert-info{background-color:#f5f8f6;border:1px solid #cfe3d4}:host ::ng-deep th{background:#f5f8f6!important;font-weight:700!important;white-space:nowrap;font-size:12px;font-family:PingFangSC-Medium,PingFang SC;color:#2a3634;padding:8px!important;box-sizing:border-box}:host ::ng-deep td{font-weight:400;font-style:normal;font-size:12px;color:#2a3634;text-align:left;white-space:nowrap;padding:8px!important;box-sizing:border-box}::ng-deep .ant-pagination-options{display:inline-flex;align-items:center}::ng-deep .ant-time-picker{width:100%}.ant-input-number-disabled,.ant-input[disabled],.ant-select-disabled{color:#4b504e}.nz-resizable-preview{position:absolute;top:0;left:0;z-index:8;border:1px dashed #d1d1d1}.nz-resizable-handle{position:absolute;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:9}.nz-resizable-handle-top{width:100%;height:10px;top:-5px;left:0}.nz-resizable-handle-right{height:100%}.nz-resizable-handle-bottom{width:100%;height:10px;bottom:-5px;left:0}.nz-resizable-handle-left{width:10px;height:100%;top:0;left:-5px}.nz-resizable-handle-topRight{width:20px;height:20px;top:-5px;right:-5px;z-index:10}.nz-resizable-handle-bottomRight{width:20px;height:20px;right:-5px;bottom:-5px;z-index:10}.nz-resizable-handle-bottomLeft{width:20px;height:20px;bottom:-5px;left:-5px;z-index:10}.nz-resizable-handle-topLeft{width:20px;height:20px;top:-5px;left:-5px;z-index:10}.nz-resizable:not(.nz-resizable-resizing) .nz-resizable-handle-bottom,.nz-resizable:not(.nz-resizable-resizing) .nz-resizable-handle-top{cursor:row-resize}.nz-resizable:not(.nz-resizable-resizing) .nz-resizable-handle-left,.nz-resizable:not(.nz-resizable-resizing) .nz-resizable-handle-right{cursor:col-resize}.nz-resizable:not(.nz-resizable-resizing) .nz-resizable-handle-bottomRight,.nz-resizable:not(.nz-resizable-resizing) .nz-resizable-handle-topLeft{cursor:nwse-resize}.nz-resizable:not(.nz-resizable-resizing) .nz-resizable-handle-bottomLeft,.nz-resizable:not(.nz-resizable-resizing) .nz-resizable-handle-topRight{cursor:nesw-resize}.hd-table-container ::ng-deep .ant-pagination-options-quick-jumper input{border-radius:2px;border:1px solid #d9d9d9}.hd-table-container ::ng-deep .ant-pagination-options .ant-select-selection{border-radius:2px}.hd-table-container ::ng-deep .ant-table-thead>tr>th{border-bottom:1px solid #ecf1ed;white-space:nowrap;text-overflow:ellipsis}.hd-table-container ::ng-deep .ant-table-tbody>tr>td{border-bottom:1px solid #ecf1ed;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.hd-table-container ::ng-deep .hd-table-total>td{border:0!important}::ng-deep .ant-dropdown-menu{border-radius:0}::ng-deep .ant-dropdown{margin-top:8px!important}.common-td-wrap{white-space:normal!important;word-break:break-all}.nz-resizable-preview{border-width:0 1px 0 0}.resize-trigger{width:10px;height:15px;position:relative;top:calc((100% - 15px)/ 2)}.resize-trigger::after{position:absolute;top:calc((100% - 15px)/ 2);left:0;background:#d5d5d5;content:'';width:1px;height:15px;z-index:1}.nz-resizable-handle-right{position:absolute;width:10px;top:0;right:-5px;z-index:inherit}.hd-table-tree-node{display:inline-flex;align-items:center;padding-right:10px}.hd-table-tree-node .hd-table-tree-node-img{display:flex;flex-direction:column;position:absolute;right:0;margin-top:-2.5px}.hd-table-tree-node .hd-table-tree-node-img i{opacity:.3}.hd-table-tree-node .hd-table-tree-node-img i:last-child{margin-top:-5px}img{width:20px;height:20px}.ant-table-th-left-sticky{z-index:2}::ng-deep .ant-table-thead>tr>th .ant-table-header-column .ant-table-column-sorters>:not(.ant-table-column-sorter){position:unset}"]
953
+ }] }
954
+ ];
955
+ /** @nocollapse */
956
+ HdTableComponent.ctorParameters = function () { return [
957
+ { type: ChangeDetectorRef },
958
+ { type: CommonSessionService }
959
+ ]; };
960
+ HdTableComponent.propDecorators = {
961
+ uuid: [{ type: Input }],
962
+ tableCols: [{ type: Input }],
963
+ tableData: [{ type: Input }],
964
+ showSelected: [{ type: Input }],
965
+ showOperateColWarpButton: [{ type: Input }],
966
+ selectField: [{ type: Input }],
967
+ showTableTotal: [{ type: Input }],
968
+ tableTotalOption: [{ type: Input }],
969
+ sortEvent: [{ type: Output }],
970
+ selectEvent: [{ type: Output }],
971
+ tableSearchEvent: [{ type: Output }],
972
+ tableLoading: [{ type: Input }],
973
+ tablePageIndex: [{ type: Input }],
974
+ tablePageSize: [{ type: Input }],
975
+ tablePageIndexChange: [{ type: Output }],
976
+ tablePageSizeChange: [{ type: Output }],
977
+ tableTotal: [{ type: ContentChild, args: ["tableTotal", { static: false },] }],
978
+ tableLeftButton: [{ type: ContentChild, args: ["tableLeftButton", { static: false },] }],
979
+ tableRightButton: [{ type: ContentChild, args: ["tableRightButton", { static: false },] }]
980
+ };
981
+ tslib_1.__decorate([
982
+ InputBoolean(),
983
+ tslib_1.__metadata("design:type", Boolean)
984
+ ], HdTableComponent.prototype, "showSelected", void 0);
985
+ tslib_1.__decorate([
986
+ InputBoolean(),
987
+ tslib_1.__metadata("design:type", Boolean)
988
+ ], HdTableComponent.prototype, "showOperateColWarpButton", void 0);
989
+ tslib_1.__decorate([
990
+ InputBoolean(),
991
+ tslib_1.__metadata("design:type", Boolean)
992
+ ], HdTableComponent.prototype, "showTableTotal", void 0);
993
+ return HdTableComponent;
994
+ }());
995
+ export { HdTableComponent };
996
+ if (false) {
997
+ /** @type {?} */
998
+ HdTableComponent.prototype.uuid;
999
+ /** @type {?} */
1000
+ HdTableComponent.prototype.tableCols;
1001
+ /** @type {?} */
1002
+ HdTableComponent.prototype.tableData;
1003
+ /** @type {?} */
1004
+ HdTableComponent.prototype.showSelected;
1005
+ /** @type {?} */
1006
+ HdTableComponent.prototype.showOperateColWarpButton;
1007
+ /** @type {?} */
1008
+ HdTableComponent.prototype.selectField;
1009
+ /** @type {?} */
1010
+ HdTableComponent.prototype.showTableTotal;
1011
+ /** @type {?} */
1012
+ HdTableComponent.prototype.tableTotalOption;
1013
+ /** @type {?} */
1014
+ HdTableComponent.prototype.sortEvent;
1015
+ /** @type {?} */
1016
+ HdTableComponent.prototype.selectEvent;
1017
+ /** @type {?} */
1018
+ HdTableComponent.prototype.tableSearchEvent;
1019
+ /** @type {?} */
1020
+ HdTableComponent.prototype.tableLoading;
1021
+ /** @type {?} */
1022
+ HdTableComponent.prototype.tablePageIndex;
1023
+ /** @type {?} */
1024
+ HdTableComponent.prototype.tablePageSize;
1025
+ /** @type {?} */
1026
+ HdTableComponent.prototype.tablePageIndexChange;
1027
+ /** @type {?} */
1028
+ HdTableComponent.prototype.tablePageSizeChange;
1029
+ /** @type {?} */
1030
+ HdTableComponent.prototype.tableTotal;
1031
+ /** @type {?} */
1032
+ HdTableComponent.prototype.tableLeftButton;
1033
+ /** @type {?} */
1034
+ HdTableComponent.prototype.tableRightButton;
1035
+ /** @type {?} */
1036
+ HdTableComponent.prototype.scroll;
1037
+ /** @type {?} */
1038
+ HdTableComponent.prototype.isAllDisplayDataChecked;
1039
+ /** @type {?} */
1040
+ HdTableComponent.prototype.isIndeterminate;
1041
+ /** @type {?} */
1042
+ HdTableComponent.prototype.listOfDisplayData;
1043
+ /** @type {?} */
1044
+ HdTableComponent.prototype.listOfAllData;
1045
+ /** @type {?} */
1046
+ HdTableComponent.prototype.listOfSelection;
1047
+ /** @type {?} */
1048
+ HdTableComponent.prototype.mapOfCheckedId;
1049
+ /** @type {?} */
1050
+ HdTableComponent.prototype.mapOfCheckList;
1051
+ /** @type {?} */
1052
+ HdTableComponent.prototype.tableTotalOptionList;
1053
+ /**
1054
+ * @type {?}
1055
+ * @private
1056
+ */
1057
+ HdTableComponent.prototype.textWidthCache;
1058
+ /** @type {?} */
1059
+ HdTableComponent.prototype.tableCacheOption;
1060
+ /** @type {?} */
1061
+ HdTableComponent.prototype.userSession;
1062
+ /** @type {?} */
1063
+ HdTableComponent.prototype.tableColsCache;
1064
+ /** @type {?} */
1065
+ HdTableComponent.prototype.showTable;
1066
+ /** @type {?} */
1067
+ HdTableComponent.prototype.selectColListNodes;
1068
+ /** @type {?} */
1069
+ HdTableComponent.prototype.selectColListNodesCache;
1070
+ /** @type {?} */
1071
+ HdTableComponent.prototype.showListNodes;
1072
+ /** @type {?} */
1073
+ HdTableComponent.prototype.isDropdownVisible;
1074
+ /** @type {?} */
1075
+ HdTableComponent.prototype.nowListNodes;
1076
+ /** @type {?} */
1077
+ HdTableComponent.prototype.hideListNodes;
1078
+ /** @type {?} */
1079
+ HdTableComponent.prototype.cancelNowListNodes;
1080
+ /** @type {?} */
1081
+ HdTableComponent.prototype.cancelHideListNodes;
1082
+ /** @type {?} */
1083
+ HdTableComponent.prototype.showDetail;
1084
+ /** @type {?} */
1085
+ HdTableComponent.prototype.localforage;
1086
+ /** @type {?} */
1087
+ HdTableComponent.prototype.localtionTmp;
1088
+ /** @type {?} */
1089
+ HdTableComponent.prototype.beforeDrop;
1090
+ /**
1091
+ * @type {?}
1092
+ * @private
1093
+ */
1094
+ HdTableComponent.prototype.cdr;
1095
+ /**
1096
+ * @type {?}
1097
+ * @private
1098
+ */
1099
+ HdTableComponent.prototype.commonSessionService;
1100
+ }
1101
1101
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGQtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vZmFudGFzeS1uZ3pvcnJvLyIsInNvdXJjZXMiOlsiaGQtdGFibGUvaGQtdGFibGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQWdCLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzSSxPQUFPLEtBQUssV0FBVyxNQUFNLGFBQWEsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUE4QyxNQUFNLG9CQUFvQixDQUFDO0FBRTlGLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDNUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDekUsT0FBTyxFQUFxQyxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRztJQStERSwwQkFDVSxHQUFzQixFQUN0QixvQkFBMEM7UUFGcEQsaUJBVUM7UUFUUyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0Qix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBMUQzQyxjQUFTLEdBQXlCLEVBQUUsQ0FBQztRQUVyQixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5Qiw2QkFBd0IsR0FBWSxLQUFLLENBQUM7UUFDMUQsZ0JBQVcsR0FBVyxZQUFZLENBQUM7O1FBRW5CLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBRS9DLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQy9CLGdCQUFX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c291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0ICogYXMgbG9jYWxmb3JhZ2UgZnJvbSAnbG9jYWxmb3JhZ2UnO1xuaW1wb3J0IHsgSW5wdXRCb29sZWFuLCBOekZvcm1hdEJlZm9yZURyb3BFdmVudCwgTnpGb3JtYXRFbWl0RXZlbnQgfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUnO1xuaW1wb3J0IHsgTnpSZXNpemVFdmVudCB9IGZyb20gJ25nLXpvcnJvLWFudGQvcmVzaXphYmxlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWxheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvbFdpZHRoIH0gZnJvbSAnLi4vbW9kZWwvY29sV2lkdGgnO1xuaW1wb3J0IHsgUGFnZSB9IGZyb20gJy4uL21vZGVsL2NvbW1vbi10eXBlJztcbmltcG9ydCB7IENvbW1vblNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS9jb21tb24tc2Vzc2lvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEhkVGFibGVDb2x1bW4sIEhkVGFibGVUb3RhbE9wdGlvbiwgVGFibGVDYWNoZU9wdGlvbiwgVHJlZUdyaWQgfSBmcm9tICcuL2hkLXRhYmxlLnNlcnZpY2UnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGQtdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vaGQtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9oZC10YWJsZS5jb21wb25lbnQubGVzcyddXG59KVxuZXhwb3J0IGNsYXNzIEhkVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSB1dWlkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRhYmxlQ29sczogQXJyYXk8SGRUYWJsZUNvbHVtbj4gPSBbXTtcbiAgQElucHV0KCkgdGFibGVEYXRhOiBQYWdlPGFueT47XG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBzaG93U2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHNob3dPcGVyYXRlQ29sV2FycEJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzZWxlY3RGaWVsZDogc3RyaW5nID0gJ2JpbGxOdW1iZXInO1xuICAvLyDlkIjorqHljLrln59cbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHNob3dUYWJsZVRvdGFsOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHRhYmxlVG90YWxPcHRpb246IEFycmF5PEhkVGFibGVUb3RhbE9wdGlvbj47XG4gIEBPdXRwdXQoKSBzb3J0RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBzZWxlY3RFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHRhYmxlU2VhcmNoRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBJbnB1dCgpIHRhYmxlTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICAvLyDooajmoLzliIbpobXlj4LmlbBcbiAgQElucHV0KCkgdGFibGVQYWdlSW5kZXg6IG51bWJlciA9IDE7XG4gIEBJbnB1dCgpIHRhYmxlUGFnZVNpemU6IG51bWJlcjtcbiAgQE91dHB1dCgpIHRhYmxlUGFnZUluZGV4Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSB0YWJsZVBhZ2VTaXplQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBDb250ZW50Q2hpbGQoXCJ0YWJsZVRvdGFsXCIsIHsgc3RhdGljOiBmYWxzZSB9KSB0YWJsZVRvdGFsOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAQ29udGVudENoaWxkKFwidGFibGVMZWZ0QnV0dG9uXCIsIHsgc3RhdGljOiBmYWxzZSB9KSB0YWJsZUxlZnRCdXR0b246IFRlbXBsYXRlUmVmPGFueT47XG4gIEBDb250ZW50Q2hpbGQoXCJ0YWJsZVJpZ2h0QnV0dG9uXCIsIHsgc3RhdGljOiBmYWxzZSB9KSB0YWJsZVJpZ2h0QnV0dG9uOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBzY3JvbGwgPSBudWxsO1xuXG4gIC8vIOihqOagvOWLvumAieWPguaVsFxuICBpc0FsbERpc3BsYXlEYXRhQ2hlY2tlZCA9IGZhbHNlO1xuICBpc0luZGV0ZXJtaW5hdGUgPSBmYWxzZTtcbiAgbGlzdE9mRGlzcGxheURhdGEgPSBbXTtcbiAgbGlzdE9mQWxsRGF0YSA9IFtdO1xuICBsaXN0T2ZTZWxlY3Rpb246IEFycmF5PGFueT4gfCBUZW1wbGF0ZVJlZjx2b2lkPjtcbiAgbWFwT2ZDaGVja2VkSWQ6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbjsgfSA9IHt9O1xuICBtYXBPZkNoZWNrTGlzdDogeyBba2V5OiBzdHJpbmddOiBhbnk7IH0gPSB7fTtcbiAgLy8g5ZCI6K6h5Y+C5pWwXG4gIHRhYmxlVG90YWxPcHRpb25MaXN0ID0gW107XG4gIHByaXZhdGUgdGV4dFdpZHRoQ2FjaGU6IHsgW2tleTogc3RyaW5nXTogbnVtYmVyOyB9ID0ge307XG4gIC8vIOe8k+WtmOS/oeaBr1xuICB0YWJsZUNhY2hlT3B0aW9uOiBUYWJsZUNhY2hlT3B0aW9uID0gbmV3IFRhYmxlQ2FjaGVPcHRpb24oKTtcbiAgdXNlclNlc3Npb246IGFueTtcblxuICB0YWJsZUNvbHNDYWNoZTogQXJyYXk8SGRUYWJsZUNvbHVtbj4gPSBbXTtcbiAgc2hvd1RhYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIHNlbGVjdENvbExpc3ROb2RlczogQXJyYXk8VHJlZUdyaWQ+ID0gW107XG4gIHNlbGVjdENvbExpc3ROb2Rlc0NhY2hlOiBBcnJheTxUcmVlR3JpZD4gPSBbXTtcbiAgc2hvd0xpc3ROb2RlczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGlzRHJvcGRvd25WaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIC8vIOiuvue9ruWIl+eahOWPr+ingeaTjeS9nOaVsOe7hFxuICBub3dMaXN0Tm9kZXM6IEFycmF5PFRyZWVHcmlkPiA9IFtdO1xuICAvLyDorr7nva7liJfnmoTkuI3lj6/op4Hmk43kvZzmlbDnu4RcbiAgaGlkZUxpc3ROb2RlczogQXJyYXk8VHJlZUdyaWQ+ID0gW107XG5cbiAgLy8g54K55Ye75pe26ZyA6KaB5pyJ5Li05pe25pWw57uE5a2Y5pS+5Lik5LiqdHJlZSznlKjkuo7lj5bmtojml7blgJnmgaLlpI3osIPmlbTliY3nmoTnirbmgIFcbiAgY2FuY2VsTm93TGlzdE5vZGVzOiBBcnJheTxUcmVlR3JpZD4gPSBbXTtcbiAgY2FuY2VsSGlkZUxpc3ROb2RlczogQXJyYXk8VHJlZUdyaWQ+ID0gW107XG4gIHNob3dEZXRhaWw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgbG9jYWxmb3JhZ2U6IGFueSA9IG51bGw7XG4gIGxvY2FsdGlvblRtcDogc3RyaW5nID0gJyc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgY29tbW9uU2Vzc2lvblNlcnZpY2U6IENvbW1vblNlc3Npb25TZXJ2aWNlXG4gICkge1xuICAgIHRoaXMubG9jYWxmb3JhZ2UgPSBsb2NhbGZvcmFnZS5jcmVhdGVJbnN0YW5jZSh7XG4gICAgICBkcml2ZXI6IGxvY2FsZm9yYWdlLklOREVYRUREQixcbiAgICAgIG5hbWU6ICdoZC1mc2NtJywgLy8g6K6+572u5a2Y5YKo5bqT55qE5ZCN56ewXG4gICAgICB2ZXJzaW9uOiAxLjAsIC8vIOiuvue9ruWtmOWCqOW6k+eahOeJiOacrFxuICAgICAgc3RvcmVOYW1lOiAnaGQtZnNjbS1zdG9yZScsIC8vIOiuvue9ruWtmOWCqOW6k+eahOWtmOWCqOepuumXtOWQjeensFxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5sb2NhbHRpb25UbXAgPSBsb2NhdGlvbi5wYXRobmFtZTtcbiAgICBpZiAodGhpcy5sb2NhbHRpb25UbXApIHtcbiAgICAgIHRoaXMubG9jYWx0aW9uVG1wID0gdGhpcy5sb2NhbHRpb25UbXAucmVwbGFjZSgvXFwvL2csIFwiX1wiKTtcbiAgICB9XG4gICAgdGhpcy51c2VyU2Vzc2lvbiA9IHRoaXMuY29tbW9uU2Vzc2lvblNlcnZpY2UuZ2V0U2Vzc2lvbignX19qeV9hdXRob3JpemF0aW9uX3Nlc3Npb25fXycpO1xuICAgIC8vIOeUqOS6juW8gOWPkeeOr+Wig+iwg+ivlVxuICAgIGlmICghdGhpcy51c2VyU2Vzc2lvbikge1xuICAgICAgdGhpcy51c2VyU2Vzc2lvbiA9IHtcbiAgICAgICAgdXNlckNvZGU6ICdkZXYnXG4gICAgICB9O1xuICAgIH1cblxuICAgIHRoaXMuZGVsZXRlSGlkZUl0ZW0oKTtcbiAgICBpZiAoIXRoaXMudGFibGVDb2xzIHx8IHRoaXMudGFibGVDb2xzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9jYWxmb3JhZ2UucmVhZHkoKS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMuZ2V0SW5pdExvY2FsZm9yYWdlKCk7XG4gICAgfSkuY2F0Y2goZnVuY3Rpb24gKGUpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdsb2NhbGZvcmFnZeWKoOi9veW8guW4uHN0ZXAxJywgZSk7XG4gICAgICB0aHJvdyAnbG9jYWxmb3JhZ2XliqDovb3lvILluLgnO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlKSB7XG4gICAgLy8g5pWw5o2u5pS55Y+Y5pe277yM6YeN572u5Yu+6YCJ54q25oCBXG4gICAgaWYgKGNoYW5nZXMgJiYgY2hhbmdlc1sndGFibGVEYXRhJ10gJiYgY2hhbmdlc1sndGFibGVEYXRhJ11bJ2N1cnJlbnRWYWx1ZSddICYmIGNoYW5nZXNbJ3RhYmxlRGF0YSddWydwcmV2aW91c1ZhbHVlJ10pIHtcbiAgICAgIGlmIChjaGFuZ2VzWyd0YWJsZURhdGEnXVsnY3VycmVudFZhbHVlJ11bJ3BhZ2VTaXplJ10gIT09IGNoYW5nZXNbJ3RhYmxlRGF0YSddWydwcmV2aW91c1ZhbHVlJ11bJ3BhZ2VTaXplJ11cbiAgICAgICAgfHwgY2hhbmdlc1sndGFibGVEYXRhJ11bJ2N1cnJlbnRWYWx1ZSddWydwYWdlTnVtYmVyJ10gIT09IGNoYW5nZXNbJ3RhYmxlRGF0YSddWydwcmV2aW91c1ZhbHVlJ11bJ3BhZ2VOdW1iZXInXSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnJlc2V0U3RhdHVzKCk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbJ3RhYmxlQ29scyddICYmIEpTT04uc3RyaW5naWZ5KGNoYW5nZXNbJ3RhYmxlQ29scyddLmN1cnJlbnRWYWx1ZSkgIT09IEpTT04uc3RyaW5naWZ5KGNoYW5nZXNbJ3RhYmxlQ29scyddLnByZXZpb3VzVmFsdWUpKSB7XG4gICAgICB0aGlzLmRlbGV0ZUhpZGVJdGVtKCk7XG4gICAgICBpZiAoIXRoaXMudGFibGVDb2xzIHx8IHRoaXMudGFibGVDb2xzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLmxvY2FsZm9yYWdlLnJlYWR5KCkudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMuZ2V0SW5pdExvY2FsZm9yYWdlKCk7XG4gICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZSkge1xuICAgICAgICBjb25zb2xlLmxvZygnbG9jYWxmb3JhZ2XliqDovb3lvILluLhzdGVwMicsIGUpO1xuICAgICAgICB0aHJvdyAnbG9jYWxmb3JhZ2XliqDovb3lvILluLgnO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZGVsZXRlSGlkZUl0ZW0oKSB7XG4gICAgLy8g6aaW5YWI5oqKaXNTaG935Li6ZmFsc2XmlbDmja7liZTpmaTmjolcbiAgICB0aGlzLnRhYmxlQ29scyA9IHRoaXMudGFibGVDb2xzLmZpbHRlcihpdGVtID0+IHtcbiAgICAgIC8vIOWmguaenOWvueixoeayoeaciSBpc1Nob3cg5bGe5oCn77yM5YiZ6buY6K6k5Li6IHRydWXvvIzkv53nlZnor6Xlr7nosaFcbiAgICAgIGlmICghaXRlbS5oYXNPd25Qcm9wZXJ0eSgnaXNTaG93JykpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICAvLyDlpoLmnpzlr7nosaHmnIkgaXNTaG93IOWxnuaAp++8jOWImeajgOafpeWFtuWAvOaYr+WQpuS4uiB0cnVlXG4gICAgICByZXR1cm4gaXRlbS5pc1Nob3cgPT09IHRydWU7XG4gICAgfSk7XG4gIH1cblxuICBzb3J0KHNvcnQ6IHsga2V5OiBzdHJpbmc7IHZhbHVlOiBzdHJpbmc7IH0pIHtcbiAgICB0aGlzLnNvcnRFdmVudC5lbWl0KHNvcnQpO1xuICB9XG5cbiAgZ2V0SW5pdExvY2FsZm9yYWdlKCkge1xuICAgIC8vIOmmluWFiOiOt+WPluW9k+WJjWhkLXRhYmxl5a2Y5YKo55qE5pWw5o2uIOWmguaenOayoeacie+8jOWImeWIneWni+WMluS4i+W9k+WJjeeahOaVsOaNrlxuICAgIHRoaXMubG9jYWxmb3JhZ2UuZ2V0SXRlbSgnaGQtdGFibGVfJyArIHRoaXMudXNlclNlc3Npb24udXNlckNvZGUgKyAnXycgKyB0aGlzLmxvY2FsdGlvblRtcCArICdfJyArIHRoaXMudXVpZCkudGhlbigodmFsdWU6IFRhYmxlQ2FjaGVPcHRpb24pID0+IHtcbiAgICAgIHRoaXMudGFibGVDYWNoZU9wdGlvbiA9IHZhbHVlO1xuICAgICAgaWYgKHRoaXMudGFibGVDYWNoZU9wdGlvbi5wYWdlU2l6ZSAmJiB0aGlzLnRhYmxlQ2FjaGVPcHRpb24ucGFnZVNpemUgPiAxMCkge1xuICAgICAgICB0aGlzLnRhYmxlUGFnZVNpemUgPSB0aGlzLnRhYmxlQ2FjaGVPcHRpb24ucGFnZVNpemU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnRhYmxlUGFnZVNpemUgPSB0aGlzLnRhYmxlQ2FjaGVPcHRpb24ucGFnZVNpemUgfHwgMTA7XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMudGFibGVDYWNoZU9wdGlvbi5jb2xXaWR0aHMpIHtcbiAgICAgICAgdGhpcy50YWJsZUNhY2hlT3B0aW9uLmNvbFdpZHRocyA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG4gICAgICB9XG4gICAgICB0aGlzLnRhYmxlUGFnZVNpemVDaGFuZ2UuZW1pdCh0aGlzLnRhYmxlUGFnZVNpemUpO1xuICAgICAgdGhpcy5pbml0VGFibGUoKTtcbiAgICB9KS5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICB0aGlzLnRhYmxlQ2FjaGVPcHRpb24gPSBuZXcgVGFibGVDYWNoZU9wdGlvbigpO1xuICAgICAgdGhpcy50YWJsZVBhZ2VTaXplID0gMTA7XG4gICAgICB0aGlzLnRhYmxlQ2FjaGVPcHRpb24ucGFnZVNpemUgPSAxMDtcbiAgICAgIHRoaXMudGFibGVDYWNoZU9wdGlvbi5jb2xXaWR0aHMgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICAgICAgdGhpcy50YWJsZVBhZ2VTaXplQ2hhbmdlLmVtaXQodGhpcy50YWJsZVBhZ2VTaXplKTtcbiAgICAgIHRoaXMuaW5pdFRhYmxlKCk7XG4gICAgfSk7XG4gIH1cblxuICBpbml0VGFibGUoKSB7XG4gICAgdGhpcy5zaG93VGFibGUgPSBmYWxzZTtcbiAgICBpZiAoIXRoaXMudXVpZCkge1xuICAgICAgdGhyb3cgJ2hkLXRhYmxl57y65aSxdXVpZOWPguaVsO+8jOivt+S9v+eUqOe8lui+keWZqOaPkuS7tueUn+aIkOW5tue7mWhkLXRhYmxl6LWL5LqIdXVpZOWxnuaApyc7XG4gICAgfVxuICAgIGlmICh0aGlzLmp1ZGdlUmVwZWF0Q29scygpKSB7XG4gICAgICB0aGlzLmRlYWxDb2xzKCk7XG4gICAgICB0aGlzLnNldENvbHMoKTtcbiAgICAgIHRoaXMuZGVhbFNjcm9sbCgpO1xuICAgICAgdGhpcy5kZWFsT3BlcmF0ZUJ0bigpO1xuICAgICAgdGhpcy5zaG93VGFibGUgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8vIOiuvue9ruWIl+eCueWHu+WPlua2iFxuICBjYW5jZWxEcm9wZG93bigpOiB2b2lkIHtcbiAgICB0aGlzLmlzRHJvcGRvd25WaXNpYmxlID0gZmFsc2U7XG4gICAgdGhpcy5oaWRlTGlzdE5vZGVzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmNhbmNlbEhpZGVMaXN0Tm9kZXMpKTtcbiAgICB0aGlzLm5vd0xpc3ROb2RlcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5jYW5jZWxOb3dMaXN0Tm9kZXMpKTtcbiAgfVxuXG4gIC8vIOeCueWHu+inpuWPkeiuvue9ruWIl1xuICBjb25maXJtRHJvcGRvd24oKTogdm9pZCB7XG4gICAgLy8g5Li05pe25a2Y5pS+5LiL77yM5Y+W5raI55qE5pe25YCZ5oGi5aSN5Y6f5p2l55qE54q25oCBICAg5rex5ou36LSd5LiL5a+56LGh5pWw57uEXG4gICAgdGhpcy5jYW5jZWxIaWRlTGlzdE5vZGVzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmhpZGVMaXN0Tm9kZXMpKTtcbiAgICB0aGlzLmNhbmNlbE5vd0xpc3ROb2RlcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5ub3dMaXN0Tm9kZXMpKTtcbiAgICB0aGlzLmlzRHJvcGRvd25WaXNpYmxlID0gdHJ1ZTtcbiAgfVxuXG4gIHN1Ym1pdEdyaWRzKCkge1xuICAgIHRoaXMudGFibGVDYWNoZU9wdGlvbi5jb2xzID0gW107XG4gICAgdGhpcy5ub3dMaXN0Tm9kZXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIHRoaXMudGFibGVDYWNoZU9wdGlvbi5jb2xzLnB1c2goaXRlbS50aXRsZSk7XG4gICAgfSk7XG4gICAgdGhpcy5zYXZlVGFibGVDYWNoZU9wdGlvbigpO1xuICAgIHRoaXMuaW5pdFRhYmxlKCk7XG4gICAgdGhpcy5pc0Ryb3Bkb3duVmlzaWJsZSA9IGZhbHNlO1xuICB9XG5cbiAgLy8g5LuO57yT5a2Y6K6+572u5YiXXG4gIHNldENvbHMoKSB7XG4gICAgdGhpcy5zaG93TGlzdE5vZGVzID0gZmFsc2U7XG4gICAgdGhpcy5ub3dMaXN0Tm9kZXMgPSBbXTtcbiAgICB0aGlzLmhpZGVMaXN0Tm9kZXMgPSBbXTtcbiAgICBpZiAodGhpcy50YWJsZUNhY2hlT3B0aW9uLmNvbHMpIHtcbiAgICAgIGxldCB7IG5vdEluY29scywgaW5jb2xzIH0gPSB0aGlzLnRhYmxlQ29sc0NhY2hlLnJlZHVjZSgoYWNjLCBpdGVtKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnRhYmxlQ2FjaGVPcHRpb24uY29scy5pbmNsdWRlcyhpdGVtLnRpdGxlKSkge1xuICAgICAgICAgIGFjYy5pbmNvbHMucHVzaChpdGVtKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhY2Mubm90SW5jb2xzLnB1c2goaXRlbSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIHsgbm90SW5jb2xzOiBbXSwgaW5jb2xzOiBbXSB9KTtcbiAgICAgIGluY29scy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhYmxlQ2FjaGVPcHRpb24uY29scy5pbmRleE9mKGEudGl0bGUpIC0gdGhpcy50YWJsZUNhY2hlT3B0aW9uLmNvbHMuaW5kZXhPZihiLnRpdGxlKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy50YWJsZUNvbHMgPSBpbmNvbHMuY29uY2F0KG5vdEluY29scyk7XG4gICAgfVxuXG4gICAgdGhpcy50YWJsZUNvbHMuZm9yRWFjaCgoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICAgIGlmICh0aGlzLnRhYmxlQ2FjaGVPcHRpb24uY29scykge1xuICAgICAgICBlbGVtZW50LmlzU2hvdyA9IHRoaXMudGFibGVDYWNoZU9wdGlvbi5jb2xzLmluY2x1ZGVzKGVsZW1lbnQudGl0bGUpID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICBpZiAoZWxlbWVudC5pc1Nob3cpIHtcbiAgICAgICAgICB0aGlzLm5vd0xpc3ROb2Rlcy5wdXNoKHtcbiAgICAgICAgICAgIHRpdGxlOiBlbGVtZW50LnRpdGxlLFxuICAgICAgICAgICAga2V5OiBlbGVtZW50LnRpdGxlLFxuICAgICAgICAgICAgZGlzYWJsZWQ6IGVsZW1lbnQuZml4ZWQgPyB0cnVlIDogZmFsc2UsXG4gICAgICAgICAgICAvLyBzZWxlY3RhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGNoZWNrZWQ6IHRoaXMudGFibGVDYWNoZU9wdGlvbi5jb2xzLmluY2x1ZGVzKGVsZW1lbnQudGl0bGUpID8gdHJ1ZSA6IGZhbHNlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5oaWRlTGlzdE5vZGVzLnB1c2goe1xuICAgICAgICAgICAgdGl0bGU6IGVsZW1lbnQudGl0bGUsXG4gICAgICAgICAgICBrZXk6IGVsZW1lbnQudGl0bGUsXG4gICAgICAgICAgICBkaXNhYmxlZDogZWxlbWVudC5maXhlZCA/IHRydWUgOiBmYWxzZSxcbiAgICAgICAgICAgIC8vIHNlbGVjdGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgY2hlY2tlZDogdGhpcy50YWJsZUNhY2hlT3B0aW9uLmNvbHMuaW5jbHVkZXMoZWxlbWVudC50aXRsZSkgPyB0cnVlIDogZmFsc2VcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWxlbWVudC5pc1Nob3cgPSB0cnVlO1xuICAgICAgICB0aGlzLm5vd0xpc3ROb2Rlcy5wdXNoKHtcbiAgICAgICAgICB0aXRsZTogZWxlbWVudC50aXRsZSxcbiAgICAgICAgICBrZXk6IGVsZW1lbnQudGl0bGUsXG4gICAgICAgICAgY2hlY2tlZDogdHJ1ZSxcbiAgICAgICAgICAvLyBzZWxlY3RhYmxlOiBmYWxzZSxcbiAgICAgICAgICBkaXNhYmxlZDogZWxlbWVudC5maXhlZCA/IHRydWUgOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIOiwg+aVtOWIl+WuveS4uue8k+WtmOWuveW6plxuICAgIGlmICh0aGlzLnRhYmxlQ2FjaGVPcHRpb24gJiYgdGhpcy50YWJsZUNhY2hlT3B0aW9uLmNvbFdpZHRocyAmJiB0aGlzLnRhYmxlQ2FjaGVPcHRpb24uY29sV2lkdGhzLnNpemUgIT09IDApIHtcbiAgICAgIHRoaXMudGFibGVDb2xzLmZvckVhY2goKGNvbCkgPT4ge1xuICAgICAgICBpZiAodGhpcy50YWJsZUNhY2hlT3B0aW9uLmNvbFdpZHRocy5oYXMoY29sLnRpdGxlKSkge1xuICAgICAgICAgIGNvbC53aWR0aCA9IHRoaXMudGFibGVDYWNoZU9wdGlvbi5jb2xXaWR0aHMuZ2V0KGNvbC50aXRsZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuZGVhbENvbHMoKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2hvd0xpc3ROb2RlcyA9IHRydWU7XG4gICAgfSwgMCk7XG4gIH1cblxuICAvLyDmi5bmi73mk43kvZxcbiAgYmVmb3JlRHJvcCA9IChhcmc6IE56Rm9ybWF0QmVmb3JlRHJvcEV2ZW50KTogT2JzZXJ2YWJsZTxib29sZWFuPiA9PiB7XG4gICAgaWYgKGFyZy5ub2RlLm9yaWdpbi5kaXNhYmxlZCB8fCAhYXJnLmRyYWdOb2RlLm9yaWdpbi5jaGVja2VkIHx8IGFyZy5wb3MgPT09IDApIHtcbiAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBub2RlOiBUcmVlR3JpZCA9IG5ldyBUcmVlR3JpZCgpO1xuICAgICAgbm9kZS5jaGVja2VkID0gYXJnLmRyYWdOb2RlLm9yaWdpbi5jaGVja2VkO1xuICAgICAgbm9kZS5kaXNhYmxlZCA9IGFyZy5kcmFnTm9kZS5vcmlnaW4uZGlzYWJsZWQ7XG4gICAgICBub2RlLmV4cGFuZGVkID0gYXJnLmRyYWdOb2RlLm9yaWdpbi5leHBhbmRlZDtcbiAgICAgIG5vZGUuaXNMZWFmID0gYXJnLmRyYWdOb2RlLm9yaWdpbi5pc0xlYWY7XG4gICAgICBub2RlLmtleSA9IGFyZy5kcmFnTm9kZS5vcmlnaW4ua2V5O1xuICAgICAgbm9kZS5zZWxlY3RhYmxlID0gYXJnLmRyYWdOb2RlLm9yaWdpbi5zZWxlY3RhYmxlO1xuICAgICAgbm9kZS50aXRsZSA9IGFyZy5kcmFnTm9kZS5vcmlnaW4udGl0bGU7XG4gICAgICAvLyDmi5bmi73lhYPntKDkuIvmoIdcbiAgICAgIGxldCBkcmFnTm9kZUluZGV4ID0gdGhpcy5ub3dMaXN0Tm9kZXMuZmluZEluZGV4KGl0ZW0gPT4geyByZXR1cm4gaXRlbS50aXRsZSA9PSBhcmcuZHJhZ05vZGUub3JpZ2luLnRpdGxlOyB9KTtcbiAgICAgIC8vIOebruagh+S9jee9rueahOS4i+agh1xuICAgICAgbGV0IG5vZGVJbmRleCA9IHRoaXMubm93TGlzdE5vZGVzLmZpbmRJbmRleChpdGVtID0+IHsgcmV0dXJuIGl0ZW0udGl0bGUgPT0gYXJnLm5vZGUub3JpZ2luLnRpdGxlOyB9KSArIChhcmcucG9zID09PSAtMSA/IDAgOiBhcmcucG9zKTtcbiAgICAgIHRoaXMubm93TGlzdE5vZGVzLnNwbGljZShub2RlSW5kZXgsIDAsIG5vZGUpO1xuICAgICAgdGhpcy5ub3dMaXN0Tm9kZXMuc3BsaWNlKG5vZGVJbmRleCA+PSBkcmFnTm9kZUluZGV4ID8gZHJhZ05vZGVJbmRleCA6IGRyYWdOb2RlSW5kZXggKyAxLCAxKTtcbiAgICAgIHJldHVybiBvZih0cnVlKS5waXBlKGRlbGF5KDEwMCkpO1xuICAgIH1cbiAgfTtcblxuICBtb3ZlRWxlbWVudE5lYXJieShhcnIsIGVsZW1lbnRUb01vdmVUaXRsZSwgdGFyZ2V0RWxlbWVudFRpdGxlLCBwb3MpIHtcbiAgICBjb25zdCB0bXBBcnJheSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoYXJyKSk7XG4gICAgY29uc3QgdGFyZ2V0SW5kZXggPSB0bXBBcnJheS5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLnRpdGxlID09PSB0YXJnZXRFbGVtZW50VGl0bGUpO1xuICAgIGNvbnN0IGVsZW1lbnRJbmRleCA9IHRtcEFycmF5LmZpbmRJbmRleChpdGVtID0+IGl0ZW0udGl0bGUgPT09IGVsZW1lbnRUb01vdmVUaXRsZSk7XG4gICAgY29uc3QgbmV3SW5kZXggPSBwb3MgPCAwID8gKHRhcmdldEluZGV4ICsgcG9zKSA6IHRhcmdldEluZGV4O1xuICAgIC8vIOenu+mZpOebruagh+WFg+e0oO+8jOW5tuaPkuWFpeWIsOaWsOeahOS9jee9rlxuICAgIGNvbnN0IHJlbW92ZWRFbGVtZW50ID0gdG1wQXJyYXkuc3BsaWNlKGVsZW1lbnRJbmRleCwgMSk7XG4gICAgdG1wQXJyYXkuc3BsaWNlKG5ld0luZGV4ICsgMSwgMCwgcmVtb3ZlZEVsZW1lbnRbMF0pO1xuICAgIHJldHVybiB0bXBBcnJheTtcbiAgfVxuXG4gIC8vIOWLvumAieaTjeS9nFxuICBjaGVja0FjdGlvbihldmVudDogTnpGb3JtYXRFbWl0RXZlbnQpOiB2b2lkIHtcbiAgICAvLyDli77pgInlj6rmnInlnKhoaWRlTGlzdE5vZGVzLOWPlua2iOWLvumAieWPquacieWcqG5vd0xpc3ROb2Rlc1xuICAgIGlmIChldmVudC5ub2RlLm9yaWdpbi5jaGVja2VkKSB7XG4gICAgICBsZXQgbm9kZTogVHJlZUdyaWQgPSBuZXcgVHJlZUdyaWQoKTtcbiAgICAgIG5vZGUgPSB0aGlzLmhpZGVMaXN0Tm9kZXMuZmluZCgoaXRlbSkgPT4ge1xuICAgICAgICByZXR1cm4gaXRlbS50aXRsZSA9PT0gZXZlbnQubm9kZS5vcmlnaW4udGl0bGU7XG4gICAgICB9KTtcbiAgICAgIG5vZGUuY2hlY2tlZCA9IHRydWU7XG4gICAgICAvLyDmib7liLDnrKzkuIDkuKpmaXhlZOWxnuaAp+S4unJpZ2h055qEdGl0bGXvvIzmib7liLDmj5LlhaXlhYPntKDnmoTkvY3nva5cbiAgICAgIGxldCB0aXRsZSA9IG51bGw7XG4gICAgICBmb3IgKGxldCBpID0gdGhpcy50YWJsZUNvbHNDYWNoZS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICBpZiAodGhpcy50YWJsZUNvbHNDYWNoZVtpXS5maXhlZCA9PT0gJ3JpZ2h0Jykge1xuICAgICAgICAgIHRpdGxlID0gdGhpcy50YWJsZUNvbHNDYWNoZVtpXS50aXRsZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbGV0IHRlbXBvcmFyeU5vZGVMaXN0ID0gdGhpcy5ub3dMaXN0Tm9kZXMuc2xpY2UoMCk7XG4gICAgICBpZiAoIXRpdGxlKSB7XG4gICAgICAgIHRlbXBvcmFyeU5vZGVMaXN0LnB1c2gobm9kZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMubm93TGlzdE5vZGVzLmZpbmRJbmRleChub2RlID0+IG5vZGUudGl0bGUgPT09IHRpdGxlKTtcbiAgICAgICAgdGVtcG9yYXJ5Tm9kZUxpc3Quc3BsaWNlKGluZGV4LCAwLCBub2RlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMubm93TGlzdE5vZGVzID0gdGVtcG9yYXJ5Tm9kZUxpc3Q7XG4gICAgICB0aGlzLmhpZGVMaXN0Tm9kZXMgPSB0aGlzLmhpZGVMaXN0Tm9kZXMuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICAgIHJldHVybiBpdGVtLnRpdGxlICE9PSBldmVudC5ub2RlLm9yaWdpbi50aXRsZTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBpZiAodGhpcy5oaWRlTGlzdE5vZGVzLmxlbmd0aCA9PT0gMCAmJiB0aGlzLnRhYmxlQ2FjaGVPcHRpb24gJiYgdGhpcy50YWJsZUNhY2hlT3B0aW9uLmNvbHMpIHtcbiAgICAgIC8vICAgdGhpcy5oaWRlTGlzdE5vZGVzID0gdGhpcy5nZXRIaWRlTGlzdE5vZGVzKCk7XG4gICAgICAvLyB9XG4gICAgICBsZXQgdGVtcG9yYXJ5Tm9kZUxpc3QgPSB0aGlzLmhpZGVMaXN0Tm9kZXMuc2xpY2UoMCk7XG4gICAgICB0aGlzLm5vd0xpc3ROb2Rlcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICBpZiAoaXRlbS50aXRsZSA9PT0gZXZlbnQubm9kZS5vcmlnaW4udGl0bGUpIHtcbiAgICAgICAgICBjb25zdCBpbm5lckl0ZW0gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGl0ZW0pKTtcbiAgICAgICAgICBpbm5lckl0ZW0uY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICAgIHRlbXBvcmFyeU5vZGVMaXN0LnB1c2goaW5uZXJJdGVtKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLmhpZGVMaXN0Tm9kZXMgPSB0ZW1wb3JhcnlOb2RlTGlzdDtcblxuICAgICAgLy8g5Li65LqG6Ziy5q2i5pyq6YCJ5oup55qE5pWw57uE6aG65bqP5Zug5Li6cHVzaOaWueazleiAjOaUueWPmO+8jOmAmui/h+WIneWni+aVsOaNruiOt+WPluaYvuekuueahOWtl+auteWIl+ihqFxuICAgICAgdGhpcy5ub3dMaXN0Tm9kZXMgPSB0aGlzLm5vd0xpc3ROb2Rlcy5maWx0ZXIoKGl0ZW0pID0+IHtcbiAgICAgICAgcmV0dXJuIGl0ZW0udGl0bGUgIT09IGV2ZW50Lm5vZGUub3JpZ2luLnRpdGxlO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8g6Ziy5q2i5pyq6YCJ5oup55qE5pWw57uE6aG65bqP5Zug5Li6cHVzaOaWueazleiAjOaUueWPmO+8jOS7juWIneWni+aVsOaNruiOt+WPlumakOiXj+acquaYvuekuueahOWtl+auteWIl+ihqFxuICBnZXRIaWRlTGlzdE5vZGVzKCk6IEFycmF5PFRyZWVHcmlkPiB7XG4gICAgbGV0IHRlbXBvcmFyeU5vZGVMaXN0OiBBcnJheTxUcmVlR3JpZD4gPSBbXTtcbiAgICAvLyDku450YWJsZUNvbHNDYWNoZemHjOmdouaJvuayoeacieWcqHN0b3JhZ2Xph4zpnaLlh7rnjrDnmoTlrZfmrrUs57uE5oiQaGlkZUxpc3RcbiAgICB0aGlzLnRhYmxlQ29sc0NhY2hlLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGlmICghdGhpcy50YWJsZUNhY2hlT3B0aW9uLmNvbHMuaW5jbHVkZXMoaXRlbS50aXRsZSkpIHtcbiAgICAgICAgbGV0IG5vZGVJdGVtOiBUcmVlR3JpZCA9IG5ldyBUcmVlR3JpZCgpO1xuICAgICAgICBub2RlSXRlbS50aXRsZSA9IGl0ZW0udGl0bGU7XG4gICAgICAgIG5vZGVJdGVtLmtleSA9IGl0ZW0udGl0bGU7XG4gICAgICAgIG5vZGVJdGVtLmRpc2FibGVkID0gaXRlbS5maXhlZCA/IHRydWUgOiBmYWxzZTtcbiAgICAgICAgbm9kZUl0ZW0uY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICB0ZW1wb3JhcnlOb2RlTGlzdC5wdXNoKG5vZGVJdGVtKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gdGVtcG9yYXJ5Tm9kZUxpc3Q7XG4gIH1cblxuICBkZWFsQ29scygpIHtcbiAgICBpZiAoIXRoaXMudGFibGVDb2xzWzBdLm1pbldpZHRoKSB7XG4gICAgICB0aGlzLnRhYmxlQ29scy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICBjb25zdCBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICBzcGFuLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcbiAgICAgICAgc3Bhbi5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgICAgIHNwYW4uc3R5bGUud2hpdGVTcGFjZSA9ICdub3dyYXAnO1xuICAgICAgICBzcGFuLnN0eWxlLmZvbnRTaXplID0gJzEycHgnO1xuICAgICAgICBzcGFuLnN0eWxlLmRpc3BsYXkgPSAnaW5saW5lLWJsb2NrJzsgLy8g5bCG5qC35byP5L+u5pS55Li6IGlubGluZS1ibG9ja1xuICAgICAgICBzcGFuLmlubmVyVGV4dCA9IGl0ZW0udGl0bGU7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc3Bhbik7XG4gICAgICAgIGl0ZW0ubWluV2lkdGggPSBzcGFuLm9mZnNldFdpZHRoICsgMTY7XG4gICAgICAgIHNwYW4uc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChzcGFuKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICAvLyDlpITnkIblt6blj7PlkLjpmYTnmoTmlbDmja7lnKjmlbDnu4TkuK3nmoTkvY3nva5cbiAgICBjb25zdCBsZWZ0Rml4ZWRDb2xzID0gdGhpcy50YWJsZUNvbHMuZmlsdGVyKGNvbCA9PiBjb2wuZml4ZWQgPT09ICdsZWZ0Jyk7XG4gICAgY29uc3QgcmlnaHRGaXhlZENvbHMgPSB0aGlzLnRhYmxlQ29scy5maWx0ZXIoY29sID0+IGNvbC5maXhlZCA9PT0gJ3JpZ2h0Jyk7XG4gICAgY29uc3Qgbm9ybWFsQ29scyA9IHRoaXMudGFibGVDb2xzLmZpbHRlcihjb2wgPT4gIWNvbC5maXhlZCk7XG4gICAgY29uc3QgcmVzdWx0Q29scyA9IGxlZnRGaXhlZENvbHMuY29uY2F0KG5vcm1hbENvbHMpLmNvbmNhdChyaWdodEZpeGVkQ29scyk7XG4gICAgdGhpcy50YWJsZUNvbHMgPSByZXN1bHRDb2xzO1xuICAgIGlmICghdGhpcy50YWJsZUNvbHNDYWNoZSB8fCB0aGlzLnRhYmxlQ29sc0NhY2hlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgLy8g57yT5a2Y5LiA5LiL6KGo5qC855qE5pWw5o2uXG4gICAgICB0aGlzLnRhYmxlQ29sc0NhY2hlID0gWy4uLnRoaXMudGFibGVDb2xzXTtcbiAgICB9XG4gIH1cblxuICBzYXZlVGFibGVDYWNoZU9wdGlvbigpIHtcbiAgICB0aGlzLmxvY2FsZm9yYWdlLnNldEl0ZW0oJ2hkLXRhYmxlXycgKyB0aGlzLnVzZXJTZXNzaW9uLnVzZXJDb2RlICsgJ18nICsgdGhpcy5sb2NhbHRpb25UbXAgKyAnXycgKyB0aGlzLnV1aWQsIHRoaXMudGFibGVDYWNoZU9wdGlvbik7XG4gIH1cblxuICBqdWRnZVJlcGVhdENvbHMoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRhYmxlQ29scy5sZW5ndGg7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgdGhpcy50YWJsZUNvbHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgaWYgKHRoaXMudGFibGVDb2xzW2ldLnRpdGxlID09PSB0aGlzLnRhYmxlQ29sc1tqXS50aXRsZSkge1xuICAgICAgICAgIHRocm93IGBoZC10YWJsZee7hOS7tuS4reWIl+WQjSAke3RoaXMudGFibGVDb2xzW2ldLnRpdGxlfSDph43lpI1gO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgb25SZXNpemUoeyB3aWR0aCB9OiBOelJlc2l6ZUV2ZW50LCBjb2w6IEhkVGFibGVDb2x1bW4pOiB2b2lkIHtcbiAgICBsZXQgdGVtcFdpZHRoID0gMDtcbiAgICBpZiAod2lkdGggPiBjb2wubWluV2lkdGgpIHtcbiAgICAgIHRlbXBXaWR0aCA9IHdpZHRoO1xuICAgIH0gZWxzZSB7XG4gICAgICB0ZW1wV2lkdGggPSBjb2wubWluV2lkdGg7XG4gICAgfVxuICAgIHRoaXMudGFibGVDYWNoZU9wdGlvbi5jb2xXaWR0aHMuc2V0KGNvbC50aXRsZSwgdGVtcFdpZHRoKTtcbiAgICB0aGlzLnNhdmVUYWJsZUNhY2hlT3B0aW9uKCk7XG4gICAgdGhpcy50YWJsZUNvbHMgPSB0aGlzLnRhYmxlQ29scy5tYXAoZSA9PiAoZS50aXRsZSA9PT0gY29sLnRpdGxlID8geyAuLi5lLCB3aWR0aDogdGVtcFdpZHRoIH0gOiBlKSk7XG4gICAgdGhpcy5kZWFsU2Nyb2xsKCk7XG4gIH1cblxuICBkZWFsT3BlcmF0ZUJ0bigpIHtcbiAgICBsZXQgb3BlcmF0ZUNvbCA9IHRoaXMudGFibGVDb2xzLmZpbmQoY29sID0+IGNvbC50aXRsZSA9PT0gJ+aTjeS9nCcpIHx8IG51bGw7XG4gICAgaWYgKG9wZXJhdGVDb2wpIHtcbiAgICAgIGxldCB0ZXh0U3RyID0gJyc7XG4gICAgICBvcGVyYXRlQ29sLmJ0bkxpc3QuZm9yRWFjaChidG4gPT4ge1xuICAgICAgICBpZiAoIWJ0bi5pc1JlcGVhdCkge1xuICAgICAgICAgIHRleHRTdHIgKz0gYnRuLm5hbWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgc3Bhbi5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XG4gICAgICBzcGFuLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICAgIHNwYW4uc3R5bGUud2hpdGVTcGFjZSA9ICdub3dyYXAnO1xuICAgICAgc3Bhbi5zdHlsZS5mb250U2l6ZSA9ICcxMnB4JztcbiAgICAgIHNwYW4uc3R5bGUuZGlzcGxheSA9ICdpbmxpbmUtYmxvY2snOyAvLyDlsIbmoLflvI/kv67mlLnkuLogaW5saW5lLWJsb2NrXG4gICAgICBzcGFuLmlubmVyVGV4dCA9IHRleHRTdHI7XG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNwYW4pO1xuICAgICAgb3BlcmF0ZUNvbC53aWR0aCA9IHNwYW4ub2Zmc2V0V2lkdGggKyAob3BlcmF0ZUNvbC5idG5MaXN0LmZpbHRlcihpdGVtID0+ICFpdGVtLmlzUmVwZWF0KS5sZW5ndGggLSAxKSAqIDQgKyAxNjtcbiAgICAgIHNwYW4uc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoc3Bhbik7XG4gICAgfVxuICB9XG5cbiAgdHJpZ2dlckV2ZW50KGZuOiBhbnksIGV2ZW50OiBhbnkpIHtcbiAgICBpZiAoZm4pIHtcbiAgICAgIGZuKGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBkZWFsU2Nyb2xsKCkge1xuICAgIGxldCBjb2xXaWR0aCA9IDA7XG4gICAgaWYgKHRoaXMuc2hvd1NlbGVjdGVkKSB7XG4gICAgICBjb2xXaWR0aCArPSA0MDtcbiAgICB9XG4gICAgdGhpcy50YWJsZUNvbHMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGlmICghaXRlbS53aWR0aCkge1xuICAgICAgICBpdGVtLndpZHRoID0gQ29sV2lkdGguZml4Q29sV2lkdGg7XG4gICAgICB9XG4gICAgICBpZiAoaXRlbS5pc1Nob3cpIHtcbiAgICAgICAgaXRlbS5maXhlZFdpZHRoID0gY29sV2lkdGg7XG4gICAgICAgIGNvbFdpZHRoICs9IGl0ZW0ud2lkdGg7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy50YWJsZVRvdGFsKSB7XG4gICAgICB0aGlzLnNjcm9sbCA9IHtcbiAgICAgICAgeDogJzFweCcsXG4gICAgICAgIHk6ICdjYWxjKDEwMHZoIC0gMTgwcHgpJ1xuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zY3JvbGwgPSB7XG4gICAgICAgIHg6ICcxcHgnLFxuICAgICAgICB5OiAnY2FsYygxMDB2aCAtIDE0MHB4KSdcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgaXNUZXh0T3ZlcmZsb3codGV4dDogc3RyaW5nLCBtYXhXaWR0aDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY2FjaGVkV2lkdGggPSB0aGlzLnRleHRXaWR0aENhY2hlW3RleHRdO1xuICAgIGlmIChjYWNoZWRXaWR0aCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gY2FjaGVkV2lkdGggKyAxNSA+PSBtYXhXaWR0aDtcbiAgICB9XG5cbiAgICBjb25zdCBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgIHNwYW4uc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xuICAgIHNwYW4uc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgIHNwYW4uc3R5bGUud2hpdGVTcGFjZSA9ICdub3dyYXAnO1xuICAgIHNwYW4uc3R5bGUuZm9udFNpemUgPSAnMTJweCc7XG4gICAgc3Bhbi5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZS1ibG9jayc7IC8vIOWwhuagt+W8j+S/ruaUueS4uiBpbmxpbmUtYmxvY2tcbiAgICBzcGFuLmlubmVyVGV4dCA9IHRleHQ7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzcGFuKTtcbiAgICBjb25zdCBpc092ZXJmbG93ID0gc3Bhbi5vZmZzZXRXaWR0aCArIDE1ID49IG1heFdpZHRoO1xuICAgIHRoaXMudGV4dFdpZHRoQ2FjaGVbdGV4dF0gPSBzcGFuLm9mZnNldFdpZHRoO1xuICAgIHNwYW4uc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHNwYW4pO1xuICAgIHJldHVybiBpc092ZXJmbG93O1xuICB9XG5cbiAgLy8g6KGo5qC85Yu+6YCJ6YC76L6RXG4gIGN1cnJlbnRQYWdlRGF0YUNoYW5nZSgkZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMubGlzdE9mRGlzcGxheURhdGEgPSAkZXZlbnQ7XG4gICAgdGhpcy5yZWZyZXNoU3RhdHVzKCk7XG4gICAgdGhpcy5yZXNldFN0YXR1cygpO1xuICB9XG5cbiAgc2VhcmNoKHJlc2V0OiBib29sZWFuKSB7XG4gICAgdGhpcy50YWJsZUNhY2hlT3B0aW9uLnBhZ2VTaXplID0gdGhpcy50YWJsZVBhZ2VTaXplO1xuICAgIHRoaXMuc2F2ZVRhYmxlQ2FjaGVPcHRpb24oKTtcbiAgICBpZiAocmVzZXQpIHtcbiAgICAgIHRoaXMudGFibGVQYWdlU2l6ZUNoYW5nZS5lbWl0KHRoaXMudGFibGVQYWdlU2l6ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGFibGVQYWdlSW5kZXhDaGFuZ2UuZW1pdCh0aGlzLnRhYmxlUGFnZUluZGV4KTtcbiAgICAgIC8vIOinpuWPkeeItue7hOS7tuafpeivouS6i+S7tlxuICAgICAgdGhpcy50YWJsZVNlYXJjaEV2ZW50LmVtaXQocmVzZXQpO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0U3RhdHVzKCkge1xuICAgIHRoaXMuaXNBbGxEaXNwbGF5RGF0YUNoZWNrZWQgPSBmYWxzZTtcbiAgICB0aGlzLmlzSW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xuICAgIHRoaXMubWFwT2ZDaGVja2VkSWQgPSB7fTtcbiAgICB0aGlzLm1hcE9mQ2hlY2tMaXN0ID0ge307XG4gICAgdGhpcy5zZWxlY3RFdmVudC5lbWl0KFtdKTtcbiAgfVxuXG4gIHJlZnJlc2hTdGF0dXMoZXZlbnQ6IGJvb2xlYW4gPSBmYWxzZSwgZGF0YTogYW55ID0gbnVsbCk6IHZvaWQge1xuICAgIGlmIChldmVudCAmJiBkYXRhKSB7XG4gICAgICAhdGhpcy5tYXBPZkNoZWNrTGlzdFtkYXRhW3RoaXMuc2VsZWN0RmllbGRdXSAmJiAodGhpcy5tYXBPZkNoZWNrTGlzdFtkYXRhW3RoaXMuc2VsZWN0RmllbGRdXSA9IGRhdGEpO1xuICAgIH0gZWxzZSBpZiAoIWV2ZW50ICYmIGRhdGEpIHtcbiAgICAgIHRoaXMubWFwT2ZDaGVja0xpc3RbZGF0YVt0aGlzLnNlbGVjdEZpZWxkXV0gJiYgZGVsZXRlIHRoaXMubWFwT2ZDaGVja0xpc3RbZGF0YVt0aGlzLnNlbGVjdEZpZWxkXV07XG4gICAgfVxuICAgIHRoaXMuaXNBbGxEaXNwbGF5RGF0YUNoZWNrZWQgPSB0aGlzLmxpc3RPZkRpc3BsYXlEYXRhLmV2ZXJ5KGl0ZW0gPT4gdGhpcy5tYXBPZkNoZWNrZWRJZFtpdGVtW3RoaXMuc2VsZWN0RmllbGRdXSk7XG4gICAgdGhpcy5pc0luZGV0ZXJtaW5hdGUgPVxuICAgICAgdGhpcy5saXN0T2ZEaXNwbGF5RGF0YS5zb21lKGl0ZW0gPT4gdGhpcy5tYXBPZkNoZWNrZWRJZFtpdGVtW3RoaXMuc2VsZWN0RmllbGRdXSkgJiYgIXRoaXMuaXNBbGxEaXNwbGF5RGF0YUNoZWNrZWQ7XG4gICAgLy8g6Kem5Y+Rc2VsZWN05LqL5Lu2XG4gICAgaWYgKHRoaXMuc2VsZWN0RXZlbnQpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkTGlzdDogQXJyYXk8YW55PiA9IE9iamVjdC52YWx1ZXModGhpcy5tYXBPZkNoZWNrTGlzdCk7XG4gICAgICB0aGlzLnNlbGVjdEV2ZW50LmVtaXQoc2VsZWN0ZWRMaXN0KTtcbiAgICB9XG4gICAgLy8g5aaC5p6c5pWw5o2u5Li656m677yM5YiZ5riF56m65Yu+6YCJ5qCH6K+GXG4gICAgaWYgKHRoaXMudGFibGVEYXRhLmNvbnRlbnQubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmlzQWxsRGlzcGxheURhdGFDaGVja2VkID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgY2hlY2tBbGwodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RPZkRpc3BsYXlEYXRhLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgIXRoaXMubWFwT2ZDaGVja0xpc3RbaXRlbVt0aGlzLnNlbGVjdEZpZWxkXV0gJiYgKHRoaXMubWFwT2ZDaGVja0xpc3RbaXRlbVt0aGlzLnNlbGVjdEZpZWxkXV0gPSBpdGVtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubWFwT2ZDaGVja0xpc3RbaXRlbVt0aGlzLnNlbGVjdEZpZWxkXV0gJiYgZGVsZXRlIHRoaXMubWFwT2ZDaGVja0xpc3RbaXRlbVt0aGlzLnNlbGVjdEZpZWxkXV07XG4gICAgICB9XG5cbiAgICAgIHRoaXMubWFwT2ZDaGVja2VkSWRbaXRlbVt0aGlzLnNlbGVjdEZpZWxkXV0gPSB2YWx1ZTtcbiAgICB9KTtcbiAgICB0aGlzLnJlZnJlc2hTdGF0dXMoKTtcbiAgfVxuXG4gIGp1ZGdlQ29sRW1wdHkoc3RyOiBhbnkpIHtcbiAgICBpZiAoc3RyIHx8IHN0ciA9PT0gMCkge1xuICAgICAgcmV0dXJuIHN0cjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICc856m6Pic7XG4gICAgfVxuICB9XG59XG4iXX0=