ng-zorro-antd-extension 18.1.4 → 19.0.0

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 -301
  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,34 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { inject, Pipe } from '@angular/core';
3
- import { DomSanitizer } from '@angular/platform-browser';
4
- import { ExtensionWithConfig, NzxConfigService, } from 'ng-zorro-antd-extension/core/config';
5
- import * as i0 from "@angular/core";
6
- const NZ_CONFIG_MODULE_NAME = 'nzxSafeUrl';
7
- export class NzxSafeUrlPipe {
8
- constructor() {
9
- this._nzModuleName = NZ_CONFIG_MODULE_NAME;
10
- this.nzxConfigService = inject(NzxConfigService);
11
- this.domSanitizer = inject(DomSanitizer);
12
- }
13
- transform(value, protocol = this.protocol) {
14
- if (/^(http|https|ftp):\/\/[^\s/$.?#].[^\s]*$/.test(value)) {
15
- if (protocol) {
16
- value = value.replace(/^(http|https)/, protocol);
17
- }
18
- return this.domSanitizer.bypassSecurityTrustUrl(value);
19
- }
20
- return value;
21
- }
22
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NzxSafeUrlPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
23
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: NzxSafeUrlPipe, name: "nzxSafeUrl" }); }
24
- }
25
- __decorate([
26
- ExtensionWithConfig()
27
- ], NzxSafeUrlPipe.prototype, "protocol", void 0);
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NzxSafeUrlPipe, decorators: [{
29
- type: Pipe,
30
- args: [{
31
- name: 'nzxSafeUrl',
32
- }]
33
- }], propDecorators: { protocol: [] } });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZS11cmwucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbXBvbmVudHMvcGlwZXMvc2FmZS11cmwucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQVcsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQ0wsbUJBQW1CLEVBRW5CLGdCQUFnQixHQUNqQixNQUFNLHFDQUFxQyxDQUFDOztBQUU3QyxNQUFNLHFCQUFxQixHQUFpQixZQUFZLENBQUM7QUFLekQsTUFBTSxPQUFPLGNBQWM7SUFIM0I7UUFJVyxrQkFBYSxHQUFpQixxQkFBcUIsQ0FBQztRQUdyRCxxQkFBZ0IsR0FBcUIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDOUQsaUJBQVksR0FBaUIsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0tBWTNEO0lBVkMsU0FBUyxDQUFDLEtBQWEsRUFBRSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVE7UUFDL0MsSUFBSSwwQ0FBMEMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMzRCxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNiLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNuRCxDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pELENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7K0dBaEJVLGNBQWM7NkdBQWQsY0FBYzs7QUFFRjtJQUF0QixtQkFBbUIsRUFBRTtnREFBd0M7NEZBRm5ELGNBQWM7a0JBSDFCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFlBQVk7aUJBQ25COzhCQUd3QixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7XG4gIEV4dGVuc2lvbldpdGhDb25maWcsXG4gIE56eENvbmZpZ0tleSxcbiAgTnp4Q29uZmlnU2VydmljZSxcbn0gZnJvbSAnbmctem9ycm8tYW50ZC1leHRlbnNpb24vY29yZS9jb25maWcnO1xuXG5jb25zdCBOWl9DT05GSUdfTU9EVUxFX05BTUU6IE56eENvbmZpZ0tleSA9ICduenhTYWZlVXJsJztcblxuQFBpcGUoe1xuICBuYW1lOiAnbnp4U2FmZVVybCcsXG59KVxuZXhwb3J0IGNsYXNzIE56eFNhZmVVcmxQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHJlYWRvbmx5IF9uek1vZHVsZU5hbWU6IE56eENvbmZpZ0tleSA9IE5aX0NPTkZJR19NT0RVTEVfTkFNRTtcbiAgQEV4dGVuc2lvbldpdGhDb25maWcoKSBwcm90b2NvbDogJ2h0dHAnIHwgJ2h0dHBzJyB8IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIG56eENvbmZpZ1NlcnZpY2U6IE56eENvbmZpZ1NlcnZpY2UgPSBpbmplY3QoTnp4Q29uZmlnU2VydmljZSk7XG4gIHByaXZhdGUgZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIgPSBpbmplY3QoRG9tU2FuaXRpemVyKTtcblxuICB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZywgcHJvdG9jb2wgPSB0aGlzLnByb3RvY29sKTogU2FmZVVybCB7XG4gICAgaWYgKC9eKGh0dHB8aHR0cHN8ZnRwKTpcXC9cXC9bXlxccy8kLj8jXS5bXlxcc10qJC8udGVzdCh2YWx1ZSkpIHtcbiAgICAgIGlmIChwcm90b2NvbCkge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL14oaHR0cHxodHRwcykvLCBwcm90b2NvbCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59XG4iXX0=
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctem9ycm8tYW50ZC1leHRlbnNpb24tcHJpbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb21wb25lbnRzL3ByaW50L25nLXpvcnJvLWFudGQtZXh0ZW5zaW9uLXByaW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
@@ -1,22 +0,0 @@
1
- import { Directive, Input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class NzxPrintContentDirective {
4
- constructor(elementRef) {
5
- this.elementRef = elementRef;
6
- this.identifierStr = '';
7
- this.customStyle = '';
8
- }
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NzxPrintContentDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
10
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: NzxPrintContentDirective, selector: "[nzxPrintContent]", inputs: { identifierStr: "identifierStr", customStyle: "customStyle" }, ngImport: i0 }); }
11
- }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NzxPrintContentDirective, decorators: [{
13
- type: Directive,
14
- args: [{
15
- selector: '[nzxPrintContent]',
16
- }]
17
- }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { identifierStr: [{
18
- type: Input
19
- }], customStyle: [{
20
- type: Input
21
- }] } });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnp4LXByaW50LWNvbnRlbnQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29tcG9uZW50cy9wcmludC9uengtcHJpbnQtY29udGVudC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSzdELE1BQU0sT0FBTyx3QkFBd0I7SUFHbkMsWUFBbUIsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUZoQyxrQkFBYSxHQUFzQixFQUFFLENBQUM7UUFDdEMsZ0JBQVcsR0FBRyxFQUFFLENBQUM7SUFDa0IsQ0FBQzsrR0FIbEMsd0JBQXdCO21HQUF4Qix3QkFBd0I7OzRGQUF4Qix3QkFBd0I7a0JBSHBDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtpQkFDOUI7K0VBRVUsYUFBYTtzQkFBckIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbnp4UHJpbnRDb250ZW50XScsXG59KVxuZXhwb3J0IGNsYXNzIE56eFByaW50Q29udGVudERpcmVjdGl2ZSB7XG4gIEBJbnB1dCgpIGlkZW50aWZpZXJTdHI6IHN0cmluZyB8IHN0cmluZ1tdID0gJyc7XG4gIEBJbnB1dCgpIGN1c3RvbVN0eWxlID0gJyc7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7fVxufVxuIl19
@@ -1,301 +0,0 @@
1
- import { Component, ContentChildren, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
2
- import { CoreViewer, Navigation, PageViewMode, } from '@vivliostyle/core';
3
- import { NzxPrintContentDirective } from './nzx-print-content.directive';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/common";
6
- import * as i2 from "ng-zorro-antd/grid";
7
- import * as i3 from "ng-zorro-antd/pagination";
8
- /**
9
- * Vivliostyle 打印
10
- */
11
- export class NzxPrintVComponent {
12
- constructor(cd) {
13
- this.cd = cd;
14
- this.printTitle = 'pdf';
15
- /**
16
- * a4 794px1123px
17
- */
18
- this.width = 814;
19
- this.height = 1143;
20
- this.enablePreview = true;
21
- this.pixelRatio = 8;
22
- this.pageRenderComplete = new EventEmitter();
23
- this.pageTotal = 0;
24
- this._title = document.title;
25
- this._isRenderComplete = false;
26
- this.handleError = (payload) => {
27
- console.log('error::', payload);
28
- };
29
- this.handleReadyStateChange = (payload) => {
30
- this._isRenderComplete = false;
31
- this.pageRenderComplete.emit(false);
32
- if (this.viewer && this.viewer.readyState === 'complete') {
33
- const intervalTag = setInterval(() => {
34
- if (this.iframeEl &&
35
- this.iframeEl.contentWindow &&
36
- this.iframeEl.contentWindow.document) {
37
- const images = this.iframeEl.contentWindow.document.getElementsByTagName('img');
38
- let allImagesLoaded = true;
39
- for (let i = 0; i < images.length; i++) {
40
- if (!images[i].complete) {
41
- allImagesLoaded = false;
42
- break;
43
- }
44
- }
45
- if (allImagesLoaded) {
46
- console.log('All images in iframe loaded successfully');
47
- this.pageRenderComplete.emit(true);
48
- this._isRenderComplete = true;
49
- clearInterval(intervalTag);
50
- }
51
- }
52
- }, 1000);
53
- }
54
- };
55
- this.handleHyperlink = (payload) => {
56
- console.log('handleHyperlink::', payload);
57
- };
58
- this.handleLoaded = (payload) => {
59
- console.log('handleLoaded::', payload);
60
- };
61
- this.handleNavigation = (payload) => {
62
- this.pageTotal = payload.epageCount;
63
- this.cd.markForCheck();
64
- };
65
- }
66
- ngAfterViewInit() {
67
- setTimeout(() => {
68
- this.createIframeWrapper();
69
- }, 1000);
70
- }
71
- ngOnDestroy() {
72
- if (this.viewer) {
73
- this.clearView();
74
- }
75
- }
76
- onPageIndexChange(num) {
77
- if (this.viewer) {
78
- this.viewer.navigateToPage(Navigation.EPAGE, num - 1);
79
- }
80
- }
81
- print() {
82
- if (this._isRenderComplete) {
83
- this.iframeEl.contentWindow.print();
84
- }
85
- else {
86
- console.warn('rending...');
87
- }
88
- }
89
- refresh() {
90
- setTimeout(() => {
91
- this.createIframeWrapper();
92
- }, 100);
93
- }
94
- createIframeWrapper() {
95
- if (this.vivViewRef) {
96
- this.clearView();
97
- this.iframeEl = document.createElement('iframe');
98
- this.iframeEl.height = this.height + '';
99
- this.iframeEl.width = this.width + '';
100
- this.iframeEl.style.border = '1px solid #ccc';
101
- this.iframeEl.style.background = '#fff';
102
- const template = `
103
- <!DOCTYPE html>
104
- <html data-vivliostyle-paginated="true">
105
- <head>
106
- <meta charset="utf-8" />
107
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
108
- <base href="/" />
109
- <title>${this.printTitle}</title>
110
- <style>
111
- html[data-vivliostyle-paginated] {
112
- width: 100%;
113
- height: 100%;
114
- }
115
- html[data-vivliostyle-paginated] body,
116
- html[data-vivliostyle-paginated] [data-vivliostyle-viewer-viewport] {
117
- width: 100% !important;
118
- height: 100% !important;
119
- background: #fff;
120
- }
121
- html[data-vivliostyle-paginated],
122
- html[data-vivliostyle-paginated] body {
123
- margin: 0;
124
- padding: 0;
125
- }
126
- </style>
127
- <style id="vivliostyle-page-rules"></style>
128
- </head>
129
- <body>
130
- <div id="vivliostyle-viewer-viewport"></div>
131
- </body>
132
- </html>
133
- `;
134
- this.iframeEl.srcdoc = template;
135
- this.vivViewRef.nativeElement.appendChild(this.iframeEl);
136
- this.iframeEl.contentWindow.onbeforeprint = () => {
137
- this.iframeEl.contentWindow.parent.document.title = this.printTitle;
138
- };
139
- this.iframeEl.contentWindow.onafterprint = () => {
140
- this.iframeEl.contentWindow.parent.document.title = this._title;
141
- };
142
- this.createVivViewer();
143
- }
144
- }
145
- createVivViewer() {
146
- this.iframeEl.onload = () => {
147
- const els = this._printElQueryList.toArray();
148
- const templates = this.getVivTemplates(els);
149
- const options = [];
150
- templates.forEach((template) => {
151
- const docBlob = new Blob([template], {
152
- type: 'text/html',
153
- });
154
- const docURL = URL.createObjectURL(docBlob);
155
- options.push({ url: docURL });
156
- });
157
- this.viewer = new CoreViewer({
158
- viewportElement: this.iframeEl.contentWindow?.document.body
159
- .firstElementChild,
160
- }, {
161
- pageViewMode: PageViewMode.SINGLE_PAGE,
162
- pixelRatio: this.pixelRatio,
163
- });
164
- this.viewer.loadDocument(options);
165
- this.createListener(this.viewer);
166
- };
167
- }
168
- createListener(viewer) {
169
- viewer.addListener('error', this.handleError);
170
- viewer.addListener('readystatechange', this.handleReadyStateChange);
171
- viewer.addListener('loaded', this.handleLoaded);
172
- viewer.addListener('hyperlink', this.handleHyperlink);
173
- viewer.addListener('nav', this.handleNavigation);
174
- }
175
- removeListeners(viewer) {
176
- viewer.removeListener('error', this.handleError);
177
- viewer.removeListener('readystatechange', this.handleReadyStateChange);
178
- viewer.removeListener('loaded', this.handleLoaded);
179
- viewer.removeListener('hyperlink', this.handleHyperlink);
180
- viewer.removeListener('nav', this.handleNavigation);
181
- }
182
- getStyles(identifierStr) {
183
- const stylesArray = [];
184
- const styleElements = document.getElementsByTagName('style');
185
- const length = styleElements.length;
186
- let identifiers = [];
187
- if (Array.isArray(identifierStr)) {
188
- identifiers = [...identifierStr];
189
- }
190
- else {
191
- identifiers = [identifierStr];
192
- }
193
- for (let index = 0; index < length; index++) {
194
- identifiers.forEach((s) => {
195
- if (styleElements[index].outerHTML.includes(s)) {
196
- const formateStr = styleElements[index].outerHTML.replace(/\/\*[\s\S]*?\*\//g, '');
197
- stylesArray.push(formateStr);
198
- }
199
- });
200
- }
201
- return stylesArray.join('\r\n');
202
- }
203
- getVivTemplates(directives) {
204
- const templates = [];
205
- directives.forEach((d) => {
206
- let styles = '';
207
- if (d.identifierStr || d.identifierStr.length > 0) {
208
- styles = this.getStyles(d.identifierStr);
209
- }
210
- let html = `
211
- <!DOCTYPE html>
212
- <html>
213
- <head>
214
- <meta charset="utf-8" />
215
- <title>${this.printTitle}</title>
216
- <base href="/" />
217
- <meta name="viewport" content="width=device-width, initial-scale=1" />
218
- ${d.customStyle}
219
- ${styles}
220
- </head>
221
- <body>
222
- ${d.elementRef.nativeElement.outerHTML}
223
- </body>
224
- </html>
225
- `;
226
- html = html.replace(/<!---->/g, ' ');
227
- templates.push(html);
228
- });
229
- return templates;
230
- }
231
- clearView() {
232
- if (this.viewer) {
233
- this.removeListeners(this.viewer);
234
- }
235
- this.vivViewRef.nativeElement.innerHTML = '';
236
- this.viewer = undefined;
237
- this._isRenderComplete = false;
238
- }
239
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NzxPrintVComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
240
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: NzxPrintVComponent, selector: "nzx-print-v", inputs: { printTitle: "printTitle", width: "width", height: "height", enablePreview: "enablePreview", pixelRatio: "pixelRatio" }, outputs: { pageRenderComplete: "pageRenderComplete" }, queries: [{ propertyName: "_printElQueryList", predicate: NzxPrintContentDirective }], viewQueries: [{ propertyName: "vivViewRef", first: true, predicate: ["vivView"], descendants: true }], ngImport: i0, template: `
241
- <ng-content select="[nzxPrintHeader]"></ng-content>
242
-
243
- <div #vivView [ngStyle]="{ margin: '10px 0' }"></div>
244
-
245
- <div nz-row nzJustify="end">
246
- <ng-template #totalTemplate let-total>共 {{ total }} 页</ng-template>
247
- <nz-pagination
248
- [nzPageIndex]="1"
249
- [nzTotal]="pageTotal"
250
- [nzPageSize]="1"
251
- [nzSize]="'small'"
252
- [nzShowTotal]="totalTemplate"
253
- nzShowQuickJumper
254
- (nzPageIndexChange)="onPageIndexChange($event)"
255
- ></nz-pagination>
256
- </div>
257
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.NzRowDirective, selector: "[nz-row],nz-row,nz-form-item", inputs: ["nzAlign", "nzJustify", "nzGutter"], exportAs: ["nzRow"] }, { kind: "component", type: i3.NzPaginationComponent, selector: "nz-pagination", inputs: ["nzShowTotal", "nzItemRender", "nzSize", "nzPageSizeOptions", "nzShowSizeChanger", "nzShowQuickJumper", "nzSimple", "nzDisabled", "nzResponsive", "nzHideOnSinglePage", "nzTotal", "nzPageIndex", "nzPageSize"], outputs: ["nzPageSizeChange", "nzPageIndexChange"], exportAs: ["nzPagination"] }] }); }
258
- }
259
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NzxPrintVComponent, decorators: [{
260
- type: Component,
261
- args: [{
262
- selector: 'nzx-print-v',
263
- template: `
264
- <ng-content select="[nzxPrintHeader]"></ng-content>
265
-
266
- <div #vivView [ngStyle]="{ margin: '10px 0' }"></div>
267
-
268
- <div nz-row nzJustify="end">
269
- <ng-template #totalTemplate let-total>共 {{ total }} 页</ng-template>
270
- <nz-pagination
271
- [nzPageIndex]="1"
272
- [nzTotal]="pageTotal"
273
- [nzPageSize]="1"
274
- [nzSize]="'small'"
275
- [nzShowTotal]="totalTemplate"
276
- nzShowQuickJumper
277
- (nzPageIndexChange)="onPageIndexChange($event)"
278
- ></nz-pagination>
279
- </div>
280
- `,
281
- }]
282
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { printTitle: [{
283
- type: Input
284
- }], width: [{
285
- type: Input
286
- }], height: [{
287
- type: Input
288
- }], enablePreview: [{
289
- type: Input
290
- }], pixelRatio: [{
291
- type: Input
292
- }], pageRenderComplete: [{
293
- type: Output
294
- }], vivViewRef: [{
295
- type: ViewChild,
296
- args: ['vivView']
297
- }], _printElQueryList: [{
298
- type: ContentChildren,
299
- args: [NzxPrintContentDirective]
300
- }] } });
301
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnp4LXByaW50LXYuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29tcG9uZW50cy9wcmludC9uengtcHJpbnQtdi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFlBQVksR0FHYixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7OztBQUV6RTs7R0FFRztBQXNCSCxNQUFNLE9BQU8sa0JBQWtCO0lBdUI3QixZQUFvQixFQUFxQjtRQUFyQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQXRCaEMsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUM1Qjs7V0FFRztRQUNNLFVBQUssR0FBRyxHQUFHLENBQUM7UUFDWixXQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2Qsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFDckIsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNkLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFHM0QsY0FBUyxHQUFHLENBQUMsQ0FBQztRQU9OLFdBQU0sR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBRXhCLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQXNIMUIsZ0JBQVcsR0FBRyxDQUFDLE9BQWdCLEVBQUUsRUFBRTtZQUN6QyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUM7UUFFTSwyQkFBc0IsR0FBRyxDQUFDLE9BQWdCLEVBQUUsRUFBRTtZQUNwRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1lBQy9CLElBQUksQ0FB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QUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29yZVZpZXdlcixcbiAgTmF2aWdhdGlvbixcbiAgUGFnZVZpZXdNb2RlLFxuICBQYXlsb2FkLFxuICBTaW5nbGVEb2N1bWVudE9wdGlvbnMsXG59IGZyb20gJ0B2aXZsaW9zdHlsZS9jb3JlJztcbmltcG9ydCB7IE56eFByaW50Q29udGVudERpcmVjdGl2ZSB9IGZyb20gJy4vbnp4LXByaW50LWNvbnRlbnQuZGlyZWN0aXZlJztcblxuLyoqXG4gKiBWaXZsaW9zdHlsZSDmiZPljbBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnp4LXByaW50LXYnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltuenhQcmludEhlYWRlcl1cIj48L25nLWNvbnRlbnQ+XG5cbiAgICA8ZGl2ICN2aXZWaWV3IFtuZ1N0eWxlXT1cInsgbWFyZ2luOiAnMTBweCAwJyB9XCI+PC9kaXY+XG5cbiAgICA8ZGl2IG56LXJvdyBuekp1c3RpZnk9XCJlbmRcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjdG90YWxUZW1wbGF0ZSBsZXQtdG90YWw+5YWxIHt7IHRvdGFsIH19IOmhtTwvbmctdGVtcGxhdGU+XG4gICAgICA8bnotcGFnaW5hdGlvblxuICAgICAgICBbbnpQYWdlSW5kZXhdPVwiMVwiXG4gICAgICAgIFtuelRvdGFsXT1cInBhZ2VUb3RhbFwiXG4gICAgICAgIFtuelBhZ2VTaXplXT1cIjFcIlxuICAgICAgICBbbnpTaXplXT1cIidzbWFsbCdcIlxuICAgICAgICBbbnpTaG93VG90YWxdPVwidG90YWxUZW1wbGF0ZVwiXG4gICAgICAgIG56U2hvd1F1aWNrSnVtcGVyXG4gICAgICAgIChuelBhZ2VJbmRleENoYW5nZSk9XCJvblBhZ2VJbmRleENoYW5nZSgkZXZlbnQpXCJcbiAgICAgID48L256LXBhZ2luYXRpb24+XG4gICAgPC9kaXY+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIE56eFByaW50VkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIHByaW50VGl0bGUgPSAncGRmJztcbiAgLyoqXG4gICAqIGE0IDc5NHB4MTEyM3B4XG4gICAqL1xuICBASW5wdXQoKSB3aWR0aCA9IDgxNDtcbiAgQElucHV0KCkgaGVpZ2h0ID0gMTE0MztcbiAgQElucHV0KCkgZW5hYmxlUHJldmlldyA9IHRydWU7XG4gIEBJbnB1dCgpIHBpeGVsUmF0aW8gPSA4O1xuICBAT3V0cHV0KCkgcGFnZVJlbmRlckNvbXBsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIHZpZXdlcjogQ29yZVZpZXdlciB8IHVuZGVmaW5lZDtcbiAgcGFnZVRvdGFsID0gMDtcblxuICBAVmlld0NoaWxkKCd2aXZWaWV3JylcbiAgcHJpdmF0ZSB2aXZWaWV3UmVmITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgQENvbnRlbnRDaGlsZHJlbihOenhQcmludENvbnRlbnREaXJlY3RpdmUpXG4gIHByaXZhdGUgX3ByaW50RWxRdWVyeUxpc3QhOiBRdWVyeUxpc3Q8Tnp4UHJpbnRDb250ZW50RGlyZWN0aXZlPjtcbiAgcHJpdmF0ZSBfdGl0bGUgPSBkb2N1bWVudC50aXRsZTtcbiAgcHJpdmF0ZSBpZnJhbWVFbCE6IEhUTUxJRnJhbWVFbGVtZW50O1xuICBwcml2YXRlIF9pc1JlbmRlckNvbXBsZXRlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5jcmVhdGVJZnJhbWVXcmFwcGVyKCk7XG4gICAgfSwgMTAwMCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy52aWV3ZXIpIHtcbiAgICAgIHRoaXMuY2xlYXJWaWV3KCk7XG4gICAgfVxuICB9XG5cbiAgb25QYWdlSW5kZXhDaGFuZ2UobnVtOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy52aWV3ZXIpIHtcbiAgICAgIHRoaXMudmlld2VyLm5hdmlnYXRlVG9QYWdlKE5hdmlnYXRpb24uRVBBR0UsIG51bSAtIDEpO1xuICAgIH1cbiAgfVxuXG4gIHByaW50KCkge1xuICAgIGlmICh0aGlzLl9pc1JlbmRlckNvbXBsZXRlKSB7XG4gICAgICB0aGlzLmlmcmFtZUVsLmNvbnRlbnRXaW5kb3chLnByaW50KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybigncmVuZGluZy4uLicpO1xuICAgIH1cbiAgfVxuXG4gIHJlZnJlc2goKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNyZWF0ZUlmcmFtZVdyYXBwZXIoKTtcbiAgICB9LCAxMDApO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVJZnJhbWVXcmFwcGVyKCkge1xuICAgIGlmICh0aGlzLnZpdlZpZXdSZWYpIHtcbiAgICAgIHRoaXMuY2xlYXJWaWV3KCk7XG5cbiAgICAgIHRoaXMuaWZyYW1lRWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTtcbiAgICAgIHRoaXMuaWZyYW1lRWwuaGVpZ2h0ID0gdGhpcy5oZWlnaHQgKyAnJztcbiAgICAgIHRoaXMuaWZyYW1lRWwud2lkdGggPSB0aGlzLndpZHRoICsgJyc7XG4gICAgICB0aGlzLmlmcmFtZUVsLnN0eWxlLmJvcmRlciA9ICcxcHggc29saWQgI2NjYyc7XG4gICAgICB0aGlzLmlmcmFtZUVsLnN0eWxlLmJhY2tncm91bmQgPSAnI2ZmZic7XG5cbiAgICAgIGNvbnN0IHRlbXBsYXRlID0gYFxuICAgICAgICA8IURPQ1RZUEUgaHRtbD5cbiAgICAgICAgPGh0bWwgZGF0YS12aXZsaW9zdHlsZS1wYWdpbmF0ZWQ9XCJ0cnVlXCI+XG4gICAgICAgICAgPGhlYWQ+XG4gICAgICAgICAgICA8bWV0YSBjaGFyc2V0PVwidXRmLThcIiAvPlxuICAgICAgICAgICAgPG1ldGEgbmFtZT1cInZpZXdwb3J0XCIgY29udGVudD1cIndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjBcIiAvPlxuICAgICAgICAgICAgPGJhc2UgaHJlZj1cIi9cIiAvPlxuICAgICAgICAgICAgPHRpdGxlPiR7dGhpcy5wcmludFRpdGxlfTwvdGl0bGU+XG4gICAgICAgICAgICA8c3R5bGU+XG4gICAgICAgICAgICAgIGh0bWxbZGF0YS12aXZsaW9zdHlsZS1wYWdpbmF0ZWRdIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaHRtbFtkYXRhLXZpdmxpb3N0eWxlLXBhZ2luYXRlZF0gYm9keSxcbiAgICAgICAgICAgICAgaHRtbFtkYXRhLXZpdmxpb3N0eWxlLXBhZ2luYXRlZF0gW2RhdGEtdml2bGlvc3R5bGUtdmlld2VyLXZpZXdwb3J0XSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGh0bWxbZGF0YS12aXZsaW9zdHlsZS1wYWdpbmF0ZWRdLFxuICAgICAgICAgICAgICBodG1sW2RhdGEtdml2bGlvc3R5bGUtcGFnaW5hdGVkXSBib2R5IHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9zdHlsZT5cbiAgICAgICAgICAgIDxzdHlsZSBpZD1cInZpdmxpb3N0eWxlLXBhZ2UtcnVsZXNcIj48L3N0eWxlPlxuICAgICAgICAgIDwvaGVhZD5cbiAgICAgICAgICA8Ym9keT5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJ2aXZsaW9zdHlsZS12aWV3ZXItdmlld3BvcnRcIj48L2Rpdj5cbiAgICAgICAgICA8L2JvZHk+XG4gICAgICAgIDwvaHRtbD5cbiAgICAgIGA7XG5cbiAgICAgIHRoaXMuaWZyYW1lRWwuc3JjZG9jID0gdGVtcGxhdGU7XG4gICAgICB0aGlzLnZpdlZpZXdSZWYubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmlmcmFtZUVsKTtcbiAgICAgIHRoaXMuaWZyYW1lRWwuY29udGVudFdpbmRvdyEub25iZWZvcmVwcmludCA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5pZnJhbWVFbC5jb250ZW50V2luZG93IS5wYXJlbnQuZG9jdW1lbnQudGl0bGUgPSB0aGlzLnByaW50VGl0bGU7XG4gICAgICB9O1xuICAgICAgdGhpcy5pZnJhbWVFbC5jb250ZW50V2luZG93IS5vbmFmdGVycHJpbnQgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuaWZyYW1lRWwuY29udGVudFdpbmRvdyEucGFyZW50LmRvY3VtZW50LnRpdGxlID0gdGhpcy5fdGl0bGU7XG4gICAgICB9O1xuICAgICAgdGhpcy5jcmVhdGVWaXZWaWV3ZXIoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVZpdlZpZXdlcigpIHtcbiAgICB0aGlzLmlmcmFtZUVsLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgIGNvbnN0IGVsczogTnp4UHJpbnRDb250ZW50RGlyZWN0aXZlW10gPSB0aGlzLl9wcmludEVsUXVlcnlMaXN0LnRvQXJyYXkoKTtcbiAgICAgIGNvbnN0IHRlbXBsYXRlcyA9IHRoaXMuZ2V0Vml2VGVtcGxhdGVzKGVscyk7XG4gICAgICBjb25zdCBvcHRpb25zOiBTaW5nbGVEb2N1bWVudE9wdGlvbnNbXSA9IFtdO1xuICAgICAgdGVtcGxhdGVzLmZvckVhY2goKHRlbXBsYXRlKSA9PiB7XG4gICAgICAgIGNvbnN0IGRvY0Jsb2IgPSBuZXcgQmxvYihbdGVtcGxhdGVdLCB7XG4gICAgICAgICAgdHlwZTogJ3RleHQvaHRtbCcsXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBkb2NVUkwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGRvY0Jsb2IpO1xuICAgICAgICBvcHRpb25zLnB1c2goeyB1cmw6IGRvY1VSTCB9KTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy52aWV3ZXIgPSBuZXcgQ29yZVZpZXdlcihcbiAgICAgICAge1xuICAgICAgICAgIHZpZXdwb3J0RWxlbWVudDogdGhpcy5pZnJhbWVFbC5jb250ZW50V2luZG93Py5kb2N1bWVudC5ib2R5XG4gICAgICAgICAgICAuZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTEVsZW1lbnQsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwYWdlVmlld01vZGU6IFBhZ2VWaWV3TW9kZS5TSU5HTEVfUEFHRSxcbiAgICAgICAgICBwaXhlbFJhdGlvOiB0aGlzLnBpeGVsUmF0aW8sXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgICB0aGlzLnZpZXdlci5sb2FkRG9jdW1lbnQob3B0aW9ucyk7XG4gICAgICB0aGlzLmNyZWF0ZUxpc3RlbmVyKHRoaXMudmlld2VyKTtcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVFcnJvciA9IChwYXlsb2FkOiBQYXlsb2FkKSA9PiB7XG4gICAgY29uc29sZS5sb2coJ2Vycm9yOjonLCBwYXlsb2FkKTtcbiAgfTtcblxuICBwcml2YXRlIGhhbmRsZVJlYWR5U3RhdGVDaGFuZ2UgPSAocGF5bG9hZDogUGF5bG9hZCkgPT4ge1xuICAgIHRoaXMuX2lzUmVuZGVyQ29tcGxldGUgPSBmYWxzZTtcbiAgICB0aGlzLnBhZ2VSZW5kZXJDb21wbGV0ZS5lbWl0KGZhbHNlKTtcbiAgICBpZiAodGhpcy52aWV3ZXIgJiYgdGhpcy52aWV3ZXIucmVhZHlTdGF0ZSA9PT0gJ2NvbXBsZXRlJykge1xuICAgICAgY29uc3QgaW50ZXJ2YWxUYWcgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLmlmcmFtZUVsICYmXG4gICAgICAgICAgdGhpcy5pZnJhbWVFbC5jb250ZW50V2luZG93ICYmXG4gICAgICAgICAgdGhpcy5pZnJhbWVFbC5jb250ZW50V2luZG93LmRvY3VtZW50XG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IGltYWdlcyA9XG4gICAgICAgICAgICB0aGlzLmlmcmFtZUVsLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2ltZycpO1xuXG4gICAgICAgICAgbGV0IGFsbEltYWdlc0xvYWRlZCA9IHRydWU7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbWFnZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICghaW1hZ2VzW2ldLmNvbXBsZXRlKSB7XG4gICAgICAgICAgICAgIGFsbEltYWdlc0xvYWRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGFsbEltYWdlc0xvYWRlZCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ0FsbCBpbWFnZXMgaW4gaWZyYW1lIGxvYWRlZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgICAgICAgIHRoaXMucGFnZVJlbmRlckNvbXBsZXRlLmVtaXQodHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLl9pc1JlbmRlckNvbXBsZXRlID0gdHJ1ZTtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxUYWcpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSwgMTAwMCk7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgaGFuZGxlSHlwZXJsaW5rID0gKHBheWxvYWQ6IFBheWxvYWQpID0+IHtcbiAgICBjb25zb2xlLmxvZygnaGFuZGxlSHlwZXJsaW5rOjonLCBwYXlsb2FkKTtcbiAgfTtcblxuICBwcml2YXRlIGhhbmRsZUxvYWRlZCA9IChwYXlsb2FkOiBQYXlsb2FkKSA9PiB7XG4gICAgY29uc29sZS5sb2coJ2hhbmRsZUxvYWRlZDo6JywgcGF5bG9hZCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBoYW5kbGVOYXZpZ2F0aW9uID0gKHBheWxvYWQ6IFBheWxvYWQpID0+IHtcbiAgICB0aGlzLnBhZ2VUb3RhbCA9IHBheWxvYWQuZXBhZ2VDb3VudDtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9O1xuXG4gIHByaXZhdGUgY3JlYXRlTGlzdGVuZXIodmlld2VyOiBDb3JlVmlld2VyKSB7XG4gICAgdmlld2VyLmFkZExpc3RlbmVyKCdlcnJvcicsIHRoaXMuaGFuZGxlRXJyb3IpO1xuICAgIHZpZXdlci5hZGRMaXN0ZW5lcigncmVhZHlzdGF0ZWNoYW5nZScsIHRoaXMuaGFuZGxlUmVhZHlTdGF0ZUNoYW5nZSk7XG4gICAgdmlld2VyLmFkZExpc3RlbmVyKCdsb2FkZWQnLCB0aGlzLmhhbmRsZUxvYWRlZCk7XG4gICAgdmlld2VyLmFkZExpc3RlbmVyKCdoeXBlcmxpbmsnLCB0aGlzLmhhbmRsZUh5cGVybGluayk7XG4gICAgdmlld2VyLmFkZExpc3RlbmVyKCduYXYnLCB0aGlzLmhhbmRsZU5hdmlnYXRpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVMaXN0ZW5lcnModmlld2VyOiBDb3JlVmlld2VyKSB7XG4gICAgdmlld2VyLnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIHRoaXMuaGFuZGxlRXJyb3IpO1xuICAgIHZpZXdlci5yZW1vdmVMaXN0ZW5lcigncmVhZHlzdGF0ZWNoYW5nZScsIHRoaXMuaGFuZGxlUmVhZHlTdGF0ZUNoYW5nZSk7XG4gICAgdmlld2VyLnJlbW92ZUxpc3RlbmVyKCdsb2FkZWQnLCB0aGlzLmhhbmRsZUxvYWRlZCk7XG4gICAgdmlld2VyLnJlbW92ZUxpc3RlbmVyKCdoeXBlcmxpbmsnLCB0aGlzLmhhbmRsZUh5cGVybGluayk7XG4gICAgdmlld2VyLnJlbW92ZUxpc3RlbmVyKCduYXYnLCB0aGlzLmhhbmRsZU5hdmlnYXRpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTdHlsZXMoaWRlbnRpZmllclN0cjogc3RyaW5nIHwgc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIGNvbnN0IHN0eWxlc0FycmF5OiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IHN0eWxlRWxlbWVudHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc3R5bGUnKTtcbiAgICBjb25zdCBsZW5ndGggPSBzdHlsZUVsZW1lbnRzLmxlbmd0aDtcbiAgICBsZXQgaWRlbnRpZmllcnM6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoaWRlbnRpZmllclN0cikpIHtcbiAgICAgIGlkZW50aWZpZXJzID0gWy4uLmlkZW50aWZpZXJTdHJdO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZGVudGlmaWVycyA9IFtpZGVudGlmaWVyU3RyXTtcbiAgICB9XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgaWRlbnRpZmllcnMuZm9yRWFjaCgocykgPT4ge1xuICAgICAgICBpZiAoc3R5bGVFbGVtZW50c1tpbmRleF0ub3V0ZXJIVE1MLmluY2x1ZGVzKHMpKSB7XG4gICAgICAgICAgY29uc3QgZm9ybWF0ZVN0ciA9IHN0eWxlRWxlbWVudHNbaW5kZXhdLm91dGVySFRNTC5yZXBsYWNlKFxuICAgICAgICAgICAgL1xcL1xcKltcXHNcXFNdKj9cXCpcXC8vZyxcbiAgICAgICAgICAgICcnXG4gICAgICAgICAgKTtcbiAgICAgICAgICBzdHlsZXNBcnJheS5wdXNoKGZvcm1hdGVTdHIpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHN0eWxlc0FycmF5LmpvaW4oJ1xcclxcbicpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRWaXZUZW1wbGF0ZXMoZGlyZWN0aXZlczogTnp4UHJpbnRDb250ZW50RGlyZWN0aXZlW10pIHtcbiAgICBjb25zdCB0ZW1wbGF0ZXM6IHN0cmluZ1tdID0gW107XG4gICAgZGlyZWN0aXZlcy5mb3JFYWNoKChkKSA9PiB7XG4gICAgICBsZXQgc3R5bGVzID0gJyc7XG4gICAgICBpZiAoZC5pZGVudGlmaWVyU3RyIHx8IGQuaWRlbnRpZmllclN0ci5sZW5ndGggPiAwKSB7XG4gICAgICAgIHN0eWxlcyA9IHRoaXMuZ2V0U3R5bGVzKGQuaWRlbnRpZmllclN0cik7XG4gICAgICB9XG5cbiAgICAgIGxldCBodG1sID0gYFxuICAgICAgICAgIDwhRE9DVFlQRSBodG1sPlxuICAgICAgICAgIDxodG1sPlxuICAgICAgICAgICAgPGhlYWQ+XG4gICAgICAgICAgICA8bWV0YSBjaGFyc2V0PVwidXRmLThcIiAvPlxuICAgICAgICAgICAgPHRpdGxlPiR7dGhpcy5wcmludFRpdGxlfTwvdGl0bGU+XG4gICAgICAgICAgICA8YmFzZSBocmVmPVwiL1wiIC8+XG4gICAgICAgICAgICA8bWV0YSBuYW1lPVwidmlld3BvcnRcIiBjb250ZW50PVwid2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTFcIiAvPlxuICAgICAgICAgICAgICR7ZC5jdXN0b21TdHlsZX1cbiAgICAgICAgICAgICAke3N0eWxlc31cbiAgICAgICAgICAgIDwvaGVhZD5cbiAgICAgICAgICAgIDxib2R5PlxuICAgICAgICAgICAgICAke2QuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm91dGVySFRNTH1cbiAgICAgICAgICAgIDwvYm9keT5cbiAgICAgICAgICA8L2h0bWw+XG4gICAgICAgIGA7XG4gICAgICBodG1sID0gaHRtbC5yZXBsYWNlKC88IS0tLS0+L2csICcgJyk7XG4gICAgICB0ZW1wbGF0ZXMucHVzaChodG1sKTtcbiAgICB9KTtcblxuICAgIHJldHVybiB0ZW1wbGF0ZXM7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyVmlldygpIHtcbiAgICBpZiAodGhpcy52aWV3ZXIpIHtcbiAgICAgIHRoaXMucmVtb3ZlTGlzdGVuZXJzKHRoaXMudmlld2VyKTtcbiAgICB9XG4gICAgdGhpcy52aXZWaWV3UmVmLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gJyc7XG4gICAgdGhpcy52aWV3ZXIgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5faXNSZW5kZXJDb21wbGV0ZSA9IGZhbHNlO1xuICB9XG59XG4iXX0=
@@ -1,190 +0,0 @@
1
- import { DOCUMENT } from '@angular/common';
2
- import { Component, ContentChild, ElementRef, Inject, Input, ViewChild, } from '@angular/core';
3
- import { getElementByTag } from 'ng-zorro-antd-extension/util';
4
- import { NzxPrintContentDirective } from './nzx-print-content.directive';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/cdk/platform";
7
- /**
8
- * 使用Paged.js打印
9
- */
10
- export class NzxPrintComponent {
11
- constructor(platform, document) {
12
- this.platform = platform;
13
- this.document = document;
14
- this.printTitle = 'pdf';
15
- /**
16
- * a4 794px1123px
17
- */
18
- this.width = 814;
19
- this.height = 1143;
20
- this.enablePreview = true;
21
- this.identifierStr = '';
22
- this.pagedCDN = '';
23
- this._title = this.document.title;
24
- this.afterPrint = () => {
25
- this.iframeEl.contentWindow.parent.document.title = this._title;
26
- };
27
- this.beforePrint = () => {
28
- this.iframeEl.contentWindow.parent.document.title = this.printTitle;
29
- };
30
- }
31
- ngOnInit() {
32
- if (!this.pagedCDN) {
33
- throw new Error('pagedCDN is required');
34
- }
35
- }
36
- ngAfterViewInit() {
37
- this.render();
38
- }
39
- print() {
40
- if (this.iframeEl.contentWindow) {
41
- this.iframeEl.contentWindow.focus();
42
- this.iframeEl.contentWindow.print();
43
- }
44
- }
45
- refresh() {
46
- setTimeout(() => {
47
- this.render();
48
- }, 100);
49
- }
50
- render() {
51
- this.iframeEl = this.document.createElement('iframe');
52
- this.iframeEl.height = this.height + '';
53
- this.iframeEl.width = this.width + '';
54
- this.iframeEl.style.border = '1px solid #ccc';
55
- this.iframeEl.style.background = '#fff';
56
- if (!this.enablePreview) {
57
- this.iframeEl.style.visibility = 'hidden';
58
- if (this.platform.FIREFOX) {
59
- this.iframeEl.setAttribute('style', 'width: 1px; height: 100px; position: fixed; left: 0; top: 0; opacity: 0; border-width: 0; margin: 0; padding: 0');
60
- }
61
- else {
62
- this.iframeEl.setAttribute('style', 'visibility: hidden; height: 0; width: 0; position: absolute; border: 0');
63
- }
64
- }
65
- if (this.containerRef) {
66
- this.containerRef.nativeElement.innerHTML = '';
67
- this.containerRef.nativeElement.appendChild(this.iframeEl);
68
- }
69
- if (this.iframeEl.contentWindow) {
70
- this.iframeEl.contentWindow.document.open();
71
- this.iframeEl.contentWindow.document.write(this.getTemplateStr());
72
- this.iframeEl.contentWindow.document.close();
73
- // chorme bug
74
- this.iframeEl.contentWindow.onbeforeprint = this.beforePrint;
75
- this.iframeEl.contentWindow.onafterprint = this.afterPrint;
76
- }
77
- }
78
- getTemplateStr() {
79
- const styles = getElementByTag('style', this.identifierStr);
80
- const scripts = `
81
- <script src="${this.pagedCDN}"></script>
82
- <script>
83
- class RepeatingTableHeaders extends Paged.Handler {
84
- constructor(chunker, polisher, caller) {
85
- super(chunker, polisher, caller);
86
- }
87
-
88
- afterPageLayout(pageElement, page, breakToken, chunker) {
89
- let tables = pageElement.querySelectorAll('table[data-split-from]');
90
- tables.forEach((table) => {
91
- let ref = table.dataset.ref;
92
- let sourceTable = chunker.source.querySelector(
93
- "[data-ref='" + ref + "']"
94
- );
95
- let header = sourceTable.querySelector('thead');
96
- if (header) {
97
- let clonedHeader = header.cloneNode(true);
98
- table.insertBefore(clonedHeader, table.firstChild);
99
- }
100
- });
101
- }
102
- }
103
- Paged.registerHandlers(RepeatingTableHeaders);
104
- </script>
105
- `;
106
- let html = `
107
- <!DOCTYPE html>
108
- <html>
109
- <head>
110
- <meta charset="utf-8" />
111
- <title>${this.printTitle}</title>
112
- <base href="/" />
113
- <meta name="viewport" content="width=device-width, initial-scale=1" />
114
- <link
115
- rel="preconnect"
116
- href="https://winkong-frontend.oss-cn-qingdao.aliyuncs.com"
117
- />
118
- <style>
119
- ::-webkit-scrollbar {
120
- width: 5px;
121
- height: 5px;
122
- }
123
- ::-webkit-scrollbar-thumb {
124
- background-color: #999;
125
- -webkit-border-radius: 5px;
126
- border-radius: 5px;
127
- }
128
- ::-webkit-scrollbar-thumb:vertical:hover {
129
- background-color: #666;
130
- }
131
- ::-webkit-scrollbar-thumb:vertical:active {
132
- background-color: #666;
133
- }
134
- ::-webkit-scrollbar-button {
135
- display: none;
136
- }
137
- ::-webkit-scrollbar-track {
138
- background-color: #f1f1f1;
139
- }
140
- </style>
141
-
142
- ${styles}
143
- ${scripts}
144
- </head>
145
- <body>
146
- ${this._printEl.nativeElement.outerHTML}
147
- </body>
148
- </html>
149
- `;
150
- html = html.replace(/<!---->/g, ' ');
151
- return html;
152
- }
153
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NzxPrintComponent, deps: [{ token: i1.Platform }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
154
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: NzxPrintComponent, selector: "nzx-print", inputs: { printTitle: "printTitle", width: "width", height: "height", enablePreview: "enablePreview", identifierStr: "identifierStr", pagedCDN: "pagedCDN" }, queries: [{ propertyName: "_printEl", first: true, predicate: NzxPrintContentDirective, descendants: true, read: ElementRef, static: true }], viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["iframeContainer"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: `
155
- <ng-content select="[nzxPrintHeader]"></ng-content>
156
- <div #iframeContainer></div>
157
- `, isInline: true }); }
158
- }
159
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NzxPrintComponent, decorators: [{
160
- type: Component,
161
- args: [{
162
- selector: 'nzx-print',
163
- template: `
164
- <ng-content select="[nzxPrintHeader]"></ng-content>
165
- <div #iframeContainer></div>
166
- `,
167
- }]
168
- }], ctorParameters: () => [{ type: i1.Platform }, { type: Document, decorators: [{
169
- type: Inject,
170
- args: [DOCUMENT]
171
- }] }], propDecorators: { printTitle: [{
172
- type: Input
173
- }], width: [{
174
- type: Input
175
- }], height: [{
176
- type: Input
177
- }], enablePreview: [{
178
- type: Input
179
- }], identifierStr: [{
180
- type: Input
181
- }], pagedCDN: [{
182
- type: Input
183
- }], containerRef: [{
184
- type: ViewChild,
185
- args: ['iframeContainer', { read: ElementRef, static: true }]
186
- }], _printEl: [{
187
- type: ContentChild,
188
- args: [NzxPrintContentDirective, { read: ElementRef, static: true }]
189
- }] } });
190
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnp4LXByaW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbXBvbmVudHMvcHJpbnQvbnp4LXByaW50LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBRUwsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7O0FBRXpFOztHQUVHO0FBUUgsTUFBTSxPQUFPLGlCQUFpQjtJQTBCNUIsWUFDVSxRQUFrQixFQUNBLFFBQWtCO1FBRHBDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDQSxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBM0JyQyxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQzVCOztXQUVHO1FBQ00sVUFBSyxHQUFHLEdBQUcsQ0FBQztRQUNaLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFDZCxrQkFBYSxHQUFHLElBQUksQ0FBQztRQUNyQixrQkFBYSxHQUFzQixFQUFFLENBQUM7UUFDdEMsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQVFmLFdBQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUU3QixlQUFVLEdBQUcsR0FBRyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDbkUsQ0FBQyxDQUFDO1FBQ00sZ0JBQVcsR0FBRyxHQUFHLEVBQUU7WUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFjLENBQUMsTUFBTSxDQUFD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dWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldEVsZW1lbnRCeVRhZyB9IGZyb20gJ25nLXpvcnJvLWFudGQtZXh0ZW5zaW9uL3V0aWwnO1xuaW1wb3J0IHsgTnp4UHJpbnRDb250ZW50RGlyZWN0aXZlIH0gZnJvbSAnLi9uengtcHJpbnQtY29udGVudC5kaXJlY3RpdmUnO1xuXG4vKipcbiAqIOS9v+eUqFBhZ2VkLmpz5omT5Y2wXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ256eC1wcmludCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW256eFByaW50SGVhZGVyXVwiPjwvbmctY29udGVudD5cbiAgICA8ZGl2ICNpZnJhbWVDb250YWluZXI+PC9kaXY+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIE56eFByaW50Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgcHJpbnRUaXRsZSA9ICdwZGYnO1xuICAvKipcbiAgICogYTQgNzk0cHgxMTIzcHhcbiAgICovXG4gIEBJbnB1dCgpIHdpZHRoID0gODE0O1xuICBASW5wdXQoKSBoZWlnaHQgPSAxMTQzO1xuICBASW5wdXQoKSBlbmFibGVQcmV2aWV3ID0gdHJ1ZTtcbiAgQElucHV0KCkgaWRlbnRpZmllclN0cjogc3RyaW5nIHwgc3RyaW5nW10gPSAnJztcbiAgQElucHV0KCkgcGFnZWRDRE4gPSAnJztcblxuICBAVmlld0NoaWxkKCdpZnJhbWVDb250YWluZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICBwcml2YXRlIGNvbnRhaW5lclJlZiE6IEVsZW1lbnRSZWY7XG5cbiAgQENvbnRlbnRDaGlsZChOenhQcmludENvbnRlbnREaXJlY3RpdmUsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pXG4gIHByaXZhdGUgX3ByaW50RWwhOiBFbGVtZW50UmVmO1xuICBwcml2YXRlIGlmcmFtZUVsITogSFRNTElGcmFtZUVsZW1lbnQ7XG4gIHByaXZhdGUgX3RpdGxlID0gdGhpcy5kb2N1bWVudC50aXRsZTtcblxuICBwcml2YXRlIGFmdGVyUHJpbnQgPSAoKSA9PiB7XG4gICAgdGhpcy5pZnJhbWVFbC5jb250ZW50V2luZG93IS5wYXJlbnQuZG9jdW1lbnQudGl0bGUgPSB0aGlzLl90aXRsZTtcbiAgfTtcbiAgcHJpdmF0ZSBiZWZvcmVQcmludCA9ICgpID0+IHtcbiAgICB0aGlzLmlmcmFtZUVsLmNvbnRlbnRXaW5kb3chLnBhcmVudC5kb2N1bWVudC50aXRsZSA9IHRoaXMucHJpbnRUaXRsZTtcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBsYXRmb3JtOiBQbGF0Zm9ybSxcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudFxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnBhZ2VkQ0ROKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3BhZ2VkQ0ROIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBwcmludCgpIHtcbiAgICBpZiAodGhpcy5pZnJhbWVFbC5jb250ZW50V2luZG93KSB7XG4gICAgICB0aGlzLmlmcmFtZUVsLmNvbnRlbnRXaW5kb3cuZm9jdXMoKTtcbiAgICAgIHRoaXMuaWZyYW1lRWwuY29udGVudFdpbmRvdy5wcmludCgpO1xuICAgIH1cbiAgfVxuXG4gIHJlZnJlc2goKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnJlbmRlcigpO1xuICAgIH0sIDEwMCk7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlcigpIHtcbiAgICB0aGlzLmlmcmFtZUVsID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTtcbiAgICB0aGlzLmlmcmFtZUVsLmhlaWdodCA9IHRoaXMuaGVpZ2h0ICsgJyc7XG4gICAgdGhpcy5pZnJhbWVFbC53aWR0aCA9IHRoaXMud2lkdGggKyAnJztcbiAgICB0aGlzLmlmcmFtZUVsLnN0eWxlLmJvcmRlciA9ICcxcHggc29saWQgI2NjYyc7XG4gICAgdGhpcy5pZnJhbWVFbC5zdHlsZS5iYWNrZ3JvdW5kID0gJyNmZmYnO1xuXG4gICAgaWYgKCF0aGlzLmVuYWJsZVByZXZpZXcpIHtcbiAgICAgIHRoaXMuaWZyYW1lRWwuc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xuICAgICAgaWYgKHRoaXMucGxhdGZvcm0uRklSRUZPWCkge1xuICAgICAgICB0aGlzLmlmcmFtZUVsLnNldEF0dHJpYnV0ZShcbiAgICAgICAgICAnc3R5bGUnLFxuICAgICAgICAgICd3aWR0aDogMXB4OyBoZWlnaHQ6IDEwMHB4OyBwb3NpdGlvbjogZml4ZWQ7IGxlZnQ6IDA7IHRvcDogMDsgb3BhY2l0eTogMDsgYm9yZGVyLXdpZHRoOiAwOyBtYXJnaW46IDA7IHBhZGRpbmc6IDAnXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmlmcmFtZUVsLnNldEF0dHJpYnV0ZShcbiAgICAgICAgICAnc3R5bGUnLFxuICAgICAgICAgICd2aXNpYmlsaXR5OiBoaWRkZW47IGhlaWdodDogMDsgd2lkdGg6IDA7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgYm9yZGVyOiAwJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5jb250YWluZXJSZWYpIHtcbiAgICAgIHRoaXMuY29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gJyc7XG4gICAgICB0aGlzLmNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuaWZyYW1lRWwpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlmcmFtZUVsLmNvbnRlbnRXaW5kb3cpIHtcbiAgICAgIHRoaXMuaWZyYW1lRWwuY29udGVudFdpbmRvdy5kb2N1bWVudC5vcGVuKCk7XG4gICAgICB0aGlzLmlmcmFtZUVsLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQud3JpdGUodGhpcy5nZXRUZW1wbGF0ZVN0cigpKTtcbiAgICAgIHRoaXMuaWZyYW1lRWwuY29udGVudFdpbmRvdy5kb2N1bWVudC5jbG9zZSgpO1xuICAgICAgLy8gY2hvcm1lIGJ1Z1xuICAgICAgdGhpcy5pZnJhbWVFbC5jb250ZW50V2luZG93Lm9uYmVmb3JlcHJpbnQgPSB0aGlzLmJlZm9yZVByaW50O1xuICAgICAgdGhpcy5pZnJhbWVFbC5jb250ZW50V2luZG93Lm9uYWZ0ZXJwcmludCA9IHRoaXMuYWZ0ZXJQcmludDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFRlbXBsYXRlU3RyKCkge1xuICAgIGNvbnN0IHN0eWxlcyA9IGdldEVsZW1lbnRCeVRhZygnc3R5bGUnLCB0aGlzLmlkZW50aWZpZXJTdHIpO1xuXG4gICAgY29uc3Qgc2NyaXB0cyA9IGBcbiAgICAgICAgPHNjcmlwdCBzcmM9XCIke3RoaXMucGFnZWRDRE59XCI+PC9zY3JpcHQ+XG4gICAgICAgIDxzY3JpcHQ+XG4gICAgICAgICAgY2xhc3MgUmVwZWF0aW5nVGFibGVIZWFkZXJzIGV4dGVuZHMgUGFnZWQuSGFuZGxlciB7XG4gICAgICAgICAgICBjb25zdHJ1Y3RvcihjaHVua2VyLCBwb2xpc2hlciwgY2FsbGVyKSB7XG4gICAgICAgICAgICAgIHN1cGVyKGNodW5rZXIsIHBvbGlzaGVyLCBjYWxsZXIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBhZnRlclBhZ2VMYXlvdXQocGFnZUVsZW1lbnQsIHBhZ2UsIGJyZWFrVG9rZW4sIGNodW5rZXIpIHtcbiAgICAgICAgICAgICAgbGV0IHRhYmxlcyA9IHBhZ2VFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RhYmxlW2RhdGEtc3BsaXQtZnJvbV0nKTtcbiAgICAgICAgICAgICAgdGFibGVzLmZvckVhY2goKHRhYmxlKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHJlZiA9IHRhYmxlLmRhdGFzZXQucmVmO1xuICAgICAgICAgICAgICAgIGxldCBzb3VyY2VUYWJsZSA9IGNodW5rZXIuc291cmNlLnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICAgICAgICAgICBcIltkYXRhLXJlZj0nXCIgKyByZWYgKyBcIiddXCJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGxldCBoZWFkZXIgPSBzb3VyY2VUYWJsZS5xdWVyeVNlbGVjdG9yKCd0aGVhZCcpO1xuICAgICAgICAgICAgICAgIGlmIChoZWFkZXIpIHtcbiAgICAgICAgICAgICAgICAgIGxldCBjbG9uZWRIZWFkZXIgPSBoZWFkZXIuY2xvbmVOb2RlKHRydWUpO1xuICAgICAgICAgICAgICAgICAgdGFibGUuaW5zZXJ0QmVmb3JlKGNsb25lZEhlYWRlciwgdGFibGUuZmlyc3RDaGlsZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgUGFnZWQucmVnaXN0ZXJIYW5kbGVycyhSZXBlYXRpbmdUYWJsZUhlYWRlcnMpO1xuICAgICAgICA8L3NjcmlwdD5cbiAgICAgIGA7XG5cbiAgICBsZXQgaHRtbCA9IGBcbiAgICAgICAgPCFET0NUWVBFIGh0bWw+XG4gICAgICAgIDxodG1sPlxuICAgICAgICAgIDxoZWFkPlxuICAgICAgICAgIDxtZXRhIGNoYXJzZXQ9XCJ1dGYtOFwiIC8+XG4gICAgICAgICAgPHRpdGxlPiR7dGhpcy5wcmludFRpdGxlfTwvdGl0bGU+XG4gICAgICAgICAgPGJhc2UgaHJlZj1cIi9cIiAvPlxuICAgICAgICAgIDxtZXRhIG5hbWU9XCJ2aWV3cG9ydFwiIGNvbnRlbnQ9XCJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MVwiIC8+XG4gICAgICAgICAgPGxpbmtcbiAgICAgICAgICAgIHJlbD1cInByZWNvbm5lY3RcIlxuICAgICAgICAgICAgaHJlZj1cImh0dHBzOi8vd2lua29uZy1mcm9udGVuZC5vc3MtY24tcWluZ2Rhby5hbGl5dW5jcy5jb21cIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHN0eWxlPlxuICAgICAgICAgICAgICA6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogNXB4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogNXB4O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM5OTk7XG4gICAgICAgICAgICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6dmVydGljYWw6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM2NjY7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjp2ZXJ0aWNhbDphY3RpdmUge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM2NjY7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgOjotd2Via2l0LXNjcm9sbGJhci1idXR0b24ge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2YxZjFmMTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgIDwvc3R5bGU+XG5cbiAgICAgICAgICAgICR7c3R5bGVzfVxuICAgICAgICAgICAgJHtzY3JpcHRzfVxuICAgICAgICAgIDwvaGVhZD5cbiAgICAgICAgICA8Ym9keT5cbiAgICAgICAgICAgICR7dGhpcy5fcHJpbnRFbC5uYXRpdmVFbGVtZW50Lm91dGVySFRNTH1cbiAgICAgICAgICA8L2JvZHk+XG4gICAgICAgIDwvaHRtbD5cbiAgICAgIGA7XG4gICAgaHRtbCA9IGh0bWwucmVwbGFjZSgvPCEtLS0tPi9nLCAnICcpO1xuICAgIHJldHVybiBodG1sO1xuICB9XG59XG4iXX0=