ng-zorro-antd-extension 18.1.5 → 19.0.1

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 (253) hide show
  1. package/README.md +2 -1
  2. package/acl/nzx-acl.directive.d.ts +1 -1
  3. package/acl/nzx-acl.module.d.ts +1 -2
  4. package/blank-field/blank-field.component.d.ts +1 -1
  5. package/blank-field/blank-field.module.d.ts +1 -2
  6. package/checkbox/checkbox-group.component.d.ts +5 -16
  7. package/checkbox/checkbox.module.d.ts +1 -4
  8. package/configurable-query/configurable-query-item/configurable-query-item.component.d.ts +1 -1
  9. package/configurable-query/configurable-query.component.d.ts +1 -1
  10. package/configurable-query/configurable-query.module.d.ts +3 -21
  11. package/configurable-query/control.directive.d.ts +1 -1
  12. package/configurable-query/controls/abstract.control.d.ts +2 -2
  13. package/configurable-query/controls/date-picker.control.d.ts +1 -1
  14. package/configurable-query/controls/input.control.d.ts +1 -1
  15. package/configurable-query/controls/range-picker.control.d.ts +1 -1
  16. package/configurable-query/controls/select.control.d.ts +1 -1
  17. package/configurable-query/controls/template.control.d.ts +1 -1
  18. package/dynamic-form/controls/abstract.control.d.ts +1 -1
  19. package/dynamic-form/controls/date-picker.control.d.ts +1 -1
  20. package/dynamic-form/controls/input.control.d.ts +1 -1
  21. package/dynamic-form/controls/range-picker.control.d.ts +1 -1
  22. package/dynamic-form/controls/select.control.d.ts +1 -1
  23. package/dynamic-form/controls/template.control.d.ts +1 -1
  24. package/dynamic-form/dynamic-form-item/dynamic-form-item.component.d.ts +1 -1
  25. package/dynamic-form/dynamic-form.component.d.ts +1 -1
  26. package/dynamic-form/dynamic-form.module.d.ts +1 -7
  27. package/dynamic-form/wrapper/control/abstract-control-wrapper.d.ts +1 -1
  28. package/dynamic-form/wrapper/control/built-in-control-wrapper.d.ts +1 -1
  29. package/dynamic-form/wrapper/item/abstract-item-wrapper.d.ts +1 -1
  30. package/dynamic-form/wrapper/item/built-in-item-wrapper.d.ts +1 -1
  31. package/dynamic-form/wrapper/label/abstract-label-wrapper.d.ts +1 -1
  32. package/dynamic-form/wrapper/label/built-in-label-wrapper.d.ts +1 -1
  33. package/editable/editable.component.d.ts +1 -1
  34. package/editable/editable.module.d.ts +1 -6
  35. package/fesm2022/ng-zorro-antd-extension-acl.mjs +11 -13
  36. package/fesm2022/ng-zorro-antd-extension-acl.mjs.map +1 -1
  37. package/fesm2022/ng-zorro-antd-extension-blank-field.mjs +19 -17
  38. package/fesm2022/ng-zorro-antd-extension-blank-field.mjs.map +1 -1
  39. package/fesm2022/ng-zorro-antd-extension-checkbox.mjs +28 -37
  40. package/fesm2022/ng-zorro-antd-extension-checkbox.mjs.map +1 -1
  41. package/fesm2022/ng-zorro-antd-extension-configurable-query.mjs +78 -116
  42. package/fesm2022/ng-zorro-antd-extension-configurable-query.mjs.map +1 -1
  43. package/fesm2022/ng-zorro-antd-extension-core-config.mjs +3 -3
  44. package/fesm2022/ng-zorro-antd-extension-core-config.mjs.map +1 -1
  45. package/fesm2022/ng-zorro-antd-extension-dynamic-form.mjs +86 -82
  46. package/fesm2022/ng-zorro-antd-extension-dynamic-form.mjs.map +1 -1
  47. package/fesm2022/ng-zorro-antd-extension-editable.mjs +23 -33
  48. package/fesm2022/ng-zorro-antd-extension-editable.mjs.map +1 -1
  49. package/fesm2022/ng-zorro-antd-extension-jigsaw.mjs +9 -10
  50. package/fesm2022/ng-zorro-antd-extension-jigsaw.mjs.map +1 -1
  51. package/fesm2022/ng-zorro-antd-extension-pipes.mjs +26 -26
  52. package/fesm2022/ng-zorro-antd-extension-pipes.mjs.map +1 -1
  53. package/fesm2022/ng-zorro-antd-extension-print.mjs +23 -21
  54. package/fesm2022/ng-zorro-antd-extension-print.mjs.map +1 -1
  55. package/fesm2022/ng-zorro-antd-extension-simple-table.mjs +22 -22
  56. package/fesm2022/ng-zorro-antd-extension-simple-table.mjs.map +1 -1
  57. package/fesm2022/ng-zorro-antd-extension-table-adaptor.mjs +11 -12
  58. package/fesm2022/ng-zorro-antd-extension-table-adaptor.mjs.map +1 -1
  59. package/fesm2022/ng-zorro-antd-extension-table-form.mjs +36 -53
  60. package/fesm2022/ng-zorro-antd-extension-table-form.mjs.map +1 -1
  61. package/fesm2022/ng-zorro-antd-extension-table-select.mjs +38 -40
  62. package/fesm2022/ng-zorro-antd-extension-table-select.mjs.map +1 -1
  63. package/fesm2022/ng-zorro-antd-extension-timer-button.mjs +8 -10
  64. package/fesm2022/ng-zorro-antd-extension-timer-button.mjs.map +1 -1
  65. package/fesm2022/ng-zorro-antd-extension-trim.mjs +8 -9
  66. package/fesm2022/ng-zorro-antd-extension-trim.mjs.map +1 -1
  67. package/fesm2022/ng-zorro-antd-extension-util.mjs.map +1 -1
  68. package/fesm2022/ng-zorro-antd-extension-wang-editor.mjs +11 -13
  69. package/fesm2022/ng-zorro-antd-extension-wang-editor.mjs.map +1 -1
  70. package/jigsaw/jigsaw.component.d.ts +1 -1
  71. package/jigsaw/jigsaw.module.d.ts +1 -3
  72. package/package.json +9 -51
  73. package/pipes/map.pipe.d.ts +1 -1
  74. package/pipes/pipes.module.d.ts +1 -1
  75. package/pipes/safe-html.pipe.d.ts +1 -1
  76. package/pipes/safe-null.pipe.d.ts +1 -1
  77. package/pipes/safe-resource-url.pipe.d.ts +1 -1
  78. package/pipes/safe-script.pipe.d.ts +1 -1
  79. package/pipes/safe-style.pipe.d.ts +1 -1
  80. package/pipes/safe-url.pipe.d.ts +1 -1
  81. package/print/nzx-print-content.directive.d.ts +1 -1
  82. package/print/nzx-print-v.component.d.ts +1 -1
  83. package/print/nzx-print.component.d.ts +1 -1
  84. package/print/nzx-print.directive.d.ts +1 -1
  85. package/print/nzx-print.module.d.ts +1 -4
  86. package/schematics/ng-add/index.js +1 -2
  87. package/schematics/ng-add/index.js.map +1 -1
  88. package/simple-table/directive/expand.directive.d.ts +1 -1
  89. package/simple-table/directive/td.directive.d.ts +1 -1
  90. package/simple-table/directive/th.directive.d.ts +1 -1
  91. package/simple-table/simple-table.component.d.ts +1 -1
  92. package/simple-table/simple-table.module.d.ts +1 -3
  93. package/table-adaptor/page-table-basic.d.ts +1 -1
  94. package/table-adaptor/table-adaptor.directive.d.ts +1 -1
  95. package/table-adaptor/table-adaptor.module.d.ts +1 -1
  96. package/table-form/directive/table-expand.directive.d.ts +1 -1
  97. package/table-form/directive/table-td.directive.d.ts +1 -1
  98. package/table-form/directive/table-th.directive.d.ts +1 -1
  99. package/table-form/table-form.component.d.ts +1 -1
  100. package/table-form/table-form.module.d.ts +1 -10
  101. package/table-select/abstract-table-select.d.ts +2 -2
  102. package/table-select/key.directive.d.ts +1 -1
  103. package/table-select/nzx-table-select.module.d.ts +1 -6
  104. package/table-select/page-table-select/page-table-select.component.d.ts +1 -1
  105. package/table-select/table-select/table-select.component.d.ts +1 -1
  106. package/timer-button/timer-button.directive.d.ts +1 -1
  107. package/timer-button/timer-button.module.d.ts +1 -2
  108. package/trim/trim.directive.d.ts +1 -1
  109. package/trim/trim.module.d.ts +1 -1
  110. package/wang-editor/wang-editor.component.d.ts +1 -1
  111. package/wang-editor/wang-editor.module.d.ts +1 -2
  112. package/wang-editor/wang-toolbar.component.d.ts +1 -1
  113. package/esm2022/acl/ng-zorro-antd-extension-acl.mjs +0 -5
  114. package/esm2022/acl/nzx-acl.directive.mjs +0 -80
  115. package/esm2022/acl/nzx-acl.module.mjs +0 -25
  116. package/esm2022/acl/nzx-acl.service.mjs +0 -45
  117. package/esm2022/acl/public-api.mjs +0 -8
  118. package/esm2022/blank-field/blank-field.component.mjs +0 -52
  119. package/esm2022/blank-field/blank-field.module.mjs +0 -18
  120. package/esm2022/blank-field/ng-zorro-antd-extension-blank-field.mjs +0 -5
  121. package/esm2022/blank-field/public-api.mjs +0 -7
  122. package/esm2022/checkbox/checkbox-group.component.mjs +0 -108
  123. package/esm2022/checkbox/checkbox.module.mjs +0 -20
  124. package/esm2022/checkbox/ng-zorro-antd-extension-checkbox.mjs +0 -5
  125. package/esm2022/checkbox/public-api.mjs +0 -7
  126. package/esm2022/configurable-query/configurable-query-item/configurable-query-item.component.mjs +0 -86
  127. package/esm2022/configurable-query/configurable-query.component.mjs +0 -309
  128. package/esm2022/configurable-query/configurable-query.module.mjs +0 -111
  129. package/esm2022/configurable-query/control.directive.mjs +0 -18
  130. package/esm2022/configurable-query/controls/abstract.control.mjs +0 -20
  131. package/esm2022/configurable-query/controls/date-picker.control.mjs +0 -37
  132. package/esm2022/configurable-query/controls/input.control.mjs +0 -36
  133. package/esm2022/configurable-query/controls/range-picker.control.mjs +0 -35
  134. package/esm2022/configurable-query/controls/select.control.mjs +0 -51
  135. package/esm2022/configurable-query/controls/template.control.mjs +0 -33
  136. package/esm2022/configurable-query/ng-zorro-antd-extension-configurable-query.mjs +0 -5
  137. package/esm2022/configurable-query/public-api.mjs +0 -7
  138. package/esm2022/configurable-query/query-config.service.mjs +0 -68
  139. package/esm2022/configurable-query/type.mjs +0 -2
  140. package/esm2022/core/config/config.mjs +0 -6
  141. package/esm2022/core/config/config.service.mjs +0 -84
  142. package/esm2022/core/config/ng-zorro-antd-extension-core-config.mjs +0 -5
  143. package/esm2022/core/config/public-api.mjs +0 -3
  144. package/esm2022/dynamic-form/config/dynamic-form-config.mjs +0 -47
  145. package/esm2022/dynamic-form/controls/abstract.control.mjs +0 -17
  146. package/esm2022/dynamic-form/controls/date-picker.control.mjs +0 -20
  147. package/esm2022/dynamic-form/controls/input.control.mjs +0 -15
  148. package/esm2022/dynamic-form/controls/range-picker.control.mjs +0 -15
  149. package/esm2022/dynamic-form/controls/select.control.mjs +0 -49
  150. package/esm2022/dynamic-form/controls/template.control.mjs +0 -30
  151. package/esm2022/dynamic-form/dynamic-form-item/dynamic-form-item.component.mjs +0 -31
  152. package/esm2022/dynamic-form/dynamic-form.component.mjs +0 -45
  153. package/esm2022/dynamic-form/dynamic-form.module.mjs +0 -72
  154. package/esm2022/dynamic-form/ng-zorro-antd-extension-dynamic-form.mjs +0 -5
  155. package/esm2022/dynamic-form/public-api.mjs +0 -8
  156. package/esm2022/dynamic-form/wrapper/control/abstract-control-wrapper.mjs +0 -30
  157. package/esm2022/dynamic-form/wrapper/control/built-in-control-wrapper.mjs +0 -32
  158. package/esm2022/dynamic-form/wrapper/item/abstract-item-wrapper.mjs +0 -44
  159. package/esm2022/dynamic-form/wrapper/item/built-in-item-wrapper.mjs +0 -27
  160. package/esm2022/dynamic-form/wrapper/label/abstract-label-wrapper.mjs +0 -10
  161. package/esm2022/dynamic-form/wrapper/label/built-in-label-wrapper.mjs +0 -17
  162. package/esm2022/editable/editable.component.mjs +0 -140
  163. package/esm2022/editable/editable.module.mjs +0 -36
  164. package/esm2022/editable/ng-zorro-antd-extension-editable.mjs +0 -5
  165. package/esm2022/editable/public-api.mjs +0 -3
  166. package/esm2022/i18n/languages/en_US.mjs +0 -10
  167. package/esm2022/i18n/languages/zh_CN.mjs +0 -10
  168. package/esm2022/i18n/ng-zorro-antd-extension-i18n.mjs +0 -5
  169. package/esm2022/i18n/nz-i18n.interface.mjs +0 -2
  170. package/esm2022/i18n/public-api.mjs +0 -4
  171. package/esm2022/jigsaw/jigsaw.component.mjs +0 -257
  172. package/esm2022/jigsaw/jigsaw.module.mjs +0 -19
  173. package/esm2022/jigsaw/ng-zorro-antd-extension-jigsaw.mjs +0 -5
  174. package/esm2022/jigsaw/public-api.mjs +0 -7
  175. package/esm2022/ng-zorro-antd-extension.mjs +0 -5
  176. package/esm2022/pipes/map.pipe.mjs +0 -24
  177. package/esm2022/pipes/ng-zorro-antd-extension-pipes.mjs +0 -5
  178. package/esm2022/pipes/pipes.module.mjs +0 -50
  179. package/esm2022/pipes/public-api.mjs +0 -13
  180. package/esm2022/pipes/safe-html.pipe.mjs +0 -20
  181. package/esm2022/pipes/safe-null.pipe.mjs +0 -30
  182. package/esm2022/pipes/safe-resource-url.pipe.mjs +0 -20
  183. package/esm2022/pipes/safe-script.pipe.mjs +0 -20
  184. package/esm2022/pipes/safe-style.pipe.mjs +0 -20
  185. package/esm2022/pipes/safe-url.pipe.mjs +0 -34
  186. package/esm2022/print/ng-zorro-antd-extension-print.mjs +0 -5
  187. package/esm2022/print/nzx-print-content.directive.mjs +0 -22
  188. package/esm2022/print/nzx-print-v.component.mjs +0 -312
  189. package/esm2022/print/nzx-print.component.mjs +0 -190
  190. package/esm2022/print/nzx-print.directive.mjs +0 -92
  191. package/esm2022/print/nzx-print.module.mjs +0 -39
  192. package/esm2022/print/public-api.mjs +0 -10
  193. package/esm2022/public-api.mjs +0 -5
  194. package/esm2022/simple-table/directive/expand.directive.mjs +0 -16
  195. package/esm2022/simple-table/directive/td.directive.mjs +0 -18
  196. package/esm2022/simple-table/directive/th.directive.mjs +0 -19
  197. package/esm2022/simple-table/ng-zorro-antd-extension-simple-table.mjs +0 -5
  198. package/esm2022/simple-table/public-api.mjs +0 -10
  199. package/esm2022/simple-table/simple-table.component.mjs +0 -229
  200. package/esm2022/simple-table/simple-table.module.mjs +0 -38
  201. package/esm2022/table-adaptor/ng-zorro-antd-extension-table-adaptor.mjs +0 -5
  202. package/esm2022/table-adaptor/page-table-basic.mjs +0 -22
  203. package/esm2022/table-adaptor/public-api.mjs +0 -8
  204. package/esm2022/table-adaptor/table-adaptor.directive.mjs +0 -173
  205. package/esm2022/table-adaptor/table-adaptor.module.mjs +0 -17
  206. package/esm2022/table-form/directive/table-expand.directive.mjs +0 -18
  207. package/esm2022/table-form/directive/table-td.directive.mjs +0 -18
  208. package/esm2022/table-form/directive/table-th.directive.mjs +0 -20
  209. package/esm2022/table-form/ng-zorro-antd-extension-table-form.mjs +0 -5
  210. package/esm2022/table-form/public-api.mjs +0 -11
  211. package/esm2022/table-form/table-form.component.mjs +0 -370
  212. package/esm2022/table-form/table-form.module.mjs +0 -71
  213. package/esm2022/table-form/type.mjs +0 -2
  214. package/esm2022/table-select/abstract-table-select.mjs +0 -140
  215. package/esm2022/table-select/key.directive.mjs +0 -21
  216. package/esm2022/table-select/ng-zorro-antd-extension-table-select.mjs +0 -5
  217. package/esm2022/table-select/nzx-table-select.module.mjs +0 -50
  218. package/esm2022/table-select/page-table-select/page-table-select.component.mjs +0 -58
  219. package/esm2022/table-select/public-api.mjs +0 -11
  220. package/esm2022/table-select/table-select/table-select.component.mjs +0 -39
  221. package/esm2022/table-select/type.mjs +0 -2
  222. package/esm2022/timer-button/ng-zorro-antd-extension-timer-button.mjs +0 -5
  223. package/esm2022/timer-button/public-api.mjs +0 -7
  224. package/esm2022/timer-button/timer-button.directive.mjs +0 -69
  225. package/esm2022/timer-button/timer-button.module.mjs +0 -18
  226. package/esm2022/trim/ng-zorro-antd-extension-trim.mjs +0 -5
  227. package/esm2022/trim/public-api.mjs +0 -7
  228. package/esm2022/trim/trim.directive.mjs +0 -123
  229. package/esm2022/trim/trim.module.mjs +0 -17
  230. package/esm2022/types/common.mjs +0 -2
  231. package/esm2022/types/ng-zorro-antd-extension-types.mjs +0 -5
  232. package/esm2022/types/public-api.mjs +0 -6
  233. package/esm2022/util/lib/cloneDeep.mjs +0 -49
  234. package/esm2022/util/lib/fileUtil.mjs +0 -51
  235. package/esm2022/util/lib/getElementByTag.mjs +0 -38
  236. package/esm2022/util/lib/isArray.mjs +0 -17
  237. package/esm2022/util/lib/isDate.mjs +0 -4
  238. package/esm2022/util/lib/isEmpty.mjs +0 -19
  239. package/esm2022/util/lib/isNumber.mjs +0 -12
  240. package/esm2022/util/lib/isObject.mjs +0 -10
  241. package/esm2022/util/lib/isString.mjs +0 -11
  242. package/esm2022/util/lib/toNumber.mjs +0 -18
  243. package/esm2022/util/lib/toString.mjs +0 -16
  244. package/esm2022/util/lib/trimObject.mjs +0 -15
  245. package/esm2022/util/lib/updateControlStatus.mjs +0 -47
  246. package/esm2022/util/ng-zorro-antd-extension-util.mjs +0 -5
  247. package/esm2022/util/public-api.mjs +0 -18
  248. package/esm2022/wang-editor/ng-zorro-antd-extension-wang-editor.mjs +0 -5
  249. package/esm2022/wang-editor/public-api.mjs +0 -9
  250. package/esm2022/wang-editor/type.mjs +0 -2
  251. package/esm2022/wang-editor/wang-editor.component.mjs +0 -235
  252. package/esm2022/wang-editor/wang-editor.module.mjs +0 -19
  253. package/esm2022/wang-editor/wang-toolbar.component.mjs +0 -57
@@ -1,309 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
2
- import { updateControlStatus } from 'ng-zorro-antd-extension/util';
3
- import { Subject, fromEvent, takeUntil } from 'rxjs';
4
- import { NzxControlDirective } from './control.directive';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "ng-zorro-antd/i18n";
7
- import * as i2 from "@angular/forms";
8
- import * as i3 from "@angular/common";
9
- import * as i4 from "ng-zorro-antd/grid";
10
- import * as i5 from "ng-zorro-antd/form";
11
- import * as i6 from "ng-zorro-antd/button";
12
- import * as i7 from "ng-zorro-antd/core/transition-patch";
13
- import * as i8 from "ng-zorro-antd/core/wave";
14
- import * as i9 from "ng-zorro-antd/card";
15
- import * as i10 from "ng-zorro-antd/space";
16
- import * as i11 from "ng-zorro-antd/icon";
17
- import * as i12 from "./configurable-query-item/configurable-query-item.component";
18
- /**
19
- * 查询组件
20
- * 支持模板自定义,在使用模板自定义时,要注意controlType应该设置为Template并且确保controlName与指令上的nzxControl应该相同
21
- */
22
- export class NzxConfigurableQueryComponent {
23
- /** 组件最终的查询参数 */
24
- get queryParams() {
25
- return this._queryParams;
26
- }
27
- set queryParams(value) {
28
- this._queryParams = value;
29
- }
30
- /** 判断当前组件是否展示展开折叠按钮 */
31
- get nzxCollapse() {
32
- return this.controls.some((i) => i.hasOwnProperty('collapse'));
33
- }
34
- constructor(i18n, fb, cd) {
35
- this.i18n = i18n;
36
- this.fb = fb;
37
- this.cd = cd;
38
- /**
39
- * 配置项用来生成查询表单
40
- */
41
- this.controls = [];
42
- /** 查询表单排列方式默认start */
43
- this.nzxJustify = 'start';
44
- /** 查询项间隔默认为8 */
45
- this.nzxGutter = 8;
46
- /** 一行展示多少查询项默认展示3个 */
47
- this.lineNumber = 3;
48
- /** 操作按钮所占栅格数,24则换行 */
49
- this.nzxBtnSpan = null;
50
- /** 初始化时,是否主动触发查询 */
51
- this.initQuery = false;
52
- /** 缺省 固定参数会固定携带在抛出事件中 */
53
- this.fixedParams = {};
54
- /** 查询时会触发抛出查询参数 */
55
- this.queryChange = new EventEmitter();
56
- /** 重置时会触发抛出查询参数 */
57
- this.resetChange = new EventEmitter();
58
- this.collapseIcon = 'down';
59
- this.collapseText = '';
60
- this._queryParams = {};
61
- /** 重置时用来给查询框默认值 */
62
- this.defaultValue = {};
63
- this.cacheParams = {};
64
- this.destroy$ = new Subject();
65
- this.queryForm = this.fb.group({});
66
- }
67
- ngOnChanges(changes) {
68
- if (changes['controls'] && !changes['controls'].isFirstChange()) {
69
- const controls = changes['controls'].currentValue;
70
- if (Array.isArray(controls)) {
71
- this.generateForm(controls);
72
- }
73
- }
74
- }
75
- ngOnInit() {
76
- this.i18n.localeChange.pipe(takeUntil(this.destroy$)).subscribe(() => {
77
- this.locale = this.i18n.getLocaleData('Query');
78
- this.cd.markForCheck();
79
- });
80
- this.queryForm.valueChanges
81
- .pipe(takeUntil(this.destroy$))
82
- .subscribe((val) => {
83
- this._queryParams = {
84
- ...val,
85
- ...this.fixedParams,
86
- };
87
- });
88
- }
89
- ngAfterViewInit() {
90
- if (this.queyFormEl) {
91
- fromEvent(this.queyFormEl.nativeElement, 'keydown')
92
- .pipe(takeUntil(this.destroy$))
93
- .subscribe((event) => {
94
- if (event.key === 'Enter') {
95
- event.stopPropagation();
96
- event.preventDefault();
97
- this.search();
98
- }
99
- // 检查是否同时按下了Ctrl键(在Windows/Linux上)和S键
100
- if ((event.ctrlKey || event.metaKey) && event.key === 'r') {
101
- // 注意:event.metaKey用于兼容Mac的Command键
102
- event.preventDefault(); // 阻止浏览器默认的保存行为
103
- event.stopPropagation();
104
- this.reset();
105
- }
106
- });
107
- }
108
- }
109
- ngAfterContentInit() {
110
- this.generateForm(this.controls);
111
- if (this.initQuery) {
112
- this.search();
113
- }
114
- }
115
- /** 设置查询值进行回显 */
116
- setQueryParams(cacheParams) {
117
- this.cacheParams = cacheParams;
118
- this.queryForm.patchValue(cacheParams);
119
- }
120
- /**
121
- * 根据controlName设置config值
122
- * @param defaultValueResettable 添加的表单控件默认值是否可以重置,默认不可以
123
- */
124
- setControl(controlName, config, defaultValueResettable = false) {
125
- const control = this.getControl(controlName);
126
- if (control) {
127
- Object.keys(config).forEach((key) => {
128
- control[key] = config[key];
129
- });
130
- this.generateControl(control, defaultValueResettable);
131
- this.cd.markForCheck();
132
- }
133
- }
134
- /**
135
- * 动态添加控件
136
- * @param config 配置项
137
- * @param position 添加位置 不传为末尾
138
- * @param defaultValueResettable 添加的表单控件默认值是否可以重置,默认不可以
139
- */
140
- addControl(config, position, defaultValueResettable = false) {
141
- const control = this.getControl(config.controlName);
142
- if (!control) {
143
- if (config && config['hasOwnProperty']('collapse')) {
144
- const hasCollapseProperty = this.controls.some((i) => i['hasOwnProperty']('collapse'));
145
- if (hasCollapseProperty) {
146
- config.collapse = this.controls.some((i) => i.collapse === true);
147
- }
148
- }
149
- this.generateControl(config, defaultValueResettable);
150
- if (position === void 0 || position === null) {
151
- this.controls.push(config);
152
- }
153
- else {
154
- this.controls.splice(position - 1, 0, config);
155
- }
156
- this.calculateText();
157
- }
158
- else {
159
- throw `The control name: '${config.controlName}' already exists!`;
160
- }
161
- }
162
- /**
163
- * 根据控件名删除控件
164
- */
165
- removeControl(controlName) {
166
- const control = this.getControl(controlName);
167
- if (control) {
168
- this.queryForm.removeControl(controlName);
169
- this.controls = this.controls.filter((c) => c.controlName !== controlName);
170
- this.calculateText();
171
- }
172
- else {
173
- throw `The control name: '${controlName}' not find!`;
174
- }
175
- }
176
- /**
177
- * 根据controlName获取config项
178
- */
179
- getControl(controlName) {
180
- return this.controls.find((config) => config.controlName === controlName);
181
- }
182
- /**
183
- * 检索给定控件名称或路径的子控件。
184
- * 这个 getFormControl 签名支持字符串和 const 数组(.getFormControl(['foo', 'bar'] as const))
185
- */
186
- getFormControl(path) {
187
- return this.queryForm.get(path);
188
- }
189
- /** 查询 */
190
- search() {
191
- if (this.queryForm.invalid) {
192
- updateControlStatus(this.queryForm);
193
- return;
194
- }
195
- this.queryChange.emit(this._queryParams);
196
- }
197
- /** 重置 */
198
- reset() {
199
- this.queryForm.reset(this.defaultValue);
200
- this.resetChange.emit(this._queryParams);
201
- }
202
- /**展开、收起*/
203
- toggleCollapse() {
204
- for (let index = 0; index < this.controls.length; index++) {
205
- const config = this.controls[index];
206
- const hasProperty = config.hasOwnProperty('collapse');
207
- if (hasProperty && config.collapse) {
208
- config.collapse = false;
209
- }
210
- else if (hasProperty && !config.collapse) {
211
- config.collapse = true;
212
- }
213
- }
214
- this.calculateText();
215
- }
216
- ngOnDestroy() {
217
- this.destroy$.next();
218
- this.destroy$.complete();
219
- }
220
- /** 计算展开收起icon、文案 */
221
- calculateText() {
222
- if (this.controls.some((i) => i.collapse === true)) {
223
- this.collapseIcon = 'down';
224
- this.collapseText = this.locale.expand;
225
- }
226
- else {
227
- this.collapseIcon = 'up';
228
- this.collapseText = this.locale.collapse;
229
- }
230
- this.cd.markForCheck();
231
- }
232
- /** 清空表单控件 */
233
- clearFormControl() {
234
- Object.keys(this.queryForm.controls).forEach((key) => {
235
- this.queryForm.removeControl(key);
236
- });
237
- }
238
- /** 生成 queryForm 表单 */
239
- generateForm(controlConfigs) {
240
- this.clearFormControl();
241
- for (const config of controlConfigs) {
242
- this.generateControl(config);
243
- }
244
- this.defaultValue = this.queryForm.getRawValue();
245
- if (this.cacheParams) {
246
- // 缓存回显查询条件
247
- this.queryForm.patchValue(this.cacheParams);
248
- }
249
- this.calculateText();
250
- }
251
- /**
252
- *
253
- * @param controlConfig control配置
254
- * @param defaultValueResettable 添加的表单控件默认值是否可以重置,默认不可以
255
- *
256
- * 1. 生成单个表单控件并将其添加到queryForm中
257
- * 2. 如果没有templateRef根据controlName获取投影的templateList中的templateRef给 templateRef 赋值
258
- *
259
- **/
260
- generateControl(config, defaultValueResettable = false) {
261
- if (config.controlName) {
262
- if (!config?.templateRef) {
263
- const d = this.controlTemplateList.find((d) => d.nzxControl === config.controlName);
264
- if (d) {
265
- config.templateRef = d.templateRef;
266
- }
267
- }
268
- this.queryForm.setControl(config.controlName, config.controlInstance ?? this.fb.control(config.default ?? null));
269
- if (!defaultValueResettable) {
270
- const control = this.queryForm.get(config.controlName);
271
- this.defaultValue = {
272
- ...this.defaultValue,
273
- [config.controlName]: control.value,
274
- };
275
- }
276
- }
277
- }
278
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NzxConfigurableQueryComponent, deps: [{ token: i1.NzI18nService }, { token: i2.FormBuilder }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
279
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: NzxConfigurableQueryComponent, selector: "nzx-configurable-query", inputs: { controls: "controls", nzxJustify: "nzxJustify", nzxGutter: "nzxGutter", lineNumber: "lineNumber", nzxBtnSpan: "nzxBtnSpan", initQuery: "initQuery", fixedParams: "fixedParams" }, outputs: { queryChange: "queryChange", resetChange: "resetChange" }, queries: [{ propertyName: "controlTemplateList", predicate: NzxControlDirective, descendants: true }], viewQueries: [{ propertyName: "queyFormEl", first: true, predicate: ["queyForm"], descendants: true }], exportAs: ["NzxConfigurableQuery"], usesOnChanges: true, ngImport: i0, template: "<nz-card>\n <form #queyForm class=\"nzx-query-container\" nz-form [formGroup]=\"queryForm\">\n <div nz-row [nzGutter]=\"nzxGutter\" [nzJustify]=\"nzxJustify\">\n <ng-container *ngFor=\"let config of controls; let i = index\">\n <div\n *ngIf=\"!config.hidden\"\n nz-col\n [nzSpan]=\"config.nzxSpan || 24 / lineNumber\"\n [hidden]=\"config.collapse\"\n [nzOrder]=\"i\"\n >\n <nzx-configurable-query-item\n *ngIf=\"config.controlName\"\n [form]=\"queryForm\"\n [control]=\"config\"\n ></nzx-configurable-query-item>\n </div>\n </ng-container>\n\n <div\n class=\"nzx-query-btn\"\n nz-col\n [nzOrder]=\"controls.length\"\n [nzSpan]=\"nzxBtnSpan || 24 / lineNumber\"\n >\n <div nz-row nzJustify=\"end\" nzAlign=\"middle\">\n <nz-space>\n <button\n *nzSpaceItem\n nz-button\n nzType=\"primary\"\n type=\"button\"\n title=\"Enter\"\n (click)=\"search()\"\n >\n {{ locale['query'] }}\n </button>\n <button\n *nzSpaceItem\n nz-button\n type=\"button\"\n title=\"ctrl+r\"\n (click)=\"reset()\"\n >\n {{ locale['reset'] }}\n </button>\n <ng-container *nzSpaceItem>\n <ng-content></ng-content>\n </ng-container>\n <ng-container *ngIf=\"nzxCollapse\">\n <a\n *nzSpaceItem\n nz-button\n nzType=\"link\"\n (click)=\"toggleCollapse()\"\n >\n {{ collapseText }}\n <i nz-icon [nzType]=\"collapseIcon\"></i>\n </a>\n </ng-container>\n </nz-space>\n </div>\n </div>\n </div>\n </form>\n</nz-card>\n", styles: [".nzx-query-container [nz-form-label]{overflow:visible}.nzx-query-container .nzx-query-btn{flex-grow:2;max-width:none}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.NzColDirective, selector: "[nz-col],nz-col,nz-form-control,nz-form-label", inputs: ["nzFlex", "nzSpan", "nzOrder", "nzOffset", "nzPush", "nzPull", "nzXs", "nzSm", "nzMd", "nzLg", "nzXl", "nzXXl"], exportAs: ["nzCol"] }, { kind: "directive", type: i4.NzRowDirective, selector: "[nz-row],nz-row,nz-form-item", inputs: ["nzAlign", "nzJustify", "nzGutter"], exportAs: ["nzRow"] }, { kind: "directive", type: i5.NzFormDirective, selector: "[nz-form]", inputs: ["nzLayout", "nzNoColon", "nzAutoTips", "nzDisableAutoTips", "nzTooltipIcon", "nzLabelAlign", "nzLabelWrap"], exportAs: ["nzForm"] }, { kind: "component", type: i6.NzButtonComponent, selector: "button[nz-button], a[nz-button]", inputs: ["nzBlock", "nzGhost", "nzSearch", "nzLoading", "nzDanger", "disabled", "tabIndex", "nzType", "nzShape", "nzSize"], exportAs: ["nzButton"] }, { kind: "directive", type: i7.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i8.NzWaveDirective, selector: "[nz-wave],button[nz-button]:not([nzType=\"link\"]):not([nzType=\"text\"])", inputs: ["nzWaveExtraNode"], exportAs: ["nzWave"] }, { kind: "component", type: i9.NzCardComponent, selector: "nz-card", inputs: ["nzBordered", "nzBorderless", "nzLoading", "nzHoverable", "nzBodyStyle", "nzCover", "nzActions", "nzType", "nzSize", "nzTitle", "nzExtra"], exportAs: ["nzCard"] }, { kind: "component", type: i10.NzSpaceComponent, selector: "nz-space, [nz-space]", inputs: ["nzDirection", "nzAlign", "nzSplit", "nzWrap", "nzSize"], exportAs: ["NzSpace"] }, { kind: "directive", type: i10.NzSpaceItemDirective, selector: "[nzSpaceItem]" }, { kind: "directive", type: i11.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "component", type: i12.NzxConfigurableQueryItemComponent, selector: "nzx-configurable-query-item", inputs: ["form", "control"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
280
- }
281
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NzxConfigurableQueryComponent, decorators: [{
282
- type: Component,
283
- args: [{ selector: 'nzx-configurable-query', changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'NzxConfigurableQuery', template: "<nz-card>\n <form #queyForm class=\"nzx-query-container\" nz-form [formGroup]=\"queryForm\">\n <div nz-row [nzGutter]=\"nzxGutter\" [nzJustify]=\"nzxJustify\">\n <ng-container *ngFor=\"let config of controls; let i = index\">\n <div\n *ngIf=\"!config.hidden\"\n nz-col\n [nzSpan]=\"config.nzxSpan || 24 / lineNumber\"\n [hidden]=\"config.collapse\"\n [nzOrder]=\"i\"\n >\n <nzx-configurable-query-item\n *ngIf=\"config.controlName\"\n [form]=\"queryForm\"\n [control]=\"config\"\n ></nzx-configurable-query-item>\n </div>\n </ng-container>\n\n <div\n class=\"nzx-query-btn\"\n nz-col\n [nzOrder]=\"controls.length\"\n [nzSpan]=\"nzxBtnSpan || 24 / lineNumber\"\n >\n <div nz-row nzJustify=\"end\" nzAlign=\"middle\">\n <nz-space>\n <button\n *nzSpaceItem\n nz-button\n nzType=\"primary\"\n type=\"button\"\n title=\"Enter\"\n (click)=\"search()\"\n >\n {{ locale['query'] }}\n </button>\n <button\n *nzSpaceItem\n nz-button\n type=\"button\"\n title=\"ctrl+r\"\n (click)=\"reset()\"\n >\n {{ locale['reset'] }}\n </button>\n <ng-container *nzSpaceItem>\n <ng-content></ng-content>\n </ng-container>\n <ng-container *ngIf=\"nzxCollapse\">\n <a\n *nzSpaceItem\n nz-button\n nzType=\"link\"\n (click)=\"toggleCollapse()\"\n >\n {{ collapseText }}\n <i nz-icon [nzType]=\"collapseIcon\"></i>\n </a>\n </ng-container>\n </nz-space>\n </div>\n </div>\n </div>\n </form>\n</nz-card>\n", styles: [".nzx-query-container [nz-form-label]{overflow:visible}.nzx-query-container .nzx-query-btn{flex-grow:2;max-width:none}\n"] }]
284
- }], ctorParameters: () => [{ type: i1.NzI18nService }, { type: i2.FormBuilder }, { type: i0.ChangeDetectorRef }], propDecorators: { controls: [{
285
- type: Input
286
- }], nzxJustify: [{
287
- type: Input
288
- }], nzxGutter: [{
289
- type: Input
290
- }], lineNumber: [{
291
- type: Input
292
- }], nzxBtnSpan: [{
293
- type: Input
294
- }], initQuery: [{
295
- type: Input
296
- }], fixedParams: [{
297
- type: Input
298
- }], queryChange: [{
299
- type: Output
300
- }], resetChange: [{
301
- type: Output
302
- }], queyFormEl: [{
303
- type: ViewChild,
304
- args: ['queyForm']
305
- }], controlTemplateList: [{
306
- type: ContentChildren,
307
- args: [NzxControlDirective, { descendants: true }]
308
- }] } });
309
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhYmxlLXF1ZXJ5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbXBvbmVudHMvY29uZmlndXJhYmxlLXF1ZXJ5L2NvbmZpZ3VyYWJsZS1xdWVyeS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb21wb25lbnRzL2NvbmZpZ3VyYWJsZS1xdWVyeS9jb25maWd1cmFibGUtcXVlcnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUVmLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUdOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUduRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBRzFEOzs7R0FHRztBQVNILE1BQU0sT0FBTyw2QkFBNkI7SUF5QnhDLGdCQUFnQjtJQUNoQixJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUNELElBQUksV0FBVyxDQUFDLEtBQVU7UUFDeEIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVELHVCQUF1QjtJQUN2QixJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQWtCRCxZQUNVLElBQW1CLEVBQ25CLEVBQWUsRUFDZixFQUFxQjtRQUZyQixTQUFJLEdB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QUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR0ksV0FBVztzQkFBcEIsTUFBTTtnQkFFRyxXQUFXO3NCQUFwQixNQUFNO2dCQTJCd0IsVUFBVTtzQkFBeEMsU0FBUzt1QkFBQyxVQUFVO2dCQUVyQixtQkFBbUI7c0JBRGxCLGVBQWU7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlckNvbnRlbnRJbml0LFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbnRlbnRDaGlsZHJlbixcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5pbXBvcnQgeyBOenhRdWVyeUkxOG5JbnRlcmZhY2UgfSBmcm9tICduZy16b3Jyby1hbnRkLWV4dGVuc2lvbi9pMThuJztcclxuaW1wb3J0IHsgdXBkYXRlQ29udHJvbFN0YXR1cyB9IGZyb20gJ25nLXpvcnJvLWFudGQtZXh0ZW5zaW9uL3V0aWwnO1xyXG5pbXBvcnQgeyBOekp1c3RpZnkgfSBmcm9tICduZy16b3Jyby1hbnRkL2dyaWQnO1xyXG5pbXBvcnQgeyBOekkxOG5TZXJ2aWNlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9pMThuJztcclxuaW1wb3J0IHsgU3ViamVjdCwgZnJvbUV2ZW50LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTnp4Q29udHJvbERpcmVjdGl2ZSB9IGZyb20gJy4vY29udHJvbC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBOenhRdWVyeUNvbnRyb2xPcHRpb25zLCBOenhRdWVyeVBhcmFtcyB9IGZyb20gJy4vdHlwZSc7XHJcblxyXG4vKipcclxuICog5p+l6K+i57uE5Lu2XHJcbiAqIOaUr+aMgeaooeadv+iHquWumuS5ie+8jOWcqOS9v+eUqOaooeadv+iHquWumuS5ieaXtu+8jOimgeazqOaEj2NvbnRyb2xUeXBl5bqU6K+l6K6+572u5Li6VGVtcGxhdGXlubbkuJTnoa7kv51jb250cm9sTmFtZeS4juaMh+S7pOS4iueahG56eENvbnRyb2zlupTor6Xnm7jlkIxcclxuICovXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ256eC1jb25maWd1cmFibGUtcXVlcnknLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb25maWd1cmFibGUtcXVlcnkuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvbmZpZ3VyYWJsZS1xdWVyeS5jb21wb25lbnQubGVzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGV4cG9ydEFzOiAnTnp4Q29uZmlndXJhYmxlUXVlcnknLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTnp4Q29uZmlndXJhYmxlUXVlcnlDb21wb25lbnRcclxuICBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBBZnRlclZpZXdJbml0LCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3lcclxue1xyXG4gIC8qKlxyXG4gICAqIOmFjee9rumhueeUqOadpeeUn+aIkOafpeivouihqOWNlVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGNvbnRyb2xzOiBBcnJheTxOenhRdWVyeUNvbnRyb2xPcHRpb25zPiA9IFtdO1xyXG4gIC8qKiDmn6Xor6LooajljZXmjpLliJfmlrnlvI/pu5jorqRzdGFydCAqL1xyXG4gIEBJbnB1dCgpIG56eEp1c3RpZnk6IE56SnVzdGlmeSA9ICdzdGFydCc7XHJcbiAgLyoqIOafpeivoumhuemXtOmalOm7mOiupOS4ujggKi9cclxuICBASW5wdXQoKSBuenhHdXR0ZXI6IG51bWJlciA9IDg7XHJcbiAgLyoqIOS4gOihjOWxleekuuWkmuWwkeafpeivoumhuem7mOiupOWxleekujPkuKogKi9cclxuICBASW5wdXQoKSBsaW5lTnVtYmVyOiBudW1iZXIgPSAzO1xyXG4gIC8qKiDmk43kvZzmjInpkq7miYDljaDmoIXmoLzmlbDvvIwyNOWImeaNouihjCAqL1xyXG4gIEBJbnB1dCgpIG56eEJ0blNwYW46IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gIC8qKiDliJ3lp4vljJbml7bvvIzmmK/lkKbkuLvliqjop6blj5Hmn6Xor6IgKi9cclxuICBASW5wdXQoKSBpbml0UXVlcnkgPSBmYWxzZTtcclxuICAvKiog57y655yBIOWbuuWumuWPguaVsOS8muWbuuWumuaQuuW4puWcqOaKm+WHuuS6i+S7tuS4rSAqL1xyXG4gIEBJbnB1dCgpIGZpeGVkUGFyYW1zID0ge307XHJcblxyXG4gIC8qKiDmn6Xor6Lml7bkvJrop6blj5Hmipvlh7rmn6Xor6Llj4LmlbAgKi9cclxuICBAT3V0cHV0KCkgcXVlcnlDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE56eFF1ZXJ5UGFyYW1zPigpO1xyXG4gIC8qKiDph43nva7ml7bkvJrop6blj5Hmipvlh7rmn6Xor6Llj4LmlbAgKi9cclxuICBAT3V0cHV0KCkgcmVzZXRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE56eFF1ZXJ5UGFyYW1zPigpO1xyXG5cclxuICAvKiog57uE5Lu25pyA57uI55qE5p+l6K+i5Y+C5pWwICovXHJcbiAgZ2V0IHF1ZXJ5UGFyYW1zKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3F1ZXJ5UGFyYW1zO1xyXG4gIH1cclxuICBzZXQgcXVlcnlQYXJhbXModmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5fcXVlcnlQYXJhbXMgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIC8qKiDliKTmlq3lvZPliY3nu4Tku7bmmK/lkKblsZXnpLrlsZXlvIDmipjlj6DmjInpkq4gKi9cclxuICBnZXQgbnp4Q29sbGFwc2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb250cm9scy5zb21lKChpKSA9PiBpLmhhc093blByb3BlcnR5KCdjb2xsYXBzZScpKTtcclxuICB9XHJcblxyXG4gIC8qKiDlhoXnva4gZm9ybSDmn6Xor6LooajljZXlrp7kvosgKi9cclxuICBxdWVyeUZvcm0hOiBGb3JtR3JvdXA7XHJcbiAgbG9jYWxlITogTnp4UXVlcnlJMThuSW50ZXJmYWNlO1xyXG4gIGNvbGxhcHNlSWNvbjogc3RyaW5nID0gJ2Rvd24nO1xyXG4gIGNvbGxhcHNlVGV4dDogc3RyaW5nID0gJyc7XHJcblxyXG4gIHByaXZhdGUgX3F1ZXJ5UGFyYW1zOiBOenhRdWVyeVBhcmFtcyA9IHt9O1xyXG4gIC8qKiDph43nva7ml7bnlKjmnaXnu5nmn6Xor6LmoYbpu5jorqTlgLwgKi9cclxuICBwcml2YXRlIGRlZmF1bHRWYWx1ZTogTnp4UXVlcnlQYXJhbXMgPSB7fTtcclxuICBwcml2YXRlIGNhY2hlUGFyYW1zOiBOenhRdWVyeVBhcmFtcyA9IHt9O1xyXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBAVmlld0NoaWxkKCdxdWV5Rm9ybScpIHByaXZhdGUgcXVleUZvcm1FbCE6IEVsZW1lbnRSZWY8SFRNTEZvcm1FbGVtZW50PjtcclxuICBAQ29udGVudENoaWxkcmVuKE56eENvbnRyb2xEaXJlY3RpdmUsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcclxuICBjb250cm9sVGVtcGxhdGVMaXN0ITogUXVlcnlMaXN0PE56eENvbnRyb2xEaXJlY3RpdmU+O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgaTE4bjogTnpJMThuU2VydmljZSxcclxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuICApIHtcclxuICAgIHRoaXMucXVlcnlGb3JtID0gdGhpcy5mYi5ncm91cCh7fSk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1snY29udHJvbHMnXSAmJiAhY2hhbmdlc1snY29udHJvbHMnXS5pc0ZpcnN0Q2hhbmdlKCkpIHtcclxuICAgICAgY29uc3QgY29udHJvbHMgPSBjaGFuZ2VzWydjb250cm9scyddLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29udHJvbHMpKSB7XHJcbiAgICAgICAgdGhpcy5nZW5lcmF0ZUZvcm0oY29udHJvbHMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaTE4bi5sb2NhbGVDaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMubG9jYWxlID0gdGhpcy5pMThuLmdldExvY2FsZURhdGEoJ1F1ZXJ5Jyk7XHJcbiAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnF1ZXJ5Rm9ybS52YWx1ZUNoYW5nZXNcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKCh2YWwpID0+IHtcclxuICAgICAgICB0aGlzLl9xdWVyeVBhcmFtcyA9IHtcclxuICAgICAgICAgIC4uLnZhbCxcclxuICAgICAgICAgIC4uLnRoaXMuZml4ZWRQYXJhbXMsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5xdWV5Rm9ybUVsKSB7XHJcbiAgICAgIGZyb21FdmVudDxLZXlib2FyZEV2ZW50Pih0aGlzLnF1ZXlGb3JtRWwubmF0aXZlRWxlbWVudCwgJ2tleWRvd24nKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xyXG4gICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2goKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vIOajgOafpeaYr+WQpuWQjOaXtuaMieS4i+S6hkN0cmzplK7vvIjlnKhXaW5kb3dzL0xpbnV45LiK77yJ5ZKMU+mUrlxyXG4gICAgICAgICAgaWYgKChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpICYmIGV2ZW50LmtleSA9PT0gJ3InKSB7XHJcbiAgICAgICAgICAgIC8vIOazqOaEj++8mmV2ZW50Lm1ldGFLZXnnlKjkuo7lhbzlrrlNYWPnmoRDb21tYW5k6ZSuXHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IC8vIOmYu+atoua1j+iniOWZqOm7mOiupOeahOS/neWtmOihjOS4ulxyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgdGhpcy5yZXNldCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5nZW5lcmF0ZUZvcm0odGhpcy5jb250cm9scyk7XHJcblxyXG4gICAgaWYgKHRoaXMuaW5pdFF1ZXJ5KSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiog6K6+572u5p+l6K+i5YC86L+b6KGM5Zue5pi+ICovXHJcbiAgc2V0UXVlcnlQYXJhbXMoY2FjaGVQYXJhbXM6IE56eFF1ZXJ5UGFyYW1zKTogdm9pZCB7XHJcbiAgICB0aGlzLmNhY2hlUGFyYW1zID0gY2FjaGVQYXJhbXM7XHJcbiAgICB0aGlzLnF1ZXJ5Rm9ybS5wYXRjaFZhbHVlKGNhY2hlUGFyYW1zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOagueaNrmNvbnRyb2xOYW1l6K6+572uY29uZmln5YC8XHJcbiAgICogQHBhcmFtIGRlZmF1bHRWYWx1ZVJlc2V0dGFibGUg5re75Yqg55qE6KGo5Y2V5o6n5Lu26buY6K6k5YC85piv5ZCm5Y+v5Lul6YeN572u77yM6buY6K6k5LiN5Y+v5LulXHJcbiAgICovXHJcbiAgc2V0Q29udHJvbChcclxuICAgIGNvbnRyb2xOYW1lOiBzdHJpbmcsXHJcbiAgICBjb25maWc6IFBhcnRpYWw8Tnp4UXVlcnlDb250cm9sT3B0aW9ucz4sXHJcbiAgICBkZWZhdWx0VmFsdWVSZXNldHRhYmxlID0gZmFsc2VcclxuICApOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmdldENvbnRyb2woY29udHJvbE5hbWUpO1xyXG4gICAgaWYgKGNvbnRyb2wpIHtcclxuICAgICAgT2JqZWN0LmtleXMoY29uZmlnKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgICAoY29udHJvbCBhcyBhbnkpW2tleV0gPSAoY29uZmlnIGFzIGFueSlba2V5XTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZ2VuZXJhdGVDb250cm9sKGNvbnRyb2wsIGRlZmF1bHRWYWx1ZVJlc2V0dGFibGUpO1xyXG4gICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yqo5oCB5re75Yqg5o6n5Lu2XHJcbiAgICogQHBhcmFtIGNvbmZpZyDphY3nva7poblcclxuICAgKiBAcGFyYW0gcG9zaXRpb24g5re75Yqg5L2N572uIOS4jeS8oOS4uuacq+WwvlxyXG4gICAqIEBwYXJhbSBkZWZhdWx0VmFsdWVSZXNldHRhYmxlIOa3u+WKoOeahOihqOWNleaOp+S7tum7mOiupOWAvOaYr+WQpuWPr+S7pemHjee9ru+8jOm7mOiupOS4jeWPr+S7pVxyXG4gICAqL1xyXG4gIGFkZENvbnRyb2woXHJcbiAgICBjb25maWc6IE56eFF1ZXJ5Q29udHJvbE9wdGlvbnMsXHJcbiAgICBwb3NpdGlvbj86IG51bWJlciB8IHVuZGVmaW5lZCxcclxuICAgIGRlZmF1bHRWYWx1ZVJlc2V0dGFibGUgPSBmYWxzZVxyXG4gICk6IHZvaWQge1xyXG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZ2V0Q29udHJvbChjb25maWcuY29udHJvbE5hbWUpO1xyXG4gICAgaWYgKCFjb250cm9sKSB7XHJcbiAgICAgIGlmIChjb25maWcgJiYgY29uZmlnWydoYXNPd25Qcm9wZXJ0eSddKCdjb2xsYXBzZScpKSB7XHJcbiAgICAgICAgY29uc3QgaGFzQ29sbGFwc2VQcm9wZXJ0eSA9IHRoaXMuY29udHJvbHMuc29tZSgoaSkgPT5cclxuICAgICAgICAgIGlbJ2hhc093blByb3BlcnR5J10oJ2NvbGxhcHNlJylcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChoYXNDb2xsYXBzZVByb3BlcnR5KSB7XHJcbiAgICAgICAgICBjb25maWcuY29sbGFwc2UgPSB0aGlzLmNvbnRyb2xzLnNvbWUoKGkpID0+IGkuY29sbGFwc2UgPT09IHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5nZW5lcmF0ZUNvbnRyb2woY29uZmlnLCBkZWZhdWx0VmFsdWVSZXNldHRhYmxlKTtcclxuXHJcbiAgICAgIGlmIChwb3NpdGlvbiA9PT0gdm9pZCAwIHx8IHBvc2l0aW9uID09PSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5jb250cm9scy5wdXNoKGNvbmZpZyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jb250cm9scy5zcGxpY2UocG9zaXRpb24gLSAxLCAwLCBjb25maWcpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2FsY3VsYXRlVGV4dCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhyb3cgYFRoZSBjb250cm9sIG5hbWU6ICcke2NvbmZpZy5jb250cm9sTmFtZX0nIGFscmVhZHkgZXhpc3RzIWA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmoLnmja7mjqfku7blkI3liKDpmaTmjqfku7ZcclxuICAgKi9cclxuICByZW1vdmVDb250cm9sKGNvbnRyb2xOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmdldENvbnRyb2woY29udHJvbE5hbWUpO1xyXG4gICAgaWYgKGNvbnRyb2wpIHtcclxuICAgICAgdGhpcy5xdWVyeUZvcm0ucmVtb3ZlQ29udHJvbChjb250cm9sTmFtZSk7XHJcbiAgICAgIHRoaXMuY29udHJvbHMgPSB0aGlzLmNvbnRyb2xzLmZpbHRlcihcclxuICAgICAgICAoYykgPT4gYy5jb250cm9sTmFtZSAhPT0gY29udHJvbE5hbWVcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5jYWxjdWxhdGVUZXh0KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aHJvdyBgVGhlIGNvbnRyb2wgbmFtZTogJyR7Y29udHJvbE5hbWV9JyBub3QgZmluZCFgO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5qC55o2uY29udHJvbE5hbWXojrflj5Zjb25maWfpoblcclxuICAgKi9cclxuICBnZXRDb250cm9sKFxyXG4gICAgY29udHJvbE5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZFxyXG4gICk6IE56eFF1ZXJ5Q29udHJvbE9wdGlvbnMgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuY29udHJvbHMuZmluZCgoY29uZmlnKSA9PiBjb25maWcuY29udHJvbE5hbWUgPT09IGNvbnRyb2xOYW1lKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOajgOe0oue7meWumuaOp+S7tuWQjeensOaIlui3r+W+hOeahOWtkOaOp+S7tuOAglxyXG4gICAqIOi/meS4qiBnZXRGb3JtQ29udHJvbCDnrb7lkI3mlK/mjIHlrZfnrKbkuLLlkowgY29uc3Qg5pWw57uE77yILmdldEZvcm1Db250cm9sKFsnZm9vJywgJ2JhciddIGFzIGNvbnN0Ke+8iVxyXG4gICAqL1xyXG4gIGdldEZvcm1Db250cm9sKFxyXG4gICAgcGF0aDogc3RyaW5nIHwgcmVhZG9ubHkgKHN0cmluZyB8IG51bWJlcilbXVxyXG4gICk6IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT4gfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLnF1ZXJ5Rm9ybS5nZXQocGF0aCk7XHJcbiAgfVxyXG5cclxuICAvKiog5p+l6K+iICovXHJcbiAgc2VhcmNoKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucXVlcnlGb3JtLmludmFsaWQpIHtcclxuICAgICAgdXBkYXRlQ29udHJvbFN0YXR1cyh0aGlzLnF1ZXJ5Rm9ybSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMucXVlcnlDaGFuZ2UuZW1pdCh0aGlzLl9xdWVyeVBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICAvKiog6YeN572uICovXHJcbiAgcmVzZXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnF1ZXJ5Rm9ybS5yZXNldCh0aGlzLmRlZmF1bHRWYWx1ZSk7XHJcbiAgICB0aGlzLnJlc2V0Q2hhbmdlLmVtaXQodGhpcy5fcXVlcnlQYXJhbXMpO1xyXG4gIH1cclxuXHJcbiAgLyoq5bGV5byA44CB5pS26LW3Ki9cclxuICB0b2dnbGVDb2xsYXBzZSgpOiB2b2lkIHtcclxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLmNvbnRyb2xzLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbnRyb2xzW2luZGV4XTtcclxuICAgICAgY29uc3QgaGFzUHJvcGVydHkgPSBjb25maWcuaGFzT3duUHJvcGVydHkoJ2NvbGxhcHNlJyk7XHJcbiAgICAgIGlmIChoYXNQcm9wZXJ0eSAmJiBjb25maWcuY29sbGFwc2UpIHtcclxuICAgICAgICBjb25maWcuY29sbGFwc2UgPSBmYWxzZTtcclxuICAgICAgfSBlbHNlIGlmIChoYXNQcm9wZXJ0eSAmJiAhY29uZmlnLmNvbGxhcHNlKSB7XHJcbiAgICAgICAgY29uZmlnLmNvbGxhcHNlID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5jYWxjdWxhdGVUZXh0KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqIOiuoeeul+WxleW8gOaUtui1t2ljb27jgIHmlofmoYggKi9cclxuICBwcml2YXRlIGNhbGN1bGF0ZVRleHQoKSB7XHJcbiAgICBpZiAodGhpcy5jb250cm9scy5zb21lKChpKSA9PiBpLmNvbGxhcHNlID09PSB0cnVlKSkge1xyXG4gICAgICB0aGlzLmNvbGxhcHNlSWNvbiA9ICdkb3duJztcclxuICAgICAgdGhpcy5jb2xsYXBzZVRleHQgPSB0aGlzLmxvY2FsZS5leHBhbmQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNvbGxhcHNlSWNvbiA9ICd1cCc7XHJcbiAgICAgIHRoaXMuY29sbGFwc2VUZXh0ID0gdGhpcy5sb2NhbGUuY29sbGFwc2U7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgLyoqIOa4heepuuihqOWNleaOp+S7tiAqL1xyXG4gIHByaXZhdGUgY2xlYXJGb3JtQ29udHJvbCgpOiB2b2lkIHtcclxuICAgIE9iamVjdC5rZXlzKHRoaXMucXVlcnlGb3JtLmNvbnRyb2xzKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgdGhpcy5xdWVyeUZvcm0ucmVtb3ZlQ29udHJvbChrZXkpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKiog55Sf5oiQIHF1ZXJ5Rm9ybSDooajljZUgKi9cclxuICBwcml2YXRlIGdlbmVyYXRlRm9ybShjb250cm9sQ29uZmlnczogQXJyYXk8Tnp4UXVlcnlDb250cm9sT3B0aW9ucz4pOiB2b2lkIHtcclxuICAgIHRoaXMuY2xlYXJGb3JtQ29udHJvbCgpO1xyXG5cclxuICAgIGZvciAoY29uc3QgY29uZmlnIG9mIGNvbnRyb2xDb25maWdzKSB7XHJcbiAgICAgIHRoaXMuZ2VuZXJhdGVDb250cm9sKGNvbmZpZyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRlZmF1bHRWYWx1ZSA9IHRoaXMucXVlcnlGb3JtLmdldFJhd1ZhbHVlKCk7XHJcblxyXG4gICAgaWYgKHRoaXMuY2FjaGVQYXJhbXMpIHtcclxuICAgICAgLy8g57yT5a2Y5Zue5pi+5p+l6K+i5p2h5Lu2XHJcbiAgICAgIHRoaXMucXVlcnlGb3JtLnBhdGNoVmFsdWUodGhpcy5jYWNoZVBhcmFtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jYWxjdWxhdGVUZXh0KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKlxyXG4gICAqIEBwYXJhbSBjb250cm9sQ29uZmlnIGNvbnRyb2zphY3nva5cclxuICAgKiBAcGFyYW0gZGVmYXVsdFZhbHVlUmVzZXR0YWJsZSDmt7vliqDnmoTooajljZXmjqfku7bpu5jorqTlgLzmmK/lkKblj6/ku6Xph43nva7vvIzpu5jorqTkuI3lj6/ku6VcclxuICAgKlxyXG4gICAqIDEuIOeUn+aIkOWNleS4quihqOWNleaOp+S7tuW5tuWwhuWFtua3u+WKoOWIsHF1ZXJ5Rm9ybeS4rVxyXG4gICAqIDIuIOWmguaenOayoeaciXRlbXBsYXRlUmVm5qC55o2uY29udHJvbE5hbWXojrflj5bmipXlvbHnmoR0ZW1wbGF0ZUxpc3TkuK3nmoR0ZW1wbGF0ZVJlZue7mSB0ZW1wbGF0ZVJlZiDotYvlgLxcclxuICAgKlxyXG4gICAqKi9cclxuICBwcml2YXRlIGdlbmVyYXRlQ29udHJvbChcclxuICAgIGNvbmZpZzogTnp4UXVlcnlDb250cm9sT3B0aW9ucyxcclxuICAgIGRlZmF1bHRWYWx1ZVJlc2V0dGFibGUgPSBmYWxzZVxyXG4gICkge1xyXG4gICAgaWYgKGNvbmZpZy5jb250cm9sTmFtZSkge1xyXG4gICAgICBpZiAoIWNvbmZpZz8udGVtcGxhdGVSZWYpIHtcclxuICAgICAgICBjb25zdCBkID0gdGhpcy5jb250cm9sVGVtcGxhdGVMaXN0LmZpbmQoXHJcbiAgICAgICAgICAoZCkgPT4gZC5uenhDb250cm9sID09PSBjb25maWcuY29udHJvbE5hbWVcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChkKSB7XHJcbiAgICAgICAgICBjb25maWcudGVtcGxhdGVSZWYgPSBkLnRlbXBsYXRlUmVmO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5xdWVyeUZvcm0uc2V0Q29udHJvbChcclxuICAgICAgICBjb25maWcuY29udHJvbE5hbWUsXHJcbiAgICAgICAgY29uZmlnLmNvbnRyb2xJbnN0YW5jZSA/PyB0aGlzLmZiLmNvbnRyb2woY29uZmlnLmRlZmF1bHQgPz8gbnVsbClcclxuICAgICAgKTtcclxuXHJcbiAgICAgIGlmICghZGVmYXVsdFZhbHVlUmVzZXR0YWJsZSkge1xyXG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLnF1ZXJ5Rm9ybS5nZXQoY29uZmlnLmNvbnRyb2xOYW1lKTtcclxuICAgICAgICB0aGlzLmRlZmF1bHRWYWx1ZSA9IHtcclxuICAgICAgICAgIC4uLnRoaXMuZGVmYXVsdFZhbHVlLFxyXG4gICAgICAgICAgW2NvbmZpZy5jb250cm9sTmFtZV06IGNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8bnotY2FyZD5cbiAgPGZvcm0gI3F1ZXlGb3JtIGNsYXNzPVwibnp4LXF1ZXJ5LWNvbnRhaW5lclwiIG56LWZvcm0gW2Zvcm1Hcm91cF09XCJxdWVyeUZvcm1cIj5cbiAgICA8ZGl2IG56LXJvdyBbbnpHdXR0ZXJdPVwibnp4R3V0dGVyXCIgW256SnVzdGlmeV09XCJuenhKdXN0aWZ5XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb25maWcgb2YgY29udHJvbHM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwiIWNvbmZpZy5oaWRkZW5cIlxuICAgICAgICAgIG56LWNvbFxuICAgICAgICAgIFtuelNwYW5dPVwiY29uZmlnLm56eFNwYW4gfHwgMjQgLyBsaW5lTnVtYmVyXCJcbiAgICAgICAgICBbaGlkZGVuXT1cImNvbmZpZy5jb2xsYXBzZVwiXG4gICAgICAgICAgW256T3JkZXJdPVwiaVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bnp4LWNvbmZpZ3VyYWJsZS1xdWVyeS1pdGVtXG4gICAgICAgICAgICAqbmdJZj1cImNvbmZpZy5jb250cm9sTmFtZVwiXG4gICAgICAgICAgICBbZm9ybV09XCJxdWVyeUZvcm1cIlxuICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29uZmlnXCJcbiAgICAgICAgICA+PC9uengtY29uZmlndXJhYmxlLXF1ZXJ5LWl0ZW0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJuengtcXVlcnktYnRuXCJcbiAgICAgICAgbnotY29sXG4gICAgICAgIFtuek9yZGVyXT1cImNvbnRyb2xzLmxlbmd0aFwiXG4gICAgICAgIFtuelNwYW5dPVwibnp4QnRuU3BhbiB8fCAyNCAvIGxpbmVOdW1iZXJcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IG56LXJvdyBuekp1c3RpZnk9XCJlbmRcIiBuekFsaWduPVwibWlkZGxlXCI+XG4gICAgICAgICAgPG56LXNwYWNlPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAqbnpTcGFjZUl0ZW1cbiAgICAgICAgICAgICAgbnotYnV0dG9uXG4gICAgICAgICAgICAgIG56VHlwZT1cInByaW1hcnlcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgdGl0bGU9XCJFbnRlclwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzZWFyY2goKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IGxvY2FsZVsncXVlcnknXSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICpuelNwYWNlSXRlbVxuICAgICAgICAgICAgICBuei1idXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIHRpdGxlPVwiY3RybCtyXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJlc2V0KClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBsb2NhbGVbJ3Jlc2V0J10gfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbnpTcGFjZUl0ZW0+XG4gICAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm56eENvbGxhcHNlXCI+XG4gICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgKm56U3BhY2VJdGVtXG4gICAgICAgICAgICAgICAgbnotYnV0dG9uXG4gICAgICAgICAgICAgICAgbnpUeXBlPVwibGlua1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUNvbGxhcHNlKClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgY29sbGFwc2VUZXh0IH19XG4gICAgICAgICAgICAgICAgPGkgbnotaWNvbiBbbnpUeXBlXT1cImNvbGxhcHNlSWNvblwiPjwvaT5cbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uei1zcGFjZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9mb3JtPlxuPC9uei1jYXJkPlxuIl19
@@ -1,111 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { NgModule } from '@angular/core';
3
- import { ReactiveFormsModule } from '@angular/forms';
4
- import { NzButtonModule } from 'ng-zorro-antd/button';
5
- import { NzDatePickerModule } from 'ng-zorro-antd/date-picker';
6
- import { NzFormModule } from 'ng-zorro-antd/form';
7
- import { NzGridModule } from 'ng-zorro-antd/grid';
8
- import { NzIconModule } from 'ng-zorro-antd/icon';
9
- import { NzInputModule } from 'ng-zorro-antd/input';
10
- import { NzSelectModule } from 'ng-zorro-antd/select';
11
- import { NzI18nModule } from 'ng-zorro-antd/i18n';
12
- import { NzxConfigurableQueryItemComponent } from './configurable-query-item/configurable-query-item.component';
13
- import { NzxConfigurableQueryComponent } from './configurable-query.component';
14
- import { NzxControlDirective } from './control.directive';
15
- import { NzxDatePickerControlComponent } from './controls/date-picker.control';
16
- import { NzxInputControlComponent } from './controls/input.control';
17
- import { NzxRangePickerControlComponent } from './controls/range-picker.control';
18
- import { NzxSelectControlComponent } from './controls/select.control';
19
- import { NzxTemplateControlComponent } from './controls/template.control';
20
- import { NzxQueryConfigService, QUERY_CONFIG } from './query-config.service';
21
- import { NzCardModule } from 'ng-zorro-antd/card';
22
- import { NzSpaceModule } from 'ng-zorro-antd/space';
23
- import * as i0 from "@angular/core";
24
- export class NzxConfigurableQueryModule {
25
- static forRoot(nzxQueryConfig) {
26
- return {
27
- ngModule: NzxConfigurableQueryModule,
28
- providers: [
29
- {
30
- provide: QUERY_CONFIG,
31
- useValue: nzxQueryConfig,
32
- },
33
- ],
34
- };
35
- }
36
- static forChild(nzxQueryConfig) {
37
- return {
38
- ngModule: NzxConfigurableQueryModule,
39
- providers: [
40
- {
41
- provide: QUERY_CONFIG,
42
- useValue: nzxQueryConfig,
43
- },
44
- NzxQueryConfigService,
45
- ],
46
- };
47
- }
48
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NzxConfigurableQueryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
49
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: NzxConfigurableQueryModule, declarations: [NzxConfigurableQueryComponent,
50
- NzxControlDirective,
51
- NzxConfigurableQueryItemComponent,
52
- NzxInputControlComponent,
53
- NzxTemplateControlComponent,
54
- NzxSelectControlComponent,
55
- NzxDatePickerControlComponent,
56
- NzxRangePickerControlComponent], imports: [CommonModule,
57
- ReactiveFormsModule,
58
- NzInputModule,
59
- NzFormModule,
60
- NzGridModule,
61
- NzButtonModule,
62
- NzSelectModule,
63
- NzDatePickerModule,
64
- NzCardModule,
65
- NzSpaceModule,
66
- NzIconModule,
67
- NzI18nModule], exports: [NzxControlDirective, NzxConfigurableQueryComponent] }); }
68
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NzxConfigurableQueryModule, imports: [CommonModule,
69
- ReactiveFormsModule,
70
- NzInputModule,
71
- NzFormModule,
72
- NzGridModule,
73
- NzButtonModule,
74
- NzSelectModule,
75
- NzDatePickerModule,
76
- NzCardModule,
77
- NzSpaceModule,
78
- NzIconModule,
79
- NzI18nModule] }); }
80
- }
81
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NzxConfigurableQueryModule, decorators: [{
82
- type: NgModule,
83
- args: [{
84
- declarations: [
85
- NzxConfigurableQueryComponent,
86
- NzxControlDirective,
87
- NzxConfigurableQueryItemComponent,
88
- NzxInputControlComponent,
89
- NzxTemplateControlComponent,
90
- NzxSelectControlComponent,
91
- NzxDatePickerControlComponent,
92
- NzxRangePickerControlComponent,
93
- ],
94
- imports: [
95
- CommonModule,
96
- ReactiveFormsModule,
97
- NzInputModule,
98
- NzFormModule,
99
- NzGridModule,
100
- NzButtonModule,
101
- NzSelectModule,
102
- NzDatePickerModule,
103
- NzCardModule,
104
- NzSpaceModule,
105
- NzIconModule,
106
- NzI18nModule,
107
- ],
108
- exports: [NzxControlDirective, NzxConfigurableQueryComponent],
109
- }]
110
- }] });
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhYmxlLXF1ZXJ5Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbXBvbmVudHMvY29uZmlndXJhYmxlLXF1ZXJ5L2NvbmZpZ3VyYWJsZS1xdWVyeS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXRELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUNoSCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFN0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUErQnBELE1BQU0sT0FBTywwQkFBMEI7SUFDckMsTUFBTSxDQUFDLE9BQU8sQ0FDWixjQUE4QjtRQUU5QixPQUFPO1lBQ0wsUUFBUSxFQUFFLDBCQUEwQjtZQUNwQyxTQUFTLEVBQUU7Z0JBQ1Q7b0JBQ0UsT0FBTyxFQUFFLFlBQVk7b0JBQ3JCLFFBQVEsRUFBRSxjQUFjO2lCQUN6QjthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUNiLGNBQThCO1FBRTlCLE9BQU87WUFDTCxRQUFRLEVBQUUsMEJBQTBCO1lBQ3BDLFNBQVMsRUFBRTtnQkFDVDtvQkFDRSxPQUFPLEVBQUUsWUFBWTtvQkFDckIsUUFBUSxFQUFFLGNBQWM7aUJBQ3pCO2dCQUNELHFCQUFxQjthQUN0QjtTQUNGLENBQUM7SUFDSixDQUFDOytHQTVCVSwwQkFBMEI7Z0hBQTFCLDBCQUEwQixpQkEzQm5DLDZCQUE2QjtZQUM3QixtQkFBbUI7WUFDbkIsaUNBQWlDO1lBQ2pDLHdCQUF3QjtZQUN4QiwyQkFBMkI7WUFDM0IseUJBQXlCO1lBQ3pCLDZCQUE2QjtZQUM3Qiw4QkFBOEIsYUFHOUIsWUFBWTtZQUNaLG1CQUFtQjtZQUVuQixhQUFhO1lBQ2IsWUFBWTtZQUNaLFlBQVk7WUFDWixjQUFjO1lBQ2QsY0FBYztZQUNkLGtCQUFrQjtZQUNsQixZQUFZO1lBQ1osYUFBYTtZQUNiLFlBQVk7WUFDWixZQUFZLGFBR0osbUJBQW1CLEVBQUUsNkJBQTZCO2dIQUVqRCwwQkFBMEIsWUFqQm5DLFlBQVk7WUFDWixtQkFBbUI7WUFFbkIsYUFBYTtZQUNiLFlBQVk7WUFDWixZQUFZO1lBQ1osY0FBYztZQUNkLGNBQWM7WUFDZCxrQkFBa0I7WUFDbEIsWUFBWTtZQUNaLGFBQWE7WUFDYixZQUFZO1lBQ1osWUFBWTs7NEZBS0gsMEJBQTBCO2tCQTdCdEMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osNkJBQTZCO3dCQUM3QixtQkFBbUI7d0JBQ25CLGlDQUFpQzt3QkFDakMsd0JBQXdCO3dCQUN4QiwyQkFBMkI7d0JBQzNCLHlCQUF5Qjt3QkFDekIsNkJBQTZCO3dCQUM3Qiw4QkFBOEI7cUJBQy9CO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFFbkIsYUFBYTt3QkFDYixZQUFZO3dCQUNaLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxjQUFjO3dCQUNkLGtCQUFrQjt3QkFDbEIsWUFBWTt3QkFDWixhQUFhO3dCQUNiLFlBQVk7d0JBQ1osWUFBWTtxQkFDYjtvQkFFRCxPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSw2QkFBNkIsQ0FBQztpQkFDOUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IE56QnV0dG9uTW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9idXR0b24nO1xuaW1wb3J0IHsgTnpEYXRlUGlja2VyTW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9kYXRlLXBpY2tlcic7XG5pbXBvcnQgeyBOekZvcm1Nb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL2Zvcm0nO1xuaW1wb3J0IHsgTnpHcmlkTW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9ncmlkJztcbmltcG9ydCB7IE56SWNvbk1vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvaWNvbic7XG5pbXBvcnQgeyBOeklucHV0TW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9pbnB1dCc7XG5pbXBvcnQgeyBOelNlbGVjdE1vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvc2VsZWN0JztcblxuaW1wb3J0IHsgTnpJMThuTW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9pMThuJztcbmltcG9ydCB7IE56eENvbmZpZ3VyYWJsZVF1ZXJ5SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29uZmlndXJhYmxlLXF1ZXJ5LWl0ZW0vY29uZmlndXJhYmxlLXF1ZXJ5LWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IE56eENvbmZpZ3VyYWJsZVF1ZXJ5Q29tcG9uZW50IH0gZnJvbSAnLi9jb25maWd1cmFibGUtcXVlcnkuY29tcG9uZW50JztcbmltcG9ydCB7IE56eENvbnRyb2xEaXJlY3RpdmUgfSBmcm9tICcuL2NvbnRyb2wuZGlyZWN0aXZlJztcbmltcG9ydCB7IE56eERhdGVQaWNrZXJDb250cm9sQ29tcG9uZW50IH0gZnJvbSAnLi9jb250cm9scy9kYXRlLXBpY2tlci5jb250cm9sJztcbmltcG9ydCB7IE56eElucHV0Q29udHJvbENvbXBvbmVudCB9IGZyb20gJy4vY29udHJvbHMvaW5wdXQuY29udHJvbCc7XG5pbXBvcnQgeyBOenhSYW5nZVBpY2tlckNvbnRyb2xDb21wb25lbnQgfSBmcm9tICcuL2NvbnRyb2xzL3JhbmdlLXBpY2tlci5jb250cm9sJztcbmltcG9ydCB7IE56eFNlbGVjdENvbnRyb2xDb21wb25lbnQgfSBmcm9tICcuL2NvbnRyb2xzL3NlbGVjdC5jb250cm9sJztcbmltcG9ydCB7IE56eFRlbXBsYXRlQ29udHJvbENvbXBvbmVudCB9IGZyb20gJy4vY29udHJvbHMvdGVtcGxhdGUuY29udHJvbCc7XG5pbXBvcnQgeyBOenhRdWVyeUNvbmZpZ1NlcnZpY2UsIFFVRVJZX0NPTkZJRyB9IGZyb20gJy4vcXVlcnktY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgTnp4UXVlcnlDb25maWcgfSBmcm9tICcuL3R5cGUnO1xuaW1wb3J0IHsgTnpDYXJkTW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9jYXJkJztcbmltcG9ydCB7IE56U3BhY2VNb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL3NwYWNlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgTnp4Q29uZmlndXJhYmxlUXVlcnlDb21wb25lbnQsXG4gICAgTnp4Q29udHJvbERpcmVjdGl2ZSxcbiAgICBOenhDb25maWd1cmFibGVRdWVyeUl0ZW1Db21wb25lbnQsXG4gICAgTnp4SW5wdXRDb250cm9sQ29tcG9uZW50LFxuICAgIE56eFRlbXBsYXRlQ29udHJvbENvbXBvbmVudCxcbiAgICBOenhTZWxlY3RDb250cm9sQ29tcG9uZW50LFxuICAgIE56eERhdGVQaWNrZXJDb250cm9sQ29tcG9uZW50LFxuICAgIE56eFJhbmdlUGlja2VyQ29udHJvbENvbXBvbmVudCxcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuXG4gICAgTnpJbnB1dE1vZHVsZSxcbiAgICBOekZvcm1Nb2R1bGUsXG4gICAgTnpHcmlkTW9kdWxlLFxuICAgIE56QnV0dG9uTW9kdWxlLFxuICAgIE56U2VsZWN0TW9kdWxlLFxuICAgIE56RGF0ZVBpY2tlck1vZHVsZSxcbiAgICBOekNhcmRNb2R1bGUsXG4gICAgTnpTcGFjZU1vZHVsZSxcbiAgICBOekljb25Nb2R1bGUsXG4gICAgTnpJMThuTW9kdWxlLFxuICBdLFxuXG4gIGV4cG9ydHM6IFtOenhDb250cm9sRGlyZWN0aXZlLCBOenhDb25maWd1cmFibGVRdWVyeUNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIE56eENvbmZpZ3VyYWJsZVF1ZXJ5TW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QoXG4gICAgbnp4UXVlcnlDb25maWc6IE56eFF1ZXJ5Q29uZmlnXG4gICk6IE1vZHVsZVdpdGhQcm92aWRlcnM8Tnp4Q29uZmlndXJhYmxlUXVlcnlNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IE56eENvbmZpZ3VyYWJsZVF1ZXJ5TW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBRVUVSWV9DT05GSUcsXG4gICAgICAgICAgdXNlVmFsdWU6IG56eFF1ZXJ5Q29uZmlnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGZvckNoaWxkKFxuICAgIG56eFF1ZXJ5Q29uZmlnOiBOenhRdWVyeUNvbmZpZ1xuICApOiBNb2R1bGVXaXRoUHJvdmlkZXJzPE56eENvbmZpZ3VyYWJsZVF1ZXJ5TW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBOenhDb25maWd1cmFibGVRdWVyeU1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogUVVFUllfQ09ORklHLFxuICAgICAgICAgIHVzZVZhbHVlOiBuenhRdWVyeUNvbmZpZyxcbiAgICAgICAgfSxcbiAgICAgICAgTnp4UXVlcnlDb25maWdTZXJ2aWNlLFxuICAgICAgXSxcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -1,18 +0,0 @@
1
- import { Directive, Input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class NzxControlDirective {
4
- constructor(templateRef) {
5
- this.templateRef = templateRef;
6
- }
7
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NzxControlDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
8
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: NzxControlDirective, selector: "[nzxControl]", inputs: { nzxControl: "nzxControl" }, ngImport: i0 }); }
9
- }
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NzxControlDirective, decorators: [{
11
- type: Directive,
12
- args: [{
13
- selector: '[nzxControl]',
14
- }]
15
- }], ctorParameters: () => [{ type: i0.TemplateRef }], propDecorators: { nzxControl: [{
16
- type: Input
17
- }] } });
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb21wb25lbnRzL2NvbmZpZ3VyYWJsZS1xdWVyeS9jb250cm9sLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBZSxNQUFNLGVBQWUsQ0FBQzs7QUFLOUQsTUFBTSxPQUFPLG1CQUFtQjtJQUU5QixZQUFtQixXQUFpQztRQUFqQyxnQkFBVyxHQUFYLFdBQVcsQ0FBc0I7SUFBRyxDQUFDOytHQUY3QyxtQkFBbUI7bUdBQW5CLG1CQUFtQjs7NEZBQW5CLG1CQUFtQjtrQkFIL0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsY0FBYztpQkFDekI7Z0ZBRVUsVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tuenhDb250cm9sXScsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOenhDb250cm9sRGlyZWN0aXZlIHtcclxuICBASW5wdXQoKSBuenhDb250cm9sITogc3RyaW5nO1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8dW5rbm93bj4pIHt9XHJcbn1cclxuIl19
@@ -1,20 +0,0 @@
1
- import { Directive, Input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- /**
4
- * 用来动态添加control type类型控件,类型控件需要继承此控件
5
- */
6
- export class NzxAbstractControl {
7
- get formControl() {
8
- return this.form.get(this.control.controlName);
9
- }
10
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NzxAbstractControl, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
11
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: NzxAbstractControl, inputs: { form: "form", control: "control" }, ngImport: i0 }); }
12
- }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NzxAbstractControl, decorators: [{
14
- type: Directive
15
- }], propDecorators: { form: [{
16
- type: Input
17
- }], control: [{
18
- type: Input
19
- }] } });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QuY29udHJvbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2NvbXBvbmVudHMvY29uZmlndXJhYmxlLXF1ZXJ5L2NvbnRyb2xzL2Fic3RyYWN0LmNvbnRyb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSWpEOztHQUVHO0FBRUgsTUFBTSxPQUFnQixrQkFBa0I7SUFJdEMsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVksQ0FBZ0IsQ0FBQztJQUNqRSxDQUFDOytHQU5tQixrQkFBa0I7bUdBQWxCLGtCQUFrQjs7NEZBQWxCLGtCQUFrQjtrQkFEdkMsU0FBUzs4QkFFQyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTnp4UXVlcnlDb250cm9sT3B0aW9ucyB9IGZyb20gJy4uL3R5cGUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLyoqXG4gKiDnlKjmnaXliqjmgIHmt7vliqBjb250cm9sIHR5cGXnsbvlnovmjqfku7bvvIznsbvlnovmjqfku7bpnIDopoHnu6fmib/mraTmjqfku7ZcbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTnp4QWJzdHJhY3RDb250cm9sIHtcbiAgQElucHV0KCkgZm9ybSE6IEZvcm1Hcm91cDxhbnk+O1xuICBASW5wdXQoKSBjb250cm9sITogTnp4UXVlcnlDb250cm9sT3B0aW9ucztcblxuICBnZXQgZm9ybUNvbnRyb2woKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQodGhpcy5jb250cm9sLmNvbnRyb2xOYW1lISkgYXMgRm9ybUNvbnRyb2w7XG4gIH1cbn1cbiJdfQ==
@@ -1,37 +0,0 @@
1
- import { ChangeDetectionStrategy, Component } from '@angular/core';
2
- import { NzxAbstractControl } from './abstract.control';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- import * as i2 from "@angular/forms";
6
- import * as i3 from "ng-zorro-antd/date-picker";
7
- export class NzxDatePickerControlComponent extends NzxAbstractControl {
8
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NzxDatePickerControlComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
9
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: NzxDatePickerControlComponent, selector: "nzx-date-picker-control", usesInheritance: true, ngImport: i0, template: `
10
- <ng-container [formGroup]="form">
11
- <nz-date-picker
12
- [ngStyle]="{ width: '100%' }"
13
- [formControl]="formControl"
14
- [nzPlaceHolder]="control.placeholder!"
15
- >
16
- </nz-date-picker>
17
- </ng-container>
18
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i3.NzDatePickerComponent, selector: "nz-date-picker,nz-week-picker,nz-month-picker,nz-quarter-picker,nz-year-picker,nz-range-picker", inputs: ["nzAllowClear", "nzAutoFocus", "nzDisabled", "nzBorderless", "nzInputReadOnly", "nzInline", "nzOpen", "nzDisabledDate", "nzLocale", "nzPlaceHolder", "nzPopupStyle", "nzDropdownClassName", "nzSize", "nzStatus", "nzFormat", "nzDateRender", "nzDisabledTime", "nzRenderExtraFooter", "nzShowToday", "nzMode", "nzShowNow", "nzRanges", "nzDefaultPickerValue", "nzSeparator", "nzSuffixIcon", "nzBackdrop", "nzId", "nzPlacement", "nzShowWeekNumber", "nzShowTime"], outputs: ["nzOnPanelChange", "nzOnCalendarChange", "nzOnOk", "nzOnOpenChange"], exportAs: ["nzDatePicker"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
19
- }
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NzxDatePickerControlComponent, decorators: [{
21
- type: Component,
22
- args: [{
23
- selector: 'nzx-date-picker-control',
24
- template: `
25
- <ng-container [formGroup]="form">
26
- <nz-date-picker
27
- [ngStyle]="{ width: '100%' }"
28
- [formControl]="formControl"
29
- [nzPlaceHolder]="control.placeholder!"
30
- >
31
- </nz-date-picker>
32
- </ng-container>
33
- `,
34
- changeDetection: ChangeDetectionStrategy.OnPush,
35
- }]
36
- }] });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29udHJvbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2NvbXBvbmVudHMvY29uZmlndXJhYmxlLXF1ZXJ5L2NvbnRyb2xzL2RhdGUtcGlja2VyLmNvbnRyb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7QUFnQnhELE1BQU0sT0FBTyw2QkFBOEIsU0FBUSxrQkFBa0I7K0dBQXhELDZCQUE2QjttR0FBN0IsNkJBQTZCLHNGQVo5Qjs7Ozs7Ozs7O0dBU1Q7OzRGQUdVLDZCQUE2QjtrQkFkekMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxRQUFRLEVBQUU7Ozs7Ozs7OztHQVNUO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE56eEFic3RyYWN0Q29udHJvbCB9IGZyb20gJy4vYWJzdHJhY3QuY29udHJvbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ256eC1kYXRlLXBpY2tlci1jb250cm9sJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctY29udGFpbmVyIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICAgICAgPG56LWRhdGUtcGlja2VyXG4gICAgICAgIFtuZ1N0eWxlXT1cInsgd2lkdGg6ICcxMDAlJyB9XCJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgICAgW256UGxhY2VIb2xkZXJdPVwiY29udHJvbC5wbGFjZWhvbGRlciFcIlxuICAgICAgPlxuICAgICAgPC9uei1kYXRlLXBpY2tlcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgYCxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE56eERhdGVQaWNrZXJDb250cm9sQ29tcG9uZW50IGV4dGVuZHMgTnp4QWJzdHJhY3RDb250cm9sIHt9XG4iXX0=
@@ -1,36 +0,0 @@
1
- import { ChangeDetectionStrategy, Component } from '@angular/core';
2
- import { NzxAbstractControl } from './abstract.control';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/forms";
5
- import * as i2 from "ng-zorro-antd/input";
6
- export class NzxInputControlComponent extends NzxAbstractControl {
7
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NzxInputControlComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
8
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: NzxInputControlComponent, selector: "nzx-input-control", usesInheritance: true, ngImport: i0, template: `
9
- <ng-container [formGroup]="form">
10
- <input
11
- [formControl]="formControl"
12
- nz-input
13
- type="text"
14
- [placeholder]="control.placeholder"
15
- />
16
- </ng-container>
17
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.NzInputDirective, selector: "input[nz-input],textarea[nz-input]", inputs: ["nzBorderless", "nzSize", "nzStepperless", "nzStatus", "disabled"], exportAs: ["nzInput"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
18
- }
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NzxInputControlComponent, decorators: [{
20
- type: Component,
21
- args: [{
22
- selector: 'nzx-input-control',
23
- template: `
24
- <ng-container [formGroup]="form">
25
- <input
26
- [formControl]="formControl"
27
- nz-input
28
- type="text"
29
- [placeholder]="control.placeholder"
30
- />
31
- </ng-container>
32
- `,
33
- changeDetection: ChangeDetectionStrategy.OnPush,
34
- }]
35
- }] });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29udHJvbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2NvbXBvbmVudHMvY29uZmlndXJhYmxlLXF1ZXJ5L2NvbnRyb2xzL2lucHV0LmNvbnRyb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7OztBQWdCeEQsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGtCQUFrQjsrR0FBbkQsd0JBQXdCO21HQUF4Qix3QkFBd0IsZ0ZBWnpCOzs7Ozs7Ozs7R0FTVDs7NEZBR1Usd0JBQXdCO2tCQWRwQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFFBQVEsRUFBRTs7Ozs7Ozs7O0dBU1Q7b0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2hEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTnp4QWJzdHJhY3RDb250cm9sIH0gZnJvbSAnLi9hYnN0cmFjdC5jb250cm9sJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnp4LWlucHV0LWNvbnRyb2wnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy1jb250YWluZXIgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gICAgICA8aW5wdXRcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgICAgbnotaW5wdXRcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY29udHJvbC5wbGFjZWhvbGRlclwiXG4gICAgICAvPlxuICAgIDwvbmctY29udGFpbmVyPlxuICBgLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTnp4SW5wdXRDb250cm9sQ29tcG9uZW50IGV4dGVuZHMgTnp4QWJzdHJhY3RDb250cm9sIHt9XG4iXX0=