@simpleangularcontrols/sac-common 16.0.0-rc.1 → 16.0.0-rc.10

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 (246) hide show
  1. package/README.md +8 -16
  2. package/common/basedatetimecontrol.d.ts +33 -33
  3. package/common/basedatetimecontrol.d.ts.map +1 -1
  4. package/common/baseinputcontrol.d.ts +9 -13
  5. package/common/baseinputcontrol.d.ts.map +1 -1
  6. package/common/basemodelcontrol.d.ts +161 -86
  7. package/common/basemodelcontrol.d.ts.map +1 -1
  8. package/common/baseuploadcontrol.d.ts +136 -141
  9. package/common/baseuploadcontrol.d.ts.map +1 -1
  10. package/components/browser/browser.d.ts +11 -6
  11. package/components/browser/browser.d.ts.map +1 -1
  12. package/controls/buttons/button.d.ts +23 -22
  13. package/controls/buttons/button.d.ts.map +1 -1
  14. package/controls/checkbox/checkbox.d.ts +18 -5
  15. package/controls/checkbox/checkbox.d.ts.map +1 -1
  16. package/controls/checkbox/radiobutton.d.ts +9 -0
  17. package/controls/checkbox/radiobutton.d.ts.map +1 -1
  18. package/controls/checkbox/radiobuttons.d.ts +21 -20
  19. package/controls/checkbox/radiobuttons.d.ts.map +1 -1
  20. package/controls/confirm/confirm.button.d.ts +14 -8
  21. package/controls/confirm/confirm.button.d.ts.map +1 -1
  22. package/controls/confirm/confirm.service.d.ts +24 -19
  23. package/controls/confirm/confirm.service.d.ts.map +1 -1
  24. package/controls/contextmenu/contextmenu.d.ts +42 -42
  25. package/controls/contextmenu/contextmenu.d.ts.map +1 -1
  26. package/controls/contextmenu/contextmenuanchor.d.ts +2 -2
  27. package/controls/contextmenu/contextmenuanchor.d.ts.map +1 -1
  28. package/controls/contextmenu/contextmenucontainer.d.ts +2 -2
  29. package/controls/contextmenu/contextmenucontainer.d.ts.map +1 -1
  30. package/controls/datetime/date.d.ts +32 -36
  31. package/controls/datetime/date.d.ts.map +1 -1
  32. package/controls/datetime/datetime.d.ts +34 -38
  33. package/controls/datetime/datetime.d.ts.map +1 -1
  34. package/controls/datetime/time.d.ts +28 -32
  35. package/controls/datetime/time.d.ts.map +1 -1
  36. package/controls/form/form.d.ts +7 -43
  37. package/controls/form/form.d.ts.map +1 -1
  38. package/controls/grid/grid.d.ts +67 -62
  39. package/controls/grid/grid.d.ts.map +1 -1
  40. package/controls/grid/gridbutton.d.ts +14 -14
  41. package/controls/grid/gridbutton.d.ts.map +1 -1
  42. package/controls/grid/gridcolumn.d.ts +8 -8
  43. package/controls/grid/gridcolumn.d.ts.map +1 -1
  44. package/controls/grid/gridcolumnaction.d.ts +3 -3
  45. package/controls/grid/gridcolumnaction.d.ts.map +1 -1
  46. package/controls/grid/gridcolumnbase.d.ts +46 -38
  47. package/controls/grid/gridcolumnbase.d.ts.map +1 -1
  48. package/controls/grid/gridimage.d.ts +2 -2
  49. package/controls/grid/gridimage.d.ts.map +1 -1
  50. package/controls/grid/model.d.ts +51 -42
  51. package/controls/grid/model.d.ts.map +1 -1
  52. package/controls/grid/paging.d.ts +77 -76
  53. package/controls/grid/paging.d.ts.map +1 -1
  54. package/controls/input/input.d.ts +11 -11
  55. package/controls/input/input.d.ts.map +1 -1
  56. package/controls/input/inputcurrency.d.ts +6 -1
  57. package/controls/input/inputcurrency.d.ts.map +1 -1
  58. package/controls/input/inputdecimal.d.ts +21 -21
  59. package/controls/input/inputdecimal.d.ts.map +1 -1
  60. package/controls/input/inputemail.d.ts.map +1 -1
  61. package/controls/input/inputinteger.d.ts +21 -21
  62. package/controls/input/inputinteger.d.ts.map +1 -1
  63. package/controls/input/inputpassword.d.ts +5 -5
  64. package/controls/input/inputpassword.d.ts.map +1 -1
  65. package/controls/input/inputsearch.d.ts +14 -5
  66. package/controls/input/inputsearch.d.ts.map +1 -1
  67. package/controls/layout/formlayout.d.ts +62 -0
  68. package/controls/layout/formlayout.d.ts.map +1 -0
  69. package/controls/list/dropdown.d.ts +45 -45
  70. package/controls/list/dropdown.d.ts.map +1 -1
  71. package/controls/list/listbox.d.ts +20 -20
  72. package/controls/list/listbox.d.ts.map +1 -1
  73. package/controls/multilanguage/multilanguageinput.d.ts +36 -35
  74. package/controls/multilanguage/multilanguageinput.d.ts.map +1 -1
  75. package/controls/multilanguage/multilanguageinputarea.d.ts +39 -38
  76. package/controls/multilanguage/multilanguageinputarea.d.ts.map +1 -1
  77. package/controls/static/formcontainer.d.ts +3 -7
  78. package/controls/static/formcontainer.d.ts.map +1 -1
  79. package/controls/tinymce/tinymce.d.ts +63 -63
  80. package/controls/tinymce/tinymce.d.ts.map +1 -1
  81. package/controls/tooltip/tooltip.d.ts +88 -63
  82. package/controls/tooltip/tooltip.d.ts.map +1 -1
  83. package/controls/upload/dropzonemultiple.d.ts +24 -24
  84. package/controls/upload/dropzonemultiple.d.ts.map +1 -1
  85. package/controls/upload/uploadmultiple.d.ts +9 -9
  86. package/controls/upload/uploadmultiple.d.ts.map +1 -1
  87. package/controls/validation/validationsummary.d.ts +18 -13
  88. package/controls/validation/validationsummary.d.ts.map +1 -1
  89. package/enums/ButtonRoleType.d.ts +2 -0
  90. package/enums/ButtonRoleType.d.ts.map +1 -0
  91. package/enums/ControlHeight.d.ts +18 -0
  92. package/enums/ControlHeight.d.ts.map +1 -0
  93. package/esm2022/common/basedatetimecontrol.mjs +41 -163
  94. package/esm2022/common/baseinputcontrol.mjs +21 -80
  95. package/esm2022/common/baselistcontrol.mjs +11 -56
  96. package/esm2022/common/basemodelcontrol.mjs +129 -354
  97. package/esm2022/common/baseselectcontrol.mjs +6 -27
  98. package/esm2022/common/baseuploadcontrol.mjs +109 -433
  99. package/esm2022/components/browser/browser.mjs +66 -474
  100. package/esm2022/components/browser/models/browserfile.mjs +3 -2
  101. package/esm2022/components/browser/models/browserfiledeleterequest.mjs +5 -10
  102. package/esm2022/components/browser/models/browserfilerenamerequest.mjs +5 -10
  103. package/esm2022/components/browser/models/browserfileresponse.mjs +3 -2
  104. package/esm2022/components/browser/models/browserfilesaverequest.mjs +5 -10
  105. package/esm2022/components/browser/models/browsernode.mjs +3 -2
  106. package/esm2022/components/browser/models/browsernodedeleterequest.mjs +5 -10
  107. package/esm2022/components/browser/models/browsernodenewrequest.mjs +5 -10
  108. package/esm2022/components/browser/models/browsernoderenamerequest.mjs +5 -10
  109. package/esm2022/components/browser/models/browsernoderequest.mjs +5 -10
  110. package/esm2022/components/browser/models/browsernoderesponse.mjs +3 -2
  111. package/esm2022/controls/buttons/button.mjs +32 -131
  112. package/esm2022/controls/checkbox/checkbox.mjs +15 -30
  113. package/esm2022/controls/checkbox/radiobutton.mjs +24 -98
  114. package/esm2022/controls/checkbox/radiobuttons.mjs +29 -106
  115. package/esm2022/controls/confirm/confirm.button.mjs +17 -21
  116. package/esm2022/controls/confirm/confirm.mjs +19 -69
  117. package/esm2022/controls/confirm/confirm.service.mjs +29 -74
  118. package/esm2022/controls/contextmenu/contextmenu.mjs +43 -171
  119. package/esm2022/controls/contextmenu/contextmenuanchor.mjs +8 -19
  120. package/esm2022/controls/contextmenu/contextmenucontainer.mjs +8 -19
  121. package/esm2022/controls/contextmenu/contextmenuitem.mjs +4 -13
  122. package/esm2022/controls/contextmenu/contextmenuitembutton.mjs +15 -91
  123. package/esm2022/controls/datetime/date.mjs +44 -207
  124. package/esm2022/controls/datetime/dateselector.mjs +65 -409
  125. package/esm2022/controls/datetime/datetime.mjs +46 -224
  126. package/esm2022/controls/datetime/time.mjs +43 -205
  127. package/esm2022/controls/dialog/dialog.mjs +33 -194
  128. package/esm2022/controls/form/form.mjs +27 -153
  129. package/esm2022/controls/grid/grid.mjs +48 -155
  130. package/esm2022/controls/grid/gridbutton.mjs +21 -59
  131. package/esm2022/controls/grid/gridcolumn.mjs +21 -46
  132. package/esm2022/controls/grid/gridcolumnaction.mjs +8 -22
  133. package/esm2022/controls/grid/gridcolumnbase.mjs +35 -124
  134. package/esm2022/controls/grid/gridimage.mjs +5 -16
  135. package/esm2022/controls/grid/model.mjs +49 -74
  136. package/esm2022/controls/grid/paging.mjs +82 -251
  137. package/esm2022/controls/input/input.mjs +17 -65
  138. package/esm2022/controls/input/inputarea.mjs +10 -53
  139. package/esm2022/controls/input/inputcurrency.mjs +9 -14
  140. package/esm2022/controls/input/inputdecimal.mjs +33 -143
  141. package/esm2022/controls/input/inputemail.mjs +10 -37
  142. package/esm2022/controls/input/inputinteger.mjs +32 -127
  143. package/esm2022/controls/input/inputpassword.mjs +12 -43
  144. package/esm2022/controls/input/inputsearch.mjs +16 -38
  145. package/esm2022/controls/layout/formlayout.mjs +32 -0
  146. package/esm2022/controls/list/dropdown.mjs +79 -225
  147. package/esm2022/controls/list/listbox.mjs +40 -159
  148. package/esm2022/controls/multilanguage/multilanguageinput.mjs +48 -215
  149. package/esm2022/controls/multilanguage/multilanguageinputarea.mjs +51 -217
  150. package/esm2022/controls/static/formcontainer.mjs +14 -45
  151. package/esm2022/controls/static/staticlabel.mjs +7 -28
  152. package/esm2022/controls/tabs/tab.mjs +14 -68
  153. package/esm2022/controls/tabs/tabitem.mjs +7 -37
  154. package/esm2022/controls/tinymce/tinymce.mjs +62 -232
  155. package/esm2022/controls/tinymce/tinymcedialogsettings.mjs +5 -10
  156. package/esm2022/controls/tinymce/tinymcedialogsettingsmeta.mjs +4 -4
  157. package/esm2022/controls/tinymce/tinymceinstance.mjs +3 -2
  158. package/esm2022/controls/tooltip/tooltip.mjs +102 -358
  159. package/esm2022/controls/treeview/ngtreeitemaction.mjs +9 -56
  160. package/esm2022/controls/treeview/treeview.mjs +53 -299
  161. package/esm2022/controls/treeview/treeviewchild.mjs +5 -19
  162. package/esm2022/controls/upload/dropzonemultiple.mjs +32 -152
  163. package/esm2022/controls/upload/dropzonesingle.mjs +12 -91
  164. package/esm2022/controls/upload/uploadmultiple.mjs +21 -111
  165. package/esm2022/controls/upload/uploadsingle.mjs +8 -50
  166. package/esm2022/controls/validation/validationsummary.mjs +23 -120
  167. package/esm2022/controls/wizard/wizard.mjs +20 -128
  168. package/esm2022/controls/wizard/wizarditem.mjs +6 -31
  169. package/esm2022/enums/ButtonRoleType.mjs +3 -0
  170. package/esm2022/enums/ControlHeight.mjs +11 -0
  171. package/esm2022/enums/IconType.mjs +4 -8
  172. package/esm2022/interfaces/ISacConfigurationService.mjs +3 -0
  173. package/esm2022/interfaces/ISacFileBrowserService.mjs +3 -2
  174. package/esm2022/interfaces/ISacIconService.mjs +3 -2
  175. package/esm2022/interfaces/ISacLabelSizes.mjs +3 -0
  176. package/esm2022/interfaces/ISacLanguageService.mjs +3 -2
  177. package/esm2022/interfaces/ISacLocalisationService.mjs +3 -2
  178. package/esm2022/interfaces/ISacValidationKeyService.mjs +3 -0
  179. package/esm2022/interfaces/iabstractcontrollabel.mjs +3 -2
  180. package/esm2022/interfaces/iconfirmcomponent.mjs +3 -2
  181. package/esm2022/interfaces/idatetimecontrol.mjs +3 -2
  182. package/esm2022/interfaces/iuploadcontrol.mjs +3 -2
  183. package/esm2022/models/languagemodel.mjs +5 -11
  184. package/esm2022/public_api.mjs +25 -94
  185. package/esm2022/services/index.mjs +3 -5
  186. package/esm2022/services/sac-configuration.service.mjs +37 -0
  187. package/esm2022/services/sac-filebrowser.service.mjs +15 -167
  188. package/esm2022/services/sac-icon.service.mjs +53 -155
  189. package/esm2022/services/sac-language.service.mjs +7 -45
  190. package/esm2022/services/sac-localisation.service.mjs +33 -428
  191. package/esm2022/services/sac-validationkey.service.mjs +7 -0
  192. package/esm2022/simpleangularcontrols-sac-common.mjs +4 -4
  193. package/esm2022/utilities/convertion.mjs +6 -26
  194. package/esm2022/utilities/datatypes.mjs +4 -6
  195. package/esm2022/utilities/enums.mjs +8 -15
  196. package/esm2022/utilities/guid.mjs +8 -0
  197. package/esm2022/utilities/interpolation.mjs +7 -42
  198. package/esm2022/utilities/positioning.mjs +23 -266
  199. package/esm2022/validation/email.validator.mjs +3 -13
  200. package/esm2022/validation/index.mjs +3 -3
  201. package/esm2022/validation/invaliddate.validator.mjs +3 -14
  202. package/esm2022/validation/isDateValid.mjs +9 -13
  203. package/esm2022/validation/maxdate.validator.mjs +4 -21
  204. package/esm2022/validation/maxtime.validator.mjs +4 -21
  205. package/esm2022/validation/maxvalue.validator.mjs +3 -16
  206. package/esm2022/validation/mindate.validator.mjs +4 -21
  207. package/esm2022/validation/minfiles.validator.mjs +4 -19
  208. package/esm2022/validation/minlength.validator.mjs +3 -21
  209. package/esm2022/validation/mintime.validator.mjs +4 -21
  210. package/esm2022/validation/minvalue.validator.mjs +3 -16
  211. package/esm2022/validation/multilanguagerequired.validator.mjs +3 -22
  212. package/esm2022/validation/multilanguagerequiredany.validator.mjs +3 -22
  213. package/esm2022/validation/pattern.validator.mjs +3 -16
  214. package/esm2022/validation/required.validator.mjs +3 -13
  215. package/esm2022/validation/validation.mjs +20 -99
  216. package/esm2022/validation/validationerrorcreator.mjs +3 -11
  217. package/esm2022/validation/validationerroritem.mjs +7 -19
  218. package/fesm2022/simpleangularcontrols-sac-common.mjs +2145 -9181
  219. package/fesm2022/simpleangularcontrols-sac-common.mjs.map +1 -1
  220. package/interfaces/ISacConfigurationService.d.ts +55 -0
  221. package/interfaces/ISacConfigurationService.d.ts.map +1 -0
  222. package/interfaces/ISacIconService.d.ts +10 -2
  223. package/interfaces/ISacIconService.d.ts.map +1 -1
  224. package/interfaces/ISacLabelSizes.d.ts +27 -0
  225. package/interfaces/ISacLabelSizes.d.ts.map +1 -0
  226. package/interfaces/ISacValidationKeyService.d.ts +53 -0
  227. package/interfaces/ISacValidationKeyService.d.ts.map +1 -0
  228. package/package.json +2 -2
  229. package/public_api.d.ts +28 -17
  230. package/public_api.d.ts.map +1 -1
  231. package/services/index.d.ts +6 -4
  232. package/services/index.d.ts.map +1 -1
  233. package/services/sac-configuration.service.d.ts +119 -0
  234. package/services/sac-configuration.service.d.ts.map +1 -0
  235. package/services/sac-icon.service.d.ts +16 -0
  236. package/services/sac-icon.service.d.ts.map +1 -1
  237. package/services/sac-localisation.service.d.ts +103 -97
  238. package/services/sac-localisation.service.d.ts.map +1 -1
  239. package/services/sac-validationkey.service.d.ts +59 -0
  240. package/services/sac-validationkey.service.d.ts.map +1 -0
  241. package/simpleangularcontrols-sac-common-16.0.0-rc.10.tgz +0 -0
  242. package/utilities/guid.d.ts +5 -0
  243. package/utilities/guid.d.ts.map +1 -0
  244. package/validation/isDateValid.d.ts.map +1 -1
  245. package/simpleangularcontrols-sac-common-13.0.0-rc.1.tgz +0 -0
  246. package/simpleangularcontrols-sac-common-16.0.0-rc.1.tgz +0 -0
@@ -1,254 +1,85 @@
1
- import { Directive, EventEmitter, Input, Output, } from '@angular/core';
2
- import { SacDefaultLocalisationService, SACLOCALISATION_SERVICE, } from '../../services/sac-localisation.service';
3
- import { PagerRequest } from './model';
4
- import * as i0 from "@angular/core";
1
+ function cov_22wr2lg5mj(){var path="C:\\Projekte\\simpleangularcontrols-ng16\\ch.jnetwork.sac-controls\\dist\\sac-common\\esm2022\\controls\\grid\\paging.mjs";var hash="5642e5be21f2ad59d2df87dc67ac5e866a0a3258";var global=new Function("return this")();var gcv="__coverage__";var coverageData={path:"C:\\Projekte\\simpleangularcontrols-ng16\\ch.jnetwork.sac-controls\\dist\\sac-common\\esm2022\\controls\\grid\\paging.mjs",statementMap:{"0":{start:{line:21,column:8},end:{line:21,column:31}},"1":{start:{line:25,column:8},end:{line:25,column:38}},"2":{start:{line:31,column:8},end:{line:31,column:37}},"3":{start:{line:37,column:8},end:{line:37,column:31}},"4":{start:{line:43,column:8},end:{line:43,column:29}},"5":{start:{line:47,column:8},end:{line:47,column:41}},"6":{start:{line:51,column:8},end:{line:51,column:33}},"7":{start:{line:55,column:8},end:{line:55,column:32}},"8":{start:{line:59,column:8},end:{line:59,column:31}},"9":{start:{line:63,column:8},end:{line:63,column:27}},"10":{start:{line:67,column:8},end:{line:67,column:29}},"11":{start:{line:68,column:8},end:{line:68,column:113}},"12":{start:{line:70,column:8},end:{line:70,column:68}},"13":{start:{line:71,column:8},end:{line:71,column:65}},"14":{start:{line:72,column:8},end:{line:72,column:134}},"15":{start:{line:80,column:8},end:{line:84,column:9}},"16":{start:{line:81,column:12},end:{line:81,column:49}},"17":{start:{line:82,column:12},end:{line:82,column:54}},"18":{start:{line:83,column:12},end:{line:83,column:39}},"19":{start:{line:85,column:8},end:{line:85,column:27}},"20":{start:{line:91,column:8},end:{line:91,column:68}},"21":{start:{line:97,column:8},end:{line:100,column:11}},"22":{start:{line:106,column:8},end:{line:106,column:67}},"23":{start:{line:106,column:54},end:{line:106,column:65}},"24":{start:{line:115,column:8},end:{line:117,column:9}},"25":{start:{line:116,column:12},end:{line:116,column:37}},"26":{start:{line:124,column:26},end:{line:124,column:73}},"27":{start:{line:125,column:8},end:{line:125,column:36}},"28":{start:{line:131,column:8},end:{line:133,column:9}},"29":{start:{line:132,column:12},end:{line:132,column:26}},"30":{start:{line:139,column:8},end:{line:139,column:40}},"31":{start:{line:145,column:8},end:{line:145,column:38}},"32":{start:{line:151,column:8},end:{line:153,column:9}},"33":{start:{line:152,column:12},end:{line:152,column:43}},"34":{start:{line:159,column:8},end:{line:161,column:9}},"35":{start:{line:160,column:12},end:{line:160,column:49}},"36":{start:{line:167,column:8},end:{line:169,column:9}},"37":{start:{line:168,column:12},end:{line:168,column:49}},"38":{start:{line:177,column:8},end:{line:177,column:29}},"39":{start:{line:178,column:8},end:{line:198,column:9}},"40":{start:{line:179,column:33},end:{line:179,column:78}},"41":{start:{line:181,column:12},end:{line:183,column:13}},"42":{start:{line:182,column:16},end:{line:182,column:35}},"43":{start:{line:185,column:12},end:{line:185,column:52}},"44":{start:{line:186,column:35},end:{line:186,column:73}},"45":{start:{line:187,column:33},end:{line:187,column:69}},"46":{start:{line:189,column:12},end:{line:191,column:13}},"47":{start:{line:190,column:16},end:{line:190,column:58}},"48":{start:{line:192,column:12},end:{line:194,column:13}},"49":{start:{line:192,column:25},end:{line:192,column:39}},"50":{start:{line:193,column:16},end:{line:193,column:40}},"51":{start:{line:197,column:12},end:{line:197,column:36}},"52":{start:{line:205,column:34},end:{line:205,column:58}},"53":{start:{line:206,column:35},end:{line:206,column:82}},"54":{start:{line:207,column:8},end:{line:212,column:9}},"55":{start:{line:208,column:12},end:{line:208,column:53}},"56":{start:{line:210,column:13},end:{line:212,column:9}},"57":{start:{line:211,column:12},end:{line:211,column:53}},"58":{start:{line:213,column:8},end:{line:213,column:35}},"59":{start:{line:220,column:36},end:{line:220,column:37}},"60":{start:{line:221,column:8},end:{line:221,column:57}},"61":{start:{line:222,column:8},end:{line:224,column:9}},"62":{start:{line:223,column:12},end:{line:223,column:55}},"63":{start:{line:225,column:8},end:{line:227,column:9}},"64":{start:{line:226,column:12},end:{line:226,column:38}},"65":{start:{line:228,column:8},end:{line:228,column:37}},"66":{start:{line:234,column:26},end:{line:234,column:71}},"67":{start:{line:235,column:8},end:{line:235,column:36}},"68":{start:{line:237,column:13},end:{line:237,column:200}},"69":{start:{line:238,column:13},end:{line:238,column:331}},"70":{start:{line:241,column:0},end:{line:257,column:20}},"71":{start:{line:243,column:42},end:{line:243,column:73}}},fnMap:{"0":{name:"(anonymous_0)",decl:{start:{line:17,column:4},end:{line:17,column:5}},loc:{start:{line:17,column:26},end:{line:73,column:5}},line:17},"1":{name:"(anonymous_1)",decl:{start:{line:79,column:4},end:{line:79,column:5}},loc:{start:{line:79,column:21},end:{line:86,column:5}},line:79},"2":{name:"(anonymous_2)",decl:{start:{line:90,column:4},end:{line:90,column:5}},loc:{start:{line:90,column:23},end:{line:92,column:5}},line:90},"3":{name:"(anonymous_3)",decl:{start:{line:96,column:4},end:{line:96,column:5}},loc:{start:{line:96,column:21},end:{line:101,column:5}},line:96},"4":{name:"(anonymous_4)",decl:{start:{line:105,column:4},end:{line:105,column:5}},loc:{start:{line:105,column:23},end:{line:107,column:5}},line:105},"5":{name:"(anonymous_5)",decl:{start:{line:106,column:45},end:{line:106,column:46}},loc:{start:{line:106,column:54},end:{line:106,column:65}},line:106},"6":{name:"(anonymous_6)",decl:{start:{line:114,column:4},end:{line:114,column:5}},loc:{start:{line:114,column:29},end:{line:118,column:5}},line:114},"7":{name:"(anonymous_7)",decl:{start:{line:123,column:4},end:{line:123,column:5}},loc:{start:{line:123,column:28},end:{line:126,column:5}},line:123},"8":{name:"(anonymous_8)",decl:{start:{line:130,column:4},end:{line:130,column:5}},loc:{start:{line:130,column:16},end:{line:134,column:5}},line:130},"9":{name:"(anonymous_9)",decl:{start:{line:138,column:4},end:{line:138,column:5}},loc:{start:{line:138,column:27},end:{line:140,column:5}},line:138},"10":{name:"(anonymous_10)",decl:{start:{line:144,column:4},end:{line:144,column:5}},loc:{start:{line:144,column:25},end:{line:146,column:5}},line:144},"11":{name:"(anonymous_11)",decl:{start:{line:150,column:4},end:{line:150,column:5}},loc:{start:{line:150,column:15},end:{line:154,column:5}},line:150},"12":{name:"(anonymous_12)",decl:{start:{line:158,column:4},end:{line:158,column:5}},loc:{start:{line:158,column:15},end:{line:162,column:5}},line:158},"13":{name:"(anonymous_13)",decl:{start:{line:166,column:4},end:{line:166,column:5}},loc:{start:{line:166,column:19},end:{line:170,column:5}},line:166},"14":{name:"(anonymous_14)",decl:{start:{line:176,column:4},end:{line:176,column:5}},loc:{start:{line:176,column:18},end:{line:199,column:5}},line:176},"15":{name:"(anonymous_15)",decl:{start:{line:204,column:4},end:{line:204,column:5}},loc:{start:{line:204,column:36},end:{line:214,column:5}},line:204},"16":{name:"(anonymous_16)",decl:{start:{line:219,column:4},end:{line:219,column:5}},loc:{start:{line:219,column:38},end:{line:229,column:5}},line:219},"17":{name:"(anonymous_17)",decl:{start:{line:233,column:4},end:{line:233,column:5}},loc:{start:{line:233,column:24},end:{line:236,column:5}},line:233},"18":{name:"(anonymous_18)",decl:{start:{line:243,column:28},end:{line:243,column:29}},loc:{start:{line:243,column:40},end:{line:243,column:75}},line:243}},branchMap:{"0":{loc:{start:{line:80,column:8},end:{line:84,column:9}},type:"if",locations:[{start:{line:80,column:8},end:{line:84,column:9}},{start:{line:80,column:8},end:{line:84,column:9}}],line:80},"1":{loc:{start:{line:115,column:8},end:{line:117,column:9}},type:"if",locations:[{start:{line:115,column:8},end:{line:117,column:9}},{start:{line:115,column:8},end:{line:117,column:9}}],line:115},"2":{loc:{start:{line:131,column:8},end:{line:133,column:9}},type:"if",locations:[{start:{line:131,column:8},end:{line:133,column:9}},{start:{line:131,column:8},end:{line:133,column:9}}],line:131},"3":{loc:{start:{line:151,column:8},end:{line:153,column:9}},type:"if",locations:[{start:{line:151,column:8},end:{line:153,column:9}},{start:{line:151,column:8},end:{line:153,column:9}}],line:151},"4":{loc:{start:{line:159,column:8},end:{line:161,column:9}},type:"if",locations:[{start:{line:159,column:8},end:{line:161,column:9}},{start:{line:159,column:8},end:{line:161,column:9}}],line:159},"5":{loc:{start:{line:167,column:8},end:{line:169,column:9}},type:"if",locations:[{start:{line:167,column:8},end:{line:169,column:9}},{start:{line:167,column:8},end:{line:169,column:9}}],line:167},"6":{loc:{start:{line:178,column:8},end:{line:198,column:9}},type:"if",locations:[{start:{line:178,column:8},end:{line:198,column:9}},{start:{line:178,column:8},end:{line:198,column:9}}],line:178},"7":{loc:{start:{line:181,column:12},end:{line:183,column:13}},type:"if",locations:[{start:{line:181,column:12},end:{line:183,column:13}},{start:{line:181,column:12},end:{line:183,column:13}}],line:181},"8":{loc:{start:{line:189,column:12},end:{line:191,column:13}},type:"if",locations:[{start:{line:189,column:12},end:{line:191,column:13}},{start:{line:189,column:12},end:{line:191,column:13}}],line:189},"9":{loc:{start:{line:206,column:35},end:{line:206,column:82}},type:"cond-expr",locations:[{start:{line:206,column:60},end:{line:206,column:78}},{start:{line:206,column:81},end:{line:206,column:82}}],line:206},"10":{loc:{start:{line:207,column:8},end:{line:212,column:9}},type:"if",locations:[{start:{line:207,column:8},end:{line:212,column:9}},{start:{line:207,column:8},end:{line:212,column:9}}],line:207},"11":{loc:{start:{line:210,column:13},end:{line:212,column:9}},type:"if",locations:[{start:{line:210,column:13},end:{line:212,column:9}},{start:{line:210,column:13},end:{line:212,column:9}}],line:210},"12":{loc:{start:{line:222,column:8},end:{line:224,column:9}},type:"if",locations:[{start:{line:222,column:8},end:{line:224,column:9}},{start:{line:222,column:8},end:{line:224,column:9}}],line:222},"13":{loc:{start:{line:225,column:8},end:{line:227,column:9}},type:"if",locations:[{start:{line:225,column:8},end:{line:227,column:9}},{start:{line:225,column:8},end:{line:227,column:9}}],line:225}},s:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0},f:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0},b:{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0],"13":[0,0]},inputSourceMap:{version:3,file:"paging.js",sourceRoot:"",sources:["../../../../../projects/sac-common/src/controls/grid/paging.ts"],names:[],mappings:"AAAA,OAAO,EACL,SAAS,EACT,YAAY,EAEZ,KAAK,EACL,MAAM,GACP,MAAM,eAAe,CAAC;AAIvB,OAAO,EACL,uBAAuB,EACvB,6BAA6B,GAC9B,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,wBAAwB,EACxB,8BAA8B,GAC/B,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAa,YAAY,EAAE,MAAM,SAAS,CAAC;;AAElD;;GAEG;AACH,MACsB,eAAe;IA2EnC,wBAAwB;IAExB,uBAAuB;IAEvB;;;;OAIG;IACH,YAAY,QAAkB;QAxE9B;;WAEG;QACO,kBAAa,GAAW,CAAC,CAAC;QAOpC;;WAEG;QAEI,qBAAgB,GAAY,KAAK,CAAC;QACzC;;;;WAIG;QAEI,cAAS,GAAW,WAAW,CAAC;QACvC;;;;WAIG;QAEI,iBAAY,GAAW,EAAE,CAAC;QACjC;;;;WAIG;QAEI,eAAU,GAAW,EAAE,CAAC;QAC/B;;WAEG;QAEI,WAAM,GAA+B,IAAI,YAAY,EAAgB,CAAC;QAE7E;;WAEG;QACI,oBAAe,GAAW,CAAC,CAAC;QACnC;;WAEG;QACI,mBAAc,GAAW,CAAC,CAAC;QAClC;;WAEG;QACI,kBAAa,GAAW,CAAC,CAAC;QACjC;;WAEG;QACI,aAAQ,GAAW,EAAE,CAAC;QAC7B;;WAEG;QACI,eAAU,GAAe,EAAE,CAAC;QAYjC,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC,GAAG,CACtC,wBAAwB,EACxB,IAAI,8BAA8B,EAAE,CACrC,CAAC;QAEF,mCAAmC;QACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC;QAC5D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC;QAEzD,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC,GAAG,CACpC,uBAAuB,EACvB,IAAI,6BAA6B,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAC7D,CAAC;IACJ,CAAC;IAED,0BAA0B;IAE1B,qCAAqC;IAErC;;OAEG;IACH,IACW,SAAS,CAAC,CAAY;QAC/B,IAAI,CAAC,IAAI,IAAI,EAAE;YACb,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC;YACrC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,gBAAgB,CAAC;YAC1C,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;SAC5B;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,IAAW,YAAY;QACrB,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC9D,CAAC;IAED;;OAEG;IACH,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE;YACxD,WAAW,EAAE,IAAI,CAAC,oBAAoB,EAAE;YACxC,UAAU,EAAE,IAAI,CAAC,kBAAkB,EAAE;SACtC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,IAAW,YAAY;QACrB,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,wCAAwC;IAExC,yBAAyB;IAEzB;;;OAGG;IACI,UAAU,CAAC,YAAoB;QACpC,IAAI,IAAI,CAAC,eAAe,KAAK,YAAY,EAAE;YACzC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;SAC1B;IACH,CAAC;IAED;;;OAGG;IACI,cAAc,CAAC,OAAe;QACnC,MAAM,SAAS,GAAiB,IAAI,YAAY,CAC9C,OAAO,EACP,IAAI,CAAC,eAAe,CACrB,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACI,SAAS;QACd,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,cAAc,EAAE;YAChD,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACf;IACH,CAAC;IAED;;OAEG;IACI,oBAAoB;QACzB,OAAO,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACI,kBAAkB;QACvB,OAAO,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACI,QAAQ;QACb,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,aAAa,EAAE;YAC/C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SAChC;IACH,CAAC;IAED;;OAEG;IACI,QAAQ;QACb,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,aAAa,EAAE;YAC/C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC;SACtC;IACH,CAAC;IAED;;OAEG;IACI,YAAY;QACjB,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,cAAc,EAAE;YAChD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC;SACtC;IACH,CAAC;IAED,4BAA4B;IAE5B,4BAA4B;IAE5B;;OAEG;IACO,WAAW;QACnB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QAErB,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,EAAE;YAC1B,IAAI,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEnE,8DAA8D;YAC9D,IAAI,cAAc,KAAK,CAAC,EAAE;gBACxB,cAAc,GAAG,CAAC,CAAC;aACpB;YAED,sBAAsB;YACtB,IAAI,CAAC,aAAa,GAAG,cAAc,GAAG,CAAC,CAAC;YACxC,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;YAC9D,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;YAE1D,sDAAsD;YACtD,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,EAAE;gBAC7C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC;aAC3C;YAED,KAAK,IAAI,CAAC,GAAG,cAAc,EAAE,CAAC,IAAI,YAAY,EAAE,CAAC,EAAE,EAAE;gBACnD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACzB;SACF;aAAM;YACL,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACzB;IACH,CAAC;IAED;;;OAGG;IACO,eAAe,CAAC,cAAsB;QAC9C,IAAI,mBAAmB,GAAG,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;QACnD,MAAM,kBAAkB,GAAG,CAAC,GAAG,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE3E,IAAI,mBAAmB,GAAG,cAAc,GAAG,CAAC,EAAE;YAC5C,mBAAmB,GAAG,cAAc,GAAG,CAAC,CAAC;SAC1C;aAAM,IAAI,IAAI,CAAC,eAAe,GAAG,CAAC,EAAE;YACnC,mBAAmB,GAAG,kBAAkB,CAAC;SAC1C;QACD,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACO,iBAAiB,CAAC,cAAsB;QAChD,IAAI,qBAAqB,GAAW,CAAC,CAAC;QACtC,qBAAqB,GAAG,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;QAEjD,IAAI,cAAc,GAAG,IAAI,CAAC,eAAe,GAAG,CAAC,GAAG,CAAC,EAAE;YACjD,qBAAqB,GAAG,cAAc,GAAG,CAAC,CAAC;SAC5C;QAED,IAAI,qBAAqB,GAAG,CAAC,EAAE;YAC7B,qBAAqB,GAAG,CAAC,CAAC;SAC3B;QACD,OAAO,qBAAqB,CAAC;IAC/B,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,YAAoB;QAClC,MAAM,SAAS,GAAiB,IAAI,YAAY,CAC9C,IAAI,CAAC,QAAQ,EACb,YAAY,CACb,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC;+GAzSmB,eAAe;mGAAf,eAAe;;SAAf,eAAe;4FAAf,eAAe;kBADpC,SAAS;+FAsBD,IAAI;sBADV,KAAK;gBAMC,gBAAgB;sBADtB,KAAK;gBAQC,SAAS;sBADf,KAAK;gBAQC,YAAY;sBADlB,KAAK;gBAQC,UAAU;sBADhB,KAAK;gBAMC,MAAM;sBADZ,MAAM;gBAyDI,SAAS;sBADnB,KAAK",sourcesContent:["import {\r\n Directive,\r\n EventEmitter,\r\n Injector,\r\n Input,\r\n Output,\r\n} from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { ISacLocalisationService } from '../../interfaces/ISacLocalisationService';\r\nimport { ISacValidationKeyService } from '../../interfaces/ISacValidationKeyService';\r\nimport {\r\n SACLOCALISATION_SERVICE,\r\n SacDefaultLocalisationService,\r\n} from '../../services/sac-localisation.service';\r\nimport {\r\n SACVALIDATIONKEY_SERVICE,\r\n SacDefaultValidationKeyService,\r\n} from '../../services/sac-validationkey.service';\r\nimport { PagerData, PagerRequest } from './model';\r\n\r\n/**\r\n * Basic component for paging\r\n */\r\n@Directive()\r\nexport abstract class SacPagingCommon {\r\n // #region Properties\r\n\r\n /**\r\n * Service to receive standard validation message keys and texts\r\n */\r\n private validationKeyService: ISacValidationKeyService;\r\n\r\n /**\r\n * Service for error localization\r\n */\r\n protected lngResourceService: ISacLocalisationService;\r\n /**\r\n * Total number of rows\r\n */\r\n protected totalRowCount: number = 0;\r\n\r\n /**\r\n * Name of the grid. Used for ID and name designations\r\n */\r\n @Input()\r\n public name: string;\r\n /**\r\n * Deactivate page size selection\r\n */\r\n @Input()\r\n public pagesizedisabled: boolean = false;\r\n /**\r\n * Text in Page for number of page elements per page. The following interpolation texts are available:\r\n *\r\n * {{PAGESIZE}}: Number of elements per page\r\n */\r\n @Input()\r\n public pagesizes: string = '20|50|100';\r\n /**\r\n * Text in Page for number of page elements per page. The following interpolation texts are available:\r\n *\r\n * {{PAGESIZE}}: Number of elements per page\r\n */\r\n @Input()\r\n public pagesizetext: string = '';\r\n /**\r\n * Text in pager for 'Page x of y'. The following interpolation texts are available:\r\n * {{CURRENTPAGE}}: Current page\r\n * {{TOTALPAGES}}: Number of pages\r\n */\r\n @Input()\r\n public pagingtext: string = '';\r\n /**\r\n * Event when the page is changed in the grid. The new PageIndex is given as a parameter.\r\n */\r\n @Output()\r\n public paging: EventEmitter<PagerRequest> = new EventEmitter<PagerRequest>();\r\n\r\n /**\r\n * Active page index\r\n */\r\n public activePageIndex: number = 0;\r\n /**\r\n * First page index\r\n */\r\n public firstPageIndex: number = 0;\r\n /**\r\n * Last page index\r\n */\r\n public lastPageIndex: number = 0;\r\n /**\r\n * Number of elements per page\r\n */\r\n public pageSize: number = 20;\r\n /**\r\n * Item for each paging element (page number)\r\n */\r\n public paginators: Array<any> = [];\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Constructor\r\n * @parent SacFormCommon\r\n * @injector Injector\r\n */\r\n constructor(injector: Injector) {\r\n this.validationKeyService = injector.get(\r\n SACVALIDATIONKEY_SERVICE,\r\n new SacDefaultValidationKeyService()\r\n );\r\n\r\n // Set Default Values from Injector\r\n this.pagesizetext = this.validationKeyService.PagingEntries;\r\n this.pagingtext = this.validationKeyService.PagingPageOf;\r\n\r\n this.lngResourceService = injector.get(\r\n SACLOCALISATION_SERVICE,\r\n new SacDefaultLocalisationService(this.validationKeyService)\r\n );\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Property for Pager Data\r\n */\r\n @Input()\r\n public set pagerdata(p: PagerData) {\r\n if (p != null) {\r\n this.totalRowCount = p.TotalRowCount;\r\n this.activePageIndex = p.CurrentPageIndex;\r\n this.pageSize = p.PageSize;\r\n }\r\n\r\n this.createPager();\r\n }\r\n\r\n /**\r\n * Property with text for total entries in page\r\n */\r\n public get PageSizeText(): Observable<string> {\r\n return this.lngResourceService.GetString(this.pagesizetext);\r\n }\r\n\r\n /**\r\n * Text with current page and total pages\r\n */\r\n public get PagingText(): Observable<string> {\r\n return this.lngResourceService.GetString(this.pagingtext, {\r\n CURRENTPAGE: this.getCurrentPageNumber(),\r\n TOTALPAGES: this.getTotalPageNumber(),\r\n });\r\n }\r\n\r\n /**\r\n * Returns the page sizes as a number array\r\n */\r\n public get getPageSizes(): number[] {\r\n return this.pagesizes.split('|').map((itm) => Number(itm));\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Changes the page to the new index\r\n * @param newPageIndex Page index. This corresponds to the page number - 1.\r\n */\r\n public changePage(newPageIndex: number) {\r\n if (this.activePageIndex !== newPageIndex) {\r\n this.paged(newPageIndex);\r\n }\r\n }\r\n\r\n /**\r\n * Changes the page size in the pager\r\n * @param newSize New number of elements per page\r\n */\r\n public changePageSize(newSize: number) {\r\n const pagerData: PagerRequest = new PagerRequest(\r\n newSize,\r\n this.activePageIndex\r\n );\r\n this.paging.emit(pagerData);\r\n }\r\n\r\n /**\r\n *Switch to 1st page\r\n */\r\n public firstPage() {\r\n if (this.activePageIndex !== this.firstPageIndex) {\r\n this.paged(0);\r\n }\r\n }\r\n\r\n /**\r\n * Returns the current page number\r\n */\r\n public getCurrentPageNumber(): number {\r\n return this.activePageIndex + 1;\r\n }\r\n\r\n /**\r\n * Returns the total number of pages\r\n */\r\n public getTotalPageNumber(): number {\r\n return this.lastPageIndex + 1;\r\n }\r\n\r\n /**\r\n * Paging on last page\r\n */\r\n public lastPage() {\r\n if (this.activePageIndex !== this.lastPageIndex) {\r\n this.paged(this.lastPageIndex);\r\n }\r\n }\r\n\r\n /**\r\n * Paging to next page\r\n */\r\n public nextPage() {\r\n if (this.activePageIndex !== this.lastPageIndex) {\r\n this.paged(this.activePageIndex + 1);\r\n }\r\n }\r\n\r\n /**\r\n * Paging one page back\r\n */\r\n public previousPage() {\r\n if (this.activePageIndex !== this.firstPageIndex) {\r\n this.paged(this.activePageIndex - 1);\r\n }\r\n }\r\n\r\n // #endregion Public Methods\r\n\r\n // #region Protected Methods\r\n\r\n /**\r\n * Generates the pager data\r\n */\r\n protected createPager() {\r\n this.paginators = [];\r\n\r\n if (this.totalRowCount > 0) {\r\n let totalPageCount = Math.ceil(this.totalRowCount / this.pageSize);\r\n\r\n // PageCount auf 1 stellen, wenn keine Records vorhanden sind.\r\n if (totalPageCount === 0) {\r\n totalPageCount = 1;\r\n }\r\n\r\n // PageIndex berechnen\r\n this.lastPageIndex = totalPageCount - 1;\r\n const startPageIndex = this.getStartPageIndex(totalPageCount);\r\n const endPageIndex = this.getEndPageIndex(totalPageCount);\r\n\r\n // Index Fix wenn Aktive Seite gr\xF6sser als letze Seite\r\n if (this.activePageIndex > this.lastPageIndex) {\r\n this.activePageIndex = this.lastPageIndex;\r\n }\r\n\r\n for (let i = startPageIndex; i <= endPageIndex; i++) {\r\n this.paginators.push(i);\r\n }\r\n } else {\r\n this.paginators.push(0);\r\n }\r\n }\r\n\r\n /**\r\n * Returns the last page index.\r\n * @param totalPageCount Total number of pages\r\n */\r\n protected getEndPageIndex(totalPageCount: number): number {\r\n let endingPageToDisplay = this.activePageIndex + 2;\r\n const maxEndingPageIndex = 4 > totalPageCount - 1 ? totalPageCount - 1 : 4;\r\n\r\n if (endingPageToDisplay > totalPageCount - 1) {\r\n endingPageToDisplay = totalPageCount - 1;\r\n } else if (this.activePageIndex < 2) {\r\n endingPageToDisplay = maxEndingPageIndex;\r\n }\r\n return endingPageToDisplay;\r\n }\r\n\r\n /**\r\n * Returns the start index\r\n * @param totalPageCount Total number of pages\r\n */\r\n protected getStartPageIndex(totalPageCount: number): number {\r\n let startingPageToDisplay: number = 0;\r\n startingPageToDisplay = this.activePageIndex - 2;\r\n\r\n if (totalPageCount - this.activePageIndex - 1 < 2) {\r\n startingPageToDisplay = totalPageCount - 5;\r\n }\r\n\r\n if (startingPageToDisplay < 0) {\r\n startingPageToDisplay = 0;\r\n }\r\n return startingPageToDisplay;\r\n }\r\n\r\n /**\r\n * method triggers the event that paging has taken place\r\n */\r\n protected paged(newPageIndex: number) {\r\n const pagerData: PagerRequest = new PagerRequest(\r\n this.pageSize,\r\n newPageIndex\r\n );\r\n this.paging.emit(pagerData);\r\n }\r\n\r\n // #endregion Protected Methods\r\n}\r\n"]},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"5642e5be21f2ad59d2df87dc67ac5e866a0a3258"};var coverage=global[gcv]||(global[gcv]={});if(!coverage[path]||coverage[path].hash!==hash){coverage[path]=coverageData;}var actualCoverage=coverage[path];{// @ts-ignore
2
+ cov_22wr2lg5mj=function(){return actualCoverage;};}return actualCoverage;}cov_22wr2lg5mj();import{Directive,EventEmitter,Input,Output}from'@angular/core';import{SACLOCALISATION_SERVICE,SacDefaultLocalisationService}from'../../services/sac-localisation.service';import{SACVALIDATIONKEY_SERVICE,SacDefaultValidationKeyService}from'../../services/sac-validationkey.service';import{PagerRequest}from'./model';import*as i0 from"@angular/core";/**
3
+ * Basic component for paging
4
+ */class SacPagingCommon{// #endregion Properties
5
+ // #region Constructors
5
6
  /**
6
- * Basiskomponente für Paging
7
- */
8
- class SacPagingCommon {
9
- // #region Constructor
10
- /**
11
- * Konstruktor
12
- * Inject des Formulars
7
+ * Constructor
13
8
  * @parent SacFormCommon
14
9
  * @injector Injector
15
- */
16
- constructor(injector) {
17
- this.injector = injector;
18
- /**
19
- * Item für jedes Paging Element (Seitenzahl)
20
- */
21
- this.paginators = [];
22
- /**
23
- * Aktiver Seitenindex
24
- */
25
- this.activePageIndex = 0;
26
- /**
27
- * Erster Seitenindex
28
- */
29
- this.firstPageIndex = 0;
30
- /**
31
- * Letzter Seitenindex
32
- */
33
- this.lastPageIndex = 0;
34
- /**
35
- * Total Anzahl Rows
36
- */
37
- this.totalRowCount = 0;
38
- /**
39
- * Anzahl Elemente pro Seite
40
- */
41
- this.pageSize = 20;
42
- /**
43
- * Text in Pager für 'Seite x von y'.
44
- * Folgende Interpolation Texte sind vorhanden:
45
- * {{CURRENTPAGE}}: Aktuelle Seite
46
- * {{TOTALPAGES}}: Anzahl Seiten
47
- */
48
- this.pagingtext = 'PAGING_PAGEOFTEXT';
49
- /**
50
- * Text in Page für Anzahl Seitenelemente pro Seite
51
- * Folgende Interpolation Texte sind vorhanden:
52
- * {{PAGESIZE}}: Anzahl Elemente pro Seite
53
- */
54
- this.pagesizetext = 'PAGING_PAGEENTRIESTEXT';
55
- /**
56
- * Text in Page für Anzahl Seitenelemente pro Seite
57
- * Folgende Interpolation Texte sind vorhanden:
58
- * {{PAGESIZE}}: Anzahl Elemente pro Seite
59
- */
60
- this.pagesizes = '20|50|100';
61
- /**
62
- * Auswahl der Seitengrösse deaktivieren
63
- */
64
- this.pagesizedisabled = false;
65
- /**
66
- * Event wenn im Grid die Seite geändert wird. Als Parameter wird der neue PageIndex mitgegeben.
67
- */
68
- this.paging = new EventEmitter();
69
- this.lngResourceService = injector.get(SACLOCALISATION_SERVICE, new SacDefaultLocalisationService());
70
- }
71
- //#region Input and Outputs
72
- /**
73
- * Property für Pager Data
74
- */
75
- set pagerdata(p) {
76
- if (p != null) {
77
- this.totalRowCount = p.TotalRowCount;
78
- this.activePageIndex = p.CurrentPageIndex;
79
- this.pageSize = p.PageSize;
80
- }
81
- this.createPager();
82
- }
83
- /**
84
- * Gibt die Page Sizes als Number Array zurück
85
- */
86
- get getPageSizes() {
87
- return this.pagesizes.split('|').map((itm) => Number(itm));
88
- }
89
- //#endregion
90
- //#region Protected Methods
91
- /**
92
- * Erzeugt die Pager Daten
93
- */
94
- createPager() {
95
- this.paginators = [];
96
- if (this.totalRowCount > 0) {
97
- let totalPageCount = Math.ceil(this.totalRowCount / this.pageSize);
98
- // PageCount auf 1 stellen, wenn keine Records vorhanden sind.
99
- if (totalPageCount === 0) {
100
- totalPageCount = 1;
101
- }
102
- // PageIndex berechnen
103
- this.lastPageIndex = totalPageCount - 1;
104
- const startPageIndex = this.getStartPageIndex(totalPageCount);
105
- const endPageIndex = this.getEndPageIndex(totalPageCount);
106
- // Index Fix wenn Aktive Seite grösser als letze Seite
107
- if (this.activePageIndex > this.lastPageIndex) {
108
- this.activePageIndex = this.lastPageIndex;
109
- }
110
- for (let i = startPageIndex; i <= endPageIndex; i++) {
111
- this.paginators.push(i);
112
- }
113
- }
114
- else {
115
- this.paginators.push(0);
116
- }
117
- }
118
- /**
119
- * Methode löst den Event aus, dass ein Paging stattgefunden hat
120
- */
121
- paged(newPageIndex) {
122
- const pagerData = new PagerRequest(this.pageSize, newPageIndex);
123
- this.paging.emit(pagerData);
124
- }
125
- /**
126
- * Gibt den Start Index zurück
127
- * @param totalPageCount Total Anzahl Seiten
128
- */
129
- getStartPageIndex(totalPageCount) {
130
- let startingPageToDisplay = 0;
131
- startingPageToDisplay = this.activePageIndex - 2;
132
- if (totalPageCount - this.activePageIndex - 1 < 2) {
133
- startingPageToDisplay = totalPageCount - 5;
134
- }
135
- if (startingPageToDisplay < 0) {
136
- startingPageToDisplay = 0;
137
- }
138
- return startingPageToDisplay;
139
- }
140
- /**
141
- * Gibt den letzten Seitenindex zurück.
142
- * @param totalPageCount Total Anzahl Seiten
143
- */
144
- getEndPageIndex(totalPageCount) {
145
- let endingPageToDisplay = this.activePageIndex + 2;
146
- const maxEndingPageIndex = 4 > totalPageCount - 1 ? totalPageCount - 1 : 4;
147
- if (endingPageToDisplay > totalPageCount - 1) {
148
- endingPageToDisplay = totalPageCount - 1;
149
- }
150
- else if (this.activePageIndex < 2) {
151
- endingPageToDisplay = maxEndingPageIndex;
152
- }
153
- return endingPageToDisplay;
154
- }
155
- //#endregion
156
- //#region Public Methods
157
- /**
158
- * Andert die Seite auf den neuen Index
159
- * @param newPageIndex Seiten Index. Dies entspricht der Seitenzahl - 1.
160
- */
161
- changePage(newPageIndex) {
162
- if (this.activePageIndex !== newPageIndex) {
163
- this.paged(newPageIndex);
164
- }
165
- }
166
- /**
167
- * Ändert die Seitengrösse im Pager
168
- * @param newSize Neue Anzahl Elemente pro Seite
169
- */
170
- changePageSize(newSize) {
171
- const pagerData = new PagerRequest(newSize, this.activePageIndex);
172
- this.paging.emit(pagerData);
173
- }
174
- /**
175
- * Paging auf nächste Seite
176
- */
177
- nextPage() {
178
- if (this.activePageIndex !== this.lastPageIndex) {
179
- this.paged(this.activePageIndex + 1);
180
- }
181
- }
182
- /**
183
- * Paging eine Seite zurück
184
- */
185
- previousPage() {
186
- if (this.activePageIndex !== this.firstPageIndex) {
187
- this.paged(this.activePageIndex - 1);
188
- }
189
- }
190
- /**
191
- * Paging auf 1. Seite
192
- */
193
- firstPage() {
194
- if (this.activePageIndex !== this.firstPageIndex) {
195
- this.paged(0);
196
- }
197
- }
198
- /**
199
- * Paging auf letzter Seite
200
- */
201
- lastPage() {
202
- if (this.activePageIndex !== this.lastPageIndex) {
203
- this.paged(this.lastPageIndex);
204
- }
205
- }
206
- /**
207
- * Gibt die aktuelle Seitenzahl zurück
208
- */
209
- getCurrentPageNumber() {
210
- return this.activePageIndex + 1;
211
- }
212
- /**
213
- * Gibt die totale Anzahl Seiten zurück
214
- */
215
- getTotalPageNumber() {
216
- return this.lastPageIndex + 1;
217
- }
218
- /**
219
- * Text mit Aktueller Seite und Total Seiten
220
- */
221
- get PagingText() {
222
- return this.lngResourceService.GetString(this.pagingtext, {
223
- CURRENTPAGE: this.getCurrentPageNumber(),
224
- TOTALPAGES: this.getTotalPageNumber(),
225
- });
226
- }
227
- /**
228
- * Property mit Text für Total Einträge in Seite
229
- */
230
- get PageSizeText() {
231
- return this.lngResourceService.GetString(this.pagesizetext);
232
- }
233
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacPagingCommon, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive }); }
234
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: SacPagingCommon, inputs: { pagerdata: "pagerdata", pagingtext: "pagingtext", pagesizetext: "pagesizetext", pagesizes: "pagesizes", pagesizedisabled: "pagesizedisabled", name: "name" }, outputs: { paging: "paging" }, ngImport: i0 }); }
235
- }
236
- export { SacPagingCommon };
237
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacPagingCommon, decorators: [{
238
- type: Directive
239
- }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { pagerdata: [{
240
- type: Input
241
- }], pagingtext: [{
242
- type: Input
243
- }], pagesizetext: [{
244
- type: Input
245
- }], pagesizes: [{
246
- type: Input
247
- }], pagesizedisabled: [{
248
- type: Input
249
- }], name: [{
250
- type: Input
251
- }], paging: [{
252
- type: Output
253
- }] } });
254
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2FjLWNvbW1vbi9zcmMvY29udHJvbHMvZ3JpZC9wYWdpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBRVosS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQ0wsNkJBQTZCLEVBQzdCLHVCQUF1QixHQUN4QixNQUFNLHlDQUF5QyxDQUFDO0FBQ2pELE9BQU8sRUFBYSxZQUFZLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBRWxEOztHQUVHO0FBQ0gsTUFDc0IsZUFBZTtJQU1uQyxzQkFBc0I7SUFFdEI7Ozs7O09BS0c7SUFDSCxZQUFvQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBT3RDOztXQUVHO1FBQ0ksZUFBVSxHQUFlLEVBQUUsQ0FBQztRQUVuQzs7V0FFRztRQUNJLG9CQUFlLEdBQVcsQ0FBQyxDQUFDO1FBRW5DOztXQUVHO1FBQ0ksbUJBQWMsR0FBVyxDQUFDLENBQUM7UUFFbEM7O1dBRUc7UUFDSSxrQkFBYSxHQUFXLENBQUMsQ0FBQztRQUVqQzs7V0FFRztRQUNPLGtCQUFhLEdBQVcsQ0FBQyxDQUFDO1FBRXBDOztXQUVHO1FBQ0gsYUFBUSxHQUFXLEVBQUUsQ0FBQztRQWtCdEI7Ozs7O1dBS0c7UUFFSSxlQUFVLEdBQVcsbUJBQW1CLENBQUM7UUFFaEQ7Ozs7V0FJRztRQUVJLGlCQUFZLEdBQVcsd0JBQXdCLENBQUM7UUFFdkQ7Ozs7V0FJRztRQUVJLGNBQVMsR0FBVyxXQUFXLENBQUM7UUFFdkM7O1dBRUc7UUFFSSxxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFlekM7O1dBRUc7UUFFSCxXQUFNLEdBQStCLElBQUksWUFBWSxFQUFnQixDQUFDO1FBcEdwRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsUUFBUSxDQUFDLEdBQUcs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QkFEZixLQUFLO2dCQU9DLGdCQUFnQjtzQkFEdEIsS0FBSztnQkFjQyxJQUFJO3NCQURWLEtBQUs7Z0JBT04sTUFBTTtzQkFETCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBEaXJlY3RpdmUsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEluamVjdG9yLFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBJU2FjTG9jYWxpc2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVNhY0xvY2FsaXNhdGlvblNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gIFNhY0RlZmF1bHRMb2NhbGlzYXRpb25TZXJ2aWNlLFxyXG4gIFNBQ0xPQ0FMSVNBVElPTl9TRVJWSUNFLFxyXG59IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NhYy1sb2NhbGlzYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFBhZ2VyRGF0YSwgUGFnZXJSZXF1ZXN0IH0gZnJvbSAnLi9tb2RlbCc7XHJcblxyXG4vKipcclxuICogQmFzaXNrb21wb25lbnRlIGbDvHIgUGFnaW5nXHJcbiAqL1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNhY1BhZ2luZ0NvbW1vbiB7XHJcbiAgLyoqXHJcbiAgICogU2VydmljZSBmw7xyIEVycm9yIExvY2FsaXNhdGlvblxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBsbmdSZXNvdXJjZVNlcnZpY2U6IElTYWNMb2NhbGlzYXRpb25TZXJ2aWNlO1xyXG5cclxuICAvLyAjcmVnaW9uIENvbnN0cnVjdG9yXHJcblxyXG4gIC8qKlxyXG4gICAqIEtvbnN0cnVrdG9yXHJcbiAgICogSW5qZWN0IGRlcyBGb3JtdWxhcnNcclxuICAgKiBAcGFyZW50IFNhY0Zvcm1Db21tb25cclxuICAgKiBAaW5qZWN0b3IgSW5qZWN0b3JcclxuICAgKi9cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgdGhpcy5sbmdSZXNvdXJjZVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoXHJcbiAgICAgIFNBQ0xPQ0FMSVNBVElPTl9TRVJWSUNFLFxyXG4gICAgICBuZXcgU2FjRGVmYXVsdExvY2FsaXNhdGlvblNlcnZpY2UoKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEl0ZW0gZsO8ciBqZWRlcyBQYWdpbmcgRWxlbWVudCAoU2VpdGVuemFobClcclxuICAgKi9cclxuICBwdWJsaWMgcGFnaW5hdG9yczogQXJyYXk8YW55PiA9IFtdO1xyXG5cclxuICAvKipcclxuICAgKiBBa3RpdmVyIFNlaXRlbmluZGV4XHJcbiAgICovXHJcbiAgcHVibGljIGFjdGl2ZVBhZ2VJbmRleDogbnVtYmVyID0gMDtcclxuXHJcbiAgLyoqXHJcbiAgICogRXJzdGVyIFNlaXRlbmluZGV4XHJcbiAgICovXHJcbiAgcHVibGljIGZpcnN0UGFnZUluZGV4OiBudW1iZXIgPSAwO1xyXG5cclxuICAvKipcclxuICAgKiBMZXR6dGVyIFNlaXRlbmluZGV4XHJcbiAgICovXHJcbiAgcHVibGljIGxhc3RQYWdlSW5kZXg6IG51bWJlciA9IDA7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRvdGFsIEFuemFobCBSb3dzXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHRvdGFsUm93Q291bnQ6IG51bWJlciA9IDA7XHJcblxyXG4gIC8qKlxyXG4gICAqIEFuemFobCBFbGVtZW50ZSBwcm8gU2VpdGVcclxuICAgKi9cclxuICBwYWdlU2l6ZTogbnVtYmVyID0gMjA7XHJcblxyXG4gIC8vI3JlZ2lvbiBJbnB1dCBhbmQgT3V0cHV0c1xyXG5cclxuICAvKipcclxuICAgKiBQcm9wZXJ0eSBmw7xyIFBhZ2VyIERhdGFcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCBwYWdlcmRhdGEocDogUGFnZXJEYXRhKSB7XHJcbiAgICBpZiAocCAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMudG90YWxSb3dDb3VudCA9IHAuVG90YWxSb3dDb3VudDtcclxuICAgICAgdGhpcy5hY3RpdmVQYWdlSW5kZXggPSBwLkN1cnJlbnRQYWdlSW5kZXg7XHJcbiAgICAgIHRoaXMucGFnZVNpemUgPSBwLlBhZ2VTaXplO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY3JlYXRlUGFnZXIoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRleHQgaW4gUGFnZXIgZsO8ciAnU2VpdGUgeCB2b24geScuXHJcbiAgICogRm9sZ2VuZGUgSW50ZXJwb2xhdGlvbiBUZXh0ZSBzaW5kIHZvcmhhbmRlbjpcclxuICAgKiB7e0NVUlJFTlRQQUdFfX06IEFrdHVlbGxlIFNlaXRlXHJcbiAgICoge3tUT1RBTFBBR0VTfX06IEFuemFobCBTZWl0ZW5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBwYWdpbmd0ZXh0OiBzdHJpbmcgPSAnUEFHSU5HX1BBR0VPRlRFWFQnO1xyXG5cclxuICAvKipcclxuICAgKiBUZXh0IGluIFBhZ2UgZsO8ciBBbnphaGwgU2VpdGVuZWxlbWVudGUgcHJvIFNlaXRlXHJcbiAgICogRm9sZ2VuZGUgSW50ZXJwb2xhdGlvbiBUZXh0ZSBzaW5kIHZvcmhhbmRlbjpcclxuICAgKiB7e1BBR0VTSVpFfX06IEFuemFobCBFbGVtZW50ZSBwcm8gU2VpdGVcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBwYWdlc2l6ZXRleHQ6IHN0cmluZyA9ICdQQUdJTkdfUEFHRUVOVFJJRVNURVhUJztcclxuXHJcbiAgLyoqXHJcbiAgICogVGV4dCBpbiBQYWdlIGbDvHIgQW56YWhsIFNlaXRlbmVsZW1lbnRlIHBybyBTZWl0ZVxyXG4gICAqIEZvbGdlbmRlIEludGVycG9sYXRpb24gVGV4dGUgc2luZCB2b3JoYW5kZW46XHJcbiAgICoge3tQQUdFU0laRX19OiBBbnphaGwgRWxlbWVudGUgcHJvIFNlaXRlXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgcGFnZXNpemVzOiBzdHJpbmcgPSAnMjB8NTB8MTAwJztcclxuXHJcbiAgLyoqXHJcbiAgICogQXVzd2FobCBkZXIgU2VpdGVuZ3LDtnNzZSBkZWFrdGl2aWVyZW5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBwYWdlc2l6ZWRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIEdpYnQgZGllIFBhZ2UgU2l6ZXMgYWxzIE51bWJlciBBcnJheSB6dXLDvGNrXHJcbiAgICovXHJcbiAgcHVibGljIGdldCBnZXRQYWdlU2l6ZXMoKTogbnVtYmVyW10ge1xyXG4gICAgcmV0dXJuIHRoaXMucGFnZXNpemVzLnNwbGl0KCd8JykubWFwKChpdG0pID0+IE51bWJlcihpdG0pKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5hbWUgZGVzIEdyaWRzLiBXaXJkIGbDvHIgSUQgdW5kIE5hbWUgQmV6ZWljaG51bmdlbiB2ZXJ3ZW5kZXRcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBuYW1lOiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEV2ZW50IHdlbm4gaW0gR3JpZCBkaWUgU2VpdGUgZ2XDpG5kZXJ0IHdpcmQuIEFscyBQYXJhbWV0ZXIgd2lyZCBkZXIgbmV1ZSBQYWdlSW5kZXggbWl0Z2VnZWJlbi5cclxuICAgKi9cclxuICBAT3V0cHV0KClcclxuICBwYWdpbmc6IEV2ZW50RW1pdHRlcjxQYWdlclJlcXVlc3Q+ID0gbmV3IEV2ZW50RW1pdHRlcjxQYWdlclJlcXVlc3Q+KCk7XHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gUHJvdGVjdGVkIE1ldGhvZHNcclxuXHJcbiAgLyoqXHJcbiAgICogRXJ6ZXVndCBkaWUgUGFnZXIgRGF0ZW5cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgY3JlYXRlUGFnZXIoKSB7XHJcbiAgICB0aGlzLnBhZ2luYXRvcnMgPSBbXTtcclxuXHJcbiAgICBpZiAodGhpcy50b3RhbFJvd0NvdW50ID4gMCkge1xyXG4gICAgICBsZXQgdG90YWxQYWdlQ291bnQgPSBNYXRoLmNlaWwodGhpcy50b3RhbFJvd0NvdW50IC8gdGhpcy5wYWdlU2l6ZSk7XHJcblxyXG4gICAgICAvLyBQYWdlQ291bnQgYXVmIDEgc3RlbGxlbiwgd2VubiBrZWluZSBSZWNvcmRzIHZvcmhhbmRlbiBzaW5kLlxyXG4gICAgICBpZiAodG90YWxQYWdlQ291bnQgPT09IDApIHtcclxuICAgICAgICB0b3RhbFBhZ2VDb3VudCA9IDE7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFBhZ2VJbmRleCBiZXJlY2huZW5cclxuICAgICAgdGhpcy5sYXN0UGFnZUluZGV4ID0gdG90YWxQYWdlQ291bnQgLSAxO1xyXG4gICAgICBjb25zdCBzdGFydFBhZ2VJbmRleCA9IHRoaXMuZ2V0U3RhcnRQYWdlSW5kZXgodG90YWxQYWdlQ291bnQpO1xyXG4gICAgICBjb25zdCBlbmRQYWdlSW5kZXggPSB0aGlzLmdldEVuZFBhZ2VJbmRleCh0b3RhbFBhZ2VDb3VudCk7XHJcblxyXG4gICAgICAvLyBJbmRleCBGaXggd2VubiBBa3RpdmUgU2VpdGUgZ3LDtnNzZXIgYWxzIGxldHplIFNlaXRlXHJcbiAgICAgIGlmICh0aGlzLmFjdGl2ZVBhZ2VJbmRleCA+IHRoaXMubGFzdFBhZ2VJbmRleCkge1xyXG4gICAgICAgIHRoaXMuYWN0aXZlUGFnZUluZGV4ID0gdGhpcy5sYXN0UGFnZUluZGV4O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBmb3IgKGxldCBpID0gc3RhcnRQYWdlSW5kZXg7IGkgPD0gZW5kUGFnZUluZGV4OyBpKyspIHtcclxuICAgICAgICB0aGlzLnBhZ2luYXRvcnMucHVzaChpKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5wYWdpbmF0b3JzLnB1c2goMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRob2RlIGzDtnN0IGRlbiBFdmVudCBhdXMsIGRhc3MgZWluIFBhZ2luZyBzdGF0dGdlZnVuZGVuIGhhdFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBwYWdlZChuZXdQYWdlSW5kZXg6IG51bWJlcikge1xyXG4gICAgY29uc3QgcGFnZXJEYXRhOiBQYWdlclJlcXVlc3QgPSBuZXcgUGFnZXJSZXF1ZXN0KFxyXG4gICAgICB0aGlzLnBhZ2VTaXplLFxyXG4gICAgICBuZXdQYWdlSW5kZXhcclxuICAgICk7XHJcbiAgICB0aGlzLnBhZ2luZy5lbWl0KHBhZ2VyRGF0YSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHaWJ0IGRlbiBTdGFydCBJbmRleCB6dXLDvGNrXHJcbiAgICogQHBhcmFtIHRvdGFsUGFnZUNvdW50IFRvdGFsIEFuemFobCBTZWl0ZW5cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZ2V0U3RhcnRQYWdlSW5kZXgodG90YWxQYWdlQ291bnQ6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICBsZXQgc3RhcnRpbmdQYWdlVG9EaXNwbGF5OiBudW1iZXIgPSAwO1xyXG4gICAgc3RhcnRpbmdQYWdlVG9EaXNwbGF5ID0gdGhpcy5hY3RpdmVQYWdlSW5kZXggLSAyO1xyXG5cclxuICAgIGlmICh0b3RhbFBhZ2VDb3VudCAtIHRoaXMuYWN0aXZlUGFnZUluZGV4IC0gMSA8IDIpIHtcclxuICAgICAgc3RhcnRpbmdQYWdlVG9EaXNwbGF5ID0gdG90YWxQYWdlQ291bnQgLSA1O1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzdGFydGluZ1BhZ2VUb0Rpc3BsYXkgPCAwKSB7XHJcbiAgICAgIHN0YXJ0aW5nUGFnZVRvRGlzcGxheSA9IDA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3RhcnRpbmdQYWdlVG9EaXNwbGF5O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2lidCBkZW4gbGV0enRlbiBTZWl0ZW5pbmRleCB6dXLDvGNrLlxyXG4gICAqIEBwYXJhbSB0b3RhbFBhZ2VDb3VudCBUb3RhbCBBbnphaGwgU2VpdGVuXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGdldEVuZFBhZ2VJbmRleCh0b3RhbFBhZ2VDb3VudDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIGxldCBlbmRpbmdQYWdlVG9EaXNwbGF5ID0gdGhpcy5hY3RpdmVQYWdlSW5kZXggKyAyO1xyXG4gICAgY29uc3QgbWF4RW5kaW5nUGFnZUluZGV4ID0gNCA+IHRvdGFsUGFnZUNvdW50IC0gMSA/IHRvdGFsUGFnZUNvdW50IC0gMSA6IDQ7XHJcblxyXG4gICAgaWYgKGVuZGluZ1BhZ2VUb0Rpc3BsYXkgPiB0b3RhbFBhZ2VDb3VudCAtIDEpIHtcclxuICAgICAgZW5kaW5nUGFnZVRvRGlzcGxheSA9IHRvdGFsUGFnZUNvdW50IC0gMTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5hY3RpdmVQYWdlSW5kZXggPCAyKSB7XHJcbiAgICAgIGVuZGluZ1BhZ2VUb0Rpc3BsYXkgPSBtYXhFbmRpbmdQYWdlSW5kZXg7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZW5kaW5nUGFnZVRvRGlzcGxheTtcclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gUHVibGljIE1ldGhvZHNcclxuXHJcbiAgLyoqXHJcbiAgICogQW5kZXJ0IGRpZSBTZWl0ZSBhdWYgZGVuIG5ldWVuIEluZGV4XHJcbiAgICogQHBhcmFtIG5ld1BhZ2VJbmRleCBTZWl0ZW4gSW5kZXguIERpZXMgZW50c3ByaWNodCBkZXIgU2VpdGVuemFobCAtIDEuXHJcbiAgICovXHJcbiAgcHVibGljIGNoYW5nZVBhZ2UobmV3UGFnZUluZGV4OiBudW1iZXIpIHtcclxuICAgIGlmICh0aGlzLmFjdGl2ZVBhZ2VJbmRleCAhPT0gbmV3UGFnZUluZGV4KSB7XHJcbiAgICAgIHRoaXMucGFnZWQobmV3UGFnZUluZGV4KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIMOEbmRlcnQgZGllIFNlaXRlbmdyw7Zzc2UgaW0gUGFnZXJcclxuICAgKiBAcGFyYW0gbmV3U2l6ZSBOZXVlIEFuemFobCBFbGVtZW50ZSBwcm8gU2VpdGVcclxuICAgKi9cclxuICBwdWJsaWMgY2hhbmdlUGFnZVNpemUobmV3U2l6ZTogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBwYWdlckRhdGE6IFBhZ2VyUmVxdWVzdCA9IG5ldyBQYWdlclJlcXVlc3QoXHJcbiAgICAgIG5ld1NpemUsXHJcbiAgICAgIHRoaXMuYWN0aXZlUGFnZUluZGV4XHJcbiAgICApO1xyXG4gICAgdGhpcy5wYWdpbmcuZW1pdChwYWdlckRhdGEpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGFnaW5nIGF1ZiBuw6RjaHN0ZSBTZWl0ZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBuZXh0UGFnZSgpIHtcclxuICAgIGlmICh0aGlzLmFjdGl2ZVBhZ2VJbmRleCAhPT0gdGhpcy5sYXN0UGFnZUluZGV4KSB7XHJcbiAgICAgIHRoaXMucGFnZWQodGhpcy5hY3RpdmVQYWdlSW5kZXggKyAxKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBhZ2luZyBlaW5lIFNlaXRlIHp1csO8Y2tcclxuICAgKi9cclxuICBwdWJsaWMgcHJldmlvdXNQYWdlKCkge1xyXG4gICAgaWYgKHRoaXMuYWN0aXZlUGFnZUluZGV4ICE9PSB0aGlzLmZpcnN0UGFnZUluZGV4KSB7XHJcbiAgICAgIHRoaXMucGFnZWQodGhpcy5hY3RpdmVQYWdlSW5kZXggLSAxKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBhZ2luZyBhdWYgMS4gU2VpdGVcclxuICAgKi9cclxuICBwdWJsaWMgZmlyc3RQYWdlKCkge1xyXG4gICAgaWYgKHRoaXMuYWN0aXZlUGFnZUluZGV4ICE9PSB0aGlzLmZpcnN0UGFnZUluZGV4KSB7XHJcbiAgICAgIHRoaXMucGFnZWQoMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQYWdpbmcgYXVmIGxldHp0ZXIgU2VpdGVcclxuICAgKi9cclxuICBwdWJsaWMgbGFzdFBhZ2UoKSB7XHJcbiAgICBpZiAodGhpcy5hY3RpdmVQYWdlSW5kZXggIT09IHRoaXMubGFzdFBhZ2VJbmRleCkge1xyXG4gICAgICB0aGlzLnBhZ2VkKHRoaXMubGFzdFBhZ2VJbmRleCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHaWJ0IGRpZSBha3R1ZWxsZSBTZWl0ZW56YWhsIHp1csO8Y2tcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0Q3VycmVudFBhZ2VOdW1iZXIoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmFjdGl2ZVBhZ2VJbmRleCArIDE7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHaWJ0IGRpZSB0b3RhbGUgQW56YWhsIFNlaXRlbiB6dXLDvGNrXHJcbiAgICovXHJcbiAgcHVibGljIGdldFRvdGFsUGFnZU51bWJlcigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMubGFzdFBhZ2VJbmRleCArIDE7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUZXh0IG1pdCBBa3R1ZWxsZXIgU2VpdGUgdW5kIFRvdGFsIFNlaXRlblxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXQgUGFnaW5nVGV4dCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIHRoaXMubG5nUmVzb3VyY2VTZXJ2aWNlLkdldFN0cmluZyh0aGlzLnBhZ2luZ3RleHQsIHtcclxuICAgICAgQ1VSUkVOVFBBR0U6IHRoaXMuZ2V0Q3VycmVudFBhZ2VOdW1iZXIoKSxcclxuICAgICAgVE9UQUxQQUdFUzogdGhpcy5nZXRUb3RhbFBhZ2VOdW1iZXIoKSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUHJvcGVydHkgbWl0IFRleHQgZsO8ciBUb3RhbCBFaW50csOkZ2UgaW4gU2VpdGVcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0IFBhZ2VTaXplVGV4dCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIHRoaXMubG5nUmVzb3VyY2VTZXJ2aWNlLkdldFN0cmluZyh0aGlzLnBhZ2VzaXpldGV4dCk7XHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb25cclxufVxyXG4iXX0=
10
+ */constructor(injector){cov_22wr2lg5mj().f[0]++;cov_22wr2lg5mj().s[0]++;/**
11
+ * Total number of rows
12
+ */this.totalRowCount=0;/**
13
+ * Deactivate page size selection
14
+ */cov_22wr2lg5mj().s[1]++;this.pagesizedisabled=false;/**
15
+ * Text in Page for number of page elements per page. The following interpolation texts are available:
16
+ *
17
+ * {{PAGESIZE}}: Number of elements per page
18
+ */cov_22wr2lg5mj().s[2]++;this.pagesizes='20|50|100';/**
19
+ * Text in Page for number of page elements per page. The following interpolation texts are available:
20
+ *
21
+ * {{PAGESIZE}}: Number of elements per page
22
+ */cov_22wr2lg5mj().s[3]++;this.pagesizetext='';/**
23
+ * Text in pager for 'Page x of y'. The following interpolation texts are available:
24
+ * {{CURRENTPAGE}}: Current page
25
+ * {{TOTALPAGES}}: Number of pages
26
+ */cov_22wr2lg5mj().s[4]++;this.pagingtext='';/**
27
+ * Event when the page is changed in the grid. The new PageIndex is given as a parameter.
28
+ */cov_22wr2lg5mj().s[5]++;this.paging=new EventEmitter();/**
29
+ * Active page index
30
+ */cov_22wr2lg5mj().s[6]++;this.activePageIndex=0;/**
31
+ * First page index
32
+ */cov_22wr2lg5mj().s[7]++;this.firstPageIndex=0;/**
33
+ * Last page index
34
+ */cov_22wr2lg5mj().s[8]++;this.lastPageIndex=0;/**
35
+ * Number of elements per page
36
+ */cov_22wr2lg5mj().s[9]++;this.pageSize=20;/**
37
+ * Item for each paging element (page number)
38
+ */cov_22wr2lg5mj().s[10]++;this.paginators=[];cov_22wr2lg5mj().s[11]++;this.validationKeyService=injector.get(SACVALIDATIONKEY_SERVICE,new SacDefaultValidationKeyService());// Set Default Values from Injector
39
+ cov_22wr2lg5mj().s[12]++;this.pagesizetext=this.validationKeyService.PagingEntries;cov_22wr2lg5mj().s[13]++;this.pagingtext=this.validationKeyService.PagingPageOf;cov_22wr2lg5mj().s[14]++;this.lngResourceService=injector.get(SACLOCALISATION_SERVICE,new SacDefaultLocalisationService(this.validationKeyService));}// #endregion Constructors
40
+ // #region Public Getters And Setters
41
+ /**
42
+ * Property for Pager Data
43
+ */set pagerdata(p){cov_22wr2lg5mj().f[1]++;cov_22wr2lg5mj().s[15]++;if(p!=null){cov_22wr2lg5mj().b[0][0]++;cov_22wr2lg5mj().s[16]++;this.totalRowCount=p.TotalRowCount;cov_22wr2lg5mj().s[17]++;this.activePageIndex=p.CurrentPageIndex;cov_22wr2lg5mj().s[18]++;this.pageSize=p.PageSize;}else{cov_22wr2lg5mj().b[0][1]++;}cov_22wr2lg5mj().s[19]++;this.createPager();}/**
44
+ * Property with text for total entries in page
45
+ */get PageSizeText(){cov_22wr2lg5mj().f[2]++;cov_22wr2lg5mj().s[20]++;return this.lngResourceService.GetString(this.pagesizetext);}/**
46
+ * Text with current page and total pages
47
+ */get PagingText(){cov_22wr2lg5mj().f[3]++;cov_22wr2lg5mj().s[21]++;return this.lngResourceService.GetString(this.pagingtext,{CURRENTPAGE:this.getCurrentPageNumber(),TOTALPAGES:this.getTotalPageNumber()});}/**
48
+ * Returns the page sizes as a number array
49
+ */get getPageSizes(){cov_22wr2lg5mj().f[4]++;cov_22wr2lg5mj().s[22]++;return this.pagesizes.split('|').map(itm=>{cov_22wr2lg5mj().f[5]++;cov_22wr2lg5mj().s[23]++;return Number(itm);});}// #endregion Public Getters And Setters
50
+ // #region Public Methods
51
+ /**
52
+ * Changes the page to the new index
53
+ * @param newPageIndex Page index. This corresponds to the page number - 1.
54
+ */changePage(newPageIndex){cov_22wr2lg5mj().f[6]++;cov_22wr2lg5mj().s[24]++;if(this.activePageIndex!==newPageIndex){cov_22wr2lg5mj().b[1][0]++;cov_22wr2lg5mj().s[25]++;this.paged(newPageIndex);}else{cov_22wr2lg5mj().b[1][1]++;}}/**
55
+ * Changes the page size in the pager
56
+ * @param newSize New number of elements per page
57
+ */changePageSize(newSize){cov_22wr2lg5mj().f[7]++;const pagerData=(cov_22wr2lg5mj().s[26]++,new PagerRequest(newSize,this.activePageIndex));cov_22wr2lg5mj().s[27]++;this.paging.emit(pagerData);}/**
58
+ *Switch to 1st page
59
+ */firstPage(){cov_22wr2lg5mj().f[8]++;cov_22wr2lg5mj().s[28]++;if(this.activePageIndex!==this.firstPageIndex){cov_22wr2lg5mj().b[2][0]++;cov_22wr2lg5mj().s[29]++;this.paged(0);}else{cov_22wr2lg5mj().b[2][1]++;}}/**
60
+ * Returns the current page number
61
+ */getCurrentPageNumber(){cov_22wr2lg5mj().f[9]++;cov_22wr2lg5mj().s[30]++;return this.activePageIndex+1;}/**
62
+ * Returns the total number of pages
63
+ */getTotalPageNumber(){cov_22wr2lg5mj().f[10]++;cov_22wr2lg5mj().s[31]++;return this.lastPageIndex+1;}/**
64
+ * Paging on last page
65
+ */lastPage(){cov_22wr2lg5mj().f[11]++;cov_22wr2lg5mj().s[32]++;if(this.activePageIndex!==this.lastPageIndex){cov_22wr2lg5mj().b[3][0]++;cov_22wr2lg5mj().s[33]++;this.paged(this.lastPageIndex);}else{cov_22wr2lg5mj().b[3][1]++;}}/**
66
+ * Paging to next page
67
+ */nextPage(){cov_22wr2lg5mj().f[12]++;cov_22wr2lg5mj().s[34]++;if(this.activePageIndex!==this.lastPageIndex){cov_22wr2lg5mj().b[4][0]++;cov_22wr2lg5mj().s[35]++;this.paged(this.activePageIndex+1);}else{cov_22wr2lg5mj().b[4][1]++;}}/**
68
+ * Paging one page back
69
+ */previousPage(){cov_22wr2lg5mj().f[13]++;cov_22wr2lg5mj().s[36]++;if(this.activePageIndex!==this.firstPageIndex){cov_22wr2lg5mj().b[5][0]++;cov_22wr2lg5mj().s[37]++;this.paged(this.activePageIndex-1);}else{cov_22wr2lg5mj().b[5][1]++;}}// #endregion Public Methods
70
+ // #region Protected Methods
71
+ /**
72
+ * Generates the pager data
73
+ */createPager(){cov_22wr2lg5mj().f[14]++;cov_22wr2lg5mj().s[38]++;this.paginators=[];cov_22wr2lg5mj().s[39]++;if(this.totalRowCount>0){cov_22wr2lg5mj().b[6][0]++;let totalPageCount=(cov_22wr2lg5mj().s[40]++,Math.ceil(this.totalRowCount/this.pageSize));// PageCount auf 1 stellen, wenn keine Records vorhanden sind.
74
+ cov_22wr2lg5mj().s[41]++;if(totalPageCount===0){cov_22wr2lg5mj().b[7][0]++;cov_22wr2lg5mj().s[42]++;totalPageCount=1;}else{cov_22wr2lg5mj().b[7][1]++;}// PageIndex berechnen
75
+ cov_22wr2lg5mj().s[43]++;this.lastPageIndex=totalPageCount-1;const startPageIndex=(cov_22wr2lg5mj().s[44]++,this.getStartPageIndex(totalPageCount));const endPageIndex=(cov_22wr2lg5mj().s[45]++,this.getEndPageIndex(totalPageCount));// Index Fix wenn Aktive Seite grösser als letze Seite
76
+ cov_22wr2lg5mj().s[46]++;if(this.activePageIndex>this.lastPageIndex){cov_22wr2lg5mj().b[8][0]++;cov_22wr2lg5mj().s[47]++;this.activePageIndex=this.lastPageIndex;}else{cov_22wr2lg5mj().b[8][1]++;}cov_22wr2lg5mj().s[48]++;for(let i=(cov_22wr2lg5mj().s[49]++,startPageIndex);i<=endPageIndex;i++){cov_22wr2lg5mj().s[50]++;this.paginators.push(i);}}else{cov_22wr2lg5mj().b[6][1]++;cov_22wr2lg5mj().s[51]++;this.paginators.push(0);}}/**
77
+ * Returns the last page index.
78
+ * @param totalPageCount Total number of pages
79
+ */getEndPageIndex(totalPageCount){cov_22wr2lg5mj().f[15]++;let endingPageToDisplay=(cov_22wr2lg5mj().s[52]++,this.activePageIndex+2);const maxEndingPageIndex=(cov_22wr2lg5mj().s[53]++,4>totalPageCount-1?(cov_22wr2lg5mj().b[9][0]++,totalPageCount-1):(cov_22wr2lg5mj().b[9][1]++,4));cov_22wr2lg5mj().s[54]++;if(endingPageToDisplay>totalPageCount-1){cov_22wr2lg5mj().b[10][0]++;cov_22wr2lg5mj().s[55]++;endingPageToDisplay=totalPageCount-1;}else{cov_22wr2lg5mj().b[10][1]++;cov_22wr2lg5mj().s[56]++;if(this.activePageIndex<2){cov_22wr2lg5mj().b[11][0]++;cov_22wr2lg5mj().s[57]++;endingPageToDisplay=maxEndingPageIndex;}else{cov_22wr2lg5mj().b[11][1]++;}}cov_22wr2lg5mj().s[58]++;return endingPageToDisplay;}/**
80
+ * Returns the start index
81
+ * @param totalPageCount Total number of pages
82
+ */getStartPageIndex(totalPageCount){cov_22wr2lg5mj().f[16]++;let startingPageToDisplay=(cov_22wr2lg5mj().s[59]++,0);cov_22wr2lg5mj().s[60]++;startingPageToDisplay=this.activePageIndex-2;cov_22wr2lg5mj().s[61]++;if(totalPageCount-this.activePageIndex-1<2){cov_22wr2lg5mj().b[12][0]++;cov_22wr2lg5mj().s[62]++;startingPageToDisplay=totalPageCount-5;}else{cov_22wr2lg5mj().b[12][1]++;}cov_22wr2lg5mj().s[63]++;if(startingPageToDisplay<0){cov_22wr2lg5mj().b[13][0]++;cov_22wr2lg5mj().s[64]++;startingPageToDisplay=0;}else{cov_22wr2lg5mj().b[13][1]++;}cov_22wr2lg5mj().s[65]++;return startingPageToDisplay;}/**
83
+ * method triggers the event that paging has taken place
84
+ */paged(newPageIndex){cov_22wr2lg5mj().f[17]++;const pagerData=(cov_22wr2lg5mj().s[66]++,new PagerRequest(this.pageSize,newPageIndex));cov_22wr2lg5mj().s[67]++;this.paging.emit(pagerData);}static{cov_22wr2lg5mj().s[68]++;this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"16.2.12",ngImport:i0,type:SacPagingCommon,deps:[{token:i0.Injector}],target:i0.ɵɵFactoryTarget.Directive});}static{cov_22wr2lg5mj().s[69]++;this.ɵdir=i0.ɵɵngDeclareDirective({minVersion:"14.0.0",version:"16.2.12",type:SacPagingCommon,inputs:{name:"name",pagesizedisabled:"pagesizedisabled",pagesizes:"pagesizes",pagesizetext:"pagesizetext",pagingtext:"pagingtext",pagerdata:"pagerdata"},outputs:{paging:"paging"},ngImport:i0});}}export{SacPagingCommon};cov_22wr2lg5mj().s[70]++;i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"16.2.12",ngImport:i0,type:SacPagingCommon,decorators:[{type:Directive}],ctorParameters:function(){cov_22wr2lg5mj().f[18]++;cov_22wr2lg5mj().s[71]++;return[{type:i0.Injector}];},propDecorators:{name:[{type:Input}],pagesizedisabled:[{type:Input}],pagesizes:[{type:Input}],pagesizetext:[{type:Input}],pagingtext:[{type:Input}],paging:[{type:Output}],pagerdata:[{type:Input}]}});//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2FjLWNvbW1vbi9zcmMvY29udHJvbHMvZ3JpZC9wYWdpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBRVosS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLDZCQUE2QixHQUM5QixNQUFNLHlDQUF5QyxDQUFDO0FBQ2pELE9BQU8sRUFDTCx3QkFBd0IsRUFDeEIsOEJBQThCLEdBQy9CLE1BQU0sMENBQTBDLENBQUM7QUFDbEQsT0FBTyxFQUFhLFlBQVksRUFBRSxNQUFNLFNBQVMsQ0FBQzs7QUFFbEQ7O0dBRUc7QUFDSCxNQUNzQixlQUFlO0lBMkVuQyx3QkFBd0I7SUFFeEIsdUJBQXVCO0lBRXZCOzs7O09BSUc7SUFDSCxZQUFZLFFBQWtCO1FBeEU5Qjs7V0FFRztRQUNPLGtCQUFhLEdBQVcsQ0FBQyxDQUFDO1FBT3BDOztXQUVHO1FBRUkscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBQ3pDOzs7O1dBSUc7UUFFSSxjQUFTLEdBQVcsV0FBVyxDQUFDO1FBQ3ZDOzs7O1dBSUc7UUFFSSxpQkFBWSxHQUFXLEVBQUUsQ0FBQztRQUNqQzs7OztXQUlHO1FBRUksZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUMvQjs7V0FFRztRQUVJLFdBQU0sR0FBK0IsSUFBSSxZQUFZLEVBQWdCLENBQUM7UUFFN0U7O1dBRUc7UUFDSSxvQkFBZSxHQUFXLENBQUMsQ0FBQztRQUNuQzs7V0FFRztRQUNJLG1CQUFjLEdBQVcsQ0FBQyxDQUFDO1FBQ2xDOztXQUVHO1FBQ0ksa0JBQWEsR0FBVyxDQUFDLENBQUM7UUFDakM7O1dBRUc7UUFDSSxhQUFRLEdBQVcsRUFBRSxDQUFDO1FBQzdCOztXQUVHO1FBQ0ksZUFBVSxHQUFlLEVBQUUsQ0FBQztRQVlq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O0lBQ08sS0FBSyxDQUFDLFlBQW9CO1FBQ2xDLE1BQU0sU0FBUyxHQUFpQixJQUFJLFlBQVksQ0FDOUMsSUFBSSxDQUFDLFFBQVEsRUFDYixZQUFZLENBQ2IsQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlCLENBQUM7K0dBelNtQixlQUFlO21HQUFmLGVBQWU7O1NBQWYsZUFBZTs0RkFBZixlQUFlO2tCQURwQyxTQUFTOytGQXNCRCxJQUFJO3NCQURWLEtBQUs7Z0JBTUMsZ0JBQWdCO3NCQUR0QixLQUFLO2dCQVFDLFNBQVM7c0JBRGYsS0FBSztnQkFRQyxZQUFZO3NCQURsQixLQUFLO2dCQVFDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBTUMsTUFBTTtzQkFEWixNQUFNO2dCQXlESSxTQUFTO3NCQURuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBEaXJlY3RpdmUsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEluamVjdG9yLFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBJU2FjTG9jYWxpc2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVNhY0xvY2FsaXNhdGlvblNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJU2FjVmFsaWRhdGlvbktleVNlcnZpY2UgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lTYWNWYWxpZGF0aW9uS2V5U2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgU0FDTE9DQUxJU0FUSU9OX1NFUlZJQ0UsXHJcbiAgU2FjRGVmYXVsdExvY2FsaXNhdGlvblNlcnZpY2UsXHJcbn0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2FjLWxvY2FsaXNhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBTQUNWQUxJREFUSU9OS0VZX1NFUlZJQ0UsXHJcbiAgU2FjRGVmYXVsdFZhbGlkYXRpb25LZXlTZXJ2aWNlLFxyXG59IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NhYy12YWxpZGF0aW9ua2V5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQYWdlckRhdGEsIFBhZ2VyUmVxdWVzdCB9IGZyb20gJy4vbW9kZWwnO1xyXG5cclxuLyoqXHJcbiAqIEJhc2ljIGNvbXBvbmVudCBmb3IgcGFnaW5nXHJcbiAqL1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNhY1BhZ2luZ0NvbW1vbiB7XHJcbiAgLy8gI3JlZ2lvbiBQcm9wZXJ0aWVzXHJcblxyXG4gIC8qKlxyXG4gICAqIFNlcnZpY2UgdG8gcmVjZWl2ZSBzdGFuZGFyZCB2YWxpZGF0aW9uIG1lc3NhZ2Uga2V5cyBhbmQgdGV4dHNcclxuICAgKi9cclxuICBwcml2YXRlIHZhbGlkYXRpb25LZXlTZXJ2aWNlOiBJU2FjVmFsaWRhdGlvbktleVNlcnZpY2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlcnZpY2UgZm9yIGVycm9yIGxvY2FsaXphdGlvblxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBsbmdSZXNvdXJjZVNlcnZpY2U6IElTYWNMb2NhbGlzYXRpb25TZXJ2aWNlO1xyXG4gIC8qKlxyXG4gICAqIFRvdGFsIG51bWJlciBvZiByb3dzXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHRvdGFsUm93Q291bnQ6IG51bWJlciA9IDA7XHJcblxyXG4gIC8qKlxyXG4gICAqIE5hbWUgb2YgdGhlIGdyaWQuIFVzZWQgZm9yIElEIGFuZCBuYW1lIGRlc2lnbmF0aW9uc1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIG5hbWU6IHN0cmluZztcclxuICAvKipcclxuICAgKiBEZWFjdGl2YXRlIHBhZ2Ugc2l6ZSBzZWxlY3Rpb25cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBwYWdlc2l6ZWRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgLyoqXHJcbiAgICogVGV4dCBpbiBQYWdlIGZvciBudW1iZXIgb2YgcGFnZSBlbGVtZW50cyBwZXIgcGFnZS4gVGhlIGZvbGxvd2luZyBpbnRlcnBvbGF0aW9uIHRleHRzIGFyZSBhdmFpbGFibGU6XHJcbiAgICpcclxuICAgKiB7e1BBR0VTSVpFfX06IE51bWJlciBvZiBlbGVtZW50cyBwZXIgcGFnZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHBhZ2VzaXplczogc3RyaW5nID0gJzIwfDUwfDEwMCc7XHJcbiAgLyoqXHJcbiAgICogVGV4dCBpbiBQYWdlIGZvciBudW1iZXIgb2YgcGFnZSBlbGVtZW50cyBwZXIgcGFnZS4gVGhlIGZvbGxvd2luZyBpbnRlcnBvbGF0aW9uIHRleHRzIGFyZSBhdmFpbGFibGU6XHJcbiAgICpcclxuICAgKiB7e1BBR0VTSVpFfX06IE51bWJlciBvZiBlbGVtZW50cyBwZXIgcGFnZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHBhZ2VzaXpldGV4dDogc3RyaW5nID0gJyc7XHJcbiAgLyoqXHJcbiAgICogVGV4dCBpbiBwYWdlciBmb3IgJ1BhZ2UgeCBvZiB5Jy4gVGhlIGZvbGxvd2luZyBpbnRlcnBvbGF0aW9uIHRleHRzIGFyZSBhdmFpbGFibGU6XHJcbiAgICoge3tDVVJSRU5UUEFHRX19OiBDdXJyZW50IHBhZ2VcclxuICAgKiB7e1RPVEFMUEFHRVN9fTogTnVtYmVyIG9mIHBhZ2VzXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgcGFnaW5ndGV4dDogc3RyaW5nID0gJyc7XHJcbiAgLyoqXHJcbiAgICogRXZlbnQgd2hlbiB0aGUgcGFnZSBpcyBjaGFuZ2VkIGluIHRoZSBncmlkLiBUaGUgbmV3IFBhZ2VJbmRleCBpcyBnaXZlbiBhcyBhIHBhcmFtZXRlci5cclxuICAgKi9cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcGFnaW5nOiBFdmVudEVtaXR0ZXI8UGFnZXJSZXF1ZXN0PiA9IG5ldyBFdmVudEVtaXR0ZXI8UGFnZXJSZXF1ZXN0PigpO1xyXG5cclxuICAvKipcclxuICAgKiBBY3RpdmUgcGFnZSBpbmRleFxyXG4gICAqL1xyXG4gIHB1YmxpYyBhY3RpdmVQYWdlSW5kZXg6IG51bWJlciA9IDA7XHJcbiAgLyoqXHJcbiAgICogRmlyc3QgcGFnZSBpbmRleFxyXG4gICAqL1xyXG4gIHB1YmxpYyBmaXJzdFBhZ2VJbmRleDogbnVtYmVyID0gMDtcclxuICAvKipcclxuICAgKiBMYXN0IHBhZ2UgaW5kZXhcclxuICAgKi9cclxuICBwdWJsaWMgbGFzdFBhZ2VJbmRleDogbnVtYmVyID0gMDtcclxuICAvKipcclxuICAgKiBOdW1iZXIgb2YgZWxlbWVudHMgcGVyIHBhZ2VcclxuICAgKi9cclxuICBwdWJsaWMgcGFnZVNpemU6IG51bWJlciA9IDIwO1xyXG4gIC8qKlxyXG4gICAqIEl0ZW0gZm9yIGVhY2ggcGFnaW5nIGVsZW1lbnQgKHBhZ2UgbnVtYmVyKVxyXG4gICAqL1xyXG4gIHB1YmxpYyBwYWdpbmF0b3JzOiBBcnJheTxhbnk+ID0gW107XHJcblxyXG4gIC8vICNlbmRyZWdpb24gUHJvcGVydGllc1xyXG5cclxuICAvLyAjcmVnaW9uIENvbnN0cnVjdG9yc1xyXG5cclxuICAvKipcclxuICAgKiBDb25zdHJ1Y3RvclxyXG4gICAqIEBwYXJlbnQgU2FjRm9ybUNvbW1vblxyXG4gICAqIEBpbmplY3RvciBJbmplY3RvclxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZSA9IGluamVjdG9yLmdldChcclxuICAgICAgU0FDVkFMSURBVElPTktFWV9TRVJWSUNFLFxyXG4gICAgICBuZXcgU2FjRGVmYXVsdFZhbGlkYXRpb25LZXlTZXJ2aWNlKClcclxuICAgICk7XHJcblxyXG4gICAgLy8gU2V0IERlZmF1bHQgVmFsdWVzIGZyb20gSW5qZWN0b3JcclxuICAgIHRoaXMucGFnZXNpemV0ZXh0ID0gdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5QYWdpbmdFbnRyaWVzO1xyXG4gICAgdGhpcy5wYWdpbmd0ZXh0ID0gdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5QYWdpbmdQYWdlT2Y7XHJcblxyXG4gICAgdGhpcy5sbmdSZXNvdXJjZVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoXHJcbiAgICAgIFNBQ0xPQ0FMSVNBVElPTl9TRVJWSUNFLFxyXG4gICAgICBuZXcgU2FjRGVmYXVsdExvY2FsaXNhdGlvblNlcnZpY2UodGhpcy52YWxpZGF0aW9uS2V5U2VydmljZSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uIENvbnN0cnVjdG9yc1xyXG5cclxuICAvLyAjcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXHJcblxyXG4gIC8qKlxyXG4gICAqIFByb3BlcnR5IGZvciBQYWdlciBEYXRhXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IHBhZ2VyZGF0YShwOiBQYWdlckRhdGEpIHtcclxuICAgIGlmIChwICE9IG51bGwpIHtcclxuICAgICAgdGhpcy50b3RhbFJvd0NvdW50ID0gcC5Ub3RhbFJvd0NvdW50O1xyXG4gICAgICB0aGlzLmFjdGl2ZVBhZ2VJbmRleCA9IHAuQ3VycmVudFBhZ2VJbmRleDtcclxuICAgICAgdGhpcy5wYWdlU2l6ZSA9IHAuUGFnZVNpemU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jcmVhdGVQYWdlcigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUHJvcGVydHkgd2l0aCB0ZXh0IGZvciB0b3RhbCBlbnRyaWVzIGluIHBhZ2VcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0IFBhZ2VTaXplVGV4dCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIHRoaXMubG5nUmVzb3VyY2VTZXJ2aWNlLkdldFN0cmluZyh0aGlzLnBhZ2VzaXpldGV4dCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUZXh0IHdpdGggY3VycmVudCBwYWdlIGFuZCB0b3RhbCBwYWdlc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXQgUGFnaW5nVGV4dCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIHRoaXMubG5nUmVzb3VyY2VTZXJ2aWNlLkdldFN0cmluZyh0aGlzLnBhZ2luZ3RleHQsIHtcclxuICAgICAgQ1VSUkVOVFBBR0U6IHRoaXMuZ2V0Q3VycmVudFBhZ2VOdW1iZXIoKSxcclxuICAgICAgVE9UQUxQQUdFUzogdGhpcy5nZXRUb3RhbFBhZ2VOdW1iZXIoKSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgcGFnZSBzaXplcyBhcyBhIG51bWJlciBhcnJheVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXQgZ2V0UGFnZVNpemVzKCk6IG51bWJlcltdIHtcclxuICAgIHJldHVybiB0aGlzLnBhZ2VzaXplcy5zcGxpdCgnfCcpLm1hcCgoaXRtKSA9PiBOdW1iZXIoaXRtKSk7XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXHJcblxyXG4gIC8vICNyZWdpb24gUHVibGljIE1ldGhvZHNcclxuXHJcbiAgLyoqXHJcbiAgICogQ2hhbmdlcyB0aGUgcGFnZSB0byB0aGUgbmV3IGluZGV4XHJcbiAgICogQHBhcmFtIG5ld1BhZ2VJbmRleCBQYWdlIGluZGV4LiBUaGlzIGNvcnJlc3BvbmRzIHRvIHRoZSBwYWdlIG51bWJlciAtIDEuXHJcbiAgICovXHJcbiAgcHVibGljIGNoYW5nZVBhZ2UobmV3UGFnZUluZGV4OiBudW1iZXIpIHtcclxuICAgIGlmICh0aGlzLmFjdGl2ZVBhZ2VJbmRleCAhPT0gbmV3UGFnZUluZGV4KSB7XHJcbiAgICAgIHRoaXMucGFnZWQobmV3UGFnZUluZGV4KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoYW5nZXMgdGhlIHBhZ2Ugc2l6ZSBpbiB0aGUgcGFnZXJcclxuICAgKiBAcGFyYW0gbmV3U2l6ZSBOZXcgbnVtYmVyIG9mIGVsZW1lbnRzIHBlciBwYWdlXHJcbiAgICovXHJcbiAgcHVibGljIGNoYW5nZVBhZ2VTaXplKG5ld1NpemU6IG51bWJlcikge1xyXG4gICAgY29uc3QgcGFnZXJEYXRhOiBQYWdlclJlcXVlc3QgPSBuZXcgUGFnZXJSZXF1ZXN0KFxyXG4gICAgICBuZXdTaXplLFxyXG4gICAgICB0aGlzLmFjdGl2ZVBhZ2VJbmRleFxyXG4gICAgKTtcclxuICAgIHRoaXMucGFnaW5nLmVtaXQocGFnZXJEYXRhKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqU3dpdGNoIHRvIDFzdCBwYWdlXHJcbiAgICovXHJcbiAgcHVibGljIGZpcnN0UGFnZSgpIHtcclxuICAgIGlmICh0aGlzLmFjdGl2ZVBhZ2VJbmRleCAhPT0gdGhpcy5maXJzdFBhZ2VJbmRleCkge1xyXG4gICAgICB0aGlzLnBhZ2VkKDApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgY3VycmVudCBwYWdlIG51bWJlclxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRDdXJyZW50UGFnZU51bWJlcigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlUGFnZUluZGV4ICsgMTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIHRvdGFsIG51bWJlciBvZiBwYWdlc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRUb3RhbFBhZ2VOdW1iZXIoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmxhc3RQYWdlSW5kZXggKyAxO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGFnaW5nIG9uIGxhc3QgcGFnZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBsYXN0UGFnZSgpIHtcclxuICAgIGlmICh0aGlzLmFjdGl2ZVBhZ2VJbmRleCAhPT0gdGhpcy5sYXN0UGFnZUluZGV4KSB7XHJcbiAgICAgIHRoaXMucGFnZWQodGhpcy5sYXN0UGFnZUluZGV4KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBhZ2luZyB0byBuZXh0IHBhZ2VcclxuICAgKi9cclxuICBwdWJsaWMgbmV4dFBhZ2UoKSB7XHJcbiAgICBpZiAodGhpcy5hY3RpdmVQYWdlSW5kZXggIT09IHRoaXMubGFzdFBhZ2VJbmRleCkge1xyXG4gICAgICB0aGlzLnBhZ2VkKHRoaXMuYWN0aXZlUGFnZUluZGV4ICsgMSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQYWdpbmcgb25lIHBhZ2UgYmFja1xyXG4gICAqL1xyXG4gIHB1YmxpYyBwcmV2aW91c1BhZ2UoKSB7XHJcbiAgICBpZiAodGhpcy5hY3RpdmVQYWdlSW5kZXggIT09IHRoaXMuZmlyc3RQYWdlSW5kZXgpIHtcclxuICAgICAgdGhpcy5wYWdlZCh0aGlzLmFjdGl2ZVBhZ2VJbmRleCAtIDEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgTWV0aG9kc1xyXG5cclxuICAvLyAjcmVnaW9uIFByb3RlY3RlZCBNZXRob2RzXHJcblxyXG4gIC8qKlxyXG4gICAqIEdlbmVyYXRlcyB0aGUgcGFnZXIgZGF0YVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBjcmVhdGVQYWdlcigpIHtcclxuICAgIHRoaXMucGFnaW5hdG9ycyA9IFtdO1xyXG5cclxuICAgIGlmICh0aGlzLnRvdGFsUm93Q291bnQgPiAwKSB7XHJcbiAgICAgIGxldCB0b3RhbFBhZ2VDb3VudCA9IE1hdGguY2VpbCh0aGlzLnRvdGFsUm93Q291bnQgLyB0aGlzLnBhZ2VTaXplKTtcclxuXHJcbiAgICAgIC8vIFBhZ2VDb3VudCBhdWYgMSBzdGVsbGVuLCB3ZW5uIGtlaW5lIFJlY29yZHMgdm9yaGFuZGVuIHNpbmQuXHJcbiAgICAgIGlmICh0b3RhbFBhZ2VDb3VudCA9PT0gMCkge1xyXG4gICAgICAgIHRvdGFsUGFnZUNvdW50ID0gMTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gUGFnZUluZGV4IGJlcmVjaG5lblxyXG4gICAgICB0aGlzLmxhc3RQYWdlSW5kZXggPSB0b3RhbFBhZ2VDb3VudCAtIDE7XHJcbiAgICAgIGNvbnN0IHN0YXJ0UGFnZUluZGV4ID0gdGhpcy5nZXRTdGFydFBhZ2VJbmRleCh0b3RhbFBhZ2VDb3VudCk7XHJcbiAgICAgIGNvbnN0IGVuZFBhZ2VJbmRleCA9IHRoaXMuZ2V0RW5kUGFnZUluZGV4KHRvdGFsUGFnZUNvdW50KTtcclxuXHJcbiAgICAgIC8vIEluZGV4IEZpeCB3ZW5uIEFrdGl2ZSBTZWl0ZSBncsO2c3NlciBhbHMgbGV0emUgU2VpdGVcclxuICAgICAgaWYgKHRoaXMuYWN0aXZlUGFnZUluZGV4ID4gdGhpcy5sYXN0UGFnZUluZGV4KSB7XHJcbiAgICAgICAgdGhpcy5hY3RpdmVQYWdlSW5kZXggPSB0aGlzLmxhc3RQYWdlSW5kZXg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGZvciAobGV0IGkgPSBzdGFydFBhZ2VJbmRleDsgaSA8PSBlbmRQYWdlSW5kZXg7IGkrKykge1xyXG4gICAgICAgIHRoaXMucGFnaW5hdG9ycy5wdXNoKGkpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnBhZ2luYXRvcnMucHVzaCgwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIGxhc3QgcGFnZSBpbmRleC5cclxuICAgKiBAcGFyYW0gdG90YWxQYWdlQ291bnQgVG90YWwgbnVtYmVyIG9mIHBhZ2VzXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGdldEVuZFBhZ2VJbmRleCh0b3RhbFBhZ2VDb3VudDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIGxldCBlbmRpbmdQYWdlVG9EaXNwbGF5ID0gdGhpcy5hY3RpdmVQYWdlSW5kZXggKyAyO1xyXG4gICAgY29uc3QgbWF4RW5kaW5nUGFnZUluZGV4ID0gNCA+IHRvdGFsUGFnZUNvdW50IC0gMSA/IHRvdGFsUGFnZUNvdW50IC0gMSA6IDQ7XHJcblxyXG4gICAgaWYgKGVuZGluZ1BhZ2VUb0Rpc3BsYXkgPiB0b3RhbFBhZ2VDb3VudCAtIDEpIHtcclxuICAgICAgZW5kaW5nUGFnZVRvRGlzcGxheSA9IHRvdGFsUGFnZUNvdW50IC0gMTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5hY3RpdmVQYWdlSW5kZXggPCAyKSB7XHJcbiAgICAgIGVuZGluZ1BhZ2VUb0Rpc3BsYXkgPSBtYXhFbmRpbmdQYWdlSW5kZXg7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZW5kaW5nUGFnZVRvRGlzcGxheTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIHN0YXJ0IGluZGV4XHJcbiAgICogQHBhcmFtIHRvdGFsUGFnZUNvdW50IFRvdGFsIG51bWJlciBvZiBwYWdlc1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBnZXRTdGFydFBhZ2VJbmRleCh0b3RhbFBhZ2VDb3VudDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIGxldCBzdGFydGluZ1BhZ2VUb0Rpc3BsYXk6IG51bWJlciA9IDA7XHJcbiAgICBzdGFydGluZ1BhZ2VUb0Rpc3BsYXkgPSB0aGlzLmFjdGl2ZVBhZ2VJbmRleCAtIDI7XHJcblxyXG4gICAgaWYgKHRvdGFsUGFnZUNvdW50IC0gdGhpcy5hY3RpdmVQYWdlSW5kZXggLSAxIDwgMikge1xyXG4gICAgICBzdGFydGluZ1BhZ2VUb0Rpc3BsYXkgPSB0b3RhbFBhZ2VDb3VudCAtIDU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHN0YXJ0aW5nUGFnZVRvRGlzcGxheSA8IDApIHtcclxuICAgICAgc3RhcnRpbmdQYWdlVG9EaXNwbGF5ID0gMDtcclxuICAgIH1cclxuICAgIHJldHVybiBzdGFydGluZ1BhZ2VUb0Rpc3BsYXk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBtZXRob2QgdHJpZ2dlcnMgdGhlIGV2ZW50IHRoYXQgcGFnaW5nIGhhcyB0YWtlbiBwbGFjZVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBwYWdlZChuZXdQYWdlSW5kZXg6IG51bWJlcikge1xyXG4gICAgY29uc3QgcGFnZXJEYXRhOiBQYWdlclJlcXVlc3QgPSBuZXcgUGFnZXJSZXF1ZXN0KFxyXG4gICAgICB0aGlzLnBhZ2VTaXplLFxyXG4gICAgICBuZXdQYWdlSW5kZXhcclxuICAgICk7XHJcbiAgICB0aGlzLnBhZ2luZy5lbWl0KHBhZ2VyRGF0YSk7XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uIFByb3RlY3RlZCBNZXRob2RzXHJcbn1cclxuIl19
85
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb3ZfMjJ3cjJsZzVtaiIsImFjdHVhbENvdmVyYWdlIiwiRGlyZWN0aXZlIiwiRXZlbnRFbWl0dGVyIiwiSW5wdXQiLCJPdXRwdXQiLCJTQUNMT0NBTElTQVRJT05fU0VSVklDRSIsIlNhY0RlZmF1bHRMb2NhbGlzYXRpb25TZXJ2aWNlIiwiU0FDVkFMSURBVElPTktFWV9TRVJWSUNFIiwiU2FjRGVmYXVsdFZhbGlkYXRpb25LZXlTZXJ2aWNlIiwiUGFnZXJSZXF1ZXN0IiwiU2FjUGFnaW5nQ29tbW9uIiwiY29uc3RydWN0b3IiLCJpbmplY3RvciIsImYiLCJzIiwidG90YWxSb3dDb3VudCIsInBhZ2VzaXplZGlzYWJsZWQiLCJwYWdlc2l6ZXMiLCJwYWdlc2l6ZXRleHQiLCJwYWdpbmd0ZXh0IiwicGFnaW5nIiwiYWN0aXZlUGFnZUluZGV4IiwiZmlyc3RQYWdlSW5kZXgiLCJsYXN0UGFnZUluZGV4IiwicGFnZVNpemUiLCJwYWdpbmF0b3JzIiwidmFsaWRhdGlvbktleVNlcnZpY2UiLCJnZXQiLCJQYWdpbmdFbnRyaWVzIiwiUGFnaW5nUGFnZU9mIiwibG5nUmVzb3VyY2VTZXJ2aWNlIiwicGFnZXJkYXRhIiwicCIsImIiLCJUb3RhbFJvd0NvdW50IiwiQ3VycmVudFBhZ2VJbmRleCIsIlBhZ2VTaXplIiwiY3JlYXRlUGFnZXIiLCJQYWdlU2l6ZVRleHQiLCJHZXRTdHJpbmciLCJQYWdpbmdUZXh0IiwiQ1VSUkVOVFBBR0UiLCJnZXRDdXJyZW50UGFnZU51bWJlciIsIlRPVEFMUEFHRVMiLCJnZXRUb3RhbFBhZ2VOdW1iZXIiLCJnZXRQYWdlU2l6ZXMiLCJzcGxpdCIsIm1hcCIsIml0bSIsIk51bWJlciIsImNoYW5nZVBhZ2UiLCJuZXdQYWdlSW5kZXgiLCJwYWdlZCIsImNoYW5nZVBhZ2VTaXplIiwibmV3U2l6ZSIsInBhZ2VyRGF0YSIsImVtaXQiLCJmaXJzdFBhZ2UiLCJsYXN0UGFnZSIsIm5leHRQYWdlIiwicHJldmlvdXNQYWdlIiwidG90YWxQYWdlQ291bnQiLCJNYXRoIiwiY2VpbCIsInN0YXJ0UGFnZUluZGV4IiwiZ2V0U3RhcnRQYWdlSW5kZXgiLCJlbmRQYWdlSW5kZXgiLCJnZXRFbmRQYWdlSW5kZXgiLCJpIiwicHVzaCIsImVuZGluZ1BhZ2VUb0Rpc3BsYXkiLCJtYXhFbmRpbmdQYWdlSW5kZXgiLCJzdGFydGluZ1BhZ2VUb0Rpc3BsYXkiLCJkZXBzIiwidG9rZW4iLCJpMCIsIkluamVjdG9yIiwidGFyZ2V0IiwiybXJtUZhY3RvcnlUYXJnZXQiLCJpbnB1dHMiLCJuYW1lIiwib3V0cHV0cyIsIm5nSW1wb3J0IiwiZGVjb3JhdG9ycyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NhYy1jb21tb24vc3JjL2NvbnRyb2xzL2dyaWQvcGFnaW5nLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgRGlyZWN0aXZlLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbmplY3RvcixcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSVNhY0xvY2FsaXNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lTYWNMb2NhbGlzYXRpb25TZXJ2aWNlJztcclxuaW1wb3J0IHsgSVNhY1ZhbGlkYXRpb25LZXlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JU2FjVmFsaWRhdGlvbktleVNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gIFNBQ0xPQ0FMSVNBVElPTl9TRVJWSUNFLFxyXG4gIFNhY0RlZmF1bHRMb2NhbGlzYXRpb25TZXJ2aWNlLFxyXG59IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NhYy1sb2NhbGlzYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgU0FDVkFMSURBVElPTktFWV9TRVJWSUNFLFxyXG4gIFNhY0RlZmF1bHRWYWxpZGF0aW9uS2V5U2VydmljZSxcclxufSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zYWMtdmFsaWRhdGlvbmtleS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUGFnZXJEYXRhLCBQYWdlclJlcXVlc3QgfSBmcm9tICcuL21vZGVsJztcclxuXHJcbi8qKlxyXG4gKiBCYXNpYyBjb21wb25lbnQgZm9yIHBhZ2luZ1xyXG4gKi9cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTYWNQYWdpbmdDb21tb24ge1xyXG4gIC8vICNyZWdpb24gUHJvcGVydGllc1xyXG5cclxuICAvKipcclxuICAgKiBTZXJ2aWNlIHRvIHJlY2VpdmUgc3RhbmRhcmQgdmFsaWRhdGlvbiBtZXNzYWdlIGtleXMgYW5kIHRleHRzXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB2YWxpZGF0aW9uS2V5U2VydmljZTogSVNhY1ZhbGlkYXRpb25LZXlTZXJ2aWNlO1xyXG5cclxuICAvKipcclxuICAgKiBTZXJ2aWNlIGZvciBlcnJvciBsb2NhbGl6YXRpb25cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgbG5nUmVzb3VyY2VTZXJ2aWNlOiBJU2FjTG9jYWxpc2F0aW9uU2VydmljZTtcclxuICAvKipcclxuICAgKiBUb3RhbCBudW1iZXIgb2Ygcm93c1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCB0b3RhbFJvd0NvdW50OiBudW1iZXIgPSAwO1xyXG5cclxuICAvKipcclxuICAgKiBOYW1lIG9mIHRoZSBncmlkLiBVc2VkIGZvciBJRCBhbmQgbmFtZSBkZXNpZ25hdGlvbnNcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBuYW1lOiBzdHJpbmc7XHJcbiAgLyoqXHJcbiAgICogRGVhY3RpdmF0ZSBwYWdlIHNpemUgc2VsZWN0aW9uXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgcGFnZXNpemVkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8qKlxyXG4gICAqIFRleHQgaW4gUGFnZSBmb3IgbnVtYmVyIG9mIHBhZ2UgZWxlbWVudHMgcGVyIHBhZ2UuIFRoZSBmb2xsb3dpbmcgaW50ZXJwb2xhdGlvbiB0ZXh0cyBhcmUgYXZhaWxhYmxlOlxyXG4gICAqXHJcbiAgICoge3tQQUdFU0laRX19OiBOdW1iZXIgb2YgZWxlbWVudHMgcGVyIHBhZ2VcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBwYWdlc2l6ZXM6IHN0cmluZyA9ICcyMHw1MHwxMDAnO1xyXG4gIC8qKlxyXG4gICAqIFRleHQgaW4gUGFnZSBmb3IgbnVtYmVyIG9mIHBhZ2UgZWxlbWVudHMgcGVyIHBhZ2UuIFRoZSBmb2xsb3dpbmcgaW50ZXJwb2xhdGlvbiB0ZXh0cyBhcmUgYXZhaWxhYmxlOlxyXG4gICAqXHJcbiAgICoge3tQQUdFU0laRX19OiBOdW1iZXIgb2YgZWxlbWVudHMgcGVyIHBhZ2VcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBwYWdlc2l6ZXRleHQ6IHN0cmluZyA9ICcnO1xyXG4gIC8qKlxyXG4gICAqIFRleHQgaW4gcGFnZXIgZm9yICdQYWdlIHggb2YgeScuIFRoZSBmb2xsb3dpbmcgaW50ZXJwb2xhdGlvbiB0ZXh0cyBhcmUgYXZhaWxhYmxlOlxyXG4gICAqIHt7Q1VSUkVOVFBBR0V9fTogQ3VycmVudCBwYWdlXHJcbiAgICoge3tUT1RBTFBBR0VTfX06IE51bWJlciBvZiBwYWdlc1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHBhZ2luZ3RleHQ6IHN0cmluZyA9ICcnO1xyXG4gIC8qKlxyXG4gICAqIEV2ZW50IHdoZW4gdGhlIHBhZ2UgaXMgY2hhbmdlZCBpbiB0aGUgZ3JpZC4gVGhlIG5ldyBQYWdlSW5kZXggaXMgZ2l2ZW4gYXMgYSBwYXJhbWV0ZXIuXHJcbiAgICovXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHBhZ2luZzogRXZlbnRFbWl0dGVyPFBhZ2VyUmVxdWVzdD4gPSBuZXcgRXZlbnRFbWl0dGVyPFBhZ2VyUmVxdWVzdD4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogQWN0aXZlIHBhZ2UgaW5kZXhcclxuICAgKi9cclxuICBwdWJsaWMgYWN0aXZlUGFnZUluZGV4OiBudW1iZXIgPSAwO1xyXG4gIC8qKlxyXG4gICAqIEZpcnN0IHBhZ2UgaW5kZXhcclxuICAgKi9cclxuICBwdWJsaWMgZmlyc3RQYWdlSW5kZXg6IG51bWJlciA9IDA7XHJcbiAgLyoqXHJcbiAgICogTGFzdCBwYWdlIGluZGV4XHJcbiAgICovXHJcbiAgcHVibGljIGxhc3RQYWdlSW5kZXg6IG51bWJlciA9IDA7XHJcbiAgLyoqXHJcbiAgICogTnVtYmVyIG9mIGVsZW1lbnRzIHBlciBwYWdlXHJcbiAgICovXHJcbiAgcHVibGljIHBhZ2VTaXplOiBudW1iZXIgPSAyMDtcclxuICAvKipcclxuICAgKiBJdGVtIGZvciBlYWNoIHBhZ2luZyBlbGVtZW50IChwYWdlIG51bWJlcilcclxuICAgKi9cclxuICBwdWJsaWMgcGFnaW5hdG9yczogQXJyYXk8YW55PiA9IFtdO1xyXG5cclxuICAvLyAjZW5kcmVnaW9uIFByb3BlcnRpZXNcclxuXHJcbiAgLy8gI3JlZ2lvbiBDb25zdHJ1Y3RvcnNcclxuXHJcbiAgLyoqXHJcbiAgICogQ29uc3RydWN0b3JcclxuICAgKiBAcGFyZW50IFNhY0Zvcm1Db21tb25cclxuICAgKiBAaW5qZWN0b3IgSW5qZWN0b3JcclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuICAgIHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoXHJcbiAgICAgIFNBQ1ZBTElEQVRJT05LRVlfU0VSVklDRSxcclxuICAgICAgbmV3IFNhY0RlZmF1bHRWYWxpZGF0aW9uS2V5U2VydmljZSgpXHJcbiAgICApO1xyXG5cclxuICAgIC8vIFNldCBEZWZhdWx0IFZhbHVlcyBmcm9tIEluamVjdG9yXHJcbiAgICB0aGlzLnBhZ2VzaXpldGV4dCA9IHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuUGFnaW5nRW50cmllcztcclxuICAgIHRoaXMucGFnaW5ndGV4dCA9IHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuUGFnaW5nUGFnZU9mO1xyXG5cclxuICAgIHRoaXMubG5nUmVzb3VyY2VTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KFxyXG4gICAgICBTQUNMT0NBTElTQVRJT05fU0VSVklDRSxcclxuICAgICAgbmV3IFNhY0RlZmF1bHRMb2NhbGlzYXRpb25TZXJ2aWNlKHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiBDb25zdHJ1Y3RvcnNcclxuXHJcbiAgLy8gI3JlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xyXG5cclxuICAvKipcclxuICAgKiBQcm9wZXJ0eSBmb3IgUGFnZXIgRGF0YVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBwYWdlcmRhdGEocDogUGFnZXJEYXRhKSB7XHJcbiAgICBpZiAocCAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMudG90YWxSb3dDb3VudCA9IHAuVG90YWxSb3dDb3VudDtcclxuICAgICAgdGhpcy5hY3RpdmVQYWdlSW5kZXggPSBwLkN1cnJlbnRQYWdlSW5kZXg7XHJcbiAgICAgIHRoaXMucGFnZVNpemUgPSBwLlBhZ2VTaXplO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY3JlYXRlUGFnZXIoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFByb3BlcnR5IHdpdGggdGV4dCBmb3IgdG90YWwgZW50cmllcyBpbiBwYWdlXHJcbiAgICovXHJcbiAgcHVibGljIGdldCBQYWdlU2l6ZVRleHQoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcclxuICAgIHJldHVybiB0aGlzLmxuZ1Jlc291cmNlU2VydmljZS5HZXRTdHJpbmcodGhpcy5wYWdlc2l6ZXRleHQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGV4dCB3aXRoIGN1cnJlbnQgcGFnZSBhbmQgdG90YWwgcGFnZXNcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0IFBhZ2luZ1RleHQoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcclxuICAgIHJldHVybiB0aGlzLmxuZ1Jlc291cmNlU2VydmljZS5HZXRTdHJpbmcodGhpcy5wYWdpbmd0ZXh0LCB7XHJcbiAgICAgIENVUlJFTlRQQUdFOiB0aGlzLmdldEN1cnJlbnRQYWdlTnVtYmVyKCksXHJcbiAgICAgIFRPVEFMUEFHRVM6IHRoaXMuZ2V0VG90YWxQYWdlTnVtYmVyKCksXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIHBhZ2Ugc2l6ZXMgYXMgYSBudW1iZXIgYXJyYXlcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0IGdldFBhZ2VTaXplcygpOiBudW1iZXJbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5wYWdlc2l6ZXMuc3BsaXQoJ3wnKS5tYXAoKGl0bSkgPT4gTnVtYmVyKGl0bSkpO1xyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xyXG5cclxuICAvLyAjcmVnaW9uIFB1YmxpYyBNZXRob2RzXHJcblxyXG4gIC8qKlxyXG4gICAqIENoYW5nZXMgdGhlIHBhZ2UgdG8gdGhlIG5ldyBpbmRleFxyXG4gICAqIEBwYXJhbSBuZXdQYWdlSW5kZXggUGFnZSBpbmRleC4gVGhpcyBjb3JyZXNwb25kcyB0byB0aGUgcGFnZSBudW1iZXIgLSAxLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBjaGFuZ2VQYWdlKG5ld1BhZ2VJbmRleDogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy5hY3RpdmVQYWdlSW5kZXggIT09IG5ld1BhZ2VJbmRleCkge1xyXG4gICAgICB0aGlzLnBhZ2VkKG5ld1BhZ2VJbmRleCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGFuZ2VzIHRoZSBwYWdlIHNpemUgaW4gdGhlIHBhZ2VyXHJcbiAgICogQHBhcmFtIG5ld1NpemUgTmV3IG51bWJlciBvZiBlbGVtZW50cyBwZXIgcGFnZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBjaGFuZ2VQYWdlU2l6ZShuZXdTaXplOiBudW1iZXIpIHtcclxuICAgIGNvbnN0IHBhZ2VyRGF0YTogUGFnZXJSZXF1ZXN0ID0gbmV3IFBhZ2VyUmVxdWVzdChcclxuICAgICAgbmV3U2l6ZSxcclxuICAgICAgdGhpcy5hY3RpdmVQYWdlSW5kZXhcclxuICAgICk7XHJcbiAgICB0aGlzLnBhZ2luZy5lbWl0KHBhZ2VyRGF0YSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKlN3aXRjaCB0byAxc3QgcGFnZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBmaXJzdFBhZ2UoKSB7XHJcbiAgICBpZiAodGhpcy5hY3RpdmVQYWdlSW5kZXggIT09IHRoaXMuZmlyc3RQYWdlSW5kZXgpIHtcclxuICAgICAgdGhpcy5wYWdlZCgwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIGN1cnJlbnQgcGFnZSBudW1iZXJcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0Q3VycmVudFBhZ2VOdW1iZXIoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmFjdGl2ZVBhZ2VJbmRleCArIDE7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSB0b3RhbCBudW1iZXIgb2YgcGFnZXNcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0VG90YWxQYWdlTnVtYmVyKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5sYXN0UGFnZUluZGV4ICsgMTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBhZ2luZyBvbiBsYXN0IHBhZ2VcclxuICAgKi9cclxuICBwdWJsaWMgbGFzdFBhZ2UoKSB7XHJcbiAgICBpZiAodGhpcy5hY3RpdmVQYWdlSW5kZXggIT09IHRoaXMubGFzdFBhZ2VJbmRleCkge1xyXG4gICAgICB0aGlzLnBhZ2VkKHRoaXMubGFzdFBhZ2VJbmRleCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQYWdpbmcgdG8gbmV4dCBwYWdlXHJcbiAgICovXHJcbiAgcHVibGljIG5leHRQYWdlKCkge1xyXG4gICAgaWYgKHRoaXMuYWN0aXZlUGFnZUluZGV4ICE9PSB0aGlzLmxhc3RQYWdlSW5kZXgpIHtcclxuICAgICAgdGhpcy5wYWdlZCh0aGlzLmFjdGl2ZVBhZ2VJbmRleCArIDEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGFnaW5nIG9uZSBwYWdlIGJhY2tcclxuICAgKi9cclxuICBwdWJsaWMgcHJldmlvdXNQYWdlKCkge1xyXG4gICAgaWYgKHRoaXMuYWN0aXZlUGFnZUluZGV4ICE9PSB0aGlzLmZpcnN0UGFnZUluZGV4KSB7XHJcbiAgICAgIHRoaXMucGFnZWQodGhpcy5hY3RpdmVQYWdlSW5kZXggLSAxKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vICNlbmRyZWdpb24gUHVibGljIE1ldGhvZHNcclxuXHJcbiAgLy8gI3JlZ2lvbiBQcm90ZWN0ZWQgTWV0aG9kc1xyXG5cclxuICAvKipcclxuICAgKiBHZW5lcmF0ZXMgdGhlIHBhZ2VyIGRhdGFcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgY3JlYXRlUGFnZXIoKSB7XHJcbiAgICB0aGlzLnBhZ2luYXRvcnMgPSBbXTtcclxuXHJcbiAgICBpZiAodGhpcy50b3RhbFJvd0NvdW50ID4gMCkge1xyXG4gICAgICBsZXQgdG90YWxQYWdlQ291bnQgPSBNYXRoLmNlaWwodGhpcy50b3RhbFJvd0NvdW50IC8gdGhpcy5wYWdlU2l6ZSk7XHJcblxyXG4gICAgICAvLyBQYWdlQ291bnQgYXVmIDEgc3RlbGxlbiwgd2VubiBrZWluZSBSZWNvcmRzIHZvcmhhbmRlbiBzaW5kLlxyXG4gICAgICBpZiAodG90YWxQYWdlQ291bnQgPT09IDApIHtcclxuICAgICAgICB0b3RhbFBhZ2VDb3VudCA9IDE7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFBhZ2VJbmRleCBiZXJlY2huZW5cclxuICAgICAgdGhpcy5sYXN0UGFnZUluZGV4ID0gdG90YWxQYWdlQ291bnQgLSAxO1xyXG4gICAgICBjb25zdCBzdGFydFBhZ2VJbmRleCA9IHRoaXMuZ2V0U3RhcnRQYWdlSW5kZXgodG90YWxQYWdlQ291bnQpO1xyXG4gICAgICBjb25zdCBlbmRQYWdlSW5kZXggPSB0aGlzLmdldEVuZFBhZ2VJbmRleCh0b3RhbFBhZ2VDb3VudCk7XHJcblxyXG4gICAgICAvLyBJbmRleCBGaXggd2VubiBBa3RpdmUgU2VpdGUgZ3LDtnNzZXIgYWxzIGxldHplIFNlaXRlXHJcbiAgICAgIGlmICh0aGlzLmFjdGl2ZVBhZ2VJbmRleCA+IHRoaXMubGFzdFBhZ2VJbmRleCkge1xyXG4gICAgICAgIHRoaXMuYWN0aXZlUGFnZUluZGV4ID0gdGhpcy5sYXN0UGFnZUluZGV4O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBmb3IgKGxldCBpID0gc3RhcnRQYWdlSW5kZXg7IGkgPD0gZW5kUGFnZUluZGV4OyBpKyspIHtcclxuICAgICAgICB0aGlzLnBhZ2luYXRvcnMucHVzaChpKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5wYWdpbmF0b3JzLnB1c2goMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBsYXN0IHBhZ2UgaW5kZXguXHJcbiAgICogQHBhcmFtIHRvdGFsUGFnZUNvdW50IFRvdGFsIG51bWJlciBvZiBwYWdlc1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBnZXRFbmRQYWdlSW5kZXgodG90YWxQYWdlQ291bnQ6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICBsZXQgZW5kaW5nUGFnZVRvRGlzcGxheSA9IHRoaXMuYWN0aXZlUGFnZUluZGV4ICsgMjtcclxuICAgIGNvbnN0IG1heEVuZGluZ1BhZ2VJbmRleCA9IDQgPiB0b3RhbFBhZ2VDb3VudCAtIDEgPyB0b3RhbFBhZ2VDb3VudCAtIDEgOiA0O1xyXG5cclxuICAgIGlmIChlbmRpbmdQYWdlVG9EaXNwbGF5ID4gdG90YWxQYWdlQ291bnQgLSAxKSB7XHJcbiAgICAgIGVuZGluZ1BhZ2VUb0Rpc3BsYXkgPSB0b3RhbFBhZ2VDb3VudCAtIDE7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuYWN0aXZlUGFnZUluZGV4IDwgMikge1xyXG4gICAgICBlbmRpbmdQYWdlVG9EaXNwbGF5ID0gbWF4RW5kaW5nUGFnZUluZGV4O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGVuZGluZ1BhZ2VUb0Rpc3BsYXk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBzdGFydCBpbmRleFxyXG4gICAqIEBwYXJhbSB0b3RhbFBhZ2VDb3VudCBUb3RhbCBudW1iZXIgb2YgcGFnZXNcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZ2V0U3RhcnRQYWdlSW5kZXgodG90YWxQYWdlQ291bnQ6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICBsZXQgc3RhcnRpbmdQYWdlVG9EaXNwbGF5OiBudW1iZXIgPSAwO1xyXG4gICAgc3RhcnRpbmdQYWdlVG9EaXNwbGF5ID0gdGhpcy5hY3RpdmVQYWdlSW5kZXggLSAyO1xyXG5cclxuICAgIGlmICh0b3RhbFBhZ2VDb3VudCAtIHRoaXMuYWN0aXZlUGFnZUluZGV4IC0gMSA8IDIpIHtcclxuICAgICAgc3RhcnRpbmdQYWdlVG9EaXNwbGF5ID0gdG90YWxQYWdlQ291bnQgLSA1O1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzdGFydGluZ1BhZ2VUb0Rpc3BsYXkgPCAwKSB7XHJcbiAgICAgIHN0YXJ0aW5nUGFnZVRvRGlzcGxheSA9IDA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3RhcnRpbmdQYWdlVG9EaXNwbGF5O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogbWV0aG9kIHRyaWdnZXJzIHRoZSBldmVudCB0aGF0IHBhZ2luZyBoYXMgdGFrZW4gcGxhY2VcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgcGFnZWQobmV3UGFnZUluZGV4OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IHBhZ2VyRGF0YTogUGFnZXJSZXF1ZXN0ID0gbmV3IFBhZ2VyUmVxdWVzdChcclxuICAgICAgdGhpcy5wYWdlU2l6ZSxcclxuICAgICAgbmV3UGFnZUluZGV4XHJcbiAgICApO1xyXG4gICAgdGhpcy5wYWdpbmcuZW1pdChwYWdlckRhdGEpO1xyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiBQcm90ZWN0ZWQgTWV0aG9kc1xyXG59XHJcbiJdLCJtYXBwaW5ncyI6IjI3d0JBMkdLO0FBQUFBLGNBQUEsU0FBQUEsQ0FBQSxTQUFBQyxjQUFBLFdBQUFBLGNBQUEsRUFBQUQsY0FBQSxHQTNHTCxPQUNFRSxTQUFTLENBQ1RDLFlBQVksQ0FFWkMsS0FBSyxDQUNMQyxNQUFNLEtBQ0QsZUFBZSxDQUl0QixPQUNFQyx1QkFBdUIsQ0FDdkJDLDZCQUE2QixLQUN4Qix5Q0FBeUMsQ0FDaEQsT0FDRUMsd0JBQXdCLENBQ3hCQyw4QkFBOEIsS0FDekIsMENBQTBDLENBQ2pELE9BQW9CQyxZQUFZLEtBQVEsU0FBUyxDLGlDQUVqRDs7R0FHQSxLQUNzQixDQUFBQyxlQUFlLENBMkVuQztBQUVBO0FBRUE7Ozs7T0FLQUMsWUFBWUMsUUFBa0IsRUFBQWIsY0FBQSxHQUFBYyxDQUFBLE1BQUFkLGNBQUEsR0FBQWUsQ0FBQSxNQXhFOUI7O1dBR1UsS0FBQUMsYUFBYSxDQUFXLENBQUMsQ0FPbkM7O1dBQUFoQixjQUFBLEdBQUFlLENBQUEsTUFJTyxLQUFBRSxnQkFBZ0IsQ0FBWSxLQUFLLENBQ3hDOzs7O1dBQUFqQixjQUFBLEdBQUFlLENBQUEsTUFNTyxLQUFBRyxTQUFTLENBQVcsV0FBVyxDQUN0Qzs7OztXQUFBbEIsY0FBQSxHQUFBZSxDQUFBLE1BTU8sS0FBQUksWUFBWSxDQUFXLEVBQUUsQ0FDaEM7Ozs7V0FBQW5CLGNBQUEsR0FBQWUsQ0FBQSxNQU1PLEtBQUFLLFVBQVUsQ0FBVyxFQUFFLENBQzlCOztXQUFBcEIsY0FBQSxHQUFBZSxDQUFBLE1BSU8sS0FBQU0sTUFBTSxDQUEr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