ngx-techlify-core 11.4.8 → 11.5.2

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 (627) hide show
  1. package/karma.conf.js +44 -0
  2. package/ng-package.json +27 -0
  3. package/package.json +29 -37
  4. package/src/lib/action-popup/action-popup.component.html +21 -0
  5. package/src/lib/action-popup/action-popup.component.scss +0 -0
  6. package/src/lib/action-popup/action-popup.component.spec.ts +25 -0
  7. package/src/lib/action-popup/action-popup.component.ts +31 -0
  8. package/{lib/action-popup/action-popup.model.d.ts → src/lib/action-popup/action-popup.model.ts} +2 -2
  9. package/src/lib/action-popup/action-popup.module.ts +23 -0
  10. package/{lib/action-popup/index.d.ts → src/lib/action-popup/index.ts} +1 -1
  11. package/src/lib/audit-log/audit-log-for-model/audit-log-for-model-routing.module.ts +10 -0
  12. package/src/lib/audit-log/audit-log-for-model/audit-log-for-model.component.html +9 -0
  13. package/src/lib/audit-log/audit-log-for-model/audit-log-for-model.component.scss +0 -0
  14. package/src/lib/audit-log/audit-log-for-model/audit-log-for-model.component.spec.ts +25 -0
  15. package/src/lib/audit-log/audit-log-for-model/audit-log-for-model.component.ts +49 -0
  16. package/src/lib/audit-log/audit-log-for-model/audit-log-for-model.module.ts +24 -0
  17. package/src/lib/audit-log/audit-log-list/audit-log-list-routing.module.ts +10 -0
  18. package/src/lib/audit-log/audit-log-list/audit-log-list.component.html +92 -0
  19. package/src/lib/audit-log/audit-log-list/audit-log-list.component.scss +21 -0
  20. package/src/lib/audit-log/audit-log-list/audit-log-list.component.spec.ts +25 -0
  21. package/src/lib/audit-log/audit-log-list/audit-log-list.component.ts +138 -0
  22. package/src/lib/audit-log/audit-log-list/audit-log-list.module.ts +28 -0
  23. package/src/lib/audit-log/audit-log-list-filter/audit-log-list-filter-routing.module.ts +10 -0
  24. package/src/lib/audit-log/audit-log-list-filter/audit-log-list-filter.component.html +49 -0
  25. package/src/lib/audit-log/audit-log-list-filter/audit-log-list-filter.component.scss +0 -0
  26. package/src/lib/audit-log/audit-log-list-filter/audit-log-list-filter.component.spec.ts +26 -0
  27. package/src/lib/audit-log/audit-log-list-filter/audit-log-list-filter.component.ts +74 -0
  28. package/src/lib/audit-log/audit-log-list-filter/audit-log-list-filter.module.ts +24 -0
  29. package/src/lib/audit-log/audit-log-routing.module.ts +18 -0
  30. package/src/lib/audit-log/audit-log-view/audit-log-view-routing.module.ts +10 -0
  31. package/src/lib/audit-log/audit-log-view/audit-log-view.component.html +46 -0
  32. package/src/lib/audit-log/audit-log-view/audit-log-view.component.scss +0 -0
  33. package/src/lib/audit-log/audit-log-view/audit-log-view.component.spec.ts +25 -0
  34. package/src/lib/audit-log/audit-log-view/audit-log-view.component.ts +54 -0
  35. package/src/lib/audit-log/audit-log-view/audit-log-view.module.ts +20 -0
  36. package/src/lib/audit-log/audit-log-view-model/audit-log-view-model-routing.module.ts +10 -0
  37. package/src/lib/audit-log/audit-log-view-model/audit-log-view-model.component.html +38 -0
  38. package/src/lib/audit-log/audit-log-view-model/audit-log-view-model.component.scss +4 -0
  39. package/src/lib/audit-log/audit-log-view-model/audit-log-view-model.component.spec.ts +25 -0
  40. package/src/lib/audit-log/audit-log-view-model/audit-log-view-model.component.ts +53 -0
  41. package/src/lib/audit-log/audit-log-view-model/audit-log-view-model.module.ts +20 -0
  42. package/src/lib/audit-log/audit-log.module.ts +20 -0
  43. package/src/lib/audit-log/audit-logs-view-model/audit-logs-view-model-routing.module.ts +10 -0
  44. package/src/lib/audit-log/audit-logs-view-model/audit-logs-view-model.component.html +4 -0
  45. package/src/lib/audit-log/audit-logs-view-model/audit-logs-view-model.component.scss +4 -0
  46. package/src/lib/audit-log/audit-logs-view-model/audit-logs-view-model.component.spec.ts +25 -0
  47. package/src/lib/audit-log/audit-logs-view-model/audit-logs-view-model.component.ts +28 -0
  48. package/src/lib/audit-log/audit-logs-view-model/audit-logs-view-model.module.ts +20 -0
  49. package/src/lib/base-model/index.ts +3 -0
  50. package/src/lib/base-model/techlify-form-component.class.ts +60 -0
  51. package/src/lib/base-model/techlify-listing-component.class.ts +67 -0
  52. package/src/lib/base-model/techlify-service.class.ts +73 -0
  53. package/src/lib/core/alert.service.ts +32 -0
  54. package/src/lib/core/api-prefix.interceptor.ts +22 -0
  55. package/src/lib/core/authentication.guard.ts +34 -0
  56. package/src/lib/core/authentication.service.ts +53 -0
  57. package/src/lib/core/cache.interceptor.ts +59 -0
  58. package/src/lib/core/config.service.ts +52 -0
  59. package/src/lib/core/core.module.ts +44 -0
  60. package/src/lib/core/credentials.service.ts +91 -0
  61. package/{lib/core/dataManager.service.d.ts → src/lib/core/dataManager.service.ts} +76 -22
  62. package/src/lib/core/error-handler.interceptor.ts +43 -0
  63. package/src/lib/core/error-handler.service.ts +61 -0
  64. package/src/lib/core/filter.service.ts +42 -0
  65. package/src/lib/core/form-validator.service.ts +23 -0
  66. package/src/lib/core/header.interceptor.ts +22 -0
  67. package/src/lib/core/http-cache.service.ts +122 -0
  68. package/src/lib/core/http.service.ts +137 -0
  69. package/{lib/core/index.d.ts → src/lib/core/index.ts} +2 -0
  70. package/src/lib/core/logger.service.ts +113 -0
  71. package/src/lib/core/route-reusable-strategy.ts +36 -0
  72. package/src/lib/core/snack/error-snack.html +8 -0
  73. package/src/lib/core/snack/snack.component.ts +19 -0
  74. package/src/lib/core/snack/snack.module.ts +22 -0
  75. package/src/lib/core/snack/snack.scss +18 -0
  76. package/src/lib/core/snack/success-snack.html +8 -0
  77. package/src/lib/core/storage.service.ts +38 -0
  78. package/src/lib/core/techlify-config.model.ts +32 -0
  79. package/src/lib/core/token.interceptor.ts +25 -0
  80. package/src/lib/data-table/data-table.component.html +139 -0
  81. package/src/lib/data-table/data-table.component.scss +54 -0
  82. package/src/lib/data-table/data-table.component.spec.ts +25 -0
  83. package/src/lib/data-table/data-table.component.ts +232 -0
  84. package/{lib/data-table/data-table.model.d.ts → src/lib/data-table/data-table.model.ts} +9 -6
  85. package/src/lib/data-table/data-table.module.ts +23 -0
  86. package/{lib/data-table/index.d.ts → src/lib/data-table/index.ts} +1 -1
  87. package/src/lib/date-validator.ts +12 -0
  88. package/src/lib/document-viewer/document-viewer.component.css +5 -0
  89. package/src/lib/document-viewer/document-viewer.component.html +19 -0
  90. package/src/lib/document-viewer/document-viewer.component.ts +66 -0
  91. package/src/lib/document-viewer/document-viewer.module.ts +22 -0
  92. package/{lib/document-viewer/index.d.ts → src/lib/document-viewer/index.ts} +1 -1
  93. package/src/lib/document-viewer/viewer-config.model.ts +5 -0
  94. package/src/lib/email-subscription/email-subscription-for-user/email-subscription-for-user-routing.module.ts +25 -0
  95. package/src/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.component.html +23 -0
  96. package/src/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.component.scss +4 -0
  97. package/src/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.component.spec.ts +25 -0
  98. package/src/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.component.ts +74 -0
  99. package/src/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.module.ts +22 -0
  100. package/{lib/email-subscription/email-subscription-for-user/index.d.ts → src/lib/email-subscription/email-subscription-for-user/index.ts} +0 -0
  101. package/src/lib/email-subscription/email-subscription-routing.module.ts +10 -0
  102. package/src/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form-routing.module.ts +10 -0
  103. package/src/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.component.html +47 -0
  104. package/src/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.component.scss +0 -0
  105. package/src/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.component.spec.ts +25 -0
  106. package/src/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.component.ts +113 -0
  107. package/src/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.module.ts +28 -0
  108. package/{lib/email-subscription/email-subscription-type/email-subscription-type-form/index.d.ts → src/lib/email-subscription/email-subscription-type/email-subscription-type-form/index.ts} +0 -0
  109. package/src/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list-routing.module.ts +29 -0
  110. package/src/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component.html +76 -0
  111. package/src/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component.scss +4 -0
  112. package/src/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component.spec.ts +25 -0
  113. package/src/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component.ts +170 -0
  114. package/src/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.module.ts +26 -0
  115. package/src/lib/email-subscription/email-subscription-type/email-subscription-type-list/index.ts +1 -0
  116. package/src/lib/email-subscription/email-subscription-type/email-subscription-type-routing.module.ts +11 -0
  117. package/src/lib/email-subscription/email-subscription-type/email-subscription-type.module.ts +14 -0
  118. package/src/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form-routing.module.ts +10 -0
  119. package/src/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.component.html +38 -0
  120. package/src/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.component.scss +0 -0
  121. package/src/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.component.spec.ts +25 -0
  122. package/src/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.component.ts +113 -0
  123. package/src/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.module.ts +26 -0
  124. package/{lib/email-subscription/email-subscription-user/email-subscription-user-form/index.d.ts → src/lib/email-subscription/email-subscription-user/email-subscription-user-form/index.ts} +0 -0
  125. package/src/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list-routing.module.ts +27 -0
  126. package/src/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component.html +74 -0
  127. package/src/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component.scss +5 -0
  128. package/src/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component.spec.ts +25 -0
  129. package/src/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component.ts +174 -0
  130. package/src/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.module.ts +28 -0
  131. package/{lib/email-subscription/email-subscription-user/email-subscription-user-list/index.d.ts → src/lib/email-subscription/email-subscription-user/email-subscription-user-list/index.ts} +0 -0
  132. package/src/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter-routing.module.ts +10 -0
  133. package/src/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component.html +21 -0
  134. package/src/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component.scss +0 -0
  135. package/src/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component.spec.ts +25 -0
  136. package/src/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component.ts +56 -0
  137. package/src/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.module.ts +24 -0
  138. package/{lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/index.d.ts → src/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/index.ts} +0 -0
  139. package/src/lib/email-subscription/email-subscription-user/email-subscription-user-routing.module.ts +11 -0
  140. package/src/lib/email-subscription/email-subscription-user/email-subscription-user.module.ts +14 -0
  141. package/src/lib/email-subscription/email-subscription.module.ts +15 -0
  142. package/src/lib/entity-files/entity-file-form/entity-file-form.component.css +0 -0
  143. package/src/lib/entity-files/entity-file-form/entity-file-form.component.html +45 -0
  144. package/src/lib/entity-files/entity-file-form/entity-file-form.component.ts +172 -0
  145. package/src/lib/entity-files/entity-file.service.ts +46 -0
  146. package/src/lib/entity-files/entity-files-view-all.component.css +0 -0
  147. package/src/lib/entity-files/entity-files-view-all.component.html +236 -0
  148. package/src/lib/entity-files/entity-files-view-all.component.ts +325 -0
  149. package/src/lib/entity-files/entity-files-view-all.module.ts +38 -0
  150. package/src/lib/entity-files/index.ts +2 -0
  151. package/src/lib/export-excel/export-excel-button/export-excel-button.component.html +1 -0
  152. package/src/lib/export-excel/export-excel-button/export-excel-button.component.scss +0 -0
  153. package/src/lib/export-excel/export-excel-button/export-excel-button.component.spec.ts +25 -0
  154. package/src/lib/export-excel/export-excel-button/export-excel-button.component.ts +31 -0
  155. package/src/lib/export-excel/export-excel.module.ts +16 -0
  156. package/src/lib/file-dropper/file-dropper.component.html +41 -0
  157. package/src/lib/file-dropper/file-dropper.component.scss +8 -0
  158. package/src/lib/file-dropper/file-dropper.component.ts +139 -0
  159. package/src/lib/file-dropper/file-dropper.model.ts +10 -0
  160. package/src/lib/file-dropper/file-dropper.module.ts +18 -0
  161. package/{lib/file-dropper/index.d.ts → src/lib/file-dropper/index.ts} +1 -1
  162. package/src/lib/import-csv/data-import/data-import.component.html +11 -0
  163. package/src/lib/import-csv/data-import/data-import.component.scss +0 -0
  164. package/src/lib/import-csv/data-import/data-import.component.spec.ts +28 -0
  165. package/src/lib/import-csv/data-import/data-import.component.ts +16 -0
  166. package/src/lib/import-csv/failed-items-list/failed-items-list.component.html +61 -0
  167. package/src/lib/import-csv/failed-items-list/failed-items-list.component.scss +0 -0
  168. package/src/lib/import-csv/failed-items-list/failed-items-list.component.spec.ts +28 -0
  169. package/src/lib/import-csv/failed-items-list/failed-items-list.component.ts +30 -0
  170. package/src/lib/import-csv/field-mapping/field-mapping.component.html +70 -0
  171. package/src/lib/import-csv/field-mapping/field-mapping.component.scss +15 -0
  172. package/src/lib/import-csv/field-mapping/field-mapping.component.ts +161 -0
  173. package/src/lib/import-csv/import-csv-config.ts +17 -0
  174. package/src/lib/import-csv/import-csv.component.html +71 -0
  175. package/src/lib/import-csv/import-csv.component.scss +15 -0
  176. package/src/lib/import-csv/import-csv.component.spec.ts +28 -0
  177. package/src/lib/import-csv/import-csv.component.ts +198 -0
  178. package/src/lib/import-csv/import-csv.module.ts +43 -0
  179. package/src/lib/import-csv/import-history-list/import-history-list.component.html +43 -0
  180. package/src/lib/import-csv/import-history-list/import-history-list.component.scss +0 -0
  181. package/src/lib/import-csv/import-history-list/import-history-list.component.spec.ts +28 -0
  182. package/src/lib/import-csv/import-history-list/import-history-list.component.ts +74 -0
  183. package/src/lib/import-csv/import-success/import-success.component.html +22 -0
  184. package/src/lib/import-csv/import-success/import-success.component.scss +0 -0
  185. package/src/lib/import-csv/import-success/import-success.component.spec.ts +28 -0
  186. package/src/lib/import-csv/import-success/import-success.component.ts +17 -0
  187. package/{lib/loader/index.d.ts → src/lib/loader/index.ts} +0 -0
  188. package/src/lib/loader/loader.component.html +4 -0
  189. package/src/lib/loader/loader.component.scss +8 -0
  190. package/src/lib/loader/loader.component.spec.ts +73 -0
  191. package/src/lib/loader/loader.component.ts +18 -0
  192. package/src/lib/loader/loader.module.ts +18 -0
  193. package/src/lib/login-history-for-user/login-history-for-user-routing.module.ts +18 -0
  194. package/src/lib/login-history-for-user/login-history-for-user.component.html +31 -0
  195. package/src/lib/login-history-for-user/login-history-for-user.component.scss +4 -0
  196. package/src/lib/login-history-for-user/login-history-for-user.component.spec.ts +25 -0
  197. package/src/lib/login-history-for-user/login-history-for-user.component.ts +94 -0
  198. package/src/lib/login-history-for-user/login-history-for-user.module.ts +26 -0
  199. package/src/lib/material.module.ts +68 -0
  200. package/src/lib/note/comment-form/comment-form.component.html +45 -0
  201. package/src/lib/note/comment-form/comment-form.component.scss +7 -0
  202. package/src/lib/note/comment-form/comment-form.component.spec.ts +24 -0
  203. package/src/lib/note/comment-form/comment-form.component.ts +84 -0
  204. package/{lib/note/index.d.ts → src/lib/note/index.ts} +0 -0
  205. package/src/lib/note/note-form/note-form.component.css +0 -0
  206. package/src/lib/note/note-form/note-form.component.html +26 -0
  207. package/src/lib/note/note-form/note-form.component.spec.ts +25 -0
  208. package/src/lib/note/note-form/note-form.component.ts +93 -0
  209. package/src/lib/note/note-list/note-list.component.css +4 -0
  210. package/src/lib/note/note-list/note-list.component.html +58 -0
  211. package/src/lib/note/note-list/note-list.component.spec.ts +25 -0
  212. package/src/lib/note/note-list/note-list.component.ts +156 -0
  213. package/src/lib/note/note.module.ts +33 -0
  214. package/src/lib/note/note.service.spec.ts +16 -0
  215. package/src/lib/note/note.service.ts +26 -0
  216. package/src/lib/read-more/read-more.component.html +3 -0
  217. package/src/lib/read-more/read-more.component.scss +8 -0
  218. package/src/lib/read-more/read-more.component.spec.ts +24 -0
  219. package/src/lib/read-more/read-more.component.ts +41 -0
  220. package/src/lib/read-more/read-more.module.ts +18 -0
  221. package/src/lib/request-helper/request-helper.service.ts +92 -0
  222. package/src/lib/searchable-selector/index.ts +2 -0
  223. package/src/lib/searchable-selector/mat-select-infinite-scroll.directive.ts +89 -0
  224. package/src/lib/searchable-selector/searchable-selector.component.html +21 -0
  225. package/src/lib/searchable-selector/searchable-selector.component.scss +8 -0
  226. package/src/lib/searchable-selector/searchable-selector.component.spec.ts +25 -0
  227. package/src/lib/searchable-selector/searchable-selector.component.ts +337 -0
  228. package/src/lib/searchable-selector/searchable-selector.module.ts +25 -0
  229. package/src/lib/techlify-feature/on-off-switch/on-off-switch.component.html +4 -0
  230. package/src/lib/techlify-feature/on-off-switch/on-off-switch.component.scss +0 -0
  231. package/src/lib/techlify-feature/on-off-switch/on-off-switch.component.spec.ts +28 -0
  232. package/src/lib/techlify-feature/on-off-switch/on-off-switch.component.ts +25 -0
  233. package/src/lib/techlify-feature/techlify-feature-enabled.directive.ts +71 -0
  234. package/src/lib/techlify-feature/techlify-feature-listing.component.html +65 -0
  235. package/src/lib/techlify-feature/techlify-feature-listing.component.scss +0 -0
  236. package/src/lib/techlify-feature/techlify-feature-listing.component.ts +174 -0
  237. package/src/lib/techlify-feature/techlify-feature.module.ts +28 -0
  238. package/src/lib/techlify-feature/techlify-feature.routing.ts +13 -0
  239. package/src/lib/techlify-feature/techlify-feature.service.ts +23 -0
  240. package/src/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-config.model.ts +25 -0
  241. package/src/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.component.html +18 -0
  242. package/src/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.component.scss +6 -0
  243. package/src/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.component.spec.ts +25 -0
  244. package/src/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.component.ts +308 -0
  245. package/src/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.module.ts +24 -0
  246. package/src/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.component.html +8 -0
  247. package/src/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.component.scss +0 -0
  248. package/src/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.component.spec.ts +25 -0
  249. package/src/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.component.ts +180 -0
  250. package/src/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.module.ts +28 -0
  251. package/src/lib/techlify-update/techlify-update-form/techlify-update-form.component.html +78 -0
  252. package/src/lib/techlify-update/techlify-update-form/techlify-update-form.component.scss +0 -0
  253. package/src/lib/techlify-update/techlify-update-form/techlify-update-form.component.spec.ts +25 -0
  254. package/src/lib/techlify-update/techlify-update-form/techlify-update-form.component.ts +113 -0
  255. package/src/lib/techlify-update/techlify-update-form/techlify-update-form.module.ts +25 -0
  256. package/src/lib/techlify-update/techlify-update-history/index.ts +1 -0
  257. package/src/lib/techlify-update/techlify-update-history/techlify-update-history-routing.module.ts +21 -0
  258. package/src/lib/techlify-update/techlify-update-history/techlify-update-history.component.html +94 -0
  259. package/src/lib/techlify-update/techlify-update-history/techlify-update-history.component.scss +0 -0
  260. package/src/lib/techlify-update/techlify-update-history/techlify-update-history.component.ts +142 -0
  261. package/src/lib/techlify-update/techlify-update-history/techlify-update-history.module.ts +25 -0
  262. package/src/lib/techlify-update/techlify-update-routing.module.ts +21 -0
  263. package/src/lib/techlify-update/techlify-update.module.ts +27 -0
  264. package/src/lib/techlify-update/techlify-update.service.spec.ts +16 -0
  265. package/src/lib/techlify-update/techlify-update.service.ts +42 -0
  266. package/src/lib/techlify-update/techlify-updates-list/techlify-updates-list.component.html +104 -0
  267. package/src/lib/techlify-update/techlify-updates-list/techlify-updates-list.component.scss +0 -0
  268. package/src/lib/techlify-update/techlify-updates-list/techlify-updates-list.component.spec.ts +25 -0
  269. package/src/lib/techlify-update/techlify-updates-list/techlify-updates-list.component.ts +167 -0
  270. package/src/lib/techlify-update/update-notifier/update-notifier-snack/update-notifier-snack.component.html +39 -0
  271. package/src/lib/techlify-update/update-notifier/update-notifier-snack/update-notifier-snack.component.scss +57 -0
  272. package/src/lib/techlify-update/update-notifier/update-notifier-snack/update-notifier-snack.component.spec.ts +25 -0
  273. package/src/lib/techlify-update/update-notifier/update-notifier-snack/update-notifier-snack.component.ts +76 -0
  274. package/src/lib/techlify-update/update-notifier/update-notifier.component.html +0 -0
  275. package/src/lib/techlify-update/update-notifier/update-notifier.component.scss +3 -0
  276. package/src/lib/techlify-update/update-notifier/update-notifier.component.spec.ts +25 -0
  277. package/src/lib/techlify-update/update-notifier/update-notifier.component.ts +56 -0
  278. package/src/lib/techlify-update/update-notifier/update-notifier.module.ts +27 -0
  279. package/src/lib/techlify-update/update-view/update-view.component.html +63 -0
  280. package/src/lib/techlify-update/update-view/update-view.component.scss +19 -0
  281. package/src/lib/techlify-update/update-view/update-view.component.spec.ts +25 -0
  282. package/src/lib/techlify-update/update-view/update-view.component.ts +36 -0
  283. package/src/lib/techlify-update/update-view/update-view.module.ts +23 -0
  284. package/src/lib/timeline-filter/README.md +60 -0
  285. package/src/lib/timeline-filter/calculate-timeline.ts +109 -0
  286. package/{lib/timeline-filter/index.d.ts → src/lib/timeline-filter/index.ts} +1 -1
  287. package/src/lib/timeline-filter/timeline-filter-routing.module.ts +10 -0
  288. package/src/lib/timeline-filter/timeline-filter.component.html +54 -0
  289. package/src/lib/timeline-filter/timeline-filter.component.scss +0 -0
  290. package/src/lib/timeline-filter/timeline-filter.component.spec.ts +25 -0
  291. package/src/lib/timeline-filter/timeline-filter.component.ts +220 -0
  292. package/src/lib/timeline-filter/timeline-filter.module.ts +22 -0
  293. package/src/lib/timeline-filter/timeline.model.ts +17 -0
  294. package/src/lib/utility/date-utils.service.ts +51 -0
  295. package/{lib/utility/index.d.ts → src/lib/utility/index.ts} +1 -1
  296. package/src/lib/utility/num-items-selector.component.ts +29 -0
  297. package/src/lib/utility/num-items-selector.html +13 -0
  298. package/src/lib/utility/number-selector.component.ts +38 -0
  299. package/src/lib/utility/number-selector.html +6 -0
  300. package/src/lib/utility/utility.module.ts +20 -0
  301. package/{public-api.d.ts → src/public-api.ts} +31 -0
  302. package/src/test.ts +26 -0
  303. package/tsconfig.lib.json +26 -0
  304. package/tsconfig.lib.prod.json +10 -0
  305. package/tsconfig.spec.json +17 -0
  306. package/tslint.json +17 -0
  307. package/bundles/ngx-techlify-core.umd.js +0 -8325
  308. package/bundles/ngx-techlify-core.umd.js.map +0 -1
  309. package/bundles/ngx-techlify-core.umd.min.js +0 -2
  310. package/bundles/ngx-techlify-core.umd.min.js.map +0 -1
  311. package/esm2015/lib/action-popup/action-popup.component.js +0 -32
  312. package/esm2015/lib/action-popup/action-popup.model.js +0 -3
  313. package/esm2015/lib/action-popup/action-popup.module.js +0 -26
  314. package/esm2015/lib/action-popup/index.js +0 -3
  315. package/esm2015/lib/audit-log/audit-log-for-model/audit-log-for-model-routing.module.js +0 -12
  316. package/esm2015/lib/audit-log/audit-log-for-model/audit-log-for-model.component.js +0 -49
  317. package/esm2015/lib/audit-log/audit-log-for-model/audit-log-for-model.module.js +0 -25
  318. package/esm2015/lib/audit-log/audit-log-list/audit-log-list-routing.module.js +0 -12
  319. package/esm2015/lib/audit-log/audit-log-list/audit-log-list.component.js +0 -132
  320. package/esm2015/lib/audit-log/audit-log-list/audit-log-list.module.js +0 -29
  321. package/esm2015/lib/audit-log/audit-log-list-filter/audit-log-list-filter-routing.module.js +0 -12
  322. package/esm2015/lib/audit-log/audit-log-list-filter/audit-log-list-filter.component.js +0 -67
  323. package/esm2015/lib/audit-log/audit-log-list-filter/audit-log-list-filter.module.js +0 -25
  324. package/esm2015/lib/audit-log/audit-log-routing.module.js +0 -19
  325. package/esm2015/lib/audit-log/audit-log-view/audit-log-view-routing.module.js +0 -12
  326. package/esm2015/lib/audit-log/audit-log-view/audit-log-view.component.js +0 -60
  327. package/esm2015/lib/audit-log/audit-log-view/audit-log-view.module.js +0 -21
  328. package/esm2015/lib/audit-log/audit-log-view-model/audit-log-view-model-routing.module.js +0 -12
  329. package/esm2015/lib/audit-log/audit-log-view-model/audit-log-view-model.component.js +0 -57
  330. package/esm2015/lib/audit-log/audit-log-view-model/audit-log-view-model.module.js +0 -21
  331. package/esm2015/lib/audit-log/audit-log.module.js +0 -20
  332. package/esm2015/lib/audit-log/audit-logs-view-model/audit-logs-view-model-routing.module.js +0 -12
  333. package/esm2015/lib/audit-log/audit-logs-view-model/audit-logs-view-model.component.js +0 -35
  334. package/esm2015/lib/audit-log/audit-logs-view-model/audit-logs-view-model.module.js +0 -21
  335. package/esm2015/lib/base-model/index.js +0 -4
  336. package/esm2015/lib/base-model/techlify-form-component.class.js +0 -51
  337. package/esm2015/lib/base-model/techlify-listing-component.class.js +0 -41
  338. package/esm2015/lib/base-model/techlify-service.class.js +0 -64
  339. package/esm2015/lib/core/alert.service.js +0 -40
  340. package/esm2015/lib/core/api-prefix.interceptor.js +0 -28
  341. package/esm2015/lib/core/authentication.guard.js +0 -39
  342. package/esm2015/lib/core/authentication.service.js +0 -59
  343. package/esm2015/lib/core/cache.interceptor.js +0 -60
  344. package/esm2015/lib/core/config.service.js +0 -47
  345. package/esm2015/lib/core/core.module.js +0 -42
  346. package/esm2015/lib/core/credentials.service.js +0 -84
  347. package/esm2015/lib/core/dataManager.service.js +0 -121
  348. package/esm2015/lib/core/error-handler.interceptor.js +0 -53
  349. package/esm2015/lib/core/error-handler.service.js +0 -60
  350. package/esm2015/lib/core/form-validator.service.js +0 -23
  351. package/esm2015/lib/core/header.interceptor.js +0 -22
  352. package/esm2015/lib/core/http-cache.service.js +0 -110
  353. package/esm2015/lib/core/http.service.js +0 -82
  354. package/esm2015/lib/core/index.js +0 -21
  355. package/esm2015/lib/core/logger.service.js +0 -100
  356. package/esm2015/lib/core/route-reusable-strategy.js +0 -35
  357. package/esm2015/lib/core/snack/snack.component.js +0 -33
  358. package/esm2015/lib/core/snack/snack.module.js +0 -25
  359. package/esm2015/lib/core/storage.service.js +0 -37
  360. package/esm2015/lib/core/techlify-config.model.js +0 -28
  361. package/esm2015/lib/core/token.interceptor.js +0 -30
  362. package/esm2015/lib/data-table/data-table.component.js +0 -190
  363. package/esm2015/lib/data-table/data-table.model.js +0 -11
  364. package/esm2015/lib/data-table/data-table.module.js +0 -25
  365. package/esm2015/lib/data-table/index.js +0 -3
  366. package/esm2015/lib/date-validator.js +0 -10
  367. package/esm2015/lib/document-viewer/document-viewer.component.js +0 -58
  368. package/esm2015/lib/document-viewer/document-viewer.module.js +0 -25
  369. package/esm2015/lib/document-viewer/index.js +0 -3
  370. package/esm2015/lib/document-viewer/viewer-config.model.js +0 -3
  371. package/esm2015/lib/email-subscription/email-subscription-for-user/email-subscription-for-user-routing.module.js +0 -26
  372. package/esm2015/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.component.js +0 -72
  373. package/esm2015/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.module.js +0 -23
  374. package/esm2015/lib/email-subscription/email-subscription-for-user/index.js +0 -2
  375. package/esm2015/lib/email-subscription/email-subscription-routing.module.js +0 -12
  376. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form-routing.module.js +0 -12
  377. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.component.js +0 -102
  378. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.module.js +0 -28
  379. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-form/index.js +0 -2
  380. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list-routing.module.js +0 -28
  381. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component.js +0 -153
  382. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.module.js +0 -27
  383. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-list/index.js +0 -2
  384. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-routing.module.js +0 -12
  385. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type.module.js +0 -15
  386. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form-routing.module.js +0 -12
  387. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.component.js +0 -99
  388. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.module.js +0 -27
  389. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-form/index.js +0 -2
  390. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list-routing.module.js +0 -28
  391. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component.js +0 -155
  392. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.module.js +0 -29
  393. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list/index.js +0 -2
  394. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter-routing.module.js +0 -12
  395. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component.js +0 -50
  396. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.module.js +0 -25
  397. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/index.js +0 -2
  398. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-routing.module.js +0 -12
  399. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user.module.js +0 -15
  400. package/esm2015/lib/email-subscription/email-subscription.module.js +0 -15
  401. package/esm2015/lib/entity-files/entity-file-form/entity-file-form.component.js +0 -138
  402. package/esm2015/lib/entity-files/entity-file.service.js +0 -42
  403. package/esm2015/lib/entity-files/entity-files-view-all.component.js +0 -208
  404. package/esm2015/lib/entity-files/entity-files-view-all.module.js +0 -34
  405. package/esm2015/lib/entity-files/index.js +0 -3
  406. package/esm2015/lib/export-excel/export-excel-button/export-excel-button.component.js +0 -32
  407. package/esm2015/lib/export-excel/export-excel.module.js +0 -17
  408. package/esm2015/lib/file-dropper/file-dropper.component.js +0 -122
  409. package/esm2015/lib/file-dropper/file-dropper.model.js +0 -3
  410. package/esm2015/lib/file-dropper/file-dropper.module.js +0 -21
  411. package/esm2015/lib/file-dropper/index.js +0 -3
  412. package/esm2015/lib/import-csv/data-import/data-import.component.js +0 -18
  413. package/esm2015/lib/import-csv/failed-items-list/failed-items-list.component.js +0 -33
  414. package/esm2015/lib/import-csv/field-mapping/field-mapping.component.js +0 -148
  415. package/esm2015/lib/import-csv/import-csv-config.js +0 -2
  416. package/esm2015/lib/import-csv/import-csv.component.js +0 -196
  417. package/esm2015/lib/import-csv/import-csv.module.js +0 -46
  418. package/esm2015/lib/import-csv/import-history-list/import-history-list.component.js +0 -71
  419. package/esm2015/lib/import-csv/import-success/import-success.component.js +0 -19
  420. package/esm2015/lib/loader/index.js +0 -2
  421. package/esm2015/lib/loader/loader.component.js +0 -22
  422. package/esm2015/lib/loader/loader.module.js +0 -21
  423. package/esm2015/lib/login-history-for-user/login-history-for-user-routing.module.js +0 -20
  424. package/esm2015/lib/login-history-for-user/login-history-for-user.component.js +0 -88
  425. package/esm2015/lib/login-history-for-user/login-history-for-user.module.js +0 -27
  426. package/esm2015/lib/material.module.js +0 -60
  427. package/esm2015/lib/note/comment-form/comment-form.component.js +0 -73
  428. package/esm2015/lib/note/index.js +0 -4
  429. package/esm2015/lib/note/note-form/note-form.component.js +0 -81
  430. package/esm2015/lib/note/note-list/note-list.component.js +0 -151
  431. package/esm2015/lib/note/note.module.js +0 -36
  432. package/esm2015/lib/note/note.service.js +0 -31
  433. package/esm2015/lib/read-more/read-more.component.js +0 -43
  434. package/esm2015/lib/read-more/read-more.module.js +0 -21
  435. package/esm2015/lib/searchable-selector/index.js +0 -3
  436. package/esm2015/lib/searchable-selector/mat-select-infinite-scroll.directive.js +0 -81
  437. package/esm2015/lib/searchable-selector/searchable-selector.component.js +0 -307
  438. package/esm2015/lib/searchable-selector/searchable-selector.module.js +0 -28
  439. package/esm2015/lib/techlify-feature/on-off-switch/on-off-switch.component.js +0 -27
  440. package/esm2015/lib/techlify-feature/techlify-feature-enabled.directive.js +0 -78
  441. package/esm2015/lib/techlify-feature/techlify-feature-listing.component.js +0 -177
  442. package/esm2015/lib/techlify-feature/techlify-feature.module.js +0 -30
  443. package/esm2015/lib/techlify-feature/techlify-feature.routing.js +0 -12
  444. package/esm2015/lib/techlify-feature/techlify-feature.service.js +0 -28
  445. package/esm2015/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-config.model.js +0 -15
  446. package/esm2015/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.component.js +0 -269
  447. package/esm2015/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.module.js +0 -25
  448. package/esm2015/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.component.js +0 -168
  449. package/esm2015/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.module.js +0 -29
  450. package/esm2015/lib/techlify-update/techlify-update-form/techlify-update-form.component.js +0 -114
  451. package/esm2015/lib/techlify-update/techlify-update-form/techlify-update-form.module.js +0 -28
  452. package/esm2015/lib/techlify-update/techlify-update-history/techlify-update-history-routing.module.js +0 -22
  453. package/esm2015/lib/techlify-update/techlify-update-history/techlify-update-history.component.js +0 -143
  454. package/esm2015/lib/techlify-update/techlify-update-history/techlify-update-history.module.js +0 -28
  455. package/esm2015/lib/techlify-update/techlify-update-routing.module.js +0 -22
  456. package/esm2015/lib/techlify-update/techlify-update.module.js +0 -30
  457. package/esm2015/lib/techlify-update/techlify-update.service.js +0 -43
  458. package/esm2015/lib/techlify-update/techlify-updates-list/techlify-updates-list.component.js +0 -161
  459. package/esm2015/lib/techlify-update/update-notifier/update-notifier-snack/update-notifier-snack.component.js +0 -82
  460. package/esm2015/lib/techlify-update/update-notifier/update-notifier.component.js +0 -62
  461. package/esm2015/lib/techlify-update/update-notifier/update-notifier.module.js +0 -29
  462. package/esm2015/lib/techlify-update/update-view/update-view.component.js +0 -36
  463. package/esm2015/lib/techlify-update/update-view/update-view.module.js +0 -24
  464. package/esm2015/lib/timeline-filter/calculate-timeline.js +0 -102
  465. package/esm2015/lib/timeline-filter/index.js +0 -4
  466. package/esm2015/lib/timeline-filter/timeline-filter-routing.module.js +0 -12
  467. package/esm2015/lib/timeline-filter/timeline-filter.component.js +0 -213
  468. package/esm2015/lib/timeline-filter/timeline-filter.module.js +0 -23
  469. package/esm2015/lib/timeline-filter/timeline.model.js +0 -18
  470. package/esm2015/lib/utility/date-utils.service.js +0 -48
  471. package/esm2015/lib/utility/index.js +0 -4
  472. package/esm2015/lib/utility/num-items-selector.component.js +0 -30
  473. package/esm2015/lib/utility/number-selector.component.js +0 -38
  474. package/esm2015/lib/utility/utility.module.js +0 -21
  475. package/esm2015/ngx-techlify-core.js +0 -60
  476. package/esm2015/public-api.js +0 -96
  477. package/fesm2015/ngx-techlify-core.js +0 -7039
  478. package/fesm2015/ngx-techlify-core.js.map +0 -1
  479. package/lib/action-popup/action-popup.component.d.ts +0 -14
  480. package/lib/action-popup/action-popup.module.d.ts +0 -2
  481. package/lib/audit-log/audit-log-for-model/audit-log-for-model-routing.module.d.ts +0 -2
  482. package/lib/audit-log/audit-log-for-model/audit-log-for-model.component.d.ts +0 -12
  483. package/lib/audit-log/audit-log-for-model/audit-log-for-model.module.d.ts +0 -2
  484. package/lib/audit-log/audit-log-list/audit-log-list-routing.module.d.ts +0 -2
  485. package/lib/audit-log/audit-log-list/audit-log-list.component.d.ts +0 -32
  486. package/lib/audit-log/audit-log-list/audit-log-list.module.d.ts +0 -2
  487. package/lib/audit-log/audit-log-list-filter/audit-log-list-filter-routing.module.d.ts +0 -2
  488. package/lib/audit-log/audit-log-list-filter/audit-log-list-filter.component.d.ts +0 -19
  489. package/lib/audit-log/audit-log-list-filter/audit-log-list-filter.module.d.ts +0 -2
  490. package/lib/audit-log/audit-log-routing.module.d.ts +0 -2
  491. package/lib/audit-log/audit-log-view/audit-log-view-routing.module.d.ts +0 -2
  492. package/lib/audit-log/audit-log-view/audit-log-view.component.d.ts +0 -17
  493. package/lib/audit-log/audit-log-view/audit-log-view.module.d.ts +0 -2
  494. package/lib/audit-log/audit-log-view-model/audit-log-view-model-routing.module.d.ts +0 -2
  495. package/lib/audit-log/audit-log-view-model/audit-log-view-model.component.d.ts +0 -15
  496. package/lib/audit-log/audit-log-view-model/audit-log-view-model.module.d.ts +0 -2
  497. package/lib/audit-log/audit-log.module.d.ts +0 -2
  498. package/lib/audit-log/audit-logs-view-model/audit-logs-view-model-routing.module.d.ts +0 -2
  499. package/lib/audit-log/audit-logs-view-model/audit-logs-view-model.component.d.ts +0 -11
  500. package/lib/audit-log/audit-logs-view-model/audit-logs-view-model.module.d.ts +0 -2
  501. package/lib/base-model/index.d.ts +0 -3
  502. package/lib/base-model/techlify-form-component.class.d.ts +0 -43
  503. package/lib/base-model/techlify-listing-component.class.d.ts +0 -47
  504. package/lib/base-model/techlify-service.class.d.ts +0 -52
  505. package/lib/core/alert.service.d.ts +0 -12
  506. package/lib/core/api-prefix.interceptor.d.ts +0 -11
  507. package/lib/core/authentication.guard.d.ts +0 -10
  508. package/lib/core/authentication.service.d.ts +0 -23
  509. package/lib/core/cache.interceptor.d.ts +0 -21
  510. package/lib/core/config.service.d.ts +0 -19
  511. package/lib/core/core.module.d.ts +0 -3
  512. package/lib/core/credentials.service.d.ts +0 -36
  513. package/lib/core/error-handler.interceptor.d.ts +0 -14
  514. package/lib/core/error-handler.service.d.ts +0 -14
  515. package/lib/core/form-validator.service.d.ts +0 -8
  516. package/lib/core/header.interceptor.d.ts +0 -8
  517. package/lib/core/http-cache.service.d.ts +0 -54
  518. package/lib/core/http.service.d.ts +0 -56
  519. package/lib/core/logger.service.d.ts +0 -85
  520. package/lib/core/route-reusable-strategy.d.ts +0 -13
  521. package/lib/core/snack/snack.component.d.ts +0 -8
  522. package/lib/core/snack/snack.module.d.ts +0 -2
  523. package/lib/core/storage.service.d.ts +0 -15
  524. package/lib/core/techlify-config.model.d.ts +0 -18
  525. package/lib/core/token.interceptor.d.ts +0 -11
  526. package/lib/data-table/data-table.component.d.ts +0 -60
  527. package/lib/data-table/data-table.module.d.ts +0 -2
  528. package/lib/date-validator.d.ts +0 -1
  529. package/lib/document-viewer/document-viewer.component.d.ts +0 -16
  530. package/lib/document-viewer/document-viewer.module.d.ts +0 -2
  531. package/lib/document-viewer/viewer-config.model.d.ts +0 -5
  532. package/lib/email-subscription/email-subscription-for-user/email-subscription-for-user-routing.module.d.ts +0 -7
  533. package/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.component.d.ts +0 -17
  534. package/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.module.d.ts +0 -2
  535. package/lib/email-subscription/email-subscription-routing.module.d.ts +0 -2
  536. package/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form-routing.module.d.ts +0 -2
  537. package/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.component.d.ts +0 -32
  538. package/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.module.d.ts +0 -2
  539. package/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list-routing.module.d.ts +0 -9
  540. package/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component.d.ts +0 -30
  541. package/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.module.d.ts +0 -2
  542. package/lib/email-subscription/email-subscription-type/email-subscription-type-list/index.d.ts +0 -1
  543. package/lib/email-subscription/email-subscription-type/email-subscription-type-routing.module.d.ts +0 -2
  544. package/lib/email-subscription/email-subscription-type/email-subscription-type.module.d.ts +0 -2
  545. package/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form-routing.module.d.ts +0 -2
  546. package/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.component.d.ts +0 -32
  547. package/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.module.d.ts +0 -2
  548. package/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list-routing.module.d.ts +0 -9
  549. package/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component.d.ts +0 -32
  550. package/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.module.d.ts +0 -2
  551. package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter-routing.module.d.ts +0 -2
  552. package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component.d.ts +0 -13
  553. package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.module.d.ts +0 -2
  554. package/lib/email-subscription/email-subscription-user/email-subscription-user-routing.module.d.ts +0 -2
  555. package/lib/email-subscription/email-subscription-user/email-subscription-user.module.d.ts +0 -2
  556. package/lib/email-subscription/email-subscription.module.d.ts +0 -2
  557. package/lib/entity-files/entity-file-form/entity-file-form.component.d.ts +0 -34
  558. package/lib/entity-files/entity-file.service.d.ts +0 -10
  559. package/lib/entity-files/entity-files-view-all.component.d.ts +0 -45
  560. package/lib/entity-files/entity-files-view-all.module.d.ts +0 -2
  561. package/lib/entity-files/index.d.ts +0 -2
  562. package/lib/export-excel/export-excel-button/export-excel-button.component.d.ts +0 -8
  563. package/lib/export-excel/export-excel.module.d.ts +0 -2
  564. package/lib/file-dropper/file-dropper.component.d.ts +0 -33
  565. package/lib/file-dropper/file-dropper.model.d.ts +0 -10
  566. package/lib/file-dropper/file-dropper.module.d.ts +0 -2
  567. package/lib/import-csv/data-import/data-import.component.d.ts +0 -6
  568. package/lib/import-csv/failed-items-list/failed-items-list.component.d.ts +0 -12
  569. package/lib/import-csv/field-mapping/field-mapping.component.d.ts +0 -34
  570. package/lib/import-csv/import-csv-config.d.ts +0 -17
  571. package/lib/import-csv/import-csv.component.d.ts +0 -33
  572. package/lib/import-csv/import-csv.module.d.ts +0 -2
  573. package/lib/import-csv/import-history-list/import-history-list.component.d.ts +0 -21
  574. package/lib/import-csv/import-success/import-success.component.d.ts +0 -8
  575. package/lib/loader/loader.component.d.ts +0 -8
  576. package/lib/loader/loader.module.d.ts +0 -2
  577. package/lib/login-history-for-user/login-history-for-user-routing.module.d.ts +0 -2
  578. package/lib/login-history-for-user/login-history-for-user.component.d.ts +0 -23
  579. package/lib/login-history-for-user/login-history-for-user.module.d.ts +0 -2
  580. package/lib/material.module.d.ts +0 -2
  581. package/lib/note/comment-form/comment-form.component.d.ts +0 -22
  582. package/lib/note/note-form/note-form.component.d.ts +0 -27
  583. package/lib/note/note-list/note-list.component.d.ts +0 -28
  584. package/lib/note/note.module.d.ts +0 -2
  585. package/lib/note/note.service.d.ts +0 -9
  586. package/lib/read-more/read-more.component.d.ts +0 -12
  587. package/lib/read-more/read-more.module.d.ts +0 -2
  588. package/lib/searchable-selector/index.d.ts +0 -2
  589. package/lib/searchable-selector/mat-select-infinite-scroll.directive.d.ts +0 -23
  590. package/lib/searchable-selector/searchable-selector.component.d.ts +0 -81
  591. package/lib/searchable-selector/searchable-selector.module.d.ts +0 -2
  592. package/lib/techlify-feature/on-off-switch/on-off-switch.component.d.ts +0 -9
  593. package/lib/techlify-feature/techlify-feature-enabled.directive.d.ts +0 -17
  594. package/lib/techlify-feature/techlify-feature-listing.component.d.ts +0 -37
  595. package/lib/techlify-feature/techlify-feature.module.d.ts +0 -2
  596. package/lib/techlify-feature/techlify-feature.routing.d.ts +0 -2
  597. package/lib/techlify-feature/techlify-feature.service.d.ts +0 -8
  598. package/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-config.model.d.ts +0 -12
  599. package/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.component.d.ts +0 -76
  600. package/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.module.d.ts +0 -2
  601. package/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.component.d.ts +0 -58
  602. package/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.module.d.ts +0 -2
  603. package/lib/techlify-update/techlify-update-form/techlify-update-form.component.d.ts +0 -30
  604. package/lib/techlify-update/techlify-update-form/techlify-update-form.module.d.ts +0 -2
  605. package/lib/techlify-update/techlify-update-history/techlify-update-history-routing.module.d.ts +0 -2
  606. package/lib/techlify-update/techlify-update-history/techlify-update-history.component.d.ts +0 -31
  607. package/lib/techlify-update/techlify-update-history/techlify-update-history.module.d.ts +0 -2
  608. package/lib/techlify-update/techlify-update-routing.module.d.ts +0 -2
  609. package/lib/techlify-update/techlify-update.module.d.ts +0 -2
  610. package/lib/techlify-update/techlify-update.service.d.ts +0 -13
  611. package/lib/techlify-update/techlify-updates-list/techlify-updates-list.component.d.ts +0 -31
  612. package/lib/techlify-update/update-notifier/update-notifier-snack/update-notifier-snack.component.d.ts +0 -25
  613. package/lib/techlify-update/update-notifier/update-notifier.component.d.ts +0 -16
  614. package/lib/techlify-update/update-notifier/update-notifier.module.d.ts +0 -2
  615. package/lib/techlify-update/update-view/update-view.component.d.ts +0 -14
  616. package/lib/techlify-update/update-view/update-view.module.d.ts +0 -2
  617. package/lib/timeline-filter/calculate-timeline.d.ts +0 -6
  618. package/lib/timeline-filter/timeline-filter-routing.module.d.ts +0 -2
  619. package/lib/timeline-filter/timeline-filter.component.d.ts +0 -61
  620. package/lib/timeline-filter/timeline-filter.module.d.ts +0 -2
  621. package/lib/timeline-filter/timeline.model.d.ts +0 -17
  622. package/lib/utility/date-utils.service.d.ts +0 -21
  623. package/lib/utility/num-items-selector.component.d.ts +0 -16
  624. package/lib/utility/number-selector.component.d.ts +0 -20
  625. package/lib/utility/utility.module.d.ts +0 -2
  626. package/ngx-techlify-core.d.ts +0 -59
  627. package/ngx-techlify-core.metadata.json +0 -1
@@ -1,177 +0,0 @@
1
- import { __awaiter, __decorate } from "tslib";
2
- import { Component } from '@angular/core';
3
- import { FormBuilder } from '@angular/forms';
4
- import { MatDialog } from '@angular/material/dialog';
5
- import { MatTableDataSource } from '@angular/material/table';
6
- import { TechlifyFeatureService } from './techlify-feature.service';
7
- import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
8
- import { debounceTime } from 'rxjs/operators';
9
- import { ActionPopupComponent } from '../action-popup';
10
- import { DataManager } from '../core/dataManager.service';
11
- import { ErrorHandlerService } from '../core/error-handler.service';
12
- import { AlertService } from '../core/alert.service';
13
- import { StorageService } from '../core/storage.service';
14
- let TechlifyFeatureListingComponent = class TechlifyFeatureListingComponent {
15
- constructor(dataManager, errorHandler, fb, alertService, dialog, storage, featureService) {
16
- this.dataManager = dataManager;
17
- this.errorHandler = errorHandler;
18
- this.fb = fb;
19
- this.alertService = alertService;
20
- this.dialog = dialog;
21
- this.storage = storage;
22
- this.featureService = featureService;
23
- this.features = [];
24
- this.displayedColumns = [
25
- 'index',
26
- 'feature',
27
- 'description',
28
- 'actions',
29
- ];
30
- this.dataSource = new MatTableDataSource();
31
- this.page = 1;
32
- this.perPage = 25;
33
- this.isWorking = false;
34
- this.filterFormGroup = this.fb.group({
35
- num_items: [""]
36
- });
37
- }
38
- ngOnInit() {
39
- this.loadData();
40
- this.listenForChanges();
41
- }
42
- listenForChanges() {
43
- this.filterFormGroup.valueChanges
44
- .pipe(debounceTime(500), untilDestroyed(this))
45
- .subscribe((changes) => {
46
- this.reload();
47
- });
48
- }
49
- loadData() {
50
- return __awaiter(this, void 0, void 0, function* () {
51
- let result;
52
- try {
53
- this.isWorking = true;
54
- var filter = this.filterFormGroup.value;
55
- filter.page = this.page;
56
- filter.perPage = this.perPage;
57
- result = yield this.dataManager.GET(`api/features`, filter);
58
- this.features = this.features.concat(result.data);
59
- this.dataSource = new MatTableDataSource(this.features);
60
- if (!this.storage.getItem('features')) {
61
- this.setStorage(this.features);
62
- }
63
- this.isWorking = false;
64
- }
65
- catch (error) {
66
- this.errorHandler.handleError(error);
67
- }
68
- finally {
69
- this.isWorking = false;
70
- }
71
- });
72
- }
73
- toggeleFeature(element, feature) {
74
- return __awaiter(this, void 0, void 0, function* () {
75
- let status = element ? 'Off' : "On";
76
- let data;
77
- const dialogRef = this.dialog.open(ActionPopupComponent, {
78
- width: "400px",
79
- data: {
80
- title: `Turn this feature ${status}?`,
81
- message: `Would you like to turn ${feature.title} feature ${status}`
82
- }
83
- });
84
- dialogRef.afterClosed().subscribe((result) => __awaiter(this, void 0, void 0, function* () {
85
- if (result) {
86
- try {
87
- data = element
88
- ? yield this.featureService.disableFeature(feature.id)
89
- : yield this.featureService.enableFeature(feature.id);
90
- }
91
- catch (error) {
92
- this.errorHandler.handleError(error);
93
- }
94
- finally {
95
- this.alertService.addAlert(`You have just turned ${status} the feature ${feature.title}`, 'success');
96
- this.reload();
97
- this.storage.removeItem('features');
98
- this.setStorage(this.features);
99
- this.isWorking = false;
100
- }
101
- }
102
- else {
103
- this.reload();
104
- }
105
- }));
106
- });
107
- }
108
- setStorage(features) {
109
- let localFeatures = [];
110
- for (let feature of features) {
111
- if (!feature.client_feature) {
112
- if (feature.is_enabled_default) {
113
- localFeatures.push(feature.code);
114
- }
115
- }
116
- else {
117
- if (feature.client_feature.is_enabled) {
118
- localFeatures.push(feature.code);
119
- }
120
- }
121
- }
122
- this.storage.setItem("features", localFeatures);
123
- }
124
- reload() {
125
- this.features = [];
126
- this.page = 1;
127
- if (!this.isWorking) {
128
- this.loadData();
129
- }
130
- }
131
- onScroll() {
132
- if (!this.isWorking && this.page < this.lastPage) {
133
- this.page += 1;
134
- this.loadData();
135
- }
136
- }
137
- sortColumn(event) {
138
- var direction = event.direction.toString().toUpperCase();
139
- this.assignFilter(event.active, direction);
140
- this.reload();
141
- }
142
- assignFilter(column, direction) {
143
- switch (column) {
144
- case 'name': {
145
- return this.filterFormGroup
146
- .get('sort_by')
147
- .setValue('first_name|' + direction);
148
- }
149
- case 'added_on': {
150
- return this.filterFormGroup
151
- .get('sort_by')
152
- .setValue('created_at|' + direction);
153
- }
154
- }
155
- }
156
- };
157
- TechlifyFeatureListingComponent.decorators = [
158
- { type: Component, args: [{
159
- selector: 'app-techlify-listing-feature',
160
- template: "<div fxLayout=\"column\" fxLayoutGap=\"3rem\" class=\"p-3\">\r\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" class=\"primary-color mt-3\">\r\n <h3>Features Configuration</h3>\r\n <mat-hint>\r\n <i> Here you can specify which optional features you'd like to have available to your team </i>\r\n </mat-hint>\r\n </div>\r\n\r\n\r\n <div>\r\n <mat-card>\r\n <mat-card-content fxlayout=\"column\" style=\"overflow: auto; height: 700px\" class=\"classifications-card\">\r\n <table mat-table [dataSource]=\"dataSource\" class=\"mat-elevation-z8 w-100\" matSort multiTemplateDataRows\r\n (matSortChange)=\"sortColumn($event)\" infiniteScroll [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\"\r\n (scrolled)=\"onScroll()\" [fromRoot]=\"true\" [infiniteScrollContainer]=\"'.classifications-card'\">\r\n <!-- Index Column -->\r\n <ng-container matColumnDef=\"index\">\r\n <th mat-header-cell *matHeaderCellDef>#</th>\r\n <td mat-cell *matCellDef=\"let element; let i = dataIndex\">\r\n {{ i + 1 }}\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Title Column -->\r\n <ng-container matColumnDef=\"feature\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header disableClear>\r\n Feature\r\n </th>\r\n <td mat-cell *matCellDef=\"let element\">{{ element?.title }}</td>\r\n </ng-container>\r\n\r\n <!-- Description Column -->\r\n <ng-container matColumnDef=\"description\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header disableClear>\r\n Descriptions\r\n </th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n {{ element?.description }}\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Actions Column -->\r\n <ng-container matColumnDef=\"actions\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header disableClear>\r\n Actions\r\n </th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <div *ngIf=\"!element?.client_feature\">\r\n <app-on-off-switch [value]=\"element?.is_enabled_default\"\r\n (click)=\"toggeleFeature(element?.is_enabled_default, element)\"></app-on-off-switch>\r\n </div>\r\n <div *ngIf=\"element?.client_feature\">\r\n <app-on-off-switch [value]=\"element?.client_feature?.is_enabled\"\r\n (click)=\"toggeleFeature(element?.client_feature?.is_enabled, element)\"></app-on-off-switch>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\r\n </table>\r\n </mat-card-content>\r\n </mat-card>\r\n </div>\r\n</div>\r\n",
161
- styles: [""]
162
- },] }
163
- ];
164
- TechlifyFeatureListingComponent.ctorParameters = () => [
165
- { type: DataManager },
166
- { type: ErrorHandlerService },
167
- { type: FormBuilder },
168
- { type: AlertService },
169
- { type: MatDialog },
170
- { type: StorageService },
171
- { type: TechlifyFeatureService }
172
- ];
173
- TechlifyFeatureListingComponent = __decorate([
174
- UntilDestroy()
175
- ], TechlifyFeatureListingComponent);
176
- export { TechlifyFeatureListingComponent };
177
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVjaGxpZnktZmVhdHVyZS1saXN0aW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvdGVjaGxpZnktZmVhdHVyZS90ZWNobGlmeS1mZWF0dXJlLWxpc3RpbmcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFlLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7SUFPNUMsK0JBQStCLFNBQS9CLCtCQUErQjtJQW9CMUMsWUFDVSxXQUF3QixFQUN4QixZQUFpQyxFQUNqQyxFQUFlLEVBQ2YsWUFBMEIsRUFDMUIsTUFBaUIsRUFDakIsT0FBdUIsRUFDdkIsY0FBc0M7UUFOdEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsaUJB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cUJBQ3hCLEdBQUcsQ0FBQyxTQUFTLENBQUM7cUJBQ2QsUUFBUSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUMsQ0FBQTthQUN2QztZQUNELEtBQUssVUFBVSxDQUFDLENBQUM7Z0JBQ2YsT0FBTyxJQUFJLENBQUMsZUFBZTtxQkFDeEIsR0FBRyxDQUFDLFNBQVMsQ0FBQztxQkFDZCxRQUFRLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQyxDQUFBO2FBQ3ZDO1NBQ0Y7SUFDSCxDQUFDO0NBRUYsQ0FBQTs7WUFoS0EsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSw4QkFBOEI7Z0JBQ3hDLHM5RkFBd0Q7O2FBRXpEOzs7WUFUUSxXQUFXO1lBQ1gsbUJBQW1CO1lBUm5CLFdBQVc7WUFTWCxZQUFZO1lBUlosU0FBUztZQVNULGNBQWM7WUFQZCxzQkFBc0I7O0FBY2xCLCtCQUErQjtJQU4zQyxZQUFZLEVBQUU7R0FNRiwrQkFBK0IsQ0EySjNDO1NBM0pZLCtCQUErQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IE1hdFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcclxuaW1wb3J0IHsgVGVjaGxpZnlGZWF0dXJlU2VydmljZSB9IGZyb20gJy4vdGVjaGxpZnktZmVhdHVyZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQWN0aW9uUG9wdXAsIEFjdGlvblBvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi4vYWN0aW9uLXBvcHVwJztcclxuaW1wb3J0IHsgRGF0YU1hbmFnZXIgfSBmcm9tICcuLi9jb3JlL2RhdGFNYW5hZ2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFcnJvckhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS9lcnJvci1oYW5kbGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi9jb3JlL2FsZXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZSB9IGZyb20gJy4uL2NvcmUvc3RvcmFnZS5zZXJ2aWNlJztcclxuQFVudGlsRGVzdHJveSgpXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXRlY2hsaWZ5LWxpc3RpbmctZmVhdHVyZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RlY2hsaWZ5LWZlYXR1cmUtbGlzdGluZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGVjaGxpZnktZmVhdHVyZS1saXN0aW5nLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRlY2hsaWZ5RmVhdHVyZUxpc3RpbmdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBmZWF0dXJlczogYW55W10gPSBbXVxyXG4gIGRpc3BsYXllZENvbHVtbnM6IHN0cmluZ1tdID0gW1xyXG4gICAgJ2luZGV4JyxcclxuICAgICdmZWF0dXJlJyxcclxuICAgICdkZXNjcmlwdGlvbicsXHJcbiAgICAnYWN0aW9ucycsXHJcbiAgXVxyXG5cclxuICBkYXRhU291cmNlID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZSgpXHJcblxyXG4gIHBhZ2U6IG51bWJlciA9IDE7XHJcbiAgbGFzdFBhZ2U6IG51bWJlcjtcclxuICBwZXJQYWdlOiBudW1iZXIgPSAyNTtcclxuXHJcbiAgaXNXb3JraW5nOiBib29sZWFuID0gZmFsc2VcclxuICBmaWx0ZXJGb3JtR3JvdXA6IEZvcm1Hcm91cDtcclxuICBmZWF0dXJlVG9nZ2xlRm9ybTogRm9ybUdyb3VwO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZGF0YU1hbmFnZXI6IERhdGFNYW5hZ2VyLFxyXG4gICAgcHJpdmF0ZSBlcnJvckhhbmRsZXI6IEVycm9ySGFuZGxlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSBzdG9yYWdlOiBTdG9yYWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgZmVhdHVyZVNlcnZpY2U6IFRlY2hsaWZ5RmVhdHVyZVNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuZmlsdGVyRm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIG51bV9pdGVtczogW1wiXCJdXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmxvYWREYXRhKClcclxuICAgIHRoaXMubGlzdGVuRm9yQ2hhbmdlcygpXHJcbiAgfVxyXG5cclxuICBsaXN0ZW5Gb3JDaGFuZ2VzKCkge1xyXG4gICAgdGhpcy5maWx0ZXJGb3JtR3JvdXAudmFsdWVDaGFuZ2VzXHJcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSg1MDApLCB1bnRpbERlc3Ryb3llZCh0aGlzKSlcclxuICAgICAgLnN1YnNjcmliZSgoY2hhbmdlcykgPT4ge1xyXG4gICAgICAgIHRoaXMucmVsb2FkKClcclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIGFzeW5jIGxvYWREYXRhKCkge1xyXG4gICAgbGV0IHJlc3VsdDtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuaXNXb3JraW5nID0gdHJ1ZVxyXG4gICAgICB2YXIgZmlsdGVyID0gdGhpcy5maWx0ZXJGb3JtR3JvdXAudmFsdWVcclxuICAgICAgZmlsdGVyLnBhZ2UgPSB0aGlzLnBhZ2U7XHJcbiAgICAgIGZpbHRlci5wZXJQYWdlID0gdGhpcy5wZXJQYWdlO1xyXG4gICAgICByZXN1bHQgPSBhd2FpdCB0aGlzLmRhdGFNYW5hZ2VyLkdFVChgYXBpL2ZlYXR1cmVzYCwgZmlsdGVyKTtcclxuICAgICAgdGhpcy5mZWF0dXJlcyA9IHRoaXMuZmVhdHVyZXMuY29uY2F0KHJlc3VsdC5kYXRhKTtcclxuICAgICAgdGhpcy5kYXRhU291cmNlID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZSh0aGlzLmZlYXR1cmVzKTtcclxuXHJcbiAgICAgIGlmICghdGhpcy5zdG9yYWdlLmdldEl0ZW0oJ2ZlYXR1cmVzJykpIHtcclxuICAgICAgICB0aGlzLnNldFN0b3JhZ2UodGhpcy5mZWF0dXJlcyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuaXNXb3JraW5nID0gZmFsc2VcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIHRoaXMuZXJyb3JIYW5kbGVyLmhhbmRsZUVycm9yKGVycm9yKTtcclxuICAgIH0gZmluYWxseSB7XHJcbiAgICAgIHRoaXMuaXNXb3JraW5nID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyB0b2dnZWxlRmVhdHVyZShlbGVtZW50LCBmZWF0dXJlKSB7XHJcbiAgICBsZXQgc3RhdHVzID0gZWxlbWVudCA/ICdPZmYnIDogXCJPblwiO1xyXG4gICAgbGV0IGRhdGE7XHJcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEFjdGlvblBvcHVwQ29tcG9uZW50LCB7XHJcbiAgICAgIHdpZHRoOiBcIjQwMHB4XCIsXHJcbiAgICAgIGRhdGE6IDxBY3Rpb25Qb3B1cD57XHJcbiAgICAgICAgdGl0bGU6IGBUdXJuIHRoaXMgZmVhdHVyZSAke3N0YXR1c30/YCxcclxuICAgICAgICBtZXNzYWdlOiBgV291bGQgeW91IGxpa2UgdG8gdHVybiAke2ZlYXR1cmUudGl0bGV9IGZlYXR1cmUgJHtzdGF0dXN9YFxyXG4gICAgICB9XHJcbiAgICB9KVxyXG5cclxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShhc3luYyByZXN1bHQgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGRhdGEgPSBlbGVtZW50XHJcbiAgICAgICAgICAgID8gYXdhaXQgdGhpcy5mZWF0dXJlU2VydmljZS5kaXNhYmxlRmVhdHVyZShmZWF0dXJlLmlkKVxyXG4gICAgICAgICAgICA6IGF3YWl0IHRoaXMuZmVhdHVyZVNlcnZpY2UuZW5hYmxlRmVhdHVyZShmZWF0dXJlLmlkKTtcclxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgdGhpcy5lcnJvckhhbmRsZXIuaGFuZGxlRXJyb3IoZXJyb3IpO1xyXG4gICAgICAgIH0gZmluYWxseSB7XHJcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRBbGVydChgWW91IGhhdmUganVzdCB0dXJuZWQgJHtzdGF0dXN9IHRoZSBmZWF0dXJlICR7ZmVhdHVyZS50aXRsZX1gLCAnc3VjY2VzcycpO1xyXG4gICAgICAgICAgdGhpcy5yZWxvYWQoKTtcclxuICAgICAgICAgIHRoaXMuc3RvcmFnZS5yZW1vdmVJdGVtKCdmZWF0dXJlcycpO1xyXG4gICAgICAgICAgdGhpcy5zZXRTdG9yYWdlKHRoaXMuZmVhdHVyZXMpO1xyXG4gICAgICAgICAgdGhpcy5pc1dvcmtpbmcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yZWxvYWQoKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHNldFN0b3JhZ2UoZmVhdHVyZXMpIHtcclxuICAgIGxldCBsb2NhbEZlYXR1cmVzID0gW107XHJcbiAgICBmb3IgKGxldCBmZWF0dXJlIG9mIGZlYXR1cmVzKSB7XHJcbiAgICAgIGlmICghZmVhdHVyZS5jbGllbnRfZmVhdHVyZSkge1xyXG4gICAgICAgIGlmIChmZWF0dXJlLmlzX2VuYWJsZWRfZGVmYXVsdCkge1xyXG4gICAgICAgICAgbG9jYWxGZWF0dXJlcy5wdXNoKGZlYXR1cmUuY29kZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChmZWF0dXJlLmNsaWVudF9mZWF0dXJlLmlzX2VuYWJsZWQpIHtcclxuICAgICAgICAgIGxvY2FsRmVhdHVyZXMucHVzaChmZWF0dXJlLmNvZGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuICAgIHRoaXMuc3RvcmFnZS5zZXRJdGVtKFwiZmVhdHVyZXNcIiwgbG9jYWxGZWF0dXJlcyk7XHJcbiAgfVxyXG5cclxuICByZWxvYWQoKSB7XHJcbiAgICB0aGlzLmZlYXR1cmVzID0gW107XHJcbiAgICB0aGlzLnBhZ2UgPSAxO1xyXG4gICAgaWYgKCF0aGlzLmlzV29ya2luZykge1xyXG4gICAgICB0aGlzLmxvYWREYXRhKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblNjcm9sbCgpIHtcclxuICAgIGlmICghdGhpcy5pc1dvcmtpbmcgJiYgdGhpcy5wYWdlIDwgdGhpcy5sYXN0UGFnZSkge1xyXG4gICAgICB0aGlzLnBhZ2UgKz0gMTtcclxuICAgICAgdGhpcy5sb2FkRGF0YSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc29ydENvbHVtbihldmVudCkge1xyXG4gICAgdmFyIGRpcmVjdGlvbiA9IGV2ZW50LmRpcmVjdGlvbi50b1N0cmluZygpLnRvVXBwZXJDYXNlKClcclxuICAgIHRoaXMuYXNzaWduRmlsdGVyKGV2ZW50LmFjdGl2ZSwgZGlyZWN0aW9uKVxyXG4gICAgdGhpcy5yZWxvYWQoKVxyXG4gIH1cclxuXHJcbiAgYXNzaWduRmlsdGVyKGNvbHVtbiwgZGlyZWN0aW9uKSB7XHJcbiAgICBzd2l0Y2ggKGNvbHVtbikge1xyXG4gICAgICBjYXNlICduYW1lJzoge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZpbHRlckZvcm1Hcm91cFxyXG4gICAgICAgICAgLmdldCgnc29ydF9ieScpXHJcbiAgICAgICAgICAuc2V0VmFsdWUoJ2ZpcnN0X25hbWV8JyArIGRpcmVjdGlvbilcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdhZGRlZF9vbic6IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJGb3JtR3JvdXBcclxuICAgICAgICAgIC5nZXQoJ3NvcnRfYnknKVxyXG4gICAgICAgICAgLnNldFZhbHVlKCdjcmVhdGVkX2F0fCcgKyBkaXJlY3Rpb24pXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiJdfQ==
@@ -1,30 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { TechlifyFeatureListingComponent } from './techlify-feature-listing.component';
4
- import { TechlifyFeatureRoutes } from './techlify-feature.routing';
5
- import { OnOffSwitchComponent } from './on-off-switch/on-off-switch.component';
6
- import { FlexLayoutModule } from '@angular/flex-layout';
7
- import { TechlifyFeatureEnabledDirective } from './techlify-feature-enabled.directive';
8
- import { InfiniteScrollModule } from 'ngx-infinite-scroll';
9
- import { MatSlideToggleModule } from '@angular/material/slide-toggle';
10
- import { FormsModule, ReactiveFormsModule } from '@angular/forms';
11
- import { MaterialModule } from '../material.module';
12
- export class TechlifyFeatureModule {
13
- }
14
- TechlifyFeatureModule.decorators = [
15
- { type: NgModule, args: [{
16
- imports: [
17
- CommonModule,
18
- MaterialModule,
19
- FlexLayoutModule,
20
- TechlifyFeatureRoutes,
21
- MatSlideToggleModule,
22
- FormsModule,
23
- ReactiveFormsModule,
24
- InfiniteScrollModule
25
- ],
26
- declarations: [TechlifyFeatureListingComponent, OnOffSwitchComponent, TechlifyFeatureEnabledDirective],
27
- exports: [TechlifyFeatureListingComponent, TechlifyFeatureEnabledDirective]
28
- },] }
29
- ];
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVjaGxpZnktZmVhdHVyZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL3RlY2hsaWZ5LWZlYXR1cmUvdGVjaGxpZnktZmVhdHVyZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFdkYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdkYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQWdCcEQsTUFBTSxPQUFPLHFCQUFxQjs7O1lBZGpDLFFBQVEsU0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsWUFBWTtvQkFDWixjQUFjO29CQUNkLGdCQUFnQjtvQkFDaEIscUJBQXFCO29CQUNyQixvQkFBb0I7b0JBQ3BCLFdBQVc7b0JBQ1gsbUJBQW1CO29CQUNuQixvQkFBb0I7aUJBQ3JCO2dCQUNELFlBQVksRUFBRSxDQUFDLCtCQUErQixFQUFFLG9CQUFvQixFQUFFLCtCQUErQixDQUFDO2dCQUN0RyxPQUFPLEVBQUUsQ0FBQywrQkFBK0IsRUFBRSwrQkFBK0IsQ0FBQzthQUM1RSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFRlY2hsaWZ5RmVhdHVyZUxpc3RpbmdDb21wb25lbnQgfSBmcm9tICcuL3RlY2hsaWZ5LWZlYXR1cmUtbGlzdGluZy5jb21wb25lbnQnO1xyXG5cclxuaW1wb3J0IHsgVGVjaGxpZnlGZWF0dXJlUm91dGVzIH0gZnJvbSAnLi90ZWNobGlmeS1mZWF0dXJlLnJvdXRpbmcnO1xyXG5pbXBvcnQgeyBPbk9mZlN3aXRjaENvbXBvbmVudCB9IGZyb20gJy4vb24tb2ZmLXN3aXRjaC9vbi1vZmYtc3dpdGNoLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZsZXhMYXlvdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mbGV4LWxheW91dCc7XHJcbmltcG9ydCB7IFRlY2hsaWZ5RmVhdHVyZUVuYWJsZWREaXJlY3RpdmUgfSBmcm9tICcuL3RlY2hsaWZ5LWZlYXR1cmUtZW5hYmxlZC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBJbmZpbml0ZVNjcm9sbE1vZHVsZSB9IGZyb20gJ25neC1pbmZpbml0ZS1zY3JvbGwnO1xyXG5pbXBvcnQgeyBNYXRTbGlkZVRvZ2dsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NsaWRlLXRvZ2dsZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRlcmlhbE1vZHVsZSB9IGZyb20gJy4uL21hdGVyaWFsLm1vZHVsZSc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIE1hdGVyaWFsTW9kdWxlLFxyXG4gICAgRmxleExheW91dE1vZHVsZSxcclxuICAgIFRlY2hsaWZ5RmVhdHVyZVJvdXRlcyxcclxuICAgIE1hdFNsaWRlVG9nZ2xlTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgSW5maW5pdGVTY3JvbGxNb2R1bGVcclxuICBdLFxyXG4gIGRlY2xhcmF0aW9uczogW1RlY2hsaWZ5RmVhdHVyZUxpc3RpbmdDb21wb25lbnQsIE9uT2ZmU3dpdGNoQ29tcG9uZW50LCBUZWNobGlmeUZlYXR1cmVFbmFibGVkRGlyZWN0aXZlXSxcclxuICBleHBvcnRzOiBbVGVjaGxpZnlGZWF0dXJlTGlzdGluZ0NvbXBvbmVudCwgVGVjaGxpZnlGZWF0dXJlRW5hYmxlZERpcmVjdGl2ZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFRlY2hsaWZ5RmVhdHVyZU1vZHVsZSB7IH1cclxuIl19
@@ -1,12 +0,0 @@
1
- import { AuthenticationGuard } from './../core/authentication.guard';
2
- import { RouterModule } from '@angular/router';
3
- import { TechlifyFeatureListingComponent } from './techlify-feature-listing.component';
4
- const routes = [
5
- {
6
- path: '',
7
- component: TechlifyFeatureListingComponent,
8
- canActivate: [AuthenticationGuard]
9
- },
10
- ];
11
- export const TechlifyFeatureRoutes = RouterModule.forChild(routes);
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVjaGxpZnktZmVhdHVyZS5yb3V0aW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi90ZWNobGlmeS1mZWF0dXJlL3RlY2hsaWZ5LWZlYXR1cmUucm91dGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRSxPQUFPLEVBQVUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFdkYsTUFBTSxNQUFNLEdBQVc7SUFDckI7UUFDRSxJQUFJLEVBQUUsRUFBRTtRQUNSLFNBQVMsRUFBRSwrQkFBK0I7UUFDMUMsV0FBVyxFQUFFLENBQUMsbUJBQW1CLENBQUM7S0FDbkM7Q0FDRixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF1dGhlbnRpY2F0aW9uR3VhcmQgfSBmcm9tICcuLy4uL2NvcmUvYXV0aGVudGljYXRpb24uZ3VhcmQnO1xyXG5pbXBvcnQgeyBSb3V0ZXMsIFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFRlY2hsaWZ5RmVhdHVyZUxpc3RpbmdDb21wb25lbnQgfSBmcm9tICcuL3RlY2hsaWZ5LWZlYXR1cmUtbGlzdGluZy5jb21wb25lbnQnO1xyXG5cclxuY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXHJcbiAge1xyXG4gICAgcGF0aDogJycsXHJcbiAgICBjb21wb25lbnQ6IFRlY2hsaWZ5RmVhdHVyZUxpc3RpbmdDb21wb25lbnQsXHJcbiAgICBjYW5BY3RpdmF0ZTogW0F1dGhlbnRpY2F0aW9uR3VhcmRdXHJcbiAgfSxcclxuXTtcclxuXHJcbmV4cG9ydCBjb25zdCBUZWNobGlmeUZlYXR1cmVSb3V0ZXMgPSBSb3V0ZXJNb2R1bGUuZm9yQ2hpbGQocm91dGVzKTtcclxuIl19
@@ -1,28 +0,0 @@
1
- import { DataManager } from './../core/dataManager.service';
2
- import { Injectable } from '@angular/core';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "../core/dataManager.service";
5
- export class TechlifyFeatureService {
6
- constructor(dataManager) {
7
- this.dataManager = dataManager;
8
- }
9
- getFeatures() {
10
- return this.dataManager.GET(`api/features`);
11
- }
12
- disableFeature(id) {
13
- return this.dataManager.GET(`api/feature/${id}/disable`);
14
- }
15
- enableFeature(id) {
16
- return this.dataManager.GET(`api/feature/${id}/enable`);
17
- }
18
- }
19
- TechlifyFeatureService.ɵprov = i0.ɵɵdefineInjectable({ factory: function TechlifyFeatureService_Factory() { return new TechlifyFeatureService(i0.ɵɵinject(i1.DataManager)); }, token: TechlifyFeatureService, providedIn: "root" });
20
- TechlifyFeatureService.decorators = [
21
- { type: Injectable, args: [{
22
- providedIn: 'root'
23
- },] }
24
- ];
25
- TechlifyFeatureService.ctorParameters = () => [
26
- { type: DataManager }
27
- ];
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVjaGxpZnktZmVhdHVyZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi90ZWNobGlmeS1mZWF0dXJlL3RlY2hsaWZ5LWZlYXR1cmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBSzNDLE1BQU0sT0FBTyxzQkFBc0I7SUFFakMsWUFBb0IsV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7SUFBSSxDQUFDO0lBRWpELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxjQUFjLENBQUMsRUFBTztRQUNwQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsYUFBYSxDQUFDLEVBQU87UUFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDMUQsQ0FBQzs7OztZQWpCRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQUxRLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRhTWFuYWdlciB9IGZyb20gJy4vLi4vY29yZS9kYXRhTWFuYWdlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVGVjaGxpZnlGZWF0dXJlU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0YU1hbmFnZXI6IERhdGFNYW5hZ2VyKSB7IH1cclxuXHJcbiAgZ2V0RmVhdHVyZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhTWFuYWdlci5HRVQoYGFwaS9mZWF0dXJlc2ApO1xyXG4gIH1cclxuXHJcbiAgZGlzYWJsZUZlYXR1cmUoaWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YU1hbmFnZXIuR0VUKGBhcGkvZmVhdHVyZS8ke2lkfS9kaXNhYmxlYCk7XHJcbiAgfVxyXG5cclxuICBlbmFibGVGZWF0dXJlKGlkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFNYW5hZ2VyLkdFVChgYXBpL2ZlYXR1cmUvJHtpZH0vZW5hYmxlYCk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
@@ -1,15 +0,0 @@
1
- import { COMMA, ENTER } from '@angular/cdk/keycodes';
2
- export class TechlifyTaggerTagFormConfigModel {
3
- constructor() {
4
- this.selectable = true;
5
- this.removable = true;
6
- this.separatorKeysCodes = [ENTER, COMMA];
7
- this.placeholder = 'New Tag..';
8
- this.apiUrl = 'api/techlify-tagger-tags';
9
- this.createApiUrl = 'api/techlify-tagger-tags';
10
- this.isCreateable = true;
11
- this.isCacheTags = false;
12
- this.isSingle = false;
13
- }
14
- }
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVjaGxpZnktdGFnZ2VyLXRhZy1mb3JtLWNvbmZpZy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvdGVjaGxpZnktdGFnZ2VyLXRhZy1mb3JtLWZpZWxkL3RlY2hsaWZ5LXRhZ2dlci10YWctZm9ybS1jb25maWcubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVyRCxNQUFNLE9BQU8sZ0NBQWdDO0lBV3pDO1FBQ0ksSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxNQUFNLEdBQUcsMEJBQTBCLENBQUM7UUFDekMsSUFBSSxDQUFDLFlBQVksR0FBRywwQkFBMEIsQ0FBQztRQUMvQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUMxQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDT01NQSwgRU5URVIgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFRlY2hsaWZ5VGFnZ2VyVGFnRm9ybUNvbmZpZ01vZGVsIHtcclxuICAgIHNlbGVjdGFibGU6IGJvb2xlYW47XHJcbiAgICByZW1vdmFibGU6IGJvb2xlYW47XHJcbiAgICBzZXBhcmF0b3JLZXlzQ29kZXM6IG51bWJlcltdO1xyXG4gICAgcGxhY2Vob2xkZXI6IHN0cmluZztcclxuICAgIGFwaVVybDogc3RyaW5nO1xyXG4gICAgaXNDcmVhdGVhYmxlOiBib29sZWFuO1xyXG4gICAgY3JlYXRlQXBpVXJsOiBzdHJpbmc7XHJcbiAgICBpc0NhY2hlVGFnczogYm9vbGVhbjtcclxuICAgIGlzU2luZ2xlOiBib29sZWFuO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0YWJsZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5yZW1vdmFibGUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2VwYXJhdG9yS2V5c0NvZGVzID0gW0VOVEVSLCBDT01NQV07XHJcbiAgICAgICAgdGhpcy5wbGFjZWhvbGRlciA9ICdOZXcgVGFnLi4nO1xyXG4gICAgICAgIHRoaXMuYXBpVXJsID0gJ2FwaS90ZWNobGlmeS10YWdnZXItdGFncyc7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVBcGlVcmwgPSAnYXBpL3RlY2hsaWZ5LXRhZ2dlci10YWdzJztcclxuICAgICAgICB0aGlzLmlzQ3JlYXRlYWJsZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pc0NhY2hlVGFncyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNTaW5nbGUgPSBmYWxzZTtcclxuICAgIH1cclxufSJdfQ==
@@ -1,269 +0,0 @@
1
- var TechlifyTaggerTagFormFieldComponent_1;
2
- import { __awaiter, __decorate } from "tslib";
3
- import { FocusMonitor } from '@angular/cdk/a11y';
4
- import { coerceBooleanProperty } from '@angular/cdk/coercion';
5
- import { Component, ElementRef, ViewChild, Input, Inject, Optional, Self } from '@angular/core';
6
- import { FormControl, NgControl } from '@angular/forms';
7
- import { MatFormField, MatFormFieldControl, MAT_FORM_FIELD } from '@angular/material/form-field';
8
- import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
9
- import { Subject } from 'rxjs';
10
- import { debounceTime } from 'rxjs/operators';
11
- import { HttpService } from '../core/http.service';
12
- import { TechlifyTaggerTagFormConfigModel } from './techlify-tagger-tag-form-config.model';
13
- let TechlifyTaggerTagFormFieldComponent = TechlifyTaggerTagFormFieldComponent_1 = class TechlifyTaggerTagFormFieldComponent {
14
- constructor(_focusMonitor, _elementRef, httpService, _formField, ngControl) {
15
- this._focusMonitor = _focusMonitor;
16
- this._elementRef = _elementRef;
17
- this.httpService = httpService;
18
- this._formField = _formField;
19
- this.ngControl = ngControl;
20
- this.stateChanges = new Subject();
21
- this.focused = false;
22
- this.controlType = 'techlify-tagger-form-field';
23
- this.id = `techlify-tagger-form-field-${TechlifyTaggerTagFormFieldComponent_1.nextId++}`;
24
- this.onChange = (_) => { };
25
- this.onTouched = () => { };
26
- this.tagInputCtrl = new FormControl();
27
- /**Pass the configuration for Techlify Tagger */
28
- this.config = new TechlifyTaggerTagFormConfigModel();
29
- /**Pass the default list of tags */
30
- this._allTags = [];
31
- /**Pass the Categories to filter for a model */
32
- this.categories = [];
33
- this._required = false;
34
- this._disabled = false;
35
- this._value = [];
36
- this.tagInputCtrl.valueChanges
37
- .subscribe(filterValue => {
38
- this.filterString = filterValue;
39
- });
40
- //Set Focus Monitor
41
- _focusMonitor.monitor(_elementRef, true).subscribe(origin => {
42
- if (this.focused && !origin) {
43
- this.onTouched();
44
- }
45
- this.focused = !!origin;
46
- this.stateChanges.next();
47
- });
48
- if (this.ngControl != null) {
49
- this.ngControl.valueAccessor = this;
50
- }
51
- }
52
- get allTags() {
53
- return this._allTags;
54
- }
55
- set allTags(value) {
56
- this._allTags = value;
57
- }
58
- get tags() {
59
- return this.allTags.filter(x => this.value.some(y => y == x.id));
60
- }
61
- //Default Getter and Setters for a Form Field Implementation
62
- get empty() {
63
- return this.value.length == 0;
64
- }
65
- get shouldLabelFloat() {
66
- return this.focused || !this.empty || this.tagInputCtrl.value;
67
- }
68
- get required() {
69
- return this._required;
70
- }
71
- set required(value) {
72
- this._required = coerceBooleanProperty(value);
73
- this.stateChanges.next();
74
- }
75
- get disabled() {
76
- return this._disabled;
77
- }
78
- set disabled(value) {
79
- this._disabled = coerceBooleanProperty(value);
80
- this._disabled ? this.tagInputCtrl.disable() : this.tagInputCtrl.enable();
81
- this.stateChanges.next();
82
- }
83
- get value() {
84
- return this._value;
85
- }
86
- set value(tagIds) {
87
- this._value = tagIds || [];
88
- this.stateChanges.next();
89
- }
90
- get errorState() {
91
- return this.tagInputCtrl.dirty && this.required && (this.value.length == 0);
92
- }
93
- get placeholder() {
94
- return this._placeholder;
95
- }
96
- set placeholder(value) {
97
- this._placeholder = value;
98
- this.stateChanges.next();
99
- }
100
- ngOnInit() {
101
- }
102
- ngOnChanges(changes) {
103
- //API to load all tags for the model type
104
- if (this.allTags.length == 0) {
105
- this.httpService
106
- .cache(!this.config.isCacheTags)
107
- .get(this.config.apiUrl, {
108
- params: {
109
- categories: this.categories.join(','),
110
- perPage: '1000'
111
- }
112
- }).pipe(debounceTime(500), untilDestroyed(this)).subscribe((result) => {
113
- this.allTags = result.data;
114
- });
115
- }
116
- //API to load only the selected tags for the model
117
- if (this.modelId && this.value.length == 0) {
118
- //Model Id is passed and no tags are present, so we query db for the avilable tags for the model ID.
119
- this.httpService
120
- .cache(!this.config.isCacheTags)
121
- .get(this.config.apiUrl, {
122
- params: {
123
- categories: this.categories.join(','),
124
- model_type: this.modelType,
125
- model_id: this.modelId,
126
- perPage: '1000'
127
- }
128
- }).pipe(debounceTime(500), untilDestroyed(this)).subscribe((result) => {
129
- this.value = ((result === null || result === void 0 ? void 0 : result.data) || []).map((x) => x.id);
130
- this._handleInput();
131
- });
132
- }
133
- }
134
- init() {
135
- if (this.modelId && this.allTags.length == 0) {
136
- //Model Id is passed and no tags are passed, so we query db for the avilable tags for the model ID.
137
- this.httpService
138
- .cache(!this.config.isCacheTags)
139
- .get(this.config.apiUrl, {
140
- params: {
141
- categories: this.categories.join(','),
142
- model_type: this.modelType,
143
- model_id: this.modelId
144
- }
145
- }).pipe(untilDestroyed(this)).subscribe((result) => {
146
- this.allTags = result.data;
147
- });
148
- }
149
- }
150
- get filteredTags() {
151
- return this._filter();
152
- }
153
- setDescribedByIds(ids) {
154
- // Just a empty implementation for Mat Form Field Interface
155
- }
156
- onContainerClick() {
157
- // Just a empty implementation for Mat Form Field Interface
158
- }
159
- add(event) {
160
- return __awaiter(this, void 0, void 0, function* () {
161
- const value = (event.value || '').trim();
162
- // Add our tag
163
- // Validate for single mode
164
- if (!this.config.isSingle || (this.value.length === 0)) {
165
- if (value && this.config.isCreateable) {
166
- const tags = this.allTags;
167
- let tag = tags.find((item) => item.title.toLowerCase() == value.toLowerCase());
168
- if (!tag) {
169
- //No tag present in the list
170
- try {
171
- const result = yield this.httpService.post(this.config.createApiUrl, {
172
- title: value,
173
- description: value,
174
- category_title: (this.categories.length > 0) ? (this.defaultCreateCategory ? this.defaultCreateCategory : this.categories[0]) : ''
175
- }).toPromise();
176
- tag = result.item;
177
- }
178
- catch (error) {
179
- return;
180
- }
181
- this.allTags.push(tag);
182
- }
183
- else {
184
- //Optionally clean the existing value, to avoid duplicate
185
- this.remove(tag);
186
- }
187
- this.value.push(tag.id);
188
- this._handleInput();
189
- }
190
- }
191
- // Clear the input value
192
- event.input.value = '';
193
- this.tagInputCtrl.setValue(null);
194
- });
195
- }
196
- remove(tag) {
197
- this.value = this.value.filter(x => x !== tag.id);
198
- this._handleInput();
199
- }
200
- selected(event) {
201
- // Validate for single mode
202
- if (!this.config.isSingle || (this.value.length === 0)) {
203
- //Clean the existing value, to avoid duplicate
204
- this.remove({ id: event.option.value });
205
- this.value.push(event.option.value);
206
- this._handleInput();
207
- }
208
- this.tagInput.nativeElement.value = '';
209
- this.tagInputCtrl.setValue(null);
210
- }
211
- _filter() {
212
- const filterValue = this.filterString ? this.filterString.toString().toLowerCase() : null;
213
- const availableTags = this.allTags.filter((tag) => !this.value.some((item) => item == tag.id));
214
- return filterValue ? availableTags.filter((tag) => tag.title.toLowerCase().includes(filterValue)) : availableTags;
215
- }
216
- writeValue(tagIds) {
217
- this.value = tagIds || [];
218
- }
219
- registerOnChange(fn) {
220
- this.onChange = fn;
221
- }
222
- registerOnTouched(fn) {
223
- this.onTouched = fn;
224
- }
225
- setDisabledState(isDisabled) {
226
- this.disabled = isDisabled;
227
- }
228
- _handleInput() {
229
- this.onChange(this.value);
230
- }
231
- ngOnDestroy() {
232
- this.stateChanges.complete();
233
- this._focusMonitor.stopMonitoring(this._elementRef);
234
- }
235
- };
236
- TechlifyTaggerTagFormFieldComponent.nextId = 0;
237
- TechlifyTaggerTagFormFieldComponent.decorators = [
238
- { type: Component, args: [{
239
- selector: 'app-techlify-tagger-tag-form-field',
240
- template: "<mat-chip-list #chipList aria-label=\"Tag Selection\">\r\n <mat-chip *ngFor=\"let tag of tags\" [selectable]=\"config.selectable\" [removable]=\"config.removable\"\r\n (removed)=\"remove(tag)\">\r\n {{tag.title}}\r\n <button matChipRemove *ngIf=\"config.removable\" class=\"border-0\">\r\n <mat-icon class=\"mat-relative-icon\">cancel</mat-icon>\r\n </button>\r\n </mat-chip>\r\n <input placeholder=\"{{config.isCreateable? config.placeholder:''}}\" #tagInput [formControl]=\"tagInputCtrl\"\r\n [matAutocomplete]=\"auto\" [matChipInputFor]=\"chipList\"\r\n [matChipInputSeparatorKeyCodes]=\"config.separatorKeysCodes\" (matChipInputTokenEnd)=\"add($event)\"\r\n #trigger=\"matAutocompleteTrigger\" (click)=\"trigger.openPanel()\">\r\n</mat-chip-list>\r\n<mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"selected($event)\">\r\n <mat-option *ngFor=\"let tag of filteredTags\" [value]=\"tag.id\">\r\n {{tag.title}}\r\n </mat-option>\r\n</mat-autocomplete>",
241
- providers: [{ provide: MatFormFieldControl, useExisting: TechlifyTaggerTagFormFieldComponent_1 }],
242
- styles: [".mat-relative-icon{font-size:20px;position:relative;right:7px;top:-3px}"]
243
- },] }
244
- ];
245
- TechlifyTaggerTagFormFieldComponent.ctorParameters = () => [
246
- { type: FocusMonitor },
247
- { type: ElementRef },
248
- { type: HttpService },
249
- { type: MatFormField, decorators: [{ type: Optional }, { type: Inject, args: [MAT_FORM_FIELD,] }] },
250
- { type: NgControl, decorators: [{ type: Optional }, { type: Self }] }
251
- ];
252
- TechlifyTaggerTagFormFieldComponent.propDecorators = {
253
- tagInput: [{ type: ViewChild, args: ['tagInput',] }],
254
- config: [{ type: Input }],
255
- modelType: [{ type: Input }],
256
- modelId: [{ type: Input }],
257
- allTags: [{ type: Input }],
258
- categories: [{ type: Input }],
259
- defaultCreateCategory: [{ type: Input }],
260
- required: [{ type: Input }],
261
- disabled: [{ type: Input }],
262
- value: [{ type: Input }],
263
- placeholder: [{ type: Input }]
264
- };
265
- TechlifyTaggerTagFormFieldComponent = TechlifyTaggerTagFormFieldComponent_1 = __decorate([
266
- UntilDestroy()
267
- ], TechlifyTaggerTagFormFieldComponent);
268
- export { TechlifyTaggerTagFormFieldComponent };
269
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVjaGxpZnktdGFnZ2VyLXRhZy1mb3JtLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvdGVjaGxpZnktdGFnZ2VyLXRhZy1mb3JtLWZpZWxkL3RlY2hsaWZ5LXRhZ2dlci10YWctZm9ybS1maWVsZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQWEsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQzdJLE9BQU8sRUFBd0IsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzlFLE9BQU8sRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakcsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0seUNBQXlDLENBQUM7SUFTOUUsbUNBQW1DLGlEQUFuQyxtQ0FBbUM7SUFxSzlDLFlBQ1UsYUFBMkIsRUFDM0IsV0FBb0MsRUFDcEMsV0FBd0IsRUFDVyxVQUF3QixFQUN4QyxTQUFvQjtRQUp2QyxrQkFBYSxHQUFiLGFBQWEsQ0FBYztR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QztJQUM1QixDQUFDO0lBS0QsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3RELENBQUM7Q0FFRixDQUFBO0FBN1JRLDBDQUFNLEdBQUcsQ0FBQyxDQUFDOztZQVJuQixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLG9DQUFvQztnQkFDOUMsb2lDQUE4RDtnQkFFOUQsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLHFDQUFtQyxFQUFFLENBQUM7O2FBQ2hHOzs7WUFuQlEsWUFBWTtZQUVELFVBQVU7WUFRckIsV0FBVztZQUpYLFlBQVksdUJBdUxoQixRQUFRLFlBQUksTUFBTSxTQUFDLGNBQWM7WUExTE0sU0FBUyx1QkEyTGhELFFBQVEsWUFBSSxJQUFJOzs7dUJBN0psQixTQUFTLFNBQUMsVUFBVTtxQkFHcEIsS0FBSzt3QkFFTCxLQUFLO3NCQUVMLEtBQUs7c0JBSUwsS0FBSzt5QkFTTCxLQUFLO29DQUVMLEtBQUs7dUJBZUwsS0FBSzt1QkFVTCxLQUFLO29CQWFMLEtBQUs7MEJBYUwsS0FBSzs7QUF0RkssbUNBQW1DO0lBUC9DLFlBQVksRUFBRTtHQU9GLG1DQUFtQyxDQStSL0M7U0EvUlksbUNBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9jdXNNb25pdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xyXG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgVmlld0NoaWxkLCBPbkluaXQsIElucHV0LCBPbkRlc3Ryb3ksIEluamVjdCwgT3B0aW9uYWwsIFNlbGYsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2wsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XHJcbmltcG9ydCB7IE1hdENoaXBJbnB1dEV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hpcHMnO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGQsIE1hdEZvcm1GaWVsZENvbnRyb2wsIE1BVF9GT1JNX0ZJRUxEIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IFVudGlsRGVzdHJveSwgdW50aWxEZXN0cm95ZWQgfSBmcm9tICdAbmduZWF0L3VudGlsLWRlc3Ryb3knO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSHR0cFNlcnZpY2UgfSBmcm9tICcuLi9jb3JlL2h0dHAuc2VydmljZSc7XHJcbmltcG9ydCB7IFRlY2hsaWZ5VGFnZ2VyVGFnRm9ybUNvbmZpZ01vZGVsIH0gZnJvbSAnLi90ZWNobGlmeS10YWdnZXItdGFnLWZvcm0tY29uZmlnLm1vZGVsJztcclxuXHJcbkBVbnRpbERlc3Ryb3koKVxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC10ZWNobGlmeS10YWdnZXItdGFnLWZvcm0tZmllbGQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90ZWNobGlmeS10YWdnZXItdGFnLWZvcm0tZmllbGQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RlY2hsaWZ5LXRhZ2dlci10YWctZm9ybS1maWVsZC5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTWF0Rm9ybUZpZWxkQ29udHJvbCwgdXNlRXhpc3Rpbmc6IFRlY2hsaWZ5VGFnZ2VyVGFnRm9ybUZpZWxkQ29tcG9uZW50IH1dLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGVjaGxpZnlUYWdnZXJUYWdGb3JtRmllbGRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBNYXRGb3JtRmllbGRDb250cm9sPGFueT4sIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcclxuXHJcbiAgc3RhdGljIG5leHRJZCA9IDA7XHJcbiAgc3RhdGVDaGFuZ2VzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBmb2N1c2VkID0gZmFsc2U7XHJcbiAgY29udHJvbFR5cGUgPSAndGVjaGxpZnktdGFnZ2VyLWZvcm0tZmllbGQnO1xyXG4gIGlkID0gYHRlY2hsaWZ5LXRhZ2dlci1mb3JtLWZpZWxkLSR7VGVjaGxpZnlUYWdnZXJUYWdGb3JtRmllbGRDb21wb25lbnQubmV4dElkKyt9YDtcclxuXHJcbiAgb25DaGFuZ2UgPSAoXzogYW55KSA9PiB7IH07XHJcbiAgb25Ub3VjaGVkID0gKCkgPT4geyB9O1xyXG5cclxuICB0YWdJbnB1dEN0cmwgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuICBmaWx0ZXJTdHJpbmc6IGFueTtcclxuICBAVmlld0NoaWxkKCd0YWdJbnB1dCcpIHRhZ0lucHV0OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xyXG5cclxuICAvKipQYXNzIHRoZSBjb25maWd1cmF0aW9uIGZvciBUZWNobGlmeSBUYWdnZXIgKi9cclxuICBASW5wdXQoKSBjb25maWc6IFRlY2hsaWZ5VGFnZ2VyVGFnRm9ybUNvbmZpZ01vZGVsID0gbmV3IFRlY2hsaWZ5VGFnZ2VyVGFnRm9ybUNvbmZpZ01vZGVsKCk7XHJcbiAgLyoqUGFzcyB0aGUgTW9kZWwgVHlwZSBmb3IgVGVjaGxpZnkgVGFnZ2VyLCBSZXF1aXJlZCAqL1xyXG4gIEBJbnB1dCgpIG1vZGVsVHlwZSE6IHN0cmluZztcclxuICAvKipQYXNzIHRoZSBNb2RlbCBJRCBmb3IgVGVjaGxpZnkgVGFnZ2VyICovXHJcbiAgQElucHV0KCkgbW9kZWxJZDogc3RyaW5nO1xyXG5cclxuICAvKipQYXNzIHRoZSBkZWZhdWx0IGxpc3Qgb2YgdGFncyAqL1xyXG4gIHByaXZhdGUgX2FsbFRhZ3M6IGFueVtdID0gW107XHJcbiAgQElucHV0KClcclxuICBnZXQgYWxsVGFncygpIHtcclxuICAgIHJldHVybiB0aGlzLl9hbGxUYWdzO1xyXG4gIH1cclxuICBzZXQgYWxsVGFncyh2YWx1ZSkge1xyXG4gICAgdGhpcy5fYWxsVGFncyA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgLyoqUGFzcyB0aGUgQ2F0ZWdvcmllcyB0byBmaWx0ZXIgZm9yIGEgbW9kZWwgKi9cclxuICBASW5wdXQoKSBjYXRlZ29yaWVzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIC8qKlBhc3MgZGVmYXVsdCBjYXRlZ29yeSB0byBiZSB1c2VkIGZvciBhc3NpZ25pbmcgdGhlIHRhZ3MsIHdoZW4gd2UgZmlsdGVyIGJ5IG1vcmUgdGhhbiBvbmUgY2F0ZWdvcnkgKi9cclxuICBASW5wdXQoKSBkZWZhdWx0Q3JlYXRlQ2F0ZWdvcnk6IHN0cmluZztcclxuXHJcbiAgZ2V0IHRhZ3MoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hbGxUYWdzLmZpbHRlcih4ID0+IHRoaXMudmFsdWUuc29tZSh5ID0+IHkgPT0geC5pZCkpO1xyXG4gIH1cclxuXHJcbiAgLy9EZWZhdWx0IEdldHRlciBhbmQgU2V0dGVycyBmb3IgYSBGb3JtIEZpZWxkIEltcGxlbWVudGF0aW9uXHJcbiAgZ2V0IGVtcHR5KCkge1xyXG4gICAgcmV0dXJuIHRoaXMudmFsdWUubGVuZ3RoID09IDA7XHJcbiAgfVxyXG5cclxuICBnZXQgc2hvdWxkTGFiZWxGbG9hdCgpIHtcclxuICAgIHJldHVybiB0aGlzLmZvY3VzZWQgfHwgIXRoaXMuZW1wdHkgfHwgdGhpcy50YWdJbnB1dEN0cmwudmFsdWU7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZDtcclxuICB9XHJcbiAgc2V0IHJlcXVpcmVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9yZXF1aXJlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XHJcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3JlcXVpcmVkID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xyXG4gIH1cclxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcclxuICAgIHRoaXMuX2Rpc2FibGVkID8gdGhpcy50YWdJbnB1dEN0cmwuZGlzYWJsZSgpIDogdGhpcy50YWdJbnB1dEN0cmwuZW5hYmxlKCk7XHJcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XHJcblxyXG5cclxuICBwcml2YXRlIF92YWx1ZTogYW55W10gPSBbXTtcclxuICBASW5wdXQoKVxyXG4gIGdldCB2YWx1ZSgpOiBhbnlbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XHJcbiAgfVxyXG4gIHNldCB2YWx1ZSh0YWdJZHM6IGFueVtdKSB7XHJcbiAgICB0aGlzLl92YWx1ZSA9IHRhZ0lkcyB8fCBbXTtcclxuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuICB9XHJcblxyXG4gIGdldCBlcnJvclN0YXRlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMudGFnSW5wdXRDdHJsLmRpcnR5ICYmIHRoaXMucmVxdWlyZWQgJiYgKHRoaXMudmFsdWUubGVuZ3RoID09IDApO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBnZXQgcGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9wbGFjZWhvbGRlcjtcclxuICB9XHJcbiAgc2V0IHBsYWNlaG9sZGVyKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gdmFsdWU7XHJcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3BsYWNlaG9sZGVyOiBzdHJpbmc7XHJcblxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcblxyXG4gICAgLy9BUEkgdG8gbG9hZCBhbGwgdGFncyBmb3IgdGhlIG1vZGVsIHR5cGVcclxuICAgIGlmICh0aGlzLmFsbFRhZ3MubGVuZ3RoID09IDApIHtcclxuICAgICAgdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAgIC5jYWNoZSghdGhpcy5jb25maWcuaXNDYWNoZVRhZ3MpXHJcbiAgICAgICAgLmdldCh0aGlzLmNvbmZpZy5hcGlVcmwsIHtcclxuICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICBjYXRlZ29yaWVzOiB0aGlzLmNhdGVnb3JpZXMuam9pbignLCcpLFxyXG4gICAgICAgICAgICBwZXJQYWdlOiAnMTAwMCdcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KS5waXBlKFxyXG4gICAgICAgICAgZGVib3VuY2VUaW1lKDUwMCksXHJcbiAgICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxyXG4gICAgICAgICkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5hbGxUYWdzID0gcmVzdWx0LmRhdGE7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy9BUEkgdG8gbG9hZCBvbmx5IHRoZSBzZWxlY3RlZCB0YWdzIGZvciB0aGUgbW9kZWxcclxuICAgIGlmICh0aGlzLm1vZGVsSWQgJiYgdGhpcy52YWx1ZS5sZW5ndGggPT0gMCkge1xyXG4gICAgICAvL01vZGVsIElkIGlzIHBhc3NlZCBhbmQgbm8gdGFncyBhcmUgcHJlc2VudCwgc28gd2UgcXVlcnkgZGIgZm9yIHRoZSBhdmlsYWJsZSB0YWdzIGZvciB0aGUgbW9kZWwgSUQuXHJcbiAgICAgIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgICAuY2FjaGUoIXRoaXMuY29uZmlnLmlzQ2FjaGVUYWdzKVxyXG4gICAgICAgIC5nZXQodGhpcy5jb25maWcuYXBpVXJsLCB7XHJcbiAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgY2F0ZWdvcmllczogdGhpcy5jYXRlZ29yaWVzLmpvaW4oJywnKSxcclxuICAgICAgICAgICAgbW9kZWxfdHlwZTogdGhpcy5tb2RlbFR5cGUsXHJcbiAgICAgICAgICAgIG1vZGVsX2lkOiB0aGlzLm1vZGVsSWQsXHJcbiAgICAgICAgICAgIHBlclBhZ2U6ICcxMDAwJ1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pLnBpcGUoXHJcbiAgICAgICAgICBkZWJvdW5jZVRpbWUoNTAwKSxcclxuICAgICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXHJcbiAgICAgICAgKS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnZhbHVlID0gKHJlc3VsdD8uZGF0YSB8fCBbXSkubWFwKCh4OiBhbnkpID0+IHguaWQpO1xyXG4gICAgICAgICAgdGhpcy5faGFuZGxlSW5wdXQoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluaXQoKSB7XHJcbiAgICBpZiAodGhpcy5tb2RlbElkICYmIHRoaXMuYWxsVGFncy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAvL01vZGVsIElkIGlzIHBhc3NlZCBhbmQgbm8gdGFncyBhcmUgcGFzc2VkLCBzbyB3ZSBxdWVyeSBkYiBmb3IgdGhlIGF2aWxhYmxlIHRhZ3MgZm9yIHRoZSBtb2RlbCBJRC5cclxuICAgICAgdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAgIC5jYWNoZSghdGhpcy5jb25maWcuaXNDYWNoZVRhZ3MpXHJcbiAgICAgICAgLmdldCh0aGlzLmNvbmZpZy5hcGlVcmwsIHtcclxuICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICBjYXRlZ29yaWVzOiB0aGlzLmNhdGVnb3JpZXMuam9pbignLCcpLFxyXG4gICAgICAgICAgICBtb2RlbF90eXBlOiB0aGlzLm1vZGVsVHlwZSxcclxuICAgICAgICAgICAgbW9kZWxfaWQ6IHRoaXMubW9kZWxJZFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pLnBpcGUoXHJcbiAgICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxyXG4gICAgICAgICkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5hbGxUYWdzID0gcmVzdWx0LmRhdGE7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgZmlsdGVyZWRUYWdzKCk6IGFueVtdIHtcclxuICAgIHJldHVybiB0aGlzLl9maWx0ZXIoKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfZm9jdXNNb25pdG9yOiBGb2N1c01vbml0b3IsXHJcbiAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcclxuICAgIHByaXZhdGUgaHR0cFNlcnZpY2U6IEh0dHBTZXJ2aWNlLFxyXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChNQVRfRk9STV9GSUVMRCkgcHVibGljIF9mb3JtRmllbGQ6IE1hdEZvcm1GaWVsZCxcclxuICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcHVibGljIG5nQ29udHJvbDogTmdDb250cm9sKSB7XHJcblxyXG4gICAgdGhpcy50YWdJbnB1dEN0cmwudmFsdWVDaGFuZ2VzXHJcbiAgICAgIC5zdWJzY3JpYmUoZmlsdGVyVmFsdWUgPT4ge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyU3RyaW5nID0gZmlsdGVyVmFsdWU7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIC8vU2V0IEZvY3VzIE1vbml0b3JcclxuICAgIF9mb2N1c01vbml0b3IubW9uaXRvcihfZWxlbWVudFJlZiwgdHJ1ZSkuc3Vic2NyaWJlKG9yaWdpbiA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmZvY3VzZWQgJiYgIW9yaWdpbikge1xyXG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5mb2N1c2VkID0gISFvcmlnaW47XHJcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmICh0aGlzLm5nQ29udHJvbCAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0RGVzY3JpYmVkQnlJZHMoaWRzOiBzdHJpbmdbXSkge1xyXG4gICAgLy8gSnVzdCBhIGVtcHR5IGltcGxlbWVudGF0aW9uIGZvciBNYXQgRm9ybSBGaWVsZCBJbnRlcmZhY2VcclxuICB9XHJcblxyXG4gIG9uQ29udGFpbmVyQ2xpY2soKSB7XHJcbiAgICAvLyBKdXN0IGEgZW1wdHkgaW1wbGVtZW50YXRpb24gZm9yIE1hdCBGb3JtIEZpZWxkIEludGVyZmFjZVxyXG4gIH1cclxuXHJcblxyXG4gIGFzeW5jIGFkZChldmVudDogTWF0Q2hpcElucHV0RXZlbnQpIHtcclxuICAgIGNvbnN0IHZhbHVlID0gKGV2ZW50LnZhbHVlIHx8ICcnKS50cmltKCk7XHJcbiAgICAvLyBBZGQgb3VyIHRhZ1xyXG4gICAgLy8gVmFsaWRhdGUgZm9yIHNpbmdsZSBtb2RlXHJcbiAgICBpZiAoIXRoaXMuY29uZmlnLmlzU2luZ2xlIHx8ICh0aGlzLnZhbHVlLmxlbmd0aCA9PT0gMCkpIHtcclxuICAgICAgaWYgKHZhbHVlICYmIHRoaXMuY29uZmlnLmlzQ3JlYXRlYWJsZSkge1xyXG4gICAgICAgIGNvbnN0IHRhZ3MgPSB0aGlzLmFsbFRhZ3M7XHJcbiAgICAgICAgbGV0IHRhZyA9IHRhZ3MuZmluZCgoaXRlbTogYW55KSA9PiBpdGVtLnRpdGxlLnRvTG93ZXJDYXNlKCkgPT0gdmFsdWUudG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgICAgaWYgKCF0YWcpIHtcclxuICAgICAgICAgIC8vTm8gdGFnIHByZXNlbnQgaW4gdGhlIGxpc3RcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdDogYW55ID0gYXdhaXQgdGhpcy5odHRwU2VydmljZS5wb3N0KHRoaXMuY29uZmlnLmNyZWF0ZUFwaVVybCwge1xyXG4gICAgICAgICAgICAgIHRpdGxlOiB2YWx1ZSxcclxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdmFsdWUsXHJcbiAgICAgICAgICAgICAgY2F0ZWdvcnlfdGl0bGU6ICh0aGlzLmNhdGVnb3JpZXMubGVuZ3RoID4gMCkgPyAodGhpcy5kZWZhdWx0Q3JlYXRlQ2F0ZWdvcnkgPyB0aGlzLmRlZmF1bHRDcmVhdGVDYXRlZ29yeSA6IHRoaXMuY2F0ZWdvcmllc1swXSkgOiAnJ1xyXG4gICAgICAgICAgICB9KS50b1Byb21pc2UoKTtcclxuICAgICAgICAgICAgdGFnID0gcmVzdWx0Lml0ZW07XHJcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmFsbFRhZ3MucHVzaCh0YWcpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAvL09wdGlvbmFsbHkgY2xlYW4gdGhlIGV4aXN0aW5nIHZhbHVlLCB0byBhdm9pZCBkdXBsaWNhdGVcclxuICAgICAgICAgIHRoaXMucmVtb3ZlKHRhZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudmFsdWUucHVzaCh0YWcuaWQpO1xyXG4gICAgICAgIHRoaXMuX2hhbmRsZUlucHV0KCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBDbGVhciB0aGUgaW5wdXQgdmFsdWVcclxuICAgIGV2ZW50LmlucHV0LnZhbHVlID0gJyc7XHJcblxyXG4gICAgdGhpcy50YWdJbnB1dEN0cmwuc2V0VmFsdWUobnVsbCk7XHJcbiAgfVxyXG5cclxuICByZW1vdmUodGFnOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlLmZpbHRlcih4ID0+IHggIT09IHRhZy5pZCk7XHJcbiAgICB0aGlzLl9oYW5kbGVJbnB1dCgpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0ZWQoZXZlbnQ6IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQpOiB2b2lkIHtcclxuICAgIC8vIFZhbGlkYXRlIGZvciBzaW5nbGUgbW9kZVxyXG4gICAgaWYgKCF0aGlzLmNvbmZpZy5pc1NpbmdsZSB8fCAodGhpcy52YWx1ZS5sZW5ndGggPT09IDApKSB7XHJcbiAgICAgIC8vQ2xlYW4gdGhlIGV4aXN0aW5nIHZhbHVlLCB0byBhdm9pZCBkdXBsaWNhdGVcclxuICAgICAgdGhpcy5yZW1vdmUoeyBpZDogZXZlbnQub3B0aW9uLnZhbHVlIH0pO1xyXG4gICAgICB0aGlzLnZhbHVlLnB1c2goZXZlbnQub3B0aW9uLnZhbHVlKTtcclxuICAgICAgdGhpcy5faGFuZGxlSW5wdXQoKTtcclxuICAgIH1cclxuICAgIHRoaXMudGFnSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgdGhpcy50YWdJbnB1dEN0cmwuc2V0VmFsdWUobnVsbCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9maWx0ZXIoKTogYW55W10ge1xyXG4gICAgY29uc3QgZmlsdGVyVmFsdWUgPSB0aGlzLmZpbHRlclN0cmluZyA/IHRoaXMuZmlsdGVyU3RyaW5nLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA6IG51bGw7XHJcbiAgICBjb25zdCBhdmFpbGFibGVUYWdzID0gdGhpcy5hbGxUYWdzLmZpbHRlcigodGFnOiBhbnkpID0+ICF0aGlzLnZhbHVlLnNvbWUoKGl0ZW06IGFueSkgPT4gaXRlbSA9PSB0YWcuaWQpKTtcclxuICAgIHJldHVybiBmaWx0ZXJWYWx1ZSA/IGF2YWlsYWJsZVRhZ3MuZmlsdGVyKCh0YWc6IGFueSkgPT4gdGFnLnRpdGxlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyVmFsdWUpKSA6IGF2YWlsYWJsZVRhZ3M7XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHRhZ0lkczogYW55W10pOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWUgPSB0YWdJZHMgfHwgW107XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgX2hhbmRsZUlucHV0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9kaXNhYmxlZDogQm9vbGVhbklucHV0O1xyXG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9yZXF1aXJlZDogQm9vbGVhbklucHV0O1xyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLmNvbXBsZXRlKCk7XHJcbiAgICB0aGlzLl9mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5fZWxlbWVudFJlZik7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=