ng-zorro-antd-extension 18.1.3 → 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 (241) 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 +3 -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/config/dynamic-form-config.d.ts +18 -0
  19. package/dynamic-form/controls/abstract.control.d.ts +11 -0
  20. package/dynamic-form/controls/date-picker.control.d.ts +6 -0
  21. package/dynamic-form/controls/input.control.d.ts +6 -0
  22. package/dynamic-form/controls/range-picker.control.d.ts +6 -0
  23. package/dynamic-form/controls/select.control.d.ts +6 -0
  24. package/dynamic-form/controls/template.control.d.ts +6 -0
  25. package/dynamic-form/dynamic-form-item/dynamic-form-item.component.d.ts +12 -0
  26. package/dynamic-form/dynamic-form.component.d.ts +5 -0
  27. package/dynamic-form/dynamic-form.module.d.ts +17 -0
  28. package/dynamic-form/public-api.d.ts +3 -1
  29. package/dynamic-form/wrapper/control/abstract-control-wrapper.d.ts +12 -0
  30. package/dynamic-form/wrapper/control/built-in-control-wrapper.d.ts +7 -0
  31. package/dynamic-form/wrapper/item/abstract-item-wrapper.d.ts +14 -0
  32. package/dynamic-form/wrapper/item/built-in-item-wrapper.d.ts +6 -0
  33. package/dynamic-form/wrapper/label/abstract-label-wrapper.d.ts +5 -0
  34. package/dynamic-form/wrapper/label/built-in-label-wrapper.d.ts +6 -0
  35. package/editable/editable.component.d.ts +1 -1
  36. package/editable/editable.module.d.ts +1 -6
  37. package/fesm2022/ng-zorro-antd-extension-acl.mjs +11 -13
  38. package/fesm2022/ng-zorro-antd-extension-acl.mjs.map +1 -1
  39. package/fesm2022/ng-zorro-antd-extension-blank-field.mjs +19 -17
  40. package/fesm2022/ng-zorro-antd-extension-blank-field.mjs.map +1 -1
  41. package/fesm2022/ng-zorro-antd-extension-checkbox.mjs +28 -37
  42. package/fesm2022/ng-zorro-antd-extension-checkbox.mjs.map +1 -1
  43. package/fesm2022/ng-zorro-antd-extension-configurable-query.mjs +98 -127
  44. package/fesm2022/ng-zorro-antd-extension-configurable-query.mjs.map +1 -1
  45. package/fesm2022/ng-zorro-antd-extension-core-config.mjs +3 -3
  46. package/fesm2022/ng-zorro-antd-extension-core-config.mjs.map +1 -1
  47. package/fesm2022/ng-zorro-antd-extension-dynamic-form.mjs +423 -10
  48. package/fesm2022/ng-zorro-antd-extension-dynamic-form.mjs.map +1 -1
  49. package/fesm2022/ng-zorro-antd-extension-editable.mjs +23 -33
  50. package/fesm2022/ng-zorro-antd-extension-editable.mjs.map +1 -1
  51. package/fesm2022/ng-zorro-antd-extension-jigsaw.mjs +9 -10
  52. package/fesm2022/ng-zorro-antd-extension-jigsaw.mjs.map +1 -1
  53. package/fesm2022/ng-zorro-antd-extension-pipes.mjs +26 -26
  54. package/fesm2022/ng-zorro-antd-extension-pipes.mjs.map +1 -1
  55. package/fesm2022/ng-zorro-antd-extension-print.mjs +23 -21
  56. package/fesm2022/ng-zorro-antd-extension-print.mjs.map +1 -1
  57. package/fesm2022/ng-zorro-antd-extension-simple-table.mjs +22 -22
  58. package/fesm2022/ng-zorro-antd-extension-simple-table.mjs.map +1 -1
  59. package/fesm2022/ng-zorro-antd-extension-table-adaptor.mjs +11 -12
  60. package/fesm2022/ng-zorro-antd-extension-table-adaptor.mjs.map +1 -1
  61. package/fesm2022/ng-zorro-antd-extension-table-form.mjs +36 -53
  62. package/fesm2022/ng-zorro-antd-extension-table-form.mjs.map +1 -1
  63. package/fesm2022/ng-zorro-antd-extension-table-select.mjs +38 -40
  64. package/fesm2022/ng-zorro-antd-extension-table-select.mjs.map +1 -1
  65. package/fesm2022/ng-zorro-antd-extension-timer-button.mjs +8 -10
  66. package/fesm2022/ng-zorro-antd-extension-timer-button.mjs.map +1 -1
  67. package/fesm2022/ng-zorro-antd-extension-trim.mjs +8 -9
  68. package/fesm2022/ng-zorro-antd-extension-trim.mjs.map +1 -1
  69. package/fesm2022/ng-zorro-antd-extension-util.mjs.map +1 -1
  70. package/fesm2022/ng-zorro-antd-extension-wang-editor.mjs +11 -13
  71. package/fesm2022/ng-zorro-antd-extension-wang-editor.mjs.map +1 -1
  72. package/jigsaw/jigsaw.component.d.ts +1 -1
  73. package/jigsaw/jigsaw.module.d.ts +1 -3
  74. package/package.json +9 -51
  75. package/pipes/map.pipe.d.ts +1 -1
  76. package/pipes/pipes.module.d.ts +1 -1
  77. package/pipes/safe-html.pipe.d.ts +1 -1
  78. package/pipes/safe-null.pipe.d.ts +1 -1
  79. package/pipes/safe-resource-url.pipe.d.ts +1 -1
  80. package/pipes/safe-script.pipe.d.ts +1 -1
  81. package/pipes/safe-style.pipe.d.ts +1 -1
  82. package/pipes/safe-url.pipe.d.ts +1 -1
  83. package/print/nzx-print-content.directive.d.ts +1 -1
  84. package/print/nzx-print-v.component.d.ts +1 -1
  85. package/print/nzx-print.component.d.ts +1 -1
  86. package/print/nzx-print.directive.d.ts +1 -1
  87. package/print/nzx-print.module.d.ts +1 -4
  88. package/schematics/ng-add/index.js +1 -2
  89. package/schematics/ng-add/index.js.map +1 -1
  90. package/simple-table/directive/expand.directive.d.ts +1 -1
  91. package/simple-table/directive/td.directive.d.ts +1 -1
  92. package/simple-table/directive/th.directive.d.ts +1 -1
  93. package/simple-table/simple-table.component.d.ts +1 -1
  94. package/simple-table/simple-table.module.d.ts +1 -3
  95. package/table-adaptor/page-table-basic.d.ts +1 -1
  96. package/table-adaptor/table-adaptor.directive.d.ts +1 -1
  97. package/table-adaptor/table-adaptor.module.d.ts +1 -1
  98. package/table-form/directive/table-expand.directive.d.ts +1 -1
  99. package/table-form/directive/table-td.directive.d.ts +1 -1
  100. package/table-form/directive/table-th.directive.d.ts +1 -1
  101. package/table-form/table-form.component.d.ts +1 -1
  102. package/table-form/table-form.module.d.ts +1 -10
  103. package/table-select/abstract-table-select.d.ts +2 -2
  104. package/table-select/key.directive.d.ts +1 -1
  105. package/table-select/nzx-table-select.module.d.ts +1 -6
  106. package/table-select/page-table-select/page-table-select.component.d.ts +1 -1
  107. package/table-select/table-select/table-select.component.d.ts +1 -1
  108. package/timer-button/timer-button.directive.d.ts +1 -1
  109. package/timer-button/timer-button.module.d.ts +1 -2
  110. package/trim/trim.directive.d.ts +1 -1
  111. package/trim/trim.module.d.ts +1 -1
  112. package/wang-editor/wang-editor.component.d.ts +1 -1
  113. package/wang-editor/wang-editor.module.d.ts +1 -2
  114. package/wang-editor/wang-toolbar.component.d.ts +1 -1
  115. package/dynamic-form/nzx-dynamic-form.module.d.ts +0 -9
  116. package/esm2022/acl/ng-zorro-antd-extension-acl.mjs +0 -5
  117. package/esm2022/acl/nzx-acl.directive.mjs +0 -80
  118. package/esm2022/acl/nzx-acl.module.mjs +0 -25
  119. package/esm2022/acl/nzx-acl.service.mjs +0 -45
  120. package/esm2022/acl/public-api.mjs +0 -8
  121. package/esm2022/blank-field/blank-field.component.mjs +0 -52
  122. package/esm2022/blank-field/blank-field.module.mjs +0 -18
  123. package/esm2022/blank-field/ng-zorro-antd-extension-blank-field.mjs +0 -5
  124. package/esm2022/blank-field/public-api.mjs +0 -7
  125. package/esm2022/checkbox/checkbox-group.component.mjs +0 -108
  126. package/esm2022/checkbox/checkbox.module.mjs +0 -20
  127. package/esm2022/checkbox/ng-zorro-antd-extension-checkbox.mjs +0 -5
  128. package/esm2022/checkbox/public-api.mjs +0 -7
  129. package/esm2022/configurable-query/configurable-query-item/configurable-query-item.component.mjs +0 -85
  130. package/esm2022/configurable-query/configurable-query.component.mjs +0 -309
  131. package/esm2022/configurable-query/configurable-query.module.mjs +0 -111
  132. package/esm2022/configurable-query/control.directive.mjs +0 -18
  133. package/esm2022/configurable-query/controls/abstract.control.mjs +0 -17
  134. package/esm2022/configurable-query/controls/date-picker.control.mjs +0 -36
  135. package/esm2022/configurable-query/controls/input.control.mjs +0 -35
  136. package/esm2022/configurable-query/controls/range-picker.control.mjs +0 -34
  137. package/esm2022/configurable-query/controls/select.control.mjs +0 -50
  138. package/esm2022/configurable-query/controls/template.control.mjs +0 -32
  139. package/esm2022/configurable-query/ng-zorro-antd-extension-configurable-query.mjs +0 -5
  140. package/esm2022/configurable-query/public-api.mjs +0 -7
  141. package/esm2022/configurable-query/query-config.service.mjs +0 -68
  142. package/esm2022/configurable-query/type.mjs +0 -2
  143. package/esm2022/core/config/config.mjs +0 -6
  144. package/esm2022/core/config/config.service.mjs +0 -84
  145. package/esm2022/core/config/ng-zorro-antd-extension-core-config.mjs +0 -5
  146. package/esm2022/core/config/public-api.mjs +0 -3
  147. package/esm2022/dynamic-form/ng-zorro-antd-extension-dynamic-form.mjs +0 -5
  148. package/esm2022/dynamic-form/nzx-dynamic-form.module.mjs +0 -23
  149. package/esm2022/dynamic-form/public-api.mjs +0 -6
  150. package/esm2022/editable/editable.component.mjs +0 -140
  151. package/esm2022/editable/editable.module.mjs +0 -36
  152. package/esm2022/editable/ng-zorro-antd-extension-editable.mjs +0 -5
  153. package/esm2022/editable/public-api.mjs +0 -3
  154. package/esm2022/i18n/languages/en_US.mjs +0 -10
  155. package/esm2022/i18n/languages/zh_CN.mjs +0 -10
  156. package/esm2022/i18n/ng-zorro-antd-extension-i18n.mjs +0 -5
  157. package/esm2022/i18n/nz-i18n.interface.mjs +0 -2
  158. package/esm2022/i18n/public-api.mjs +0 -4
  159. package/esm2022/jigsaw/jigsaw.component.mjs +0 -257
  160. package/esm2022/jigsaw/jigsaw.module.mjs +0 -19
  161. package/esm2022/jigsaw/ng-zorro-antd-extension-jigsaw.mjs +0 -5
  162. package/esm2022/jigsaw/public-api.mjs +0 -7
  163. package/esm2022/ng-zorro-antd-extension.mjs +0 -5
  164. package/esm2022/pipes/map.pipe.mjs +0 -24
  165. package/esm2022/pipes/ng-zorro-antd-extension-pipes.mjs +0 -5
  166. package/esm2022/pipes/pipes.module.mjs +0 -50
  167. package/esm2022/pipes/public-api.mjs +0 -13
  168. package/esm2022/pipes/safe-html.pipe.mjs +0 -20
  169. package/esm2022/pipes/safe-null.pipe.mjs +0 -30
  170. package/esm2022/pipes/safe-resource-url.pipe.mjs +0 -20
  171. package/esm2022/pipes/safe-script.pipe.mjs +0 -20
  172. package/esm2022/pipes/safe-style.pipe.mjs +0 -20
  173. package/esm2022/pipes/safe-url.pipe.mjs +0 -34
  174. package/esm2022/print/ng-zorro-antd-extension-print.mjs +0 -5
  175. package/esm2022/print/nzx-print-content.directive.mjs +0 -22
  176. package/esm2022/print/nzx-print-v.component.mjs +0 -301
  177. package/esm2022/print/nzx-print.component.mjs +0 -190
  178. package/esm2022/print/nzx-print.directive.mjs +0 -92
  179. package/esm2022/print/nzx-print.module.mjs +0 -39
  180. package/esm2022/print/public-api.mjs +0 -10
  181. package/esm2022/public-api.mjs +0 -5
  182. package/esm2022/simple-table/directive/expand.directive.mjs +0 -16
  183. package/esm2022/simple-table/directive/td.directive.mjs +0 -18
  184. package/esm2022/simple-table/directive/th.directive.mjs +0 -19
  185. package/esm2022/simple-table/ng-zorro-antd-extension-simple-table.mjs +0 -5
  186. package/esm2022/simple-table/public-api.mjs +0 -10
  187. package/esm2022/simple-table/simple-table.component.mjs +0 -229
  188. package/esm2022/simple-table/simple-table.module.mjs +0 -38
  189. package/esm2022/table-adaptor/ng-zorro-antd-extension-table-adaptor.mjs +0 -5
  190. package/esm2022/table-adaptor/page-table-basic.mjs +0 -22
  191. package/esm2022/table-adaptor/public-api.mjs +0 -8
  192. package/esm2022/table-adaptor/table-adaptor.directive.mjs +0 -173
  193. package/esm2022/table-adaptor/table-adaptor.module.mjs +0 -17
  194. package/esm2022/table-form/directive/table-expand.directive.mjs +0 -18
  195. package/esm2022/table-form/directive/table-td.directive.mjs +0 -18
  196. package/esm2022/table-form/directive/table-th.directive.mjs +0 -20
  197. package/esm2022/table-form/ng-zorro-antd-extension-table-form.mjs +0 -5
  198. package/esm2022/table-form/public-api.mjs +0 -11
  199. package/esm2022/table-form/table-form.component.mjs +0 -370
  200. package/esm2022/table-form/table-form.module.mjs +0 -71
  201. package/esm2022/table-form/type.mjs +0 -2
  202. package/esm2022/table-select/abstract-table-select.mjs +0 -140
  203. package/esm2022/table-select/key.directive.mjs +0 -21
  204. package/esm2022/table-select/ng-zorro-antd-extension-table-select.mjs +0 -5
  205. package/esm2022/table-select/nzx-table-select.module.mjs +0 -50
  206. package/esm2022/table-select/page-table-select/page-table-select.component.mjs +0 -58
  207. package/esm2022/table-select/public-api.mjs +0 -11
  208. package/esm2022/table-select/table-select/table-select.component.mjs +0 -39
  209. package/esm2022/table-select/type.mjs +0 -2
  210. package/esm2022/timer-button/ng-zorro-antd-extension-timer-button.mjs +0 -5
  211. package/esm2022/timer-button/public-api.mjs +0 -7
  212. package/esm2022/timer-button/timer-button.directive.mjs +0 -69
  213. package/esm2022/timer-button/timer-button.module.mjs +0 -18
  214. package/esm2022/trim/ng-zorro-antd-extension-trim.mjs +0 -5
  215. package/esm2022/trim/public-api.mjs +0 -7
  216. package/esm2022/trim/trim.directive.mjs +0 -123
  217. package/esm2022/trim/trim.module.mjs +0 -17
  218. package/esm2022/types/common.mjs +0 -2
  219. package/esm2022/types/ng-zorro-antd-extension-types.mjs +0 -5
  220. package/esm2022/types/public-api.mjs +0 -6
  221. package/esm2022/util/lib/cloneDeep.mjs +0 -49
  222. package/esm2022/util/lib/fileUtil.mjs +0 -51
  223. package/esm2022/util/lib/getElementByTag.mjs +0 -38
  224. package/esm2022/util/lib/isArray.mjs +0 -17
  225. package/esm2022/util/lib/isDate.mjs +0 -4
  226. package/esm2022/util/lib/isEmpty.mjs +0 -19
  227. package/esm2022/util/lib/isNumber.mjs +0 -12
  228. package/esm2022/util/lib/isObject.mjs +0 -10
  229. package/esm2022/util/lib/isString.mjs +0 -11
  230. package/esm2022/util/lib/toNumber.mjs +0 -18
  231. package/esm2022/util/lib/toString.mjs +0 -16
  232. package/esm2022/util/lib/trimObject.mjs +0 -15
  233. package/esm2022/util/lib/updateControlStatus.mjs +0 -47
  234. package/esm2022/util/ng-zorro-antd-extension-util.mjs +0 -5
  235. package/esm2022/util/public-api.mjs +0 -18
  236. package/esm2022/wang-editor/ng-zorro-antd-extension-wang-editor.mjs +0 -5
  237. package/esm2022/wang-editor/public-api.mjs +0 -9
  238. package/esm2022/wang-editor/type.mjs +0 -2
  239. package/esm2022/wang-editor/wang-editor.component.mjs +0 -235
  240. package/esm2022/wang-editor/wang-editor.module.mjs +0 -19
  241. package/esm2022/wang-editor/wang-toolbar.component.mjs +0 -57
@@ -1,23 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { NgModule } from '@angular/core';
3
- import * as i0 from "@angular/core";
4
- export class NzxDynamicFormModule {
5
- static forRoot() {
6
- return {
7
- ngModule: NzxDynamicFormModule,
8
- providers: [],
9
- };
10
- }
11
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NzxDynamicFormModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
12
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: NzxDynamicFormModule, imports: [CommonModule] }); }
13
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NzxDynamicFormModule, imports: [CommonModule] }); }
14
- }
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NzxDynamicFormModule, decorators: [{
16
- type: NgModule,
17
- args: [{
18
- imports: [CommonModule],
19
- declarations: [],
20
- exports: [],
21
- }]
22
- }] });
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnp4LWR5bmFtaWMtZm9ybS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9uengtZHluYW1pYy1mb3JtLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTzlELE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsTUFBTSxDQUFDLE9BQU87UUFDWixPQUFPO1lBQ0wsUUFBUSxFQUFFLG9CQUFvQjtZQUM5QixTQUFTLEVBQUUsRUFBRTtTQUNkLENBQUM7SUFDSixDQUFDOytHQU5VLG9CQUFvQjtnSEFBcEIsb0JBQW9CLFlBSnJCLFlBQVk7Z0hBSVgsb0JBQW9CLFlBSnJCLFlBQVk7OzRGQUlYLG9CQUFvQjtrQkFMaEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLFlBQVksRUFBRSxFQUFFO29CQUNoQixPQUFPLEVBQUUsRUFBRTtpQkFDWiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgZGVjbGFyYXRpb25zOiBbXSxcbiAgZXhwb3J0czogW10sXG59KVxuZXhwb3J0IGNsYXNzIE56eER5bmFtaWNGb3JtTW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxOenhEeW5hbWljRm9ybU1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogTnp4RHluYW1pY0Zvcm1Nb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtdLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -1,6 +0,0 @@
1
- /**
2
- * Use of this source code is governed by an MIT-style license that can be
3
- * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
4
- */
5
- export * from './nzx-dynamic-form.module';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBQ0gsY0FBYywyQkFBMkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5leHBvcnQgKiBmcm9tICcuL256eC1keW5hbWljLWZvcm0ubW9kdWxlJztcbiJdfQ==
@@ -1,140 +0,0 @@
1
- /* eslint-disable @angular-eslint/directive-class-suffix */
2
- /* eslint-disable @angular-eslint/directive-selector */
3
- /* eslint-disable @angular-eslint/component-selector */
4
- import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, HostListener, Input, Output, ViewChild, ViewContainerRef, } from '@angular/core';
5
- import { isNumber, isString, toNumber, toString, } from 'ng-zorro-antd-extension/util';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/common";
8
- import * as i2 from "@angular/forms";
9
- import * as i3 from "ng-zorro-antd/icon";
10
- import * as i4 from "ng-zorro-antd/input";
11
- import * as i5 from "ng-zorro-antd/core/trans-button";
12
- export class NzxEditableComponent {
13
- constructor() {
14
- this.nzxContent = '';
15
- this.nzxShowBtn = true;
16
- this.nzxContentChange = new EventEmitter();
17
- this.class = 'nzx-editable-cell';
18
- this._valueType = 'string';
19
- }
20
- dblclick() {
21
- this.edit();
22
- }
23
- ngOnInit() {
24
- if (this.nzxContentType) {
25
- this._valueType = this.nzxContentType;
26
- }
27
- else {
28
- if (isString(this.nzxContent)) {
29
- this._valueType = 'string';
30
- }
31
- if (isNumber(this.nzxContent)) {
32
- this._valueType = 'number';
33
- }
34
- }
35
- this.detailContainerRef.clear();
36
- const view = this.detailContainerRef.createEmbeddedView(this.detailTemplateRef);
37
- view.markForCheck();
38
- }
39
- edit() {
40
- this.detailContainerRef.clear();
41
- const view = this.detailContainerRef.createEmbeddedView(this.editTemplateRef);
42
- view.markForCheck();
43
- view.rootNodes[0].focus();
44
- }
45
- blur() {
46
- this.detailContainerRef.clear();
47
- const view = this.detailContainerRef.createEmbeddedView(this.detailTemplateRef);
48
- view.markForCheck();
49
- }
50
- valueChange(value) {
51
- let result = value;
52
- if (this._valueType === 'number') {
53
- result = toNumber(value);
54
- }
55
- else {
56
- result = toString(value);
57
- }
58
- this.nzxContentChange.emit(result);
59
- }
60
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NzxEditableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
61
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: NzxEditableComponent, selector: "[nzx-editable]", inputs: { nzxContent: "nzxContent", nzxShowBtn: "nzxShowBtn", nzxContentType: "nzxContentType" }, outputs: { nzxContentChange: "nzxContentChange" }, host: { listeners: { "dblclick": "dblclick()" }, properties: { "class": "this.class" } }, viewQueries: [{ propertyName: "detailTemplateRef", first: true, predicate: ["detailTemplate"], descendants: true, static: true }, { propertyName: "editTemplateRef", first: true, predicate: ["editTemplate"], descendants: true, static: true }, { propertyName: "detailContainerRef", first: true, predicate: ["detailContainer"], descendants: true, read: ViewContainerRef, static: true }], exportAs: ["NzxEditable"], ngImport: i0, template: `
62
- <ng-container #detailContainer> </ng-container>
63
-
64
- <ng-template #detailTemplate>
65
- {{ nzxContent }}
66
- <button
67
- *ngIf="nzxShowBtn"
68
- class="ant-typography-edit"
69
- type="button"
70
- nz-trans-button
71
- (click)="edit()"
72
- >
73
- <span nz-icon nzType="edit" nzTheme="outline"></span>
74
- </button>
75
- </ng-template>
76
-
77
- <ng-template #editTemplate>
78
- <textarea
79
- nz-input
80
- [nzAutosize]="{ minRows: 1, maxRows: 4 }"
81
- [ngModel]="nzxContent"
82
- (ngModelChange)="valueChange($event)"
83
- (blur)="blur()"
84
- ></textarea>
85
- </ng-template>
86
- `, isInline: true, styles: [".nzx-editable-cell{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "directive", type: i4.NzInputDirective, selector: "input[nz-input],textarea[nz-input]", inputs: ["nzBorderless", "nzSize", "nzStepperless", "nzStatus", "disabled"], exportAs: ["nzInput"] }, { kind: "directive", type: i4.NzAutosizeDirective, selector: "textarea[nzAutosize]", inputs: ["nzAutosize"], exportAs: ["nzAutosize"] }, { kind: "directive", type: i5.NzTransButtonDirective, selector: "button[nz-trans-button]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
87
- }
88
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NzxEditableComponent, decorators: [{
89
- type: Component,
90
- args: [{ selector: '[nzx-editable]', template: `
91
- <ng-container #detailContainer> </ng-container>
92
-
93
- <ng-template #detailTemplate>
94
- {{ nzxContent }}
95
- <button
96
- *ngIf="nzxShowBtn"
97
- class="ant-typography-edit"
98
- type="button"
99
- nz-trans-button
100
- (click)="edit()"
101
- >
102
- <span nz-icon nzType="edit" nzTheme="outline"></span>
103
- </button>
104
- </ng-template>
105
-
106
- <ng-template #editTemplate>
107
- <textarea
108
- nz-input
109
- [nzAutosize]="{ minRows: 1, maxRows: 4 }"
110
- [ngModel]="nzxContent"
111
- (ngModelChange)="valueChange($event)"
112
- (blur)="blur()"
113
- ></textarea>
114
- </ng-template>
115
- `, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'NzxEditable', styles: [".nzx-editable-cell{cursor:pointer}\n"] }]
116
- }], propDecorators: { nzxContent: [{
117
- type: Input
118
- }], nzxShowBtn: [{
119
- type: Input
120
- }], nzxContentType: [{
121
- type: Input
122
- }], nzxContentChange: [{
123
- type: Output
124
- }], class: [{
125
- type: HostBinding,
126
- args: ['class']
127
- }], detailTemplateRef: [{
128
- type: ViewChild,
129
- args: ['detailTemplate', { static: true }]
130
- }], editTemplateRef: [{
131
- type: ViewChild,
132
- args: ['editTemplate', { static: true }]
133
- }], detailContainerRef: [{
134
- type: ViewChild,
135
- args: ['detailContainer', { static: true, read: ViewContainerRef }]
136
- }], dblclick: [{
137
- type: HostListener,
138
- args: ['dblclick']
139
- }] } });
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29tcG9uZW50cy9lZGl0YWJsZS9lZGl0YWJsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMkRBQTJEO0FBQzNELHVEQUF1RDtBQUN2RCx1REFBdUQ7QUFDdkQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFFTixTQUFTLEVBQ1QsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEdBQ1QsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7OztBQXdDdEMsTUFBTSxPQUFPLG9CQUFvQjtJQXRDakM7UUF1Q1csZUFBVSxHQUEyQixFQUFFLENBQUM7UUFDeEMsZUFBVSxHQUFHLElBQUksQ0FBQztRQUdqQixxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTFCLFVBQUssR0FBRyxtQkFBbUIsQ0FBQztRQVUxQyxlQUFVLEdBQXdCLFFBQVEsQ0FBQztLQW9EcEQ7SUFqREMsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQ3hDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDO1lBQzdCLENBQUM7WUFDRCxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7WUFDN0IsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDaEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGtCQUFrQixDQUNyRCxJQUFJLENBQUMsaUJBQWlCLENBQ3ZCLENBQUM7UUFDRixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQUk7UUFDRixJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDaEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGtCQUFrQixDQUNyRCxJQUFJLENBQUMsZUFBZSxDQUNyQixDQUFDO1FBQ0YsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUF5QixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2hDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FDckQsSUFBSSxDQUFDLGlCQUFpQixDQUN2QixDQUFDO1FBQ0YsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBVTtRQUNwQixJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLENBQUM7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7K0dBcEVVLG9CQUFvQjttR0FBcEIsb0JBQW9CLDJtQkFlcUIsZ0JBQWdCLHNFQW5EMUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5QlQ7OzRGQVdVLG9CQUFvQjtrQkF0Q2hDLFNBQVM7K0JBQ0UsZ0JBQWdCLFlBQ2hCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJULG1CQVFnQix1QkFBdUIsQ0FBQyxNQUFNLFlBQ3JDLGFBQWE7OEJBR2QsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUksZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUVlLEtBQUs7c0JBQTFCLFdBQVc7dUJBQUMsT0FBTztnQkFHWixpQkFBaUI7c0JBRHhCLFNBQVM7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUlyQyxlQUFlO3NCQUR0QixTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSW5DLGtCQUFrQjtzQkFEekIsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQUt0RSxRQUFRO3NCQURQLFlBQVk7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtY2xhc3Mtc3VmZml4ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yICovXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBpc051bWJlcixcbiAgaXNTdHJpbmcsXG4gIHRvTnVtYmVyLFxuICB0b1N0cmluZyxcbn0gZnJvbSAnbmctem9ycm8tYW50ZC1leHRlbnNpb24vdXRpbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ1tuengtZWRpdGFibGVdJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctY29udGFpbmVyICNkZXRhaWxDb250YWluZXI+IDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLXRlbXBsYXRlICNkZXRhaWxUZW1wbGF0ZT5cbiAgICAgIHt7IG56eENvbnRlbnQgfX1cbiAgICAgIDxidXR0b25cbiAgICAgICAgKm5nSWY9XCJuenhTaG93QnRuXCJcbiAgICAgICAgY2xhc3M9XCJhbnQtdHlwb2dyYXBoeS1lZGl0XCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIG56LXRyYW5zLWJ1dHRvblxuICAgICAgICAoY2xpY2spPVwiZWRpdCgpXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gbnotaWNvbiBuelR5cGU9XCJlZGl0XCIgbnpUaGVtZT1cIm91dGxpbmVcIj48L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlICNlZGl0VGVtcGxhdGU+XG4gICAgICA8dGV4dGFyZWFcbiAgICAgICAgbnotaW5wdXRcbiAgICAgICAgW256QXV0b3NpemVdPVwieyBtaW5Sb3dzOiAxLCBtYXhSb3dzOiA0IH1cIlxuICAgICAgICBbbmdNb2RlbF09XCJuenhDb250ZW50XCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIChibHVyKT1cImJsdXIoKVwiXG4gICAgICA+PC90ZXh0YXJlYT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICAubnp4LWVkaXRhYmxlLWNlbGwge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGV4cG9ydEFzOiAnTnp4RWRpdGFibGUnLFxufSlcbmV4cG9ydCBjbGFzcyBOenhFZGl0YWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIG56eENvbnRlbnQ6IHN0cmluZyB8IG51bWJlciB8IG51bGwgPSAnJztcbiAgQElucHV0KCkgbnp4U2hvd0J0biA9IHRydWU7XG4gIEBJbnB1dCgpIG56eENvbnRlbnRUeXBlOiAnc3RyaW5nJyB8ICdudW1iZXInIHwgdW5kZWZpbmVkO1xuXG4gIEBPdXRwdXQoKSBuenhDb250ZW50Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKSBjbGFzcyA9ICduengtZWRpdGFibGUtY2VsbCc7XG5cbiAgQFZpZXdDaGlsZCgnZGV0YWlsVGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwcml2YXRlIGRldGFpbFRlbXBsYXRlUmVmITogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAVmlld0NoaWxkKCdlZGl0VGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwcml2YXRlIGVkaXRUZW1wbGF0ZVJlZiE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQFZpZXdDaGlsZCgnZGV0YWlsQ29udGFpbmVyJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcbiAgcHJpdmF0ZSBkZXRhaWxDb250YWluZXJSZWYhOiBWaWV3Q29udGFpbmVyUmVmO1xuICBwcml2YXRlIF92YWx1ZVR5cGU6ICdzdHJpbmcnIHwgJ251bWJlcicgPSAnc3RyaW5nJztcblxuICBASG9zdExpc3RlbmVyKCdkYmxjbGljaycpXG4gIGRibGNsaWNrKCkge1xuICAgIHRoaXMuZWRpdCgpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubnp4Q29udGVudFR5cGUpIHtcbiAgICAgIHRoaXMuX3ZhbHVlVHlwZSA9IHRoaXMubnp4Q29udGVudFR5cGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChpc1N0cmluZyh0aGlzLm56eENvbnRlbnQpKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlVHlwZSA9ICdzdHJpbmcnO1xuICAgICAgfVxuICAgICAgaWYgKGlzTnVtYmVyKHRoaXMubnp4Q29udGVudCkpIHtcbiAgICAgICAgdGhpcy5fdmFsdWVUeXBlID0gJ251bWJlcic7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5kZXRhaWxDb250YWluZXJSZWYuY2xlYXIoKTtcbiAgICBjb25zdCB2aWV3ID0gdGhpcy5kZXRhaWxDb250YWluZXJSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KFxuICAgICAgdGhpcy5kZXRhaWxUZW1wbGF0ZVJlZlxuICAgICk7XG4gICAgdmlldy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGVkaXQoKSB7XG4gICAgdGhpcy5kZXRhaWxDb250YWluZXJSZWYuY2xlYXIoKTtcbiAgICBjb25zdCB2aWV3ID0gdGhpcy5kZXRhaWxDb250YWluZXJSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KFxuICAgICAgdGhpcy5lZGl0VGVtcGxhdGVSZWZcbiAgICApO1xuICAgIHZpZXcubWFya0ZvckNoZWNrKCk7XG4gICAgKHZpZXcucm9vdE5vZGVzWzBdIGFzIEhUTUxUZXh0QXJlYUVsZW1lbnQpLmZvY3VzKCk7XG4gIH1cblxuICBibHVyKCkge1xuICAgIHRoaXMuZGV0YWlsQ29udGFpbmVyUmVmLmNsZWFyKCk7XG4gICAgY29uc3QgdmlldyA9IHRoaXMuZGV0YWlsQ29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyhcbiAgICAgIHRoaXMuZGV0YWlsVGVtcGxhdGVSZWZcbiAgICApO1xuICAgIHZpZXcubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICB2YWx1ZUNoYW5nZSh2YWx1ZTogYW55KSB7XG4gICAgbGV0IHJlc3VsdCA9IHZhbHVlO1xuICAgIGlmICh0aGlzLl92YWx1ZVR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICByZXN1bHQgPSB0b051bWJlcih2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IHRvU3RyaW5nKHZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy5uenhDb250ZW50Q2hhbmdlLmVtaXQocmVzdWx0KTtcbiAgfVxufVxuIl19
@@ -1,36 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { NgModule } from '@angular/core';
3
- import { FormsModule } from '@angular/forms';
4
- import { NzTransButtonModule } from 'ng-zorro-antd/core/trans-button';
5
- import { NzIconModule } from 'ng-zorro-antd/icon';
6
- import { NzInputModule } from 'ng-zorro-antd/input';
7
- import { NzxEditableComponent } from './editable.component';
8
- import * as i0 from "@angular/core";
9
- export class NzxEditableModule {
10
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NzxEditableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
11
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: NzxEditableModule, declarations: [NzxEditableComponent], imports: [CommonModule,
12
- FormsModule,
13
- NzIconModule,
14
- NzInputModule,
15
- NzTransButtonModule], exports: [NzxEditableComponent] }); }
16
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NzxEditableModule, imports: [CommonModule,
17
- FormsModule,
18
- NzIconModule,
19
- NzInputModule,
20
- NzTransButtonModule] }); }
21
- }
22
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NzxEditableModule, decorators: [{
23
- type: NgModule,
24
- args: [{
25
- declarations: [NzxEditableComponent],
26
- imports: [
27
- CommonModule,
28
- FormsModule,
29
- NzIconModule,
30
- NzInputModule,
31
- NzTransButtonModule,
32
- ],
33
- exports: [NzxEditableComponent],
34
- }]
35
- }] });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdGFibGUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29tcG9uZW50cy9lZGl0YWJsZS9lZGl0YWJsZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBWTVELE1BQU0sT0FBTyxpQkFBaUI7K0dBQWpCLGlCQUFpQjtnSEFBakIsaUJBQWlCLGlCQVZiLG9CQUFvQixhQUVqQyxZQUFZO1lBQ1osV0FBVztZQUNYLFlBQVk7WUFDWixhQUFhO1lBQ2IsbUJBQW1CLGFBRVgsb0JBQW9CO2dIQUVuQixpQkFBaUIsWUFSMUIsWUFBWTtZQUNaLFdBQVc7WUFDWCxZQUFZO1lBQ1osYUFBYTtZQUNiLG1CQUFtQjs7NEZBSVYsaUJBQWlCO2tCQVg3QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLG9CQUFvQixDQUFDO29CQUNwQyxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixtQkFBbUI7cUJBQ3BCO29CQUNELE9BQU8sRUFBRSxDQUFDLG9CQUFvQixDQUFDO2lCQUNoQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOelRyYW5zQnV0dG9uTW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3RyYW5zLWJ1dHRvbic7XG5pbXBvcnQgeyBOekljb25Nb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL2ljb24nO1xuaW1wb3J0IHsgTnpJbnB1dE1vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvaW5wdXQnO1xuaW1wb3J0IHsgTnp4RWRpdGFibGVDb21wb25lbnQgfSBmcm9tICcuL2VkaXRhYmxlLmNvbXBvbmVudCc7XG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtOenhFZGl0YWJsZUNvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgTnpJY29uTW9kdWxlLFxuICAgIE56SW5wdXRNb2R1bGUsXG4gICAgTnpUcmFuc0J1dHRvbk1vZHVsZSxcbiAgXSxcbiAgZXhwb3J0czogW056eEVkaXRhYmxlQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgTnp4RWRpdGFibGVNb2R1bGUge31cbiJdfQ==
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctem9ycm8tYW50ZC1leHRlbnNpb24tZWRpdGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb21wb25lbnRzL2VkaXRhYmxlL25nLXpvcnJvLWFudGQtZXh0ZW5zaW9uLWVkaXRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
@@ -1,3 +0,0 @@
1
- export * from './editable.component';
2
- export * from './editable.module';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbXBvbmVudHMvZWRpdGFibGUvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2VkaXRhYmxlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2VkaXRhYmxlLm1vZHVsZSc7XG4iXX0=
@@ -1,10 +0,0 @@
1
- export default {
2
- locale: 'en',
3
- Query: {
4
- query: 'query',
5
- reset: 'reset',
6
- expand: 'expand',
7
- collapse: 'collapse',
8
- },
9
- };
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5fVVMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9jb21wb25lbnRzL2kxOG4vbGFuZ3VhZ2VzL2VuX1VTLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWU7SUFDYixNQUFNLEVBQUUsSUFBSTtJQUNaLEtBQUssRUFBRTtRQUNMLEtBQUssRUFBRSxPQUFPO1FBQ2QsS0FBSyxFQUFFLE9BQU87UUFDZCxNQUFNLEVBQUUsUUFBUTtRQUNoQixRQUFRLEVBQUUsVUFBVTtLQUNyQjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCB7XG4gIGxvY2FsZTogJ2VuJyxcbiAgUXVlcnk6IHtcbiAgICBxdWVyeTogJ3F1ZXJ5JyxcbiAgICByZXNldDogJ3Jlc2V0JyxcbiAgICBleHBhbmQ6ICdleHBhbmQnLFxuICAgIGNvbGxhcHNlOiAnY29sbGFwc2UnLFxuICB9LFxufTtcbiJdfQ==
@@ -1,10 +0,0 @@
1
- export default {
2
- locale: 'zh-cn',
3
- Query: {
4
- query: '查询',
5
- reset: '重置',
6
- expand: '展开',
7
- collapse: '收起',
8
- },
9
- };
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemhfQ04uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9jb21wb25lbnRzL2kxOG4vbGFuZ3VhZ2VzL3poX0NOLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWU7SUFDYixNQUFNLEVBQUUsT0FBTztJQUNmLEtBQUssRUFBRTtRQUNMLEtBQUssRUFBRSxJQUFJO1FBQ1gsS0FBSyxFQUFFLElBQUk7UUFDWCxNQUFNLEVBQUUsSUFBSTtRQUNaLFFBQVEsRUFBRSxJQUFJO0tBQ2Y7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQge1xuICBsb2NhbGU6ICd6aC1jbicsXG4gIFF1ZXJ5OiB7XG4gICAgcXVlcnk6ICfmn6Xor6InLFxuICAgIHJlc2V0OiAn6YeN572uJyxcbiAgICBleHBhbmQ6ICflsZXlvIAnLFxuICAgIGNvbGxhcHNlOiAn5pS26LW3JyxcbiAgfSxcbn07XG4iXX0=
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctem9ycm8tYW50ZC1leHRlbnNpb24taTE4bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbXBvbmVudHMvaTE4bi9uZy16b3Jyby1hbnRkLWV4dGVuc2lvbi1pMThuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnotaTE4bi5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb21wb25lbnRzL2kxOG4vbnotaTE4bi5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgTnp4UXVlcnlJMThuSW50ZXJmYWNlIHtcbiAgcXVlcnk6IHN0cmluZztcbiAgcmVzZXQ6IHN0cmluZztcbiAgZXhwYW5kOiBzdHJpbmc7XG4gIGNvbGxhcHNlOiBzdHJpbmc7XG59XG4iXX0=
@@ -1,4 +0,0 @@
1
- export * from './nz-i18n.interface';
2
- export { default as nzx_en_US } from './languages/en_US';
3
- export { default as nzx_zh_CN } from './languages/zh_CN';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbXBvbmVudHMvaTE4bi9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUJBQXFCLENBQUM7QUFFcEMsT0FBTyxFQUFFLE9BQU8sSUFBSSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsT0FBTyxJQUFJLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9uei1pMThuLmludGVyZmFjZSc7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgbnp4X2VuX1VTIH0gZnJvbSAnLi9sYW5ndWFnZXMvZW5fVVMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBuenhfemhfQ04gfSBmcm9tICcuL2xhbmd1YWdlcy96aF9DTic7XG4iXX0=
@@ -1,257 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
4
- import * as i2 from "ng-zorro-antd/icon";
5
- const l = 42; // 滑块边长
6
- const r = 9; // 滑块半径
7
- const PI = Math.PI;
8
- const L = l + r * 2 + 3; // 滑块实际边长
9
- export class NzxJigsawComponent {
10
- constructor(cd) {
11
- this.cd = cd;
12
- this.width = 310;
13
- this.height = 155;
14
- this.nzxLoadingText = '加载中...';
15
- this.nzxTipText = '向右滑动填充拼图';
16
- this.nzxBgImgUrl = '';
17
- this.nzxOnRefresh = new EventEmitter();
18
- this.nzxOnSuccess = new EventEmitter();
19
- this.nzxOnFail = new EventEmitter();
20
- this.isLoading = false;
21
- this.x = 0;
22
- this.y = 0;
23
- this.originX = 0;
24
- this.originY = 0;
25
- this.trail = [];
26
- this.isMouseDown = false;
27
- }
28
- ngAfterViewInit() {
29
- this.initImg();
30
- const handleDragMove = (e) => {
31
- if (!this.isMouseDown) {
32
- return false;
33
- }
34
- e.preventDefault();
35
- const eventX = e.clientX || e.touches[0].clientX;
36
- const eventY = e.clientY || e.touches[0].clientY;
37
- const moveX = eventX - this.originX;
38
- const moveY = eventY - this.originY;
39
- if (moveX < 0 || moveX + 38 >= this.width)
40
- return false;
41
- this.sliderRef.nativeElement.style.left = moveX + 'px';
42
- const blockLeft = ((this.width - 40 - 20) / (this.width - 40)) * moveX;
43
- this.blockRef.nativeElement.style.left = blockLeft + 'px';
44
- this.sliderContainerRef.nativeElement.classList.add('nzx-jigsaw-slider-container-active');
45
- this.sliderMaskRef.nativeElement.style.width = moveX + 'px';
46
- this.trail.push(moveY);
47
- return false;
48
- };
49
- const handleDragEnd = (e) => {
50
- if (!this.isMouseDown) {
51
- return false;
52
- }
53
- this.isMouseDown = false;
54
- const eventX = e.clientX || e.changedTouches[0].clientX;
55
- if (eventX === this.originX) {
56
- return false;
57
- }
58
- this.sliderContainerRef.nativeElement.classList.remove('nzx-jigsaw-slider-container-active');
59
- this.trail = this.trail;
60
- const { spliced, verified } = this.verify();
61
- if (spliced) {
62
- if (verified) {
63
- this.sliderContainerRef.nativeElement.classList.add('nzx-jigsaw-slider-container-success');
64
- this.nzxOnSuccess.emit();
65
- }
66
- else {
67
- this.sliderContainerRef.nativeElement.classList.add('nzx-jigsaw-slider-container-fail');
68
- this.nzxTipText = '请再试一次';
69
- this.reset();
70
- }
71
- }
72
- else {
73
- this.sliderContainerRef.nativeElement.classList.add('nzx-jigsaw-slider-container-fail');
74
- this.nzxOnFail.emit();
75
- setTimeout(() => this.reset(), 1000);
76
- }
77
- return false;
78
- };
79
- document.addEventListener('mousemove', handleDragMove);
80
- document.addEventListener('touchmove', handleDragMove);
81
- document.addEventListener('mouseup', handleDragEnd);
82
- document.addEventListener('touchend', handleDragEnd);
83
- }
84
- selectstart() {
85
- return false;
86
- }
87
- refresh() {
88
- this.reset();
89
- this.nzxOnRefresh.emit();
90
- }
91
- handleDragStart(e) {
92
- this.originX = e.clientX || e.touches[0].clientX;
93
- this.originY = e.clientY || e.touches[0].clientY;
94
- this.isMouseDown = true;
95
- }
96
- verify() {
97
- const arr = this.trail; // 拖动时y轴的移动距离
98
- const average = arr.reduce((x, y) => x + y) / arr.length;
99
- const deviations = arr.map((x) => x - average);
100
- const stddev = Math.sqrt(deviations
101
- .map((x) => x * x)
102
- .reduce((x, y) => x + y) / arr.length);
103
- const left = parseInt(this.blockRef.nativeElement.style.left);
104
- return {
105
- spliced: Math.abs(left - this.x) < 10,
106
- verified: stddev !== 0, // 简单验证拖动轨迹,为零时表示Y轴上下没有波动,可能非人为操作
107
- };
108
- }
109
- reset() {
110
- const { width, height } = this;
111
- // 重置样式
112
- this.sliderContainerRef.nativeElement.className =
113
- 'nzx-jigsaw-slider-container';
114
- this.sliderRef.nativeElement.style.left = 0 + 'px';
115
- this.blockRef.nativeElement.width = width;
116
- this.blockRef.nativeElement.style.left = 0 + 'px';
117
- this.sliderMaskRef.nativeElement.style.width = 0 + 'px';
118
- // 清空画布
119
- this.canvasRef.nativeElement
120
- .getContext('2d')
121
- .clearRect(0, 0, width, height);
122
- this.blockRef.nativeElement
123
- .getContext('2d')
124
- .clearRect(0, 0, width, height);
125
- // 重新加载图片
126
- this.isLoading = true;
127
- this.cd.markForCheck();
128
- this.setImageSrc(this.getRandomImgSrc(), this.img);
129
- }
130
- initImg() {
131
- const img = new Image();
132
- img.style.objectFit = 'cover';
133
- img.crossOrigin = 'Anonymous';
134
- img.onload = () => {
135
- this.isLoading = false;
136
- this.draw(img);
137
- };
138
- img.onerror = () => {
139
- // 图片加载失败的时候重新加载其他图片
140
- this.setImageSrc(this.getRandomImgSrc(), img);
141
- };
142
- this.setImageSrc(this.getRandomImgSrc(), img);
143
- this.img = img;
144
- }
145
- draw(img) {
146
- const { width, height } = this;
147
- // 随机位置创建拼图形状
148
- this.x = this.getRandomNumberByRange(L + 10, width - (L + 10));
149
- this.y = this.getRandomNumberByRange(10 + r * 2, height - (L + 10));
150
- this.drawPath(this.canvasRef.nativeElement.getContext('2d'), this.x, this.y, 'fill');
151
- this.drawPath(this.blockRef.nativeElement.getContext('2d'), this.x, this.y, 'clip');
152
- // 画入图片
153
- this.canvasRef.nativeElement
154
- .getContext('2d')
155
- .drawImage(img, 0, 0, width, height);
156
- this.blockRef.nativeElement
157
- .getContext('2d')
158
- .drawImage(img, 0, 0, width, height);
159
- // 提取滑块并放到最左边
160
- const y = this.y - r * 2 - 1;
161
- const ImageData = this.blockRef.nativeElement
162
- .getContext('2d')
163
- .getImageData(this.x - 3, y, L, L);
164
- this.blockRef.nativeElement.width = L;
165
- this.blockRef.nativeElement.getContext('2d').putImageData(ImageData, 0, y);
166
- this.cd.markForCheck();
167
- }
168
- setImageSrc(src, img) {
169
- const isIE = window.navigator.userAgent.indexOf('Trident') > -1;
170
- if (isIE) {
171
- // IE浏览器无法通过img.crossOrigin跨域,使用ajax获取图片blob然后转为dataURL显示
172
- const xhr = new XMLHttpRequest();
173
- xhr.onloadend = (e) => {
174
- const file = new FileReader(); // FileReader仅支持IE10+
175
- file.readAsDataURL(e.target.response);
176
- file.onloadend = (e) => {
177
- img.src = e.target?.result;
178
- };
179
- };
180
- xhr.open('GET', src);
181
- xhr.responseType = 'blob';
182
- xhr.send();
183
- }
184
- else {
185
- img.src = src;
186
- }
187
- }
188
- getRandomImgSrc() {
189
- if (this.nzxBgImgUrl && typeof this.nzxBgImgUrl == 'string') {
190
- return this.nzxBgImgUrl;
191
- }
192
- if (this.nzxBgImgUrl &&
193
- Array.isArray(this.nzxBgImgUrl) &&
194
- this.nzxBgImgUrl.length) {
195
- return this.nzxBgImgUrl[this.getRandomNumberByRange(0, this.nzxBgImgUrl.length - 1)];
196
- }
197
- return `https://picsum.photos/id/${this.getRandomNumberByRange(0, 1084)}/${this.width}/${this.height}`;
198
- }
199
- getRandomNumberByRange(start, end) {
200
- return Math.round(Math.random() * (end - start) + start);
201
- }
202
- drawPath(ctx, x, y, operation) {
203
- ctx.beginPath();
204
- ctx.moveTo(x, y);
205
- ctx.arc(x + l / 2, y - r + 2, r, 0.72 * PI, 2.26 * PI);
206
- ctx.lineTo(x + l, y);
207
- ctx.arc(x + l + r - 2, y + l / 2, r, 1.21 * PI, 2.78 * PI);
208
- ctx.lineTo(x + l, y + l);
209
- ctx.lineTo(x, y + l);
210
- ctx.arc(x + r - 2, y + l / 2, r + 0.4, 2.76 * PI, 1.24 * PI, true);
211
- ctx.lineTo(x, y);
212
- ctx.lineWidth = 2;
213
- ctx.fillStyle = 'rgba(255, 255, 255, 0.7)';
214
- ctx.strokeStyle = 'rgba(255, 255, 255, 0.7)';
215
- ctx.stroke();
216
- ctx.globalCompositeOperation = 'destination-over';
217
- operation === 'fill' ? ctx.fill() : ctx.clip();
218
- }
219
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NzxJigsawComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
220
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: NzxJigsawComponent, selector: "nzx-jigsaw", inputs: { width: "width", height: "height", nzxLoadingText: "nzxLoadingText", nzxTipText: "nzxTipText", nzxBgImgUrl: "nzxBgImgUrl" }, outputs: { nzxOnRefresh: "nzxOnRefresh", nzxOnSuccess: "nzxOnSuccess", nzxOnFail: "nzxOnFail" }, viewQueries: [{ propertyName: "canvasRef", first: true, predicate: ["canvasCtx"], descendants: true }, { propertyName: "blockRef", first: true, predicate: ["blockCtx"], descendants: true }, { propertyName: "sliderContainerRef", first: true, predicate: ["sliderContainer"], descendants: true }, { propertyName: "sliderRef", first: true, predicate: ["slider"], descendants: true }, { propertyName: "sliderMaskRef", first: true, predicate: ["sliderMask"], descendants: true }], ngImport: i0, template: "<div\r\n class=\"nzx-jigsaw-container\"\r\n [ngStyle]=\"{\r\n width: width + 'px'\r\n }\"\r\n (selectstart)=\"selectstart()\"\r\n>\r\n <div\r\n class=\"nzx-jigsaw-loading-container\"\r\n [ngStyle]=\"{\r\n display: isLoading ? '' : 'none',\r\n width: width + 'px',\r\n height: height + 'px'\r\n }\"\r\n >\r\n <span class=\"nzx-jigsaw-loading-icon\" nz-icon [nzType]=\"'loading'\"></span>\r\n <span>{{ nzxLoadingText }}</span>\r\n </div>\r\n\r\n <canvas #canvasCtx [width]=\"width\" [height]=\"height\"></canvas>\r\n\r\n <span\r\n class=\"nzx-jigsaw-refresh-icon\"\r\n nz-icon\r\n nzType=\"redo\"\r\n nzTheme=\"outline\"\r\n [nzRotate]=\"-80\"\r\n (click)=\"refresh()\"\r\n ></span>\r\n\r\n <canvas\r\n #blockCtx\r\n class=\"nzx-jigsaw-block\"\r\n [width]=\"width\"\r\n [height]=\"height\"\r\n (touchstart)=\"handleDragStart($event)\"\r\n (mousedown)=\"handleDragStart($event)\"\r\n ></canvas>\r\n\r\n <div\r\n #sliderContainer\r\n class=\"nzx-jigsaw-slider-container\"\r\n [ngStyle]=\"{\r\n width: width + 'px',\r\n 'pointer-events': isLoading ? 'none' : ''\r\n }\"\r\n >\r\n <div #sliderMask class=\"nzx-jigsaw-slider-mask\">\r\n <div\r\n #slider\r\n class=\"nzx-jigsaw-slider\"\r\n (touchstart)=\"handleDragStart($event)\"\r\n (mousedown)=\"handleDragStart($event)\"\r\n >\r\n <span nz-icon nzType=\"arrow-right\" nzTheme=\"outline\"></span>\r\n </div>\r\n </div>\r\n <span class=\"nzx-jigsaw-slider-text\">{{ nzxTipText }}</span>\r\n </div>\r\n</div>\r\n", styles: [".nzx-jigsaw-container{position:relative}.nzx-jigsaw-block{position:absolute;left:0;top:0;cursor:pointer;cursor:grab}.nzx-jigsaw-block:active{cursor:grabbing}.nzx-jigsaw-slider-container{position:relative;text-align:center;line-height:40px;height:40px;background:#f7f9fa;color:#45494c;border:1px solid #e4e7eb}.nzx-jigsaw-slider-container-active .nzx-jigsaw-slider{top:-1px;border:1px solid #1991fa}.nzx-jigsaw-slider-container-active .nzx-jigsaw-slider-mask{border-width:1px}.nzx-jigsaw-slider-container-success .nzx-jigsaw-slider{top:-1px;border:1px solid #52ccba;background-color:#52ccba!important}.nzx-jigsaw-slider-container-success .nzx-jigsaw-slider-mask{border:1px solid #52ccba;background-color:#d2f4ef}.nzx-jigsaw-slider-container-fail .nzx-jigsaw-slider{top:-1px;border:1px solid #f57a7a;background-color:#f57a7a!important}.nzx-jigsaw-slider-container-fail .nzx-jigsaw-slider-mask{border:1px solid #f57a7a;background-color:#fce1e1}.nzx-jigsaw-slider-container-active .nzx-jigsaw-slider-text,.nzx-jigsaw-slider-container-success .nzx-jigsaw-slider-text,.nzx-jigsaw-slider-container-fail .nzx-jigsaw-slider-text{display:none}.nzx-jigsaw-slider-mask{position:absolute;left:0;top:0;height:40px;border:0 solid #1991fa;background:#d1e9fe}.nzx-jigsaw-slider{position:absolute;top:0;left:0;width:40px;height:40px;background:#fff;box-shadow:0 0 3px #0000004d;transition:background .2s linear;cursor:pointer;cursor:grab}.nzx-jigsaw-slider:active{cursor:grabbing}.nzx-jigsaw-slider:hover{background:#1991fa}.nzx-jigsaw-refresh-icon{position:absolute;right:5px;top:5px;font-size:24px;cursor:pointer;color:#fff}.nzx-jigsaw-loading-container{position:absolute;left:0;top:0;display:flex;flex-direction:column;justify-content:center;align-items:center;font-size:14px;color:#45494c;z-index:2;background:#edf0f2}.nzx-jigsaw-loading-icon{font-size:32px;margin-bottom:10px}\n"], dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
221
- }
222
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NzxJigsawComponent, decorators: [{
223
- type: Component,
224
- args: [{ selector: 'nzx-jigsaw', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"nzx-jigsaw-container\"\r\n [ngStyle]=\"{\r\n width: width + 'px'\r\n }\"\r\n (selectstart)=\"selectstart()\"\r\n>\r\n <div\r\n class=\"nzx-jigsaw-loading-container\"\r\n [ngStyle]=\"{\r\n display: isLoading ? '' : 'none',\r\n width: width + 'px',\r\n height: height + 'px'\r\n }\"\r\n >\r\n <span class=\"nzx-jigsaw-loading-icon\" nz-icon [nzType]=\"'loading'\"></span>\r\n <span>{{ nzxLoadingText }}</span>\r\n </div>\r\n\r\n <canvas #canvasCtx [width]=\"width\" [height]=\"height\"></canvas>\r\n\r\n <span\r\n class=\"nzx-jigsaw-refresh-icon\"\r\n nz-icon\r\n nzType=\"redo\"\r\n nzTheme=\"outline\"\r\n [nzRotate]=\"-80\"\r\n (click)=\"refresh()\"\r\n ></span>\r\n\r\n <canvas\r\n #blockCtx\r\n class=\"nzx-jigsaw-block\"\r\n [width]=\"width\"\r\n [height]=\"height\"\r\n (touchstart)=\"handleDragStart($event)\"\r\n (mousedown)=\"handleDragStart($event)\"\r\n ></canvas>\r\n\r\n <div\r\n #sliderContainer\r\n class=\"nzx-jigsaw-slider-container\"\r\n [ngStyle]=\"{\r\n width: width + 'px',\r\n 'pointer-events': isLoading ? 'none' : ''\r\n }\"\r\n >\r\n <div #sliderMask class=\"nzx-jigsaw-slider-mask\">\r\n <div\r\n #slider\r\n class=\"nzx-jigsaw-slider\"\r\n (touchstart)=\"handleDragStart($event)\"\r\n (mousedown)=\"handleDragStart($event)\"\r\n >\r\n <span nz-icon nzType=\"arrow-right\" nzTheme=\"outline\"></span>\r\n </div>\r\n </div>\r\n <span class=\"nzx-jigsaw-slider-text\">{{ nzxTipText }}</span>\r\n </div>\r\n</div>\r\n", styles: [".nzx-jigsaw-container{position:relative}.nzx-jigsaw-block{position:absolute;left:0;top:0;cursor:pointer;cursor:grab}.nzx-jigsaw-block:active{cursor:grabbing}.nzx-jigsaw-slider-container{position:relative;text-align:center;line-height:40px;height:40px;background:#f7f9fa;color:#45494c;border:1px solid #e4e7eb}.nzx-jigsaw-slider-container-active .nzx-jigsaw-slider{top:-1px;border:1px solid #1991fa}.nzx-jigsaw-slider-container-active .nzx-jigsaw-slider-mask{border-width:1px}.nzx-jigsaw-slider-container-success .nzx-jigsaw-slider{top:-1px;border:1px solid #52ccba;background-color:#52ccba!important}.nzx-jigsaw-slider-container-success .nzx-jigsaw-slider-mask{border:1px solid #52ccba;background-color:#d2f4ef}.nzx-jigsaw-slider-container-fail .nzx-jigsaw-slider{top:-1px;border:1px solid #f57a7a;background-color:#f57a7a!important}.nzx-jigsaw-slider-container-fail .nzx-jigsaw-slider-mask{border:1px solid #f57a7a;background-color:#fce1e1}.nzx-jigsaw-slider-container-active .nzx-jigsaw-slider-text,.nzx-jigsaw-slider-container-success .nzx-jigsaw-slider-text,.nzx-jigsaw-slider-container-fail .nzx-jigsaw-slider-text{display:none}.nzx-jigsaw-slider-mask{position:absolute;left:0;top:0;height:40px;border:0 solid #1991fa;background:#d1e9fe}.nzx-jigsaw-slider{position:absolute;top:0;left:0;width:40px;height:40px;background:#fff;box-shadow:0 0 3px #0000004d;transition:background .2s linear;cursor:pointer;cursor:grab}.nzx-jigsaw-slider:active{cursor:grabbing}.nzx-jigsaw-slider:hover{background:#1991fa}.nzx-jigsaw-refresh-icon{position:absolute;right:5px;top:5px;font-size:24px;cursor:pointer;color:#fff}.nzx-jigsaw-loading-container{position:absolute;left:0;top:0;display:flex;flex-direction:column;justify-content:center;align-items:center;font-size:14px;color:#45494c;z-index:2;background:#edf0f2}.nzx-jigsaw-loading-icon{font-size:32px;margin-bottom:10px}\n"] }]
225
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { width: [{
226
- type: Input
227
- }], height: [{
228
- type: Input
229
- }], nzxLoadingText: [{
230
- type: Input
231
- }], nzxTipText: [{
232
- type: Input
233
- }], nzxBgImgUrl: [{
234
- type: Input
235
- }], nzxOnRefresh: [{
236
- type: Output
237
- }], nzxOnSuccess: [{
238
- type: Output
239
- }], nzxOnFail: [{
240
- type: Output
241
- }], canvasRef: [{
242
- type: ViewChild,
243
- args: ['canvasCtx']
244
- }], blockRef: [{
245
- type: ViewChild,
246
- args: ['blockCtx']
247
- }], sliderContainerRef: [{
248
- type: ViewChild,
249
- args: ['sliderContainer']
250
- }], sliderRef: [{
251
- type: ViewChild,
252
- args: ['slider']
253
- }], sliderMaskRef: [{
254
- type: ViewChild,
255
- args: ['sliderMask']
256
- }] } });
257
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamlnc2F3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbXBvbmVudHMvamlnc2F3L2ppZ3Nhdy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb21wb25lbnRzL2ppZ3Nhdy9qaWdzYXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDOzs7O0FBRXZCLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU87QUFDckIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTztBQUNwQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO0FBQ25CLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVM7QUFRbEMsTUFBTSxPQUFPLGtCQUFrQjtJQXFDN0IsWUFBb0IsRUFBcUI7UUFBckIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFwQ2hDLFVBQUssR0FBRyxHQUFHLENBQUM7UUFDWixXQUFNLEdBQUcsR0FBRyxDQUFDO1FBQ2IsbUJBQWMsR0FBRyxRQUFRLENBQUM7UUFDMUIsZUFBVSxHQUFHLFVBQVUsQ0FBQztRQUN4QixnQkFBVyxHQUFzQixFQUFFLENBQUM7UUFFbkMsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3hDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN4QyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUUvQyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBa0JWLE1BQUMsR0FBVyxDQUFDLENBQUM7UUFDZCxNQUFDLEdBQVcsQ0FBQyxDQUFDO1FBRWQsWUFBTyxHQUFXLENBQUMsQ0FB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ZixTQUFTO3VCQUFDLFVBQVU7Z0JBSWIsa0JBQWtCO3NCQUR6QixTQUFTO3VCQUFDLGlCQUFpQjtnQkFJcEIsU0FBUztzQkFEaEIsU0FBUzt1QkFBQyxRQUFRO2dCQUlYLGFBQWE7c0JBRHBCLFNBQVM7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmNvbnN0IGwgPSA0MjsgLy8g5ruR5Z2X6L656ZW/XHJcbmNvbnN0IHIgPSA5OyAvLyDmu5HlnZfljYrlvoRcclxuY29uc3QgUEkgPSBNYXRoLlBJO1xyXG5jb25zdCBMID0gbCArIHIgKiAyICsgMzsgLy8g5ruR5Z2X5a6e6ZmF6L656ZW/XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ256eC1qaWdzYXcnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9qaWdzYXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ppZ3Nhdy5jb21wb25lbnQubGVzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTnp4Smlnc2F3Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQElucHV0KCkgd2lkdGggPSAzMTA7XHJcbiAgQElucHV0KCkgaGVpZ2h0ID0gMTU1O1xyXG4gIEBJbnB1dCgpIG56eExvYWRpbmdUZXh0ID0gJ+WKoOi9veS4rS4uLic7XHJcbiAgQElucHV0KCkgbnp4VGlwVGV4dCA9ICflkJHlj7Pmu5HliqjloavlhYXmi7zlm74nO1xyXG4gIEBJbnB1dCgpIG56eEJnSW1nVXJsOiBzdHJpbmcgfCBzdHJpbmdbXSA9ICcnO1xyXG5cclxuICBAT3V0cHV0KCkgbnp4T25SZWZyZXNoID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBuenhPblN1Y2Nlc3MgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQE91dHB1dCgpIG56eE9uRmFpbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgaXNMb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NhbnZhc0N0eCcpXHJcbiAgcHJpdmF0ZSBjYW52YXNSZWYhOiBFbGVtZW50UmVmPEhUTUxDYW52YXNFbGVtZW50PjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnYmxvY2tDdHgnKVxyXG4gIHByaXZhdGUgYmxvY2tSZWYhOiBFbGVtZW50UmVmPEhUTUxDYW52YXNFbGVtZW50PjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnc2xpZGVyQ29udGFpbmVyJylcclxuICBwcml2YXRlIHNsaWRlckNvbnRhaW5lclJlZiE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG5cclxuICBAVmlld0NoaWxkKCdzbGlkZXInKVxyXG4gIHByaXZhdGUgc2xpZGVyUmVmITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3NsaWRlck1hc2snKVxyXG4gIHByaXZhdGUgc2xpZGVyTWFza1JlZiE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG5cclxuICBwcml2YXRlIGltZzogYW55O1xyXG4gIHByaXZhdGUgeDogbnVtYmVyID0gMDtcclxuICBwcml2YXRlIHk6IG51bWJlciA9IDA7XHJcblxyXG4gIHByaXZhdGUgb3JpZ2luWDogbnVtYmVyID0gMDtcclxuICBwcml2YXRlIG9yaWdpblk6IG51bWJlciA9IDA7XHJcbiAgcHJpdmF0ZSB0cmFpbDogYW55W10gPSBbXTtcclxuICBwcml2YXRlIGlzTW91c2VEb3duID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7fVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmluaXRJbWcoKTtcclxuXHJcbiAgICBjb25zdCBoYW5kbGVEcmFnTW92ZSA9IChlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLmlzTW91c2VEb3duKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgY29uc3QgZXZlbnRYID0gZS5jbGllbnRYIHx8IGUudG91Y2hlc1swXS5jbGllbnRYO1xyXG4gICAgICBjb25zdCBldmVudFkgPSBlLmNsaWVudFkgfHwgZS50b3VjaGVzWzBdLmNsaWVudFk7XHJcbiAgICAgIGNvbnN0IG1vdmVYID0gZXZlbnRYIC0gdGhpcy5vcmlnaW5YO1xyXG4gICAgICBjb25zdCBtb3ZlWSA9IGV2ZW50WSAtIHRoaXMub3JpZ2luWTtcclxuICAgICAgaWYgKG1vdmVYIDwgMCB8fCBtb3ZlWCArIDM4ID49IHRoaXMud2lkdGgpIHJldHVybiBmYWxzZTtcclxuICAgICAgdGhpcy5zbGlkZXJSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5sZWZ0ID0gbW92ZVggKyAncHgnO1xyXG4gICAgICBjb25zdCBibG9ja0xlZnQgPSAoKHRoaXMud2lkdGggLSA0MCAtIDIwKSAvICh0aGlzLndpZHRoIC0gNDApKSAqIG1vdmVYO1xyXG4gICAgICB0aGlzLmJsb2NrUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUubGVmdCA9IGJsb2NrTGVmdCArICdweCc7XHJcbiAgICAgIHRoaXMuc2xpZGVyQ29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZChcclxuICAgICAgICAnbnp4LWppZ3Nhdy1zbGlkZXItY29udGFpbmVyLWFjdGl2ZSdcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5zbGlkZXJNYXNrUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUud2lkdGggPSBtb3ZlWCArICdweCc7XHJcbiAgICAgIHRoaXMudHJhaWwucHVzaChtb3ZlWSk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgaGFuZGxlRHJhZ0VuZCA9IChlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLmlzTW91c2VEb3duKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaXNNb3VzZURvd24gPSBmYWxzZTtcclxuICAgICAgY29uc3QgZXZlbnRYID0gZS5jbGllbnRYIHx8IGUuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WDtcclxuICAgICAgaWYgKGV2ZW50WCA9PT0gdGhpcy5vcmlnaW5YKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2xpZGVyQ29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShcclxuICAgICAgICAnbnp4LWppZ3Nhdy1zbGlkZXItY29udGFpbmVyLWFjdGl2ZSdcclxuICAgICAgKTtcclxuICAgICAgdGhpcy50cmFpbCA9IHRoaXMudHJhaWw7XHJcbiAgICAgIGNvbnN0IHsgc3BsaWNlZCwgdmVyaWZpZWQgfSA9IHRoaXMudmVyaWZ5KCk7XHJcblxyXG4gICAgICBpZiAoc3BsaWNlZCkge1xyXG4gICAgICAgIGlmICh2ZXJpZmllZCkge1xyXG4gICAgICAgICAgdGhpcy5zbGlkZXJDb250YWluZXJSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKFxyXG4gICAgICAgICAgICAnbnp4LWppZ3Nhdy1zbGlkZXItY29udGFpbmVyLXN1Y2Nlc3MnXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5uenhPblN1Y2Nlc3MuZW1pdCgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNsaWRlckNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoXHJcbiAgICAgICAgICAgICduengtamlnc2F3LXNsaWRlci1jb250YWluZXItZmFpbCdcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLm56eFRpcFRleHQgPSAn6K+35YaN6K+V5LiA5qyhJztcclxuICAgICAgICAgIHRoaXMucmVzZXQoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zbGlkZXJDb250YWluZXJSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKFxyXG4gICAgICAgICAgJ256eC1qaWdzYXctc2xpZGVyLWNvbnRhaW5lci1mYWlsJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5uenhPbkZhaWwuZW1pdCgpO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5yZXNldCgpLCAxMDAwKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9O1xyXG5cclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIGhhbmRsZURyYWdNb3ZlKTtcclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIGhhbmRsZURyYWdNb3ZlKTtcclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBoYW5kbGVEcmFnRW5kKTtcclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgaGFuZGxlRHJhZ0VuZCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RzdGFydCgpIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHJlZnJlc2goKSB7XHJcbiAgICB0aGlzLnJlc2V0KCk7XHJcbiAgICB0aGlzLm56eE9uUmVmcmVzaC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVEcmFnU3RhcnQoZTogYW55KSB7XHJcbiAgICB0aGlzLm9yaWdpblggPSBlLmNsaWVudFggfHwgZS50b3VjaGVzWzBdLmNsaWVudFg7XHJcbiAgICB0aGlzLm9yaWdpblkgPSBlLmNsaWVudFkgfHwgZS50b3VjaGVzWzBdLmNsaWVudFk7XHJcbiAgICB0aGlzLmlzTW91c2VEb3duID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmVyaWZ5KCkge1xyXG4gICAgY29uc3QgYXJyID0gdGhpcy50cmFpbDsgLy8g5ouW5Yqo5pe2eei9tOeahOenu+WKqOi3neemu1xyXG4gICAgY29uc3QgYXZlcmFnZSA9IGFyci5yZWR1Y2UoKHg6IG51bWJlciwgeTogbnVtYmVyKSA9PiB4ICsgeSkgLyBhcnIubGVuZ3RoO1xyXG4gICAgY29uc3QgZGV2aWF0aW9ucyA9IGFyci5tYXAoKHgpID0+IHggLSBhdmVyYWdlKTtcclxuICAgIGNvbnN0IHN0ZGRldiA9IE1hdGguc3FydChcclxuICAgICAgZGV2aWF0aW9uc1xyXG4gICAgICAgIC5tYXAoKHg6IG51bWJlcikgPT4geCAqIHgpXHJcbiAgICAgICAgLnJlZHVjZSgoeDogbnVtYmVyLCB5OiBudW1iZXIpID0+IHggKyB5KSAvIGFyci5sZW5ndGhcclxuICAgICk7XHJcbiAgICBjb25zdCBsZWZ0ID0gcGFyc2VJbnQodGhpcy5ibG9ja1JlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmxlZnQpO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgc3BsaWNlZDogTWF0aC5hYnMobGVmdCAtIHRoaXMueCkgPCAxMCxcclxuICAgICAgdmVyaWZpZWQ6IHN0ZGRldiAhPT0gMCwgLy8g566A5Y2V6aqM6K+B5ouW5Yqo6L2o6L+577yM5Li66Zu25pe26KGo56S6Wei9tOS4iuS4i+ayoeacieazouWKqO+8jOWPr+iDvemdnuS6uuS4uuaTjeS9nFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzZXQoKSB7XHJcbiAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IHRoaXM7XHJcbiAgICAvLyDph43nva7moLflvI9cclxuICAgIHRoaXMuc2xpZGVyQ29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NOYW1lID1cclxuICAgICAgJ256eC1qaWdzYXctc2xpZGVyLWNvbnRhaW5lcic7XHJcbiAgICB0aGlzLnNsaWRlclJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmxlZnQgPSAwICsgJ3B4JztcclxuICAgIHRoaXMuYmxvY2tSZWYubmF0aXZlRWxlbWVudC53aWR0aCA9IHdpZHRoO1xyXG4gICAgdGhpcy5ibG9ja1JlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmxlZnQgPSAwICsgJ3B4JztcclxuICAgIHRoaXMuc2xpZGVyTWFza1JlZi5uYXRpdmVFbGVtZW50LnN0eWxlLndpZHRoID0gMCArICdweCc7XHJcblxyXG4gICAgLy8g5riF56m655S75biDXHJcbiAgICB0aGlzLmNhbnZhc1JlZi5uYXRpdmVFbGVtZW50XHJcbiAgICAgIC5nZXRDb250ZXh0KCcyZCcpIVxyXG4gICAgICAuY2xlYXJSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xyXG4gICAgdGhpcy5ibG9ja1JlZi5uYXRpdmVFbGVtZW50XHJcbiAgICAgIC5nZXRDb250ZXh0KCcyZCcpIVxyXG4gICAgICAuY2xlYXJSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xyXG5cclxuICAgIC8vIOmHjeaWsOWKoOi9veWbvueJh1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgIHRoaXMuc2V0SW1hZ2VTcmModGhpcy5nZXRSYW5kb21JbWdTcmMoKSwgdGhpcy5pbWcpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0SW1nKCkge1xyXG4gICAgY29uc3QgaW1nOiBIVE1MSW1hZ2VFbGVtZW50ID0gbmV3IEltYWdlKCk7XHJcbiAgICBpbWcuc3R5bGUub2JqZWN0Rml0ID0gJ2NvdmVyJztcclxuICAgIGltZy5jcm9zc09yaWdpbiA9ICdBbm9ueW1vdXMnO1xyXG4gICAgaW1nLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5kcmF3KGltZyk7XHJcbiAgICB9O1xyXG4gICAgaW1nLm9uZXJyb3IgPSAoKSA9PiB7XHJcbiAgICAgIC8vIOWbvueJh+WKoOi9veWksei0peeahOaXtuWAmemHjeaWsOWKoOi9veWFtuS7luWbvueJh1xyXG4gICAgICB0aGlzLnNldEltYWdlU3JjKHRoaXMuZ2V0UmFuZG9tSW1nU3JjKCksIGltZyk7XHJcbiAgICB9O1xyXG4gICAgdGhpcy5zZXRJbWFnZVNyYyh0aGlzLmdldFJhbmRvbUltZ1NyYygpLCBpbWcpO1xyXG4gICAgdGhpcy5pbWcgPSBpbWc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRyYXcoaW1nOiBIVE1MSW1hZ2VFbGVtZW50KSB7XHJcbiAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IHRoaXM7XHJcbiAgICAvLyDpmo/mnLrkvY3nva7liJvlu7rmi7zlm77lvaLnirZcclxuICAgIHRoaXMueCA9IHRoaXMuZ2V0UmFuZG9tTnVtYmVyQnlSYW5nZShMICsgMTAsIHdpZHRoIC0gKEwgKyAxMCkpO1xyXG4gICAgdGhpcy55ID0gdGhpcy5nZXRSYW5kb21OdW1iZXJCeVJhbmdlKDEwICsgciAqIDIsIGhlaWdodCAtIChMICsgMTApKTtcclxuICAgIHRoaXMuZHJhd1BhdGgoXHJcbiAgICAgIHRoaXMuY2FudmFzUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Q29udGV4dCgnMmQnKSEsXHJcbiAgICAgIHRoaXMueCxcclxuICAgICAgdGhpcy55LFxyXG4gICAgICAnZmlsbCdcclxuICAgICk7XHJcbiAgICB0aGlzLmRyYXdQYXRoKFxyXG4gICAgICB0aGlzLmJsb2NrUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Q29udGV4dCgnMmQnKSEsXHJcbiAgICAgIHRoaXMueCxcclxuICAgICAgdGhpcy55LFxyXG4gICAgICAnY2xpcCdcclxuICAgICk7XHJcblxyXG4gICAgLy8g55S75YWl5Zu+54mHXHJcbiAgICB0aGlzLmNhbnZhc1JlZi5uYXRpdmVFbGVtZW50XHJcbiAgICAgIC5nZXRDb250ZXh0KCcyZCcpIVxyXG4gICAgICAuZHJhd0ltYWdlKGltZywgMCwgMCwgd2lkdGgsIGhlaWdodCk7XHJcbiAgICB0aGlzLmJsb2NrUmVmLm5hdGl2ZUVsZW1lbnRcclxuICAgICAgLmdldENvbnRleHQoJzJkJykhXHJcbiAgICAgIC5kcmF3SW1hZ2UoaW1nLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcclxuXHJcbiAgICAvLyDmj5Dlj5bmu5HlnZflubbmlL7liLDmnIDlt6bovrlcclxuICAgIGNvbnN0IHkgPSB0aGlzLnkgLSByICogMiAtIDE7XHJcbiAgICBjb25zdCBJbWFnZURhdGEgPSB0aGlzLmJsb2NrUmVmLm5hdGl2ZUVsZW1lbnRcclxuICAgICAgLmdldENvbnRleHQoJzJkJykhXHJcbiAgICAgIC5nZXRJbWFnZURhdGEodGhpcy54IC0gMywgeSwgTCwgTCk7XHJcbiAgICB0aGlzLmJsb2NrUmVmLm5hdGl2ZUVsZW1lbnQhLndpZHRoID0gTDtcclxuICAgIHRoaXMuYmxvY2tSZWYubmF0aXZlRWxlbWVudC5nZXRDb250ZXh0KCcyZCcpIS5wdXRJbWFnZURhdGEoSW1hZ2VEYXRhLCAwLCB5KTtcclxuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEltYWdlU3JjKHNyYzogc3RyaW5nLCBpbWc6IEhUTUxJbWFnZUVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGlzSUUgPSB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdUcmlkZW50JykgPiAtMTtcclxuICAgIGlmIChpc0lFKSB7XHJcbiAgICAgIC8vIElF5rWP6KeI5Zmo5peg5rOV6YCa6L+HaW1nLmNyb3NzT3JpZ2lu6Leo5Z+f77yM5L2/55SoYWpheOiOt+WPluWbvueJh2Jsb2LnhLblkI7ovazkuLpkYXRhVVJM5pi+56S6XHJcbiAgICAgIGNvbnN0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xyXG4gICAgICB4aHIub25sb2FkZW5kID0gKGU6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGZpbGUgPSBuZXcgRmlsZVJlYWRlcigpOyAvLyBGaWxlUmVhZGVy5LuF5pSv5oyBSUUxMCtcclxuICAgICAgICBmaWxlLnJlYWRBc0RhdGFVUkwoZS50YXJnZXQucmVzcG9uc2UpO1xyXG4gICAgICAgIGZpbGUub25sb2FkZW5kID0gKGUpID0+IHtcclxuICAgICAgICAgIGltZy5zcmMgPSBlLnRhcmdldD8ucmVzdWx0IGFzIHN0cmluZztcclxuICAgICAgICB9O1xyXG4gICAgICB9O1xyXG4gICAgICB4aHIub3BlbignR0VUJywgc3JjKTtcclxuICAgICAgeGhyLnJlc3BvbnNlVHlwZSA9ICdibG9iJztcclxuICAgICAgeGhyLnNlbmQoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGltZy5zcmMgPSBzcmM7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFJhbmRvbUltZ1NyYygpIHtcclxuICAgIGlmICh0aGlzLm56eEJnSW1nVXJsICYmIHR5cGVvZiB0aGlzLm56eEJnSW1nVXJsID09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLm56eEJnSW1nVXJsO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5uenhCZ0ltZ1VybCAmJlxyXG4gICAgICBBcnJheS5pc0FycmF5KHRoaXMubnp4QmdJbWdVcmwpICYmXHJcbiAgICAgIHRoaXMubnp4QmdJbWdVcmwubGVuZ3RoXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIHRoaXMubnp4QmdJbWdVcmxbXHJcbiAgICAgICAgdGhpcy5nZXRSYW5kb21OdW1iZXJCeVJhbmdlKDAsIHRoaXMubnp4QmdJbWdVcmwubGVuZ3RoIC0gMSlcclxuICAgICAgXTtcclxuICAgIH1cclxuICAgIHJldHVybiBgaHR0cHM6Ly9waWNzdW0ucGhvdG9zL2lkLyR7dGhpcy5nZXRSYW5kb21OdW1iZXJCeVJhbmdlKDAsIDEwODQpfS8ke1xyXG4gICAgICB0aGlzLndpZHRoXHJcbiAgICB9LyR7dGhpcy5oZWlnaHR9YDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UmFuZG9tTnVtYmVyQnlSYW5nZShzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIChlbmQgLSBzdGFydCkgKyBzdGFydCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRyYXdQYXRoKFxyXG4gICAgY3R4OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsXHJcbiAgICB4OiBudW1iZXIsXHJcbiAgICB5OiBudW1iZXIsXHJcbiAgICBvcGVyYXRpb246IGFueVxyXG4gICkge1xyXG4gICAgY3R4LmJlZ2luUGF0aCgpO1xyXG4gICAgY3R4Lm1vdmVUbyh4LCB5KTtcclxuICAgIGN0eC5hcmMoeCArIGwgLyAyLCB5IC0gciArIDIsIHIsIDAuNzIgKiBQSSwgMi4yNiAqIFBJKTtcclxuICAgIGN0eC5saW5lVG8oeCArIGwsIHkpO1xyXG4gICAgY3R4LmFyYyh4ICsgbCArIHIgLSAyLCB5ICsgbCAvIDIsIHIsIDEuMjEgKiBQSSwgMi43OCAqIFBJKTtcclxuICAgIGN0eC5saW5lVG8oeCArIGwsIHkgKyBsKTtcclxuICAgIGN0eC5saW5lVG8oeCwgeSArIGwpO1xyXG4gICAgY3R4LmFyYyh4ICsgciAtIDIsIHkgKyBsIC8gMiwgciArIDAuNCwgMi43NiAqIFBJLCAxLjI0ICogUEksIHRydWUpO1xyXG4gICAgY3R4LmxpbmVUbyh4LCB5KTtcclxuICAgIGN0eC5saW5lV2lkdGggPSAyO1xyXG4gICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyknO1xyXG4gICAgY3R4LnN0cm9rZVN0eWxlID0gJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC43KSc7XHJcbiAgICBjdHguc3Ryb2tlKCk7XHJcbiAgICBjdHguZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gJ2Rlc3RpbmF0aW9uLW92ZXInO1xyXG4gICAgb3BlcmF0aW9uID09PSAnZmlsbCcgPyBjdHguZmlsbCgpIDogY3R4LmNsaXAoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwibnp4LWppZ3Nhdy1jb250YWluZXJcIlxyXG4gIFtuZ1N0eWxlXT1cIntcclxuICAgIHdpZHRoOiB3aWR0aCArICdweCdcclxuICB9XCJcclxuICAoc2VsZWN0c3RhcnQpPVwic2VsZWN0c3RhcnQoKVwiXHJcbj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cIm56eC1qaWdzYXctbG9hZGluZy1jb250YWluZXJcIlxyXG4gICAgW25nU3R5bGVdPVwie1xyXG4gICAgICBkaXNwbGF5OiBpc0xvYWRpbmcgPyAnJyA6ICdub25lJyxcclxuICAgICAgd2lkdGg6IHdpZHRoICsgJ3B4JyxcclxuICAgICAgaGVpZ2h0OiBoZWlnaHQgKyAncHgnXHJcbiAgICB9XCJcclxuICA+XHJcbiAgICA8c3BhbiBjbGFzcz1cIm56eC1qaWdzYXctbG9hZGluZy1pY29uXCIgbnotaWNvbiBbbnpUeXBlXT1cIidsb2FkaW5nJ1wiPjwvc3Bhbj5cclxuICAgIDxzcGFuPnt7IG56eExvYWRpbmdUZXh0IH19PC9zcGFuPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8Y2FudmFzICNjYW52YXNDdHggW3dpZHRoXT1cIndpZHRoXCIgW2hlaWdodF09XCJoZWlnaHRcIj48L2NhbnZhcz5cclxuXHJcbiAgPHNwYW5cclxuICAgIGNsYXNzPVwibnp4LWppZ3Nhdy1yZWZyZXNoLWljb25cIlxyXG4gICAgbnotaWNvblxyXG4gICAgbnpUeXBlPVwicmVkb1wiXHJcbiAgICBuelRoZW1lPVwib3V0bGluZVwiXHJcbiAgICBbbnpSb3RhdGVdPVwiLTgwXCJcclxuICAgIChjbGljayk9XCJyZWZyZXNoKClcIlxyXG4gID48L3NwYW4+XHJcblxyXG4gIDxjYW52YXNcclxuICAgICNibG9ja0N0eFxyXG4gICAgY2xhc3M9XCJuengtamlnc2F3LWJsb2NrXCJcclxuICAgIFt3aWR0aF09XCJ3aWR0aFwiXHJcbiAgICBbaGVpZ2h0XT1cImhlaWdodFwiXHJcbiAgICAodG91Y2hzdGFydCk9XCJoYW5kbGVEcmFnU3RhcnQoJGV2ZW50KVwiXHJcbiAgICAobW91c2Vkb3duKT1cImhhbmRsZURyYWdTdGFydCgkZXZlbnQpXCJcclxuICA+PC9jYW52YXM+XHJcblxyXG4gIDxkaXZcclxuICAgICNzbGlkZXJDb250YWluZXJcclxuICAgIGNsYXNzPVwibnp4LWppZ3Nhdy1zbGlkZXItY29udGFpbmVyXCJcclxuICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgd2lkdGg6IHdpZHRoICsgJ3B4JyxcclxuICAgICAgJ3BvaW50ZXItZXZlbnRzJzogaXNMb2FkaW5nID8gJ25vbmUnIDogJydcclxuICAgIH1cIlxyXG4gID5cclxuICAgIDxkaXYgI3NsaWRlck1hc2sgY2xhc3M9XCJuengtamlnc2F3LXNsaWRlci1tYXNrXCI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICAjc2xpZGVyXHJcbiAgICAgICAgY2xhc3M9XCJuengtamlnc2F3LXNsaWRlclwiXHJcbiAgICAgICAgKHRvdWNoc3RhcnQpPVwiaGFuZGxlRHJhZ1N0YXJ0KCRldmVudClcIlxyXG4gICAgICAgIChtb3VzZWRvd24pPVwiaGFuZGxlRHJhZ1N0YXJ0KCRldmVudClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW4gbnotaWNvbiBuelR5cGU9XCJhcnJvdy1yaWdodFwiIG56VGhlbWU9XCJvdXRsaW5lXCI+PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPHNwYW4gY2xhc3M9XCJuengtamlnc2F3LXNsaWRlci10ZXh0XCI+e3sgbnp4VGlwVGV4dCB9fTwvc3Bhbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==