@ecodev/natural 41.3.0 → 42.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (348) hide show
  1. package/ecodev-natural.d.ts +1 -9
  2. package/esm2020/ecodev-natural.mjs +5 -0
  3. package/esm2020/lib/classes/abstract-controller.mjs +30 -0
  4. package/esm2020/lib/classes/abstract-detail.mjs +152 -0
  5. package/esm2020/lib/classes/abstract-editable-list.mjs +96 -0
  6. package/esm2020/lib/classes/abstract-list.mjs +406 -0
  7. package/esm2020/lib/classes/abstract-navigable-list.mjs +126 -0
  8. package/{esm2015/lib/classes/apollo-utils.js → esm2020/lib/classes/apollo-utils.mjs} +0 -0
  9. package/esm2020/lib/classes/data-source.mjs +76 -0
  10. package/{esm2015/lib/classes/query-variable-manager-utils.js → esm2020/lib/classes/query-variable-manager-utils.mjs} +0 -0
  11. package/esm2020/lib/classes/query-variable-manager.mjs +161 -0
  12. package/{esm2015/lib/classes/rxjs.js → esm2020/lib/classes/rxjs.mjs} +0 -0
  13. package/{esm2015/lib/classes/tld.js → esm2020/lib/classes/tld.mjs} +0 -0
  14. package/{esm2015/lib/classes/utility.js → esm2020/lib/classes/utility.mjs} +0 -0
  15. package/esm2020/lib/classes/validators.mjs +179 -0
  16. package/esm2020/lib/directives/http-prefix.directive.mjs +50 -0
  17. package/esm2020/lib/modules/alert/alert.module.mjs +20 -0
  18. package/esm2020/lib/modules/alert/alert.service.mjs +55 -0
  19. package/esm2020/lib/modules/alert/confirm.component.mjs +20 -0
  20. package/{esm2015/lib/modules/alert/public-api.js → esm2020/lib/modules/alert/public-api.mjs} +0 -0
  21. package/esm2020/lib/modules/avatar/avatar.module.mjs +19 -0
  22. package/esm2020/lib/modules/avatar/component/avatar.component.mjs +187 -0
  23. package/{esm2015/lib/modules/avatar/public-api.js → esm2020/lib/modules/avatar/public-api.mjs} +0 -0
  24. package/esm2020/lib/modules/avatar/service/avatar.service.mjs +66 -0
  25. package/esm2020/lib/modules/avatar/sources/gravatar.mjs +29 -0
  26. package/{esm2015/lib/modules/avatar/sources/image.js → esm2020/lib/modules/avatar/sources/image.mjs} +0 -0
  27. package/{esm2015/lib/modules/avatar/sources/initials.js → esm2020/lib/modules/avatar/sources/initials.mjs} +0 -0
  28. package/{esm2015/lib/modules/avatar/sources/source.js → esm2020/lib/modules/avatar/sources/source.mjs} +1 -1
  29. package/esm2020/lib/modules/columns-picker/columns-picker-column.directive.mjs +43 -0
  30. package/esm2020/lib/modules/columns-picker/columns-picker.component.mjs +84 -0
  31. package/esm2020/lib/modules/columns-picker/columns-picker.module.mjs +47 -0
  32. package/{esm2015/lib/modules/columns-picker/public-api.js → esm2020/lib/modules/columns-picker/public-api.mjs} +0 -0
  33. package/esm2020/lib/modules/common/common-module.mjs +54 -0
  34. package/esm2020/lib/modules/common/directives/linkable-tab.directive.mjs +79 -0
  35. package/esm2020/lib/modules/common/directives/reactive-asterisk.directive.mjs +33 -0
  36. package/esm2020/lib/modules/common/directives/src-density.directive.mjs +62 -0
  37. package/esm2020/lib/modules/common/pipes/capitalize.pipe.mjs +18 -0
  38. package/esm2020/lib/modules/common/pipes/ellipsis.pipe.mjs +14 -0
  39. package/esm2020/lib/modules/common/pipes/enum.pipe.mjs +25 -0
  40. package/esm2020/lib/modules/common/pipes/swiss-date.pipe.mjs +20 -0
  41. package/{esm2015/lib/modules/common/public-api.js → esm2020/lib/modules/common/public-api.mjs} +0 -0
  42. package/esm2020/lib/modules/common/services/memory-storage.mjs +112 -0
  43. package/esm2020/lib/modules/common/services/seo.service.mjs +114 -0
  44. package/esm2020/lib/modules/detail-header/detail-header.component.mjs +76 -0
  45. package/esm2020/lib/modules/detail-header/detail-header.module.mjs +21 -0
  46. package/{esm2015/lib/modules/detail-header/public-api.js → esm2020/lib/modules/detail-header/public-api.mjs} +0 -0
  47. package/esm2020/lib/modules/dialog-trigger/dialog-trigger.component.mjs +69 -0
  48. package/esm2020/lib/modules/dialog-trigger/dialog-trigger.module.mjs +19 -0
  49. package/{esm2015/lib/modules/dialog-trigger/public-api.js → esm2020/lib/modules/dialog-trigger/public-api.mjs} +0 -0
  50. package/esm2020/lib/modules/dropdown-components/abstract-association-select-component.directive.mjs +98 -0
  51. package/esm2020/lib/modules/dropdown-components/natural-dropdown-components.module.mjs +92 -0
  52. package/{esm2015/lib/modules/dropdown-components/public-api.js → esm2020/lib/modules/dropdown-components/public-api.mjs} +0 -0
  53. package/esm2020/lib/modules/dropdown-components/type-date/type-date.component.mjs +133 -0
  54. package/esm2020/lib/modules/dropdown-components/type-date-range/type-date-range.component.mjs +137 -0
  55. package/esm2020/lib/modules/dropdown-components/type-hierarchic-selector/type-hierarchic-selector.component.mjs +69 -0
  56. package/esm2020/lib/modules/dropdown-components/type-natural-select/type-natural-select.component.mjs +38 -0
  57. package/esm2020/lib/modules/dropdown-components/type-number/type-number.component.mjs +104 -0
  58. package/esm2020/lib/modules/dropdown-components/type-select/type-select.component.mjs +169 -0
  59. package/esm2020/lib/modules/dropdown-components/type-text/type-text.component.mjs +57 -0
  60. package/{esm2015/lib/modules/dropdown-components/types.js → esm2020/lib/modules/dropdown-components/types.mjs} +0 -0
  61. package/{esm2015/lib/modules/dropdown-components/utils.js → esm2020/lib/modules/dropdown-components/utils.mjs} +0 -0
  62. package/esm2020/lib/modules/file/abstract-file.mjs +231 -0
  63. package/esm2020/lib/modules/file/component/file.component.mjs +143 -0
  64. package/esm2020/lib/modules/file/file-drop.directive.mjs +110 -0
  65. package/esm2020/lib/modules/file/file-select.directive.mjs +28 -0
  66. package/esm2020/lib/modules/file/file.module.mjs +24 -0
  67. package/esm2020/lib/modules/file/file.service.mjs +48 -0
  68. package/{esm2015/lib/modules/file/public-api.js → esm2020/lib/modules/file/public-api.mjs} +0 -0
  69. package/{esm2015/lib/modules/file/types.js → esm2020/lib/modules/file/types.mjs} +0 -0
  70. package/{esm2015/lib/modules/file/utils.js → esm2020/lib/modules/file/utils.mjs} +3 -4
  71. package/esm2020/lib/modules/fixed-button/fixed-button.component.mjs +27 -0
  72. package/esm2020/lib/modules/fixed-button/fixed-button.module.mjs +21 -0
  73. package/{esm2015/lib/modules/fixed-button/public-api.js → esm2020/lib/modules/fixed-button/public-api.mjs} +0 -0
  74. package/esm2020/lib/modules/fixed-button-detail/fixed-button-detail.component.mjs +36 -0
  75. package/esm2020/lib/modules/fixed-button-detail/fixed-button-detail.module.mjs +20 -0
  76. package/{esm2015/lib/modules/fixed-button-detail/public-api.js → esm2020/lib/modules/fixed-button-detail/public-api.mjs} +0 -0
  77. package/{esm2015/lib/modules/hierarchic-selector/classes/flat-node.js → esm2020/lib/modules/hierarchic-selector/classes/flat-node.mjs} +1 -1
  78. package/{esm2015/lib/modules/hierarchic-selector/classes/hierarchic-configuration.js → esm2020/lib/modules/hierarchic-selector/classes/hierarchic-configuration.mjs} +0 -0
  79. package/{esm2015/lib/modules/hierarchic-selector/classes/hierarchic-filters-configuration.js → esm2020/lib/modules/hierarchic-selector/classes/hierarchic-filters-configuration.mjs} +0 -0
  80. package/{esm2015/lib/modules/hierarchic-selector/classes/model-node.js → esm2020/lib/modules/hierarchic-selector/classes/model-node.mjs} +1 -1
  81. package/esm2020/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.component.mjs +364 -0
  82. package/esm2020/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.service.mjs +258 -0
  83. package/esm2020/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.component.mjs +31 -0
  84. package/esm2020/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.service.mjs +23 -0
  85. package/esm2020/lib/modules/hierarchic-selector/hierarchic-selector.module.mjs +81 -0
  86. package/{esm2015/lib/modules/hierarchic-selector/public-api.js → esm2020/lib/modules/hierarchic-selector/public-api.mjs} +0 -0
  87. package/esm2020/lib/modules/icon/icon.component.mjs +92 -0
  88. package/esm2020/lib/modules/icon/icon.module.mjs +30 -0
  89. package/{esm2015/lib/modules/icon/public-api.js → esm2020/lib/modules/icon/public-api.mjs} +0 -0
  90. package/esm2020/lib/modules/matomo/matomo-module.module.mjs +12 -0
  91. package/esm2020/lib/modules/matomo/matomo.service.mjs +105 -0
  92. package/{esm2015/lib/modules/matomo/public-api.js → esm2020/lib/modules/matomo/public-api.mjs} +0 -0
  93. package/esm2020/lib/modules/panels/abstract-panel.mjs +56 -0
  94. package/{esm2015/lib/modules/panels/fallback-if-no-opened-panels.urlmatcher.js → esm2020/lib/modules/panels/fallback-if-no-opened-panels.urlmatcher.mjs} +0 -0
  95. package/esm2020/lib/modules/panels/panels.component.mjs +26 -0
  96. package/esm2020/lib/modules/panels/panels.module.mjs +33 -0
  97. package/esm2020/lib/modules/panels/panels.service.mjs +325 -0
  98. package/{esm2015/lib/modules/panels/panels.urlmatcher.js → esm2020/lib/modules/panels/panels.urlmatcher.mjs} +0 -0
  99. package/{esm2015/lib/modules/panels/public-api.js → esm2020/lib/modules/panels/public-api.mjs} +0 -0
  100. package/{esm2015/lib/modules/panels/types.js → esm2020/lib/modules/panels/types.mjs} +0 -0
  101. package/{esm2015/lib/modules/relations/public-api.js → esm2020/lib/modules/relations/public-api.mjs} +0 -0
  102. package/esm2020/lib/modules/relations/relations.component.mjs +198 -0
  103. package/esm2020/lib/modules/relations/relations.module.mjs +58 -0
  104. package/{esm2015/lib/modules/search/classes/graphql-doctrine.js → esm2020/lib/modules/search/classes/graphql-doctrine.mjs} +0 -0
  105. package/{esm2015/lib/modules/search/classes/graphql-doctrine.types.js → esm2020/lib/modules/search/classes/graphql-doctrine.types.mjs} +0 -0
  106. package/{esm2015/lib/modules/search/classes/transformers.js → esm2020/lib/modules/search/classes/transformers.mjs} +0 -0
  107. package/{esm2015/lib/modules/search/classes/url.js → esm2020/lib/modules/search/classes/url.mjs} +0 -0
  108. package/{esm2015/lib/modules/search/classes/utils.js → esm2020/lib/modules/search/classes/utils.mjs} +0 -0
  109. package/{esm2015/lib/modules/search/dropdown-container/dropdown-container-animations.js → esm2020/lib/modules/search/dropdown-container/dropdown-container-animations.mjs} +0 -0
  110. package/esm2020/lib/modules/search/dropdown-container/dropdown-container.component.mjs +88 -0
  111. package/{esm2015/lib/modules/search/dropdown-container/dropdown-ref.js → esm2020/lib/modules/search/dropdown-container/dropdown-ref.mjs} +1 -1
  112. package/esm2020/lib/modules/search/dropdown-container/dropdown.service.mjs +93 -0
  113. package/esm2020/lib/modules/search/facet-selector/facet-selector.component.mjs +50 -0
  114. package/esm2020/lib/modules/search/group/group.component.mjs +45 -0
  115. package/esm2020/lib/modules/search/input/input.component.mjs +328 -0
  116. package/{esm2015/lib/modules/search/public-api.js → esm2020/lib/modules/search/public-api.mjs} +0 -0
  117. package/esm2020/lib/modules/search/search/search.component.mjs +78 -0
  118. package/esm2020/lib/modules/search/search.module.mjs +84 -0
  119. package/{esm2015/lib/modules/search/types/dropdown-component.js → esm2020/lib/modules/search/types/dropdown-component.mjs} +0 -0
  120. package/{esm2015/lib/modules/search/types/facet.js → esm2020/lib/modules/search/types/facet.mjs} +0 -0
  121. package/{esm2015/lib/modules/search/types/values.js → esm2020/lib/modules/search/types/values.mjs} +0 -0
  122. package/esm2020/lib/modules/select/abstract-select.component.mjs +186 -0
  123. package/{esm2015/lib/modules/select/public-api.js → esm2020/lib/modules/select/public-api.mjs} +0 -0
  124. package/esm2020/lib/modules/select/select/select.component.mjs +208 -0
  125. package/esm2020/lib/modules/select/select-enum/select-enum.component.mjs +42 -0
  126. package/esm2020/lib/modules/select/select-hierarchic/select-hierarchic.component.mjs +128 -0
  127. package/esm2020/lib/modules/select/select.module.mjs +68 -0
  128. package/{esm2015/lib/modules/sidenav/public-api.js → esm2020/lib/modules/sidenav/public-api.mjs} +0 -0
  129. package/esm2020/lib/modules/sidenav/sidenav/sidenav.component.mjs +15 -0
  130. package/esm2020/lib/modules/sidenav/sidenav-container/sidenav-container.component.mjs +87 -0
  131. package/esm2020/lib/modules/sidenav/sidenav-content/sidenav-content.component.mjs +12 -0
  132. package/esm2020/lib/modules/sidenav/sidenav-stack.service.mjs +52 -0
  133. package/esm2020/lib/modules/sidenav/sidenav.module.mjs +25 -0
  134. package/esm2020/lib/modules/sidenav/sidenav.service.mjs +195 -0
  135. package/{esm2015/lib/modules/stamp/public-api.js → esm2020/lib/modules/stamp/public-api.mjs} +0 -0
  136. package/esm2020/lib/modules/stamp/stamp-module.module.mjs +18 -0
  137. package/esm2020/lib/modules/stamp/stamp.component.mjs +14 -0
  138. package/{esm2015/lib/modules/table-button/public-api.js → esm2020/lib/modules/table-button/public-api.mjs} +0 -0
  139. package/esm2020/lib/modules/table-button/table-button.component.mjs +48 -0
  140. package/esm2020/lib/modules/table-button/table-button.module.mjs +21 -0
  141. package/esm2020/lib/services/abstract-model.service.mjs +509 -0
  142. package/esm2020/lib/services/enum.service.mjs +67 -0
  143. package/esm2020/lib/services/link-mutation.service.mjs +153 -0
  144. package/esm2020/lib/services/persistence.service.mjs +113 -0
  145. package/esm2020/lib/services/swiss-parsing-date-adapter.service.mjs +55 -0
  146. package/{esm2015/lib/types/types.js → esm2020/lib/types/types.mjs} +0 -0
  147. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  148. package/fesm2015/{ecodev-natural.js → ecodev-natural.mjs} +2791 -2361
  149. package/fesm2015/ecodev-natural.mjs.map +1 -0
  150. package/fesm2020/ecodev-natural.mjs +10506 -0
  151. package/fesm2020/ecodev-natural.mjs.map +1 -0
  152. package/lib/classes/abstract-controller.d.ts +3 -0
  153. package/lib/classes/abstract-detail.d.ts +3 -0
  154. package/lib/classes/abstract-editable-list.d.ts +3 -0
  155. package/lib/classes/abstract-list.d.ts +3 -0
  156. package/lib/classes/abstract-navigable-list.d.ts +3 -0
  157. package/lib/directives/http-prefix.directive.d.ts +3 -0
  158. package/lib/modules/alert/alert.module.d.ts +9 -0
  159. package/lib/modules/alert/alert.service.d.ts +3 -0
  160. package/lib/modules/alert/confirm.component.d.ts +3 -0
  161. package/lib/modules/avatar/avatar.module.d.ts +6 -0
  162. package/lib/modules/avatar/component/avatar.component.d.ts +3 -0
  163. package/lib/modules/avatar/service/avatar.service.d.ts +3 -0
  164. package/lib/modules/columns-picker/columns-picker-column.directive.d.ts +3 -0
  165. package/lib/modules/columns-picker/columns-picker.component.d.ts +3 -0
  166. package/lib/modules/columns-picker/columns-picker.module.d.ts +13 -0
  167. package/lib/modules/common/common-module.d.ts +16 -0
  168. package/lib/modules/common/directives/linkable-tab.directive.d.ts +3 -0
  169. package/lib/modules/common/directives/reactive-asterisk.directive.d.ts +3 -0
  170. package/lib/modules/common/directives/src-density.directive.d.ts +3 -0
  171. package/lib/modules/common/pipes/capitalize.pipe.d.ts +3 -0
  172. package/lib/modules/common/pipes/ellipsis.pipe.d.ts +3 -0
  173. package/lib/modules/common/pipes/enum.pipe.d.ts +3 -0
  174. package/lib/modules/common/pipes/swiss-date.pipe.d.ts +3 -0
  175. package/lib/modules/common/services/memory-storage.d.ts +3 -0
  176. package/lib/modules/common/services/seo.service.d.ts +3 -0
  177. package/lib/modules/detail-header/detail-header.component.d.ts +3 -0
  178. package/lib/modules/detail-header/detail-header.module.d.ts +9 -0
  179. package/lib/modules/dialog-trigger/dialog-trigger.component.d.ts +3 -0
  180. package/lib/modules/dialog-trigger/dialog-trigger.module.d.ts +7 -0
  181. package/lib/modules/dropdown-components/abstract-association-select-component.directive.d.ts +3 -0
  182. package/lib/modules/dropdown-components/natural-dropdown-components.module.d.ts +22 -0
  183. package/lib/modules/dropdown-components/type-date/type-date.component.d.ts +3 -0
  184. package/lib/modules/dropdown-components/type-date-range/type-date-range.component.d.ts +3 -0
  185. package/lib/modules/dropdown-components/type-hierarchic-selector/type-hierarchic-selector.component.d.ts +3 -0
  186. package/lib/modules/dropdown-components/type-natural-select/type-natural-select.component.d.ts +3 -0
  187. package/lib/modules/dropdown-components/type-number/type-number.component.d.ts +3 -0
  188. package/lib/modules/dropdown-components/type-select/type-select.component.d.ts +3 -0
  189. package/lib/modules/dropdown-components/type-text/type-text.component.d.ts +3 -0
  190. package/lib/modules/file/abstract-file.d.ts +3 -0
  191. package/lib/modules/file/component/file.component.d.ts +3 -0
  192. package/lib/modules/file/file-drop.directive.d.ts +3 -0
  193. package/lib/modules/file/file-select.directive.d.ts +3 -0
  194. package/lib/modules/file/file.module.d.ts +11 -0
  195. package/lib/modules/file/file.service.d.ts +3 -0
  196. package/lib/modules/fixed-button/fixed-button.component.d.ts +3 -0
  197. package/lib/modules/fixed-button/fixed-button.module.d.ts +9 -0
  198. package/lib/modules/fixed-button-detail/fixed-button-detail.component.d.ts +3 -0
  199. package/lib/modules/fixed-button-detail/fixed-button-detail.module.d.ts +8 -0
  200. package/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.component.d.ts +3 -0
  201. package/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.service.d.ts +3 -0
  202. package/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.component.d.ts +3 -0
  203. package/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.service.d.ts +3 -0
  204. package/lib/modules/hierarchic-selector/hierarchic-selector.module.d.ts +21 -0
  205. package/lib/modules/icon/icon.component.d.ts +3 -0
  206. package/lib/modules/icon/icon.module.d.ts +7 -0
  207. package/lib/modules/matomo/matomo-module.module.d.ts +4 -0
  208. package/lib/modules/matomo/matomo.service.d.ts +3 -0
  209. package/lib/modules/panels/abstract-panel.d.ts +3 -0
  210. package/lib/modules/panels/panels.component.d.ts +3 -0
  211. package/lib/modules/panels/panels.module.d.ts +8 -0
  212. package/lib/modules/panels/panels.service.d.ts +3 -0
  213. package/lib/modules/relations/relations.component.d.ts +3 -0
  214. package/lib/modules/relations/relations.module.d.ts +15 -0
  215. package/lib/modules/search/dropdown-container/dropdown-container.component.d.ts +3 -0
  216. package/lib/modules/search/dropdown-container/dropdown-ref.d.ts +1 -1
  217. package/lib/modules/search/dropdown-container/dropdown.service.d.ts +3 -0
  218. package/lib/modules/search/facet-selector/facet-selector.component.d.ts +3 -0
  219. package/lib/modules/search/group/group.component.d.ts +3 -0
  220. package/lib/modules/search/input/input.component.d.ts +3 -0
  221. package/lib/modules/search/search/search.component.d.ts +3 -0
  222. package/lib/modules/search/search.module.d.ts +19 -0
  223. package/lib/modules/select/abstract-select.component.d.ts +4 -1
  224. package/lib/modules/select/select/select.component.d.ts +3 -0
  225. package/lib/modules/select/select-enum/select-enum.component.d.ts +3 -0
  226. package/lib/modules/select/select-hierarchic/select-hierarchic.component.d.ts +3 -0
  227. package/lib/modules/select/select.module.d.ts +19 -0
  228. package/lib/modules/sidenav/sidenav/sidenav.component.d.ts +3 -0
  229. package/lib/modules/sidenav/sidenav-container/sidenav-container.component.d.ts +3 -0
  230. package/lib/modules/sidenav/sidenav-content/sidenav-content.component.d.ts +3 -0
  231. package/lib/modules/sidenav/sidenav-stack.service.d.ts +4 -1
  232. package/lib/modules/sidenav/sidenav.module.d.ts +11 -0
  233. package/lib/modules/sidenav/sidenav.service.d.ts +3 -0
  234. package/lib/modules/stamp/stamp-module.module.d.ts +6 -0
  235. package/lib/modules/stamp/stamp.component.d.ts +3 -0
  236. package/lib/modules/table-button/table-button.component.d.ts +3 -0
  237. package/lib/modules/table-button/table-button.module.d.ts +9 -0
  238. package/lib/services/enum.service.d.ts +3 -0
  239. package/lib/services/link-mutation.service.d.ts +3 -0
  240. package/lib/services/persistence.service.d.ts +3 -0
  241. package/lib/services/swiss-parsing-date-adapter.service.d.ts +4 -1
  242. package/package.json +25 -12
  243. package/src/lib/modules/alert/_alert.theme.scss +1 -1
  244. package/src/lib/modules/file/component/_file.theme.scss +1 -1
  245. package/src/lib/modules/icon/_icon.theme.scss +1 -1
  246. package/src/lib/modules/search/dropdown-container/_dropdown-container.theme.scss +1 -1
  247. package/src/lib/modules/table-button/_table-button.theme.scss +1 -1
  248. package/src/lib/styles/_table.scss +1 -1
  249. package/theming/_natural.theme.scss +1 -1
  250. package/bundles/ecodev-natural.umd.js +0 -11318
  251. package/bundles/ecodev-natural.umd.js.map +0 -1
  252. package/ecodev-natural.metadata.json +0 -1
  253. package/esm2015/ecodev-natural.js +0 -14
  254. package/esm2015/lib/classes/abstract-controller.js +0 -29
  255. package/esm2015/lib/classes/abstract-detail.js +0 -157
  256. package/esm2015/lib/classes/abstract-editable-list.js +0 -97
  257. package/esm2015/lib/classes/abstract-list.js +0 -409
  258. package/esm2015/lib/classes/abstract-navigable-list.js +0 -126
  259. package/esm2015/lib/classes/data-source.js +0 -76
  260. package/esm2015/lib/classes/query-variable-manager.js +0 -161
  261. package/esm2015/lib/classes/validators.js +0 -176
  262. package/esm2015/lib/directives/http-prefix.directive.js +0 -46
  263. package/esm2015/lib/modules/alert/alert.module.js +0 -15
  264. package/esm2015/lib/modules/alert/alert.service.js +0 -59
  265. package/esm2015/lib/modules/alert/confirm.component.js +0 -17
  266. package/esm2015/lib/modules/avatar/avatar.module.js +0 -14
  267. package/esm2015/lib/modules/avatar/component/avatar.component.js +0 -158
  268. package/esm2015/lib/modules/avatar/service/avatar.service.js +0 -65
  269. package/esm2015/lib/modules/avatar/sources/gravatar.js +0 -29
  270. package/esm2015/lib/modules/columns-picker/columns-picker-column.directive.js +0 -41
  271. package/esm2015/lib/modules/columns-picker/columns-picker.component.js +0 -82
  272. package/esm2015/lib/modules/columns-picker/columns-picker.module.js +0 -28
  273. package/esm2015/lib/modules/common/common-module.js +0 -35
  274. package/esm2015/lib/modules/common/directives/linkable-tab.directive.js +0 -82
  275. package/esm2015/lib/modules/common/directives/reactive-asterisk.directive.js +0 -31
  276. package/esm2015/lib/modules/common/directives/src-density.directive.js +0 -63
  277. package/esm2015/lib/modules/common/pipes/capitalize.pipe.js +0 -14
  278. package/esm2015/lib/modules/common/pipes/ellipsis.pipe.js +0 -10
  279. package/esm2015/lib/modules/common/pipes/enum.pipe.js +0 -24
  280. package/esm2015/lib/modules/common/pipes/swiss-date.pipe.js +0 -16
  281. package/esm2015/lib/modules/common/services/memory-storage.js +0 -110
  282. package/esm2015/lib/modules/common/services/seo.service.js +0 -120
  283. package/esm2015/lib/modules/detail-header/detail-header.component.js +0 -63
  284. package/esm2015/lib/modules/detail-header/detail-header.module.js +0 -16
  285. package/esm2015/lib/modules/dialog-trigger/dialog-trigger.component.js +0 -68
  286. package/esm2015/lib/modules/dialog-trigger/dialog-trigger.module.js +0 -14
  287. package/esm2015/lib/modules/dropdown-components/abstract-association-select-component.directive.js +0 -96
  288. package/esm2015/lib/modules/dropdown-components/natural-dropdown-components.module.js +0 -51
  289. package/esm2015/lib/modules/dropdown-components/type-date/type-date.component.js +0 -123
  290. package/esm2015/lib/modules/dropdown-components/type-date-range/type-date-range.component.js +0 -128
  291. package/esm2015/lib/modules/dropdown-components/type-hierarchic-selector/type-hierarchic-selector.component.js +0 -63
  292. package/esm2015/lib/modules/dropdown-components/type-natural-select/type-natural-select.component.js +0 -31
  293. package/esm2015/lib/modules/dropdown-components/type-number/type-number.component.js +0 -99
  294. package/esm2015/lib/modules/dropdown-components/type-select/type-select.component.js +0 -161
  295. package/esm2015/lib/modules/dropdown-components/type-text/type-text.component.js +0 -53
  296. package/esm2015/lib/modules/file/abstract-file.js +0 -223
  297. package/esm2015/lib/modules/file/component/file.component.js +0 -133
  298. package/esm2015/lib/modules/file/file-drop.directive.js +0 -99
  299. package/esm2015/lib/modules/file/file-select.directive.js +0 -25
  300. package/esm2015/lib/modules/file/file.module.js +0 -19
  301. package/esm2015/lib/modules/file/file.service.js +0 -47
  302. package/esm2015/lib/modules/fixed-button/fixed-button.component.js +0 -23
  303. package/esm2015/lib/modules/fixed-button/fixed-button.module.js +0 -16
  304. package/esm2015/lib/modules/fixed-button-detail/fixed-button-detail.component.js +0 -31
  305. package/esm2015/lib/modules/fixed-button-detail/fixed-button-detail.module.js +0 -15
  306. package/esm2015/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.component.js +0 -351
  307. package/esm2015/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.service.js +0 -258
  308. package/esm2015/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.component.js +0 -28
  309. package/esm2015/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.service.js +0 -23
  310. package/esm2015/lib/modules/hierarchic-selector/hierarchic-selector.module.js +0 -46
  311. package/esm2015/lib/modules/icon/icon.component.js +0 -78
  312. package/esm2015/lib/modules/icon/icon.module.js +0 -25
  313. package/esm2015/lib/modules/matomo/matomo-module.module.js +0 -7
  314. package/esm2015/lib/modules/matomo/matomo.service.js +0 -106
  315. package/esm2015/lib/modules/panels/abstract-panel.js +0 -50
  316. package/esm2015/lib/modules/panels/panels.component.js +0 -26
  317. package/esm2015/lib/modules/panels/panels.module.js +0 -28
  318. package/esm2015/lib/modules/panels/panels.service.js +0 -331
  319. package/esm2015/lib/modules/relations/relations.component.js +0 -181
  320. package/esm2015/lib/modules/relations/relations.module.js +0 -33
  321. package/esm2015/lib/modules/search/dropdown-container/dropdown-container.component.js +0 -87
  322. package/esm2015/lib/modules/search/dropdown-container/dropdown.service.js +0 -95
  323. package/esm2015/lib/modules/search/facet-selector/facet-selector.component.js +0 -47
  324. package/esm2015/lib/modules/search/group/group.component.js +0 -39
  325. package/esm2015/lib/modules/search/input/input.component.js +0 -316
  326. package/esm2015/lib/modules/search/search/search.component.js +0 -71
  327. package/esm2015/lib/modules/search/search.module.js +0 -52
  328. package/esm2015/lib/modules/select/abstract-select.component.js +0 -176
  329. package/esm2015/lib/modules/select/select/select.component.js +0 -190
  330. package/esm2015/lib/modules/select/select-enum/select-enum.component.js +0 -34
  331. package/esm2015/lib/modules/select/select-hierarchic/select-hierarchic.component.js +0 -120
  332. package/esm2015/lib/modules/select/select.module.js +0 -39
  333. package/esm2015/lib/modules/sidenav/sidenav/sidenav.component.js +0 -12
  334. package/esm2015/lib/modules/sidenav/sidenav-container/sidenav-container.component.js +0 -79
  335. package/esm2015/lib/modules/sidenav/sidenav-content/sidenav-content.component.js +0 -13
  336. package/esm2015/lib/modules/sidenav/sidenav-stack.service.js +0 -50
  337. package/esm2015/lib/modules/sidenav/sidenav.module.js +0 -20
  338. package/esm2015/lib/modules/sidenav/sidenav.service.js +0 -199
  339. package/esm2015/lib/modules/stamp/stamp-module.module.js +0 -13
  340. package/esm2015/lib/modules/stamp/stamp.component.js +0 -13
  341. package/esm2015/lib/modules/table-button/table-button.component.js +0 -38
  342. package/esm2015/lib/modules/table-button/table-button.module.js +0 -16
  343. package/esm2015/lib/services/abstract-model.service.js +0 -509
  344. package/esm2015/lib/services/enum.service.js +0 -68
  345. package/esm2015/lib/services/link-mutation.service.js +0 -155
  346. package/esm2015/lib/services/persistence.service.js +0 -114
  347. package/esm2015/lib/services/swiss-parsing-date-adapter.service.js +0 -55
  348. package/fesm2015/ecodev-natural.js.map +0 -1
@@ -1,31 +0,0 @@
1
- // tslint:disable:directive-selector
2
- import { Directive, Optional } from '@angular/core';
3
- import { MatFormField } from '@angular/material/form-field';
4
- import { MatInput } from '@angular/material/input';
5
- import { MatSelect } from '@angular/material/select';
6
- /**
7
- * Input/Select into FormField consider Validator.required from reactive form if the [required] attribute is missing in the template
8
- */
9
- export class ReactiveAsteriskDirective {
10
- constructor(matFormField) {
11
- this.matFormField = matFormField;
12
- }
13
- ngAfterContentChecked() {
14
- var _a, _b, _c, _d, _e;
15
- const ctrl = (_a = this.matFormField) === null || _a === void 0 ? void 0 : _a._control;
16
- if (ctrl instanceof MatInput || ctrl instanceof MatSelect) {
17
- // Here we cast to be able to set `required`. It should not be required and might be a bug in TypeScript ?
18
- // Try to remove and see if it compiles
19
- ctrl.required = (_e = (_d = (_c = (_b = ctrl.ngControl) === null || _b === void 0 ? void 0 : _b.control) === null || _c === void 0 ? void 0 : _c.validator) === null || _d === void 0 ? void 0 : _d.call(_c, {})) === null || _e === void 0 ? void 0 : _e.required;
20
- }
21
- }
22
- }
23
- ReactiveAsteriskDirective.decorators = [
24
- { type: Directive, args: [{
25
- selector: 'mat-form-field:has(input:not([required])), mat-form-field:has(mat-select:not([required]))',
26
- },] }
27
- ];
28
- ReactiveAsteriskDirective.ctorParameters = () => [
29
- { type: MatFormField, decorators: [{ type: Optional }] }
30
- ];
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhY3RpdmUtYXN0ZXJpc2suZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvY29tbW9uL2RpcmVjdGl2ZXMvcmVhY3RpdmUtYXN0ZXJpc2suZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9DQUFvQztBQUNwQyxPQUFPLEVBQXNCLFNBQVMsRUFBRSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFdkUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQzFELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFFbkQ7O0dBRUc7QUFJSCxNQUFNLE9BQU8seUJBQXlCO0lBQ2xDLFlBQWdDLFlBQWlDO1FBQWpDLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtJQUFHLENBQUM7SUFFOUQscUJBQXFCOztRQUN4QixNQUFNLElBQUksR0FBRyxNQUFBLElBQUksQ0FBQyxZQUFZLDBDQUFFLFFBQVEsQ0FBQztRQUN6QyxJQUFJLElBQUksWUFBWSxRQUFRLElBQUksSUFBSSxZQUFZLFNBQVMsRUFBRTtZQUN2RCwwR0FBMEc7WUFDMUcsdUNBQXVDO1lBQ3RDLElBQWlCLENBQUMsUUFBUSxHQUFHLE1BQUEsTUFBQSxNQUFBLE1BQUEsSUFBSSxDQUFDLFNBQVMsMENBQUUsT0FBTywwQ0FBRSxTQUFTLG1EQUFHLEVBQXFCLENBQUMsMENBQUUsUUFBUSxDQUFDO1NBQ3ZHO0lBQ0wsQ0FBQzs7O1lBYkosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSwyRkFBMkY7YUFDeEc7OztZQVRPLFlBQVksdUJBV0gsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRzbGludDpkaXNhYmxlOmRpcmVjdGl2ZS1zZWxlY3RvclxuaW1wb3J0IHtBZnRlckNvbnRlbnRDaGVja2VkLCBEaXJlY3RpdmUsIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWJzdHJhY3RDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge01hdEZvcm1GaWVsZH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQge01hdElucHV0fSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQge01hdFNlbGVjdH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcblxuLyoqXG4gKiBJbnB1dC9TZWxlY3QgaW50byBGb3JtRmllbGQgY29uc2lkZXIgVmFsaWRhdG9yLnJlcXVpcmVkIGZyb20gcmVhY3RpdmUgZm9ybSBpZiB0aGUgW3JlcXVpcmVkXSBhdHRyaWJ1dGUgaXMgbWlzc2luZyBpbiB0aGUgdGVtcGxhdGVcbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdtYXQtZm9ybS1maWVsZDpoYXMoaW5wdXQ6bm90KFtyZXF1aXJlZF0pKSwgbWF0LWZvcm0tZmllbGQ6aGFzKG1hdC1zZWxlY3Q6bm90KFtyZXF1aXJlZF0pKScsXG59KVxuZXhwb3J0IGNsYXNzIFJlYWN0aXZlQXN0ZXJpc2tEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRDaGVja2VkIHtcbiAgICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBwcml2YXRlIG1hdEZvcm1GaWVsZDogTWF0Rm9ybUZpZWxkIHwgbnVsbCkge31cblxuICAgIHB1YmxpYyBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGN0cmwgPSB0aGlzLm1hdEZvcm1GaWVsZD8uX2NvbnRyb2w7XG4gICAgICAgIGlmIChjdHJsIGluc3RhbmNlb2YgTWF0SW5wdXQgfHwgY3RybCBpbnN0YW5jZW9mIE1hdFNlbGVjdCkge1xuICAgICAgICAgICAgLy8gSGVyZSB3ZSBjYXN0IHRvIGJlIGFibGUgdG8gc2V0IGByZXF1aXJlZGAuIEl0IHNob3VsZCBub3QgYmUgcmVxdWlyZWQgYW5kIG1pZ2h0IGJlIGEgYnVnIGluIFR5cGVTY3JpcHQgP1xuICAgICAgICAgICAgLy8gVHJ5IHRvIHJlbW92ZSBhbmQgc2VlIGlmIGl0IGNvbXBpbGVzXG4gICAgICAgICAgICAoY3RybCBhcyBNYXRJbnB1dCkucmVxdWlyZWQgPSBjdHJsLm5nQ29udHJvbD8uY29udHJvbD8udmFsaWRhdG9yPy4oe30gYXMgQWJzdHJhY3RDb250cm9sKT8ucmVxdWlyZWQ7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -1,63 +0,0 @@
1
- import { Directive, ElementRef, Input } from '@angular/core';
2
- export class NaturalSrcDensityDirective {
3
- constructor(elementRef) {
4
- this.elementRef = elementRef;
5
- }
6
- /**
7
- * Automatically apply image selection based on screen density.
8
- *
9
- * The given URL **MUST** be the normal density URL. And it **MUST** include
10
- * the size as last path segment. That size will automatically be changed
11
- * for other screen densities. That means that the server **MUST** be able to
12
- * serve an image of the given size.
13
- *
14
- * Usage:
15
- *
16
- * ```html
17
- * <img [naturalSrcDensity]="'/api/image/123/200'" />
18
- * ```
19
- *
20
- * Will generate something like:
21
- *
22
- * ```html
23
- * <img
24
- * src="/api/image/123/200"
25
- * srcset="/api/image/123/200, /api/image/123/300 1.5x, /api/image/123/400 2x, /api/image/123/600 3x, /api/image/123/800 4x"
26
- * />
27
- * ```
28
- *
29
- * See https://web.dev/codelab-density-descriptors/
30
- */
31
- set naturalSrcDensity(src) {
32
- var _a;
33
- if (!src) {
34
- return;
35
- }
36
- const match = src.match(/^(.*\/)(\d+)$/);
37
- const base = match === null || match === void 0 ? void 0 : match[1];
38
- const size = +((_a = match === null || match === void 0 ? void 0 : match[2]) !== null && _a !== void 0 ? _a : 0);
39
- let srcset = '';
40
- if (base && size) {
41
- // This should cover most common densities according to https://www.mydevice.io/#tab1
42
- const size15 = Math.round(size * 1.5);
43
- const size2 = size * 2;
44
- const size3 = size * 3;
45
- const size4 = size * 4;
46
- srcset = `${base}${size}, ${base}${size15} 1.5x, ${base}${size2} 2x, ${base}${size3} 3x, ${base}${size4} 4x`;
47
- }
48
- this.elementRef.nativeElement.src = src;
49
- this.elementRef.nativeElement.srcset = srcset;
50
- }
51
- }
52
- NaturalSrcDensityDirective.decorators = [
53
- { type: Directive, args: [{
54
- selector: 'img[naturalSrcDensity]',
55
- },] }
56
- ];
57
- NaturalSrcDensityDirective.ctorParameters = () => [
58
- { type: ElementRef }
59
- ];
60
- NaturalSrcDensityDirective.propDecorators = {
61
- naturalSrcDensity: [{ type: Input }]
62
- };
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjLWRlbnNpdHkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvY29tbW9uL2RpcmVjdGl2ZXMvc3JjLWRlbnNpdHkuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUszRCxNQUFNLE9BQU8sMEJBQTBCO0lBbURuQyxZQUE2QixVQUF3QztRQUF4QyxlQUFVLEdBQVYsVUFBVSxDQUE4QjtJQUFHLENBQUM7SUFsRHpFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0F3Qkc7SUFDSCxJQUNXLGlCQUFpQixDQUFDLEdBQVc7O1FBQ3BDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDTixPQUFPO1NBQ1Y7UUFFRCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sSUFBSSxHQUFHLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRyxDQUFDLENBQUMsQ0FBQztRQUN4QixNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsTUFBQSxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUcsQ0FBQyxDQUFDLG1DQUFJLENBQUMsQ0FBQyxDQUFDO1FBRWhDLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNoQixJQUFJLElBQUksSUFBSSxJQUFJLEVBQUU7WUFDZCxxRkFBcUY7WUFDckYsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7WUFDdEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQztZQUN2QixNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZCLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7WUFFdkIsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLElBQUksS0FBSyxJQUFJLEdBQUcsTUFBTSxVQUFVLElBQUksR0FBRyxLQUFLLFFBQVEsSUFBSSxHQUFHLEtBQUssUUFBUSxJQUFJLEdBQUcsS0FBSyxLQUFLLENBQUM7U0FDaEg7UUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDbEQsQ0FBQzs7O1lBcERKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsd0JBQXdCO2FBQ3JDOzs7WUFKa0IsVUFBVTs7O2dDQStCeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnaW1nW25hdHVyYWxTcmNEZW5zaXR5XScsXG59KVxuZXhwb3J0IGNsYXNzIE5hdHVyYWxTcmNEZW5zaXR5RGlyZWN0aXZlIHtcbiAgICAvKipcbiAgICAgKiBBdXRvbWF0aWNhbGx5IGFwcGx5IGltYWdlIHNlbGVjdGlvbiBiYXNlZCBvbiBzY3JlZW4gZGVuc2l0eS5cbiAgICAgKlxuICAgICAqIFRoZSBnaXZlbiBVUkwgKipNVVNUKiogYmUgdGhlIG5vcm1hbCBkZW5zaXR5IFVSTC4gQW5kIGl0ICoqTVVTVCoqIGluY2x1ZGVcbiAgICAgKiB0aGUgc2l6ZSBhcyBsYXN0IHBhdGggc2VnbWVudC4gVGhhdCBzaXplIHdpbGwgYXV0b21hdGljYWxseSBiZSBjaGFuZ2VkXG4gICAgICogZm9yIG90aGVyIHNjcmVlbiBkZW5zaXRpZXMuIFRoYXQgbWVhbnMgdGhhdCB0aGUgc2VydmVyICoqTVVTVCoqIGJlIGFibGUgdG9cbiAgICAgKiBzZXJ2ZSBhbiBpbWFnZSBvZiB0aGUgZ2l2ZW4gc2l6ZS5cbiAgICAgKlxuICAgICAqIFVzYWdlOlxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpbWcgW25hdHVyYWxTcmNEZW5zaXR5XT1cIicvYXBpL2ltYWdlLzEyMy8yMDAnXCIgLz5cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIFdpbGwgZ2VuZXJhdGUgc29tZXRoaW5nIGxpa2U6XG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGltZ1xuICAgICAqICAgICBzcmM9XCIvYXBpL2ltYWdlLzEyMy8yMDBcIlxuICAgICAqICAgICBzcmNzZXQ9XCIvYXBpL2ltYWdlLzEyMy8yMDAsIC9hcGkvaW1hZ2UvMTIzLzMwMCAxLjV4LCAvYXBpL2ltYWdlLzEyMy80MDAgMngsIC9hcGkvaW1hZ2UvMTIzLzYwMCAzeCwgL2FwaS9pbWFnZS8xMjMvODAwIDR4XCJcbiAgICAgKiAvPlxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogU2VlIGh0dHBzOi8vd2ViLmRldi9jb2RlbGFiLWRlbnNpdHktZGVzY3JpcHRvcnMvXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IG5hdHVyYWxTcmNEZW5zaXR5KHNyYzogc3RyaW5nKSB7XG4gICAgICAgIGlmICghc3JjKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtYXRjaCA9IHNyYy5tYXRjaCgvXiguKlxcLykoXFxkKykkLyk7XG4gICAgICAgIGNvbnN0IGJhc2UgPSBtYXRjaD8uWzFdO1xuICAgICAgICBjb25zdCBzaXplID0gKyhtYXRjaD8uWzJdID8/IDApO1xuXG4gICAgICAgIGxldCBzcmNzZXQgPSAnJztcbiAgICAgICAgaWYgKGJhc2UgJiYgc2l6ZSkge1xuICAgICAgICAgICAgLy8gVGhpcyBzaG91bGQgY292ZXIgbW9zdCBjb21tb24gZGVuc2l0aWVzIGFjY29yZGluZyB0byBodHRwczovL3d3dy5teWRldmljZS5pby8jdGFiMVxuICAgICAgICAgICAgY29uc3Qgc2l6ZTE1ID0gTWF0aC5yb3VuZChzaXplICogMS41KTtcbiAgICAgICAgICAgIGNvbnN0IHNpemUyID0gc2l6ZSAqIDI7XG4gICAgICAgICAgICBjb25zdCBzaXplMyA9IHNpemUgKiAzO1xuICAgICAgICAgICAgY29uc3Qgc2l6ZTQgPSBzaXplICogNDtcblxuICAgICAgICAgICAgc3Jjc2V0ID0gYCR7YmFzZX0ke3NpemV9LCAke2Jhc2V9JHtzaXplMTV9IDEuNXgsICR7YmFzZX0ke3NpemUyfSAyeCwgJHtiYXNlfSR7c2l6ZTN9IDN4LCAke2Jhc2V9JHtzaXplNH0gNHhgO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3JjID0gc3JjO1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zcmNzZXQgPSBzcmNzZXQ7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxJbWFnZUVsZW1lbnQ+KSB7fVxufVxuIl19
@@ -1,14 +0,0 @@
1
- import { Pipe } from '@angular/core';
2
- import { upperCaseFirstLetter } from '../../../classes/utility';
3
- export class NaturalCapitalizePipe {
4
- transform(value) {
5
- if (value) {
6
- return upperCaseFirstLetter(value);
7
- }
8
- return value;
9
- }
10
- }
11
- NaturalCapitalizePipe.decorators = [
12
- { type: Pipe, args: [{ name: 'capitalize' },] }
13
- ];
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FwaXRhbGl6ZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvY29tbW9uL3BpcGVzL2NhcGl0YWxpemUucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsSUFBSSxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUc5RCxNQUFNLE9BQU8scUJBQXFCO0lBQ3ZCLFNBQVMsQ0FBQyxLQUFvQjtRQUNqQyxJQUFJLEtBQUssRUFBRTtZQUNQLE9BQU8sb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDdEM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDOzs7WUFSSixJQUFJLFNBQUMsRUFBQyxJQUFJLEVBQUUsWUFBWSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQaXBlLCBQaXBlVHJhbnNmb3JtfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dXBwZXJDYXNlRmlyc3RMZXR0ZXJ9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvdXRpbGl0eSc7XG5cbkBQaXBlKHtuYW1lOiAnY2FwaXRhbGl6ZSd9KVxuZXhwb3J0IGNsYXNzIE5hdHVyYWxDYXBpdGFsaXplUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHB1YmxpYyB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZyB8IG51bGwpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gdXBwZXJDYXNlRmlyc3RMZXR0ZXIodmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,10 +0,0 @@
1
- import { Pipe } from '@angular/core';
2
- export class NaturalEllipsisPipe {
3
- transform(value, limit) {
4
- return value.substr(0, limit - 1) + (value.length > limit ? '…' : '');
5
- }
6
- }
7
- NaturalEllipsisPipe.decorators = [
8
- { type: Pipe, args: [{ name: 'ellipsis' },] }
9
- ];
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxsaXBzaXMucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL2NvbW1vbi9waXBlcy9lbGxpcHNpcy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBR2xELE1BQU0sT0FBTyxtQkFBbUI7SUFDckIsU0FBUyxDQUFDLEtBQWEsRUFBRSxLQUFhO1FBQ3pDLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUUsQ0FBQzs7O1lBSkosSUFBSSxTQUFDLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGlwZSwgUGlwZVRyYW5zZm9ybX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtuYW1lOiAnZWxsaXBzaXMnfSlcbmV4cG9ydCBjbGFzcyBOYXR1cmFsRWxsaXBzaXNQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgcHVibGljIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nLCBsaW1pdDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLnN1YnN0cigwLCBsaW1pdCAtIDEpICsgKHZhbHVlLmxlbmd0aCA+IGxpbWl0ID8gJ+KApicgOiAnJyk7XG4gICAgfVxufVxuIl19
@@ -1,24 +0,0 @@
1
- import { Pipe } from '@angular/core';
2
- import { NaturalEnumService } from '../../../services/enum.service';
3
- /**
4
- * A pipe to output an enum user-friendly name, instead of its value.
5
- *
6
- * Usage would be: {{ element.priority | enum: 'Priority' | async }}
7
- */
8
- export class NaturalEnumPipe {
9
- constructor(enumService) {
10
- this.enumService = enumService;
11
- }
12
- transform(value, enumName) {
13
- return this.enumService.getValueName(value, enumName);
14
- }
15
- }
16
- NaturalEnumPipe.decorators = [
17
- { type: Pipe, args: [{
18
- name: 'enum',
19
- },] }
20
- ];
21
- NaturalEnumPipe.ctorParameters = () => [
22
- { type: NaturalEnumService }
23
- ];
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvY29tbW9uL3BpcGVzL2VudW0ucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsSUFBSSxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUdsRTs7OztHQUlHO0FBSUgsTUFBTSxPQUFPLGVBQWU7SUFDeEIsWUFBNkIsV0FBK0I7UUFBL0IsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO0lBQUcsQ0FBQztJQUV6RCxTQUFTLENBQUMsS0FBVSxFQUFFLFFBQWdCO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzFELENBQUM7OztZQVJKLElBQUksU0FBQztnQkFDRixJQUFJLEVBQUUsTUFBTTthQUNmOzs7WUFWTyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1BpcGUsIFBpcGVUcmFuc2Zvcm19IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOYXR1cmFsRW51bVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2VudW0uc2VydmljZSc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIEEgcGlwZSB0byBvdXRwdXQgYW4gZW51bSB1c2VyLWZyaWVuZGx5IG5hbWUsIGluc3RlYWQgb2YgaXRzIHZhbHVlLlxuICpcbiAqIFVzYWdlIHdvdWxkIGJlOiB7eyBlbGVtZW50LnByaW9yaXR5IHwgZW51bTogJ1ByaW9yaXR5JyB8IGFzeW5jIH19XG4gKi9cbkBQaXBlKHtcbiAgICBuYW1lOiAnZW51bScsXG59KVxuZXhwb3J0IGNsYXNzIE5hdHVyYWxFbnVtUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZW51bVNlcnZpY2U6IE5hdHVyYWxFbnVtU2VydmljZSkge31cblxuICAgIHB1YmxpYyB0cmFuc2Zvcm0odmFsdWU6IGFueSwgZW51bU5hbWU6IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmVudW1TZXJ2aWNlLmdldFZhbHVlTmFtZSh2YWx1ZSwgZW51bU5hbWUpO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,16 +0,0 @@
1
- import { Pipe } from '@angular/core';
2
- import { DatePipe } from '@angular/common';
3
- /**
4
- * A normal DatePipe but with default formatting to be '12.24.2020 23:30' to match the most common use-cases
5
- */
6
- export class NaturalSwissDatePipe extends DatePipe {
7
- transform(value, format = 'dd.MM.y HH:mm', timezone, locale) {
8
- return super.transform(value, format, timezone, locale);
9
- }
10
- }
11
- NaturalSwissDatePipe.decorators = [
12
- { type: Pipe, args: [{
13
- name: 'swissDate',
14
- },] }
15
- ];
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpc3MtZGF0ZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvY29tbW9uL3BpcGVzL3N3aXNzLWRhdGUucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsSUFBSSxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFekM7O0dBRUc7QUFJSCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsUUFBUTtJQVF2QyxTQUFTLENBQ1osS0FBZ0QsRUFDaEQsTUFBTSxHQUFHLGVBQWUsRUFDeEIsUUFBaUIsRUFDakIsTUFBZTtRQUVmLE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM1RCxDQUFDOzs7WUFsQkosSUFBSSxTQUFDO2dCQUNGLElBQUksRUFBRSxXQUFXO2FBQ3BCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQaXBlLCBQaXBlVHJhbnNmb3JtfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RGF0ZVBpcGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbi8qKlxuICogQSBub3JtYWwgRGF0ZVBpcGUgYnV0IHdpdGggZGVmYXVsdCBmb3JtYXR0aW5nIHRvIGJlICcxMi4yNC4yMDIwIDIzOjMwJyB0byBtYXRjaCB0aGUgbW9zdCBjb21tb24gdXNlLWNhc2VzXG4gKi9cbkBQaXBlKHtcbiAgICBuYW1lOiAnc3dpc3NEYXRlJyxcbn0pXG5leHBvcnQgY2xhc3MgTmF0dXJhbFN3aXNzRGF0ZVBpcGUgZXh0ZW5kcyBEYXRlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHB1YmxpYyB0cmFuc2Zvcm0odmFsdWU6IG51bGwgfCB1bmRlZmluZWQsIGZvcm1hdD86IHN0cmluZywgdGltZXpvbmU/OiBzdHJpbmcsIGxvY2FsZT86IHN0cmluZyk6IG51bGw7XG4gICAgcHVibGljIHRyYW5zZm9ybShcbiAgICAgICAgdmFsdWU6IERhdGUgfCBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkLFxuICAgICAgICBmb3JtYXQ/OiBzdHJpbmcsXG4gICAgICAgIHRpbWV6b25lPzogc3RyaW5nLFxuICAgICAgICBsb2NhbGU/OiBzdHJpbmcsXG4gICAgKTogc3RyaW5nIHwgbnVsbDtcbiAgICBwdWJsaWMgdHJhbnNmb3JtKFxuICAgICAgICB2YWx1ZTogRGF0ZSB8IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQsXG4gICAgICAgIGZvcm1hdCA9ICdkZC5NTS55IEhIOm1tJyxcbiAgICAgICAgdGltZXpvbmU/OiBzdHJpbmcsXG4gICAgICAgIGxvY2FsZT86IHN0cmluZyxcbiAgICApOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLnRyYW5zZm9ybSh2YWx1ZSwgZm9ybWF0LCB0aW1lem9uZSwgbG9jYWxlKTtcbiAgICB9XG59XG4iXX0=
@@ -1,110 +0,0 @@
1
- import { Injectable, InjectionToken } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export const SESSION_STORAGE = new InjectionToken('Session storage that can be shimed when running on server or in tests');
4
- export const LOCAL_STORAGE = new InjectionToken('Local storage that can be shimed when running on server or in tests');
5
- /**
6
- * Memory storage to keep store volatile things in memory
7
- *
8
- * Should be used to shim sessionStorage when running on server or in our tests
9
- */
10
- export class NaturalMemoryStorage {
11
- constructor() {
12
- this.data = new Map();
13
- }
14
- get length() {
15
- return this.data.size;
16
- }
17
- clear() {
18
- this.data.clear();
19
- }
20
- getItem(key) {
21
- const value = this.data.get(key);
22
- return value === undefined ? null : value;
23
- }
24
- key(index) {
25
- let i = 0;
26
- for (const key of this.data.keys()) {
27
- if (i++ === index) {
28
- return key;
29
- }
30
- }
31
- return null;
32
- }
33
- removeItem(key) {
34
- this.data.delete(key);
35
- }
36
- setItem(key, value) {
37
- this.data.set(key, value);
38
- }
39
- }
40
- NaturalMemoryStorage.ɵprov = i0.ɵɵdefineInjectable({ factory: function NaturalMemoryStorage_Factory() { return new NaturalMemoryStorage(); }, token: NaturalMemoryStorage, providedIn: "root" });
41
- NaturalMemoryStorage.decorators = [
42
- { type: Injectable, args: [{
43
- providedIn: 'root',
44
- },] }
45
- ];
46
- export function sessionStorageFactory() {
47
- try {
48
- // tslint:disable-next-line:no-restricted-globals
49
- if (typeof sessionStorage !== 'undefined') {
50
- // tslint:disable-next-line:no-restricted-globals
51
- return sessionStorage;
52
- }
53
- }
54
- catch (e) {
55
- // nothing do to
56
- }
57
- return new NaturalMemoryStorage();
58
- }
59
- /**
60
- * Standard `sessionStorage` provider that is compatible with SSR.
61
- *
62
- * In SSR environment, or when `sessionStorage` is not available, will return a `NaturalMemoryStorage`
63
- */
64
- export const sessionStorageProvider = {
65
- // Here we must use a factory that return directly the value, otherwise it will
66
- // crash when running on server because the value does not exist (but the factory will
67
- // never actually be called on server, so the server will not see the missing value)
68
- provide: SESSION_STORAGE,
69
- useFactory: sessionStorageFactory,
70
- };
71
- /**
72
- * Provide in-memory session storage to be used only in tests or SSR
73
- */
74
- export const memorySessionStorageProvider = {
75
- provide: SESSION_STORAGE,
76
- useClass: NaturalMemoryStorage,
77
- };
78
- export function localStorageFactory() {
79
- try {
80
- // tslint:disable-next-line:no-restricted-globals
81
- if (typeof localStorage !== 'undefined') {
82
- // tslint:disable-next-line:no-restricted-globals
83
- return localStorage;
84
- }
85
- }
86
- catch (e) {
87
- // Do nothing
88
- }
89
- return new NaturalMemoryStorage();
90
- }
91
- /**
92
- * Standard `localStorage` provider that is compatible with SSR.
93
- *
94
- * In SSR environment, or when `localStorage` is not available, will return a `NaturalMemoryStorage`
95
- */
96
- export const localStorageProvider = {
97
- // Here we must use a factory that return directly the value, otherwise it will
98
- // crash when running on server because the value does not exist (but the factory will
99
- // never actually be called on server, so the server will not see the missing value)
100
- provide: LOCAL_STORAGE,
101
- useFactory: localStorageFactory,
102
- };
103
- /**
104
- * Provide in-memory local storage to be used only in tests or SSR
105
- */
106
- export const memoryLocalStorageProvider = {
107
- provide: LOCAL_STORAGE,
108
- useClass: NaturalMemoryStorage,
109
- };
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LXN0b3JhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvbW9kdWxlcy9jb21tb24vc2VydmljZXMvbWVtb3J5LXN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBRSxjQUFjLEVBQVcsTUFBTSxlQUFlLENBQUM7O0FBRW5FLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxJQUFJLGNBQWMsQ0FDN0MsdUVBQXVFLENBQzFFLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxjQUFjLENBQzNDLHFFQUFxRSxDQUN4RSxDQUFDO0FBT0Y7Ozs7R0FJRztBQUlILE1BQU0sT0FBTyxvQkFBb0I7SUFIakM7UUFJcUIsU0FBSSxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO0tBaUNyRDtJQS9CRyxJQUFXLE1BQU07UUFDYixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQzFCLENBQUM7SUFFTSxLQUFLO1FBQ1IsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRU0sT0FBTyxDQUFDLEdBQVc7UUFDdEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakMsT0FBTyxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUM5QyxDQUFDO0lBRU0sR0FBRyxDQUFDLEtBQWE7UUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2hDLElBQUksQ0FBQyxFQUFFLEtBQUssS0FBSyxFQUFFO2dCQUNmLE9BQU8sR0FBRyxDQUFDO2FBQ2Q7U0FDSjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxVQUFVLENBQUMsR0FBVztRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRU0sT0FBTyxDQUFDLEdBQVcsRUFBRSxLQUFhO1FBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDOzs7O1lBcENKLFVBQVUsU0FBQztnQkFDUixVQUFVLEVBQUUsTUFBTTthQUNyQjs7QUFxQ0QsTUFBTSxVQUFVLHFCQUFxQjtJQUNqQyxJQUFJO1FBQ0EsaURBQWlEO1FBQ2pELElBQUksT0FBTyxjQUFjLEtBQUssV0FBVyxFQUFFO1lBQ3ZDLGlEQUFpRDtZQUNqRCxPQUFPLGNBQWMsQ0FBQztTQUN6QjtLQUNKO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDUixnQkFBZ0I7S0FDbkI7SUFFRCxPQUFPLElBQUksb0JBQW9CLEVBQUUsQ0FBQztBQUN0QyxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFhO0lBQzVDLCtFQUErRTtJQUMvRSxzRkFBc0Y7SUFDdEYsb0ZBQW9GO0lBQ3BGLE9BQU8sRUFBRSxlQUFlO0lBQ3hCLFVBQVUsRUFBRSxxQkFBcUI7Q0FDcEMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQWE7SUFDbEQsT0FBTyxFQUFFLGVBQWU7SUFDeEIsUUFBUSxFQUFFLG9CQUFvQjtDQUNqQyxDQUFDO0FBRUYsTUFBTSxVQUFVLG1CQUFtQjtJQUMvQixJQUFJO1FBQ0EsaURBQWlEO1FBQ2pELElBQUksT0FBTyxZQUFZLEtBQUssV0FBVyxFQUFFO1lBQ3JDLGlEQUFpRDtZQUNqRCxPQUFPLFlBQVksQ0FBQztTQUN2QjtLQUNKO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDUixhQUFhO0tBQ2hCO0lBRUQsT0FBTyxJQUFJLG9CQUFvQixFQUFFLENBQUM7QUFDdEMsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBYTtJQUMxQywrRUFBK0U7SUFDL0Usc0ZBQXNGO0lBQ3RGLG9GQUFvRjtJQUNwRixPQUFPLEVBQUUsYUFBYTtJQUN0QixVQUFVLEVBQUUsbUJBQW1CO0NBQ2xDLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFhO0lBQ2hELE9BQU8sRUFBRSxhQUFhO0lBQ3RCLFFBQVEsRUFBRSxvQkFBb0I7Q0FDakMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIFByb3ZpZGVyfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGNvbnN0IFNFU1NJT05fU1RPUkFHRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxOYXR1cmFsU3RvcmFnZT4oXG4gICAgJ1Nlc3Npb24gc3RvcmFnZSB0aGF0IGNhbiBiZSBzaGltZWQgd2hlbiBydW5uaW5nIG9uIHNlcnZlciBvciBpbiB0ZXN0cycsXG4pO1xuXG5leHBvcnQgY29uc3QgTE9DQUxfU1RPUkFHRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxOYXR1cmFsU3RvcmFnZT4oXG4gICAgJ0xvY2FsIHN0b3JhZ2UgdGhhdCBjYW4gYmUgc2hpbWVkIHdoZW4gcnVubmluZyBvbiBzZXJ2ZXIgb3IgaW4gdGVzdHMnLFxuKTtcblxuLyoqXG4gKiBOb3JtYWwgYFN0b3JhZ2VgIHR5cGUsIGJ1dCB3aXRob3V0IGFycmF5IGFjY2Vzc1xuICovXG5leHBvcnQgdHlwZSBOYXR1cmFsU3RvcmFnZSA9IFBpY2s8U3RvcmFnZSwgJ2xlbmd0aCcgfCAnY2xlYXInIHwgJ2dldEl0ZW0nIHwgJ2tleScgfCAncmVtb3ZlSXRlbScgfCAnc2V0SXRlbSc+O1xuXG4vKipcbiAqIE1lbW9yeSBzdG9yYWdlIHRvIGtlZXAgc3RvcmUgdm9sYXRpbGUgdGhpbmdzIGluIG1lbW9yeVxuICpcbiAqIFNob3VsZCBiZSB1c2VkIHRvIHNoaW0gc2Vzc2lvblN0b3JhZ2Ugd2hlbiBydW5uaW5nIG9uIHNlcnZlciBvciBpbiBvdXIgdGVzdHNcbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTmF0dXJhbE1lbW9yeVN0b3JhZ2UgaW1wbGVtZW50cyBOYXR1cmFsU3RvcmFnZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkYXRhID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcblxuICAgIHB1YmxpYyBnZXQgbGVuZ3RoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEuc2l6ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGF0YS5jbGVhcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRJdGVtKGtleTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5kYXRhLmdldChrZXkpO1xuICAgICAgICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/IG51bGwgOiB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMga2V5KGluZGV4OiBudW1iZXIpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiB0aGlzLmRhdGEua2V5cygpKSB7XG4gICAgICAgICAgICBpZiAoaSsrID09PSBpbmRleCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBrZXk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlSXRlbShrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmRhdGEuZGVsZXRlKGtleSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEl0ZW0oa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kYXRhLnNldChrZXksIHZhbHVlKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXNzaW9uU3RvcmFnZUZhY3RvcnkoKTogTmF0dXJhbFN0b3JhZ2Uge1xuICAgIHRyeSB7XG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1yZXN0cmljdGVkLWdsb2JhbHNcbiAgICAgICAgaWYgKHR5cGVvZiBzZXNzaW9uU3RvcmFnZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1yZXN0cmljdGVkLWdsb2JhbHNcbiAgICAgICAgICAgIHJldHVybiBzZXNzaW9uU3RvcmFnZTtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gbm90aGluZyBkbyB0b1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgTmF0dXJhbE1lbW9yeVN0b3JhZ2UoKTtcbn1cblxuLyoqXG4gKiBTdGFuZGFyZCBgc2Vzc2lvblN0b3JhZ2VgIHByb3ZpZGVyIHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIFNTUi5cbiAqXG4gKiBJbiBTU1IgZW52aXJvbm1lbnQsIG9yIHdoZW4gYHNlc3Npb25TdG9yYWdlYCBpcyBub3QgYXZhaWxhYmxlLCB3aWxsIHJldHVybiBhIGBOYXR1cmFsTWVtb3J5U3RvcmFnZWBcbiAqL1xuZXhwb3J0IGNvbnN0IHNlc3Npb25TdG9yYWdlUHJvdmlkZXI6IFByb3ZpZGVyID0ge1xuICAgIC8vIEhlcmUgd2UgbXVzdCB1c2UgYSBmYWN0b3J5IHRoYXQgcmV0dXJuIGRpcmVjdGx5IHRoZSB2YWx1ZSwgb3RoZXJ3aXNlIGl0IHdpbGxcbiAgICAvLyBjcmFzaCB3aGVuIHJ1bm5pbmcgb24gc2VydmVyIGJlY2F1c2UgdGhlIHZhbHVlIGRvZXMgbm90IGV4aXN0IChidXQgdGhlIGZhY3Rvcnkgd2lsbFxuICAgIC8vIG5ldmVyIGFjdHVhbGx5IGJlIGNhbGxlZCBvbiBzZXJ2ZXIsIHNvIHRoZSBzZXJ2ZXIgd2lsbCBub3Qgc2VlIHRoZSBtaXNzaW5nIHZhbHVlKVxuICAgIHByb3ZpZGU6IFNFU1NJT05fU1RPUkFHRSxcbiAgICB1c2VGYWN0b3J5OiBzZXNzaW9uU3RvcmFnZUZhY3RvcnksXG59O1xuXG4vKipcbiAqIFByb3ZpZGUgaW4tbWVtb3J5IHNlc3Npb24gc3RvcmFnZSB0byBiZSB1c2VkIG9ubHkgaW4gdGVzdHMgb3IgU1NSXG4gKi9cbmV4cG9ydCBjb25zdCBtZW1vcnlTZXNzaW9uU3RvcmFnZVByb3ZpZGVyOiBQcm92aWRlciA9IHtcbiAgICBwcm92aWRlOiBTRVNTSU9OX1NUT1JBR0UsXG4gICAgdXNlQ2xhc3M6IE5hdHVyYWxNZW1vcnlTdG9yYWdlLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGxvY2FsU3RvcmFnZUZhY3RvcnkoKTogTmF0dXJhbFN0b3JhZ2Uge1xuICAgIHRyeSB7XG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1yZXN0cmljdGVkLWdsb2JhbHNcbiAgICAgICAgaWYgKHR5cGVvZiBsb2NhbFN0b3JhZ2UgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tcmVzdHJpY3RlZC1nbG9iYWxzXG4gICAgICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlO1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBEbyBub3RoaW5nXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBOYXR1cmFsTWVtb3J5U3RvcmFnZSgpO1xufVxuXG4vKipcbiAqIFN0YW5kYXJkIGBsb2NhbFN0b3JhZ2VgIHByb3ZpZGVyIHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIFNTUi5cbiAqXG4gKiBJbiBTU1IgZW52aXJvbm1lbnQsIG9yIHdoZW4gYGxvY2FsU3RvcmFnZWAgaXMgbm90IGF2YWlsYWJsZSwgd2lsbCByZXR1cm4gYSBgTmF0dXJhbE1lbW9yeVN0b3JhZ2VgXG4gKi9cbmV4cG9ydCBjb25zdCBsb2NhbFN0b3JhZ2VQcm92aWRlcjogUHJvdmlkZXIgPSB7XG4gICAgLy8gSGVyZSB3ZSBtdXN0IHVzZSBhIGZhY3RvcnkgdGhhdCByZXR1cm4gZGlyZWN0bHkgdGhlIHZhbHVlLCBvdGhlcndpc2UgaXQgd2lsbFxuICAgIC8vIGNyYXNoIHdoZW4gcnVubmluZyBvbiBzZXJ2ZXIgYmVjYXVzZSB0aGUgdmFsdWUgZG9lcyBub3QgZXhpc3QgKGJ1dCB0aGUgZmFjdG9yeSB3aWxsXG4gICAgLy8gbmV2ZXIgYWN0dWFsbHkgYmUgY2FsbGVkIG9uIHNlcnZlciwgc28gdGhlIHNlcnZlciB3aWxsIG5vdCBzZWUgdGhlIG1pc3NpbmcgdmFsdWUpXG4gICAgcHJvdmlkZTogTE9DQUxfU1RPUkFHRSxcbiAgICB1c2VGYWN0b3J5OiBsb2NhbFN0b3JhZ2VGYWN0b3J5LFxufTtcblxuLyoqXG4gKiBQcm92aWRlIGluLW1lbW9yeSBsb2NhbCBzdG9yYWdlIHRvIGJlIHVzZWQgb25seSBpbiB0ZXN0cyBvciBTU1JcbiAqL1xuZXhwb3J0IGNvbnN0IG1lbW9yeUxvY2FsU3RvcmFnZVByb3ZpZGVyOiBQcm92aWRlciA9IHtcbiAgICBwcm92aWRlOiBMT0NBTF9TVE9SQUdFLFxuICAgIHVzZUNsYXNzOiBOYXR1cmFsTWVtb3J5U3RvcmFnZSxcbn07XG4iXX0=
@@ -1,120 +0,0 @@
1
- import { Inject, Injectable, InjectionToken } from '@angular/core';
2
- import { Meta, Title } from '@angular/platform-browser';
3
- import { NavigationEnd, Router } from '@angular/router';
4
- import { filter } from 'rxjs/operators';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/router";
7
- import * as i2 from "@angular/platform-browser";
8
- export const NATURAL_SEO_CONFIG = new InjectionToken('Configuration for SEO service');
9
- export function stripTags(str) {
10
- return str.replace(/<\/?[^>]+>/g, '');
11
- }
12
- /**
13
- * This service is responsible to keep up to date the page title and page description according
14
- * to what is configured in routing or default values.
15
- *
16
- * It **must** be injected in the root module of the application to have effects in all modules. And it
17
- * must be provided a configuration.
18
- *
19
- * The full title has the following structure:
20
- *
21
- * page title - extra part - app name
22
- */
23
- export class NaturalSeoService {
24
- constructor(config, router, titleService, metaTagService) {
25
- this.config = config;
26
- this.router = router;
27
- this.titleService = titleService;
28
- this.metaTagService = metaTagService;
29
- this.router.events.pipe(filter(event => event instanceof NavigationEnd)).subscribe(() => {
30
- var _a;
31
- this.routeData = this.getRouteData(this.router.routerState.root.snapshot);
32
- const seo = (_a = this.routeData.seo) !== null && _a !== void 0 ? _a : { title: '' };
33
- const basic = this.toBasic(seo);
34
- this.update(basic);
35
- });
36
- }
37
- /**
38
- * Update the SEO with given info. The extra part and app name will be appended automatically.
39
- *
40
- * In most cases this should not be used, and instead the SEO should be configured in the routing,
41
- * possibly with the callback variant for some dynamism.
42
- *
43
- * But in rare cases only the Component is able to build a proper page title, after it gather everything it
44
- * needed. For those cases the Component can inject this service and update the SEO directly.
45
- */
46
- update(seo) {
47
- var _a, _b;
48
- // Title
49
- const parts = [
50
- seo.title,
51
- this.config.extraPart && this.routeData ? this.config.extraPart(this.routeData) : null,
52
- this.config.applicationName,
53
- ];
54
- const title = parts.filter(s => !!s).join(' - ');
55
- this.titleService.setTitle(title);
56
- // Description
57
- const description = (_a = seo === null || seo === void 0 ? void 0 : seo.description) !== null && _a !== void 0 ? _a : this.config.defaultDescription;
58
- this.updateTag('description', description);
59
- // Robots
60
- const robots = (_b = seo === null || seo === void 0 ? void 0 : seo.robots) !== null && _b !== void 0 ? _b : this.config.defaultRobots;
61
- this.updateTag('robots', robots);
62
- }
63
- updateTag(name, value) {
64
- if (value) {
65
- this.metaTagService.updateTag({
66
- name: name,
67
- value: stripTags(value),
68
- });
69
- }
70
- else {
71
- this.metaTagService.removeTag(`name="${name}"`);
72
- }
73
- }
74
- /**
75
- * Returns the data from the most deep/specific activated route
76
- */
77
- getRouteData(route) {
78
- var _a;
79
- if (route.firstChild) {
80
- return this.getRouteData(route.firstChild);
81
- }
82
- else {
83
- return (_a = route.data) !== null && _a !== void 0 ? _a : null;
84
- }
85
- }
86
- toBasic(seo) {
87
- var _a, _b, _c, _d, _e;
88
- if (!this.routeData) {
89
- throw new Error('Must have some route data to get basic SEO');
90
- }
91
- if (typeof seo === 'function') {
92
- return seo(this.routeData);
93
- }
94
- else if ('resolveKey' in seo) {
95
- const data = this.routeData[seo.resolveKey];
96
- if (!data) {
97
- throw new Error('Could not find resolved data for SEO service with key: ' + seo.resolveKey);
98
- }
99
- return {
100
- title: (_d = (_b = (_a = data.model) === null || _a === void 0 ? void 0 : _a.fullName) !== null && _b !== void 0 ? _b : (_c = data.model) === null || _c === void 0 ? void 0 : _c.name) !== null && _d !== void 0 ? _d : '',
101
- description: (_e = data.model) === null || _e === void 0 ? void 0 : _e.description,
102
- robots: seo.robots,
103
- };
104
- }
105
- return seo;
106
- }
107
- }
108
- NaturalSeoService.ɵprov = i0.ɵɵdefineInjectable({ factory: function NaturalSeoService_Factory() { return new NaturalSeoService(i0.ɵɵinject(NATURAL_SEO_CONFIG), i0.ɵɵinject(i1.Router), i0.ɵɵinject(i2.Title), i0.ɵɵinject(i2.Meta)); }, token: NaturalSeoService, providedIn: "root" });
109
- NaturalSeoService.decorators = [
110
- { type: Injectable, args: [{
111
- providedIn: 'root',
112
- },] }
113
- ];
114
- NaturalSeoService.ctorParameters = () => [
115
- { type: undefined, decorators: [{ type: Inject, args: [NATURAL_SEO_CONFIG,] }] },
116
- { type: Router },
117
- { type: Title },
118
- { type: Meta }
119
- ];
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VvLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvbW9kdWxlcy9jb21tb24vc2VydmljZXMvc2VvLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxJQUFJLEVBQUUsS0FBSyxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDdEQsT0FBTyxFQUErQixhQUFhLEVBQUUsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDcEYsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7O0FBeUV0QyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLGNBQWMsQ0FBbUIsK0JBQStCLENBQUMsQ0FBQztBQUV4RyxNQUFNLFVBQVUsU0FBUyxDQUFDLEdBQVc7SUFDakMsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMxQyxDQUFDO0FBVUQ7Ozs7Ozs7Ozs7R0FVRztBQUlILE1BQU0sT0FBTyxpQkFBaUI7SUFHMUIsWUFDaUQsTUFBd0IsRUFDcEQsTUFBYyxFQUNkLFlBQW1CLEVBQ25CLGNBQW9CO1FBSFEsV0FBTSxHQUFOLE1BQU0sQ0FBa0I7UUFDcEQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGlCQUFZLEdBQVosWUFBWSxDQUFPO1FBQ25CLG1CQUFjLEdBQWQsY0FBYyxDQUFNO1FBRXJDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLFlBQVksYUFBYSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFOztZQUNwRixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzFFLE1BQU0sR0FBRyxHQUFlLE1BQUEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLG1DQUFJLEVBQUMsS0FBSyxFQUFFLEVBQUUsRUFBQyxDQUFDO1lBQzFELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNJLE1BQU0sQ0FBQyxHQUFvQjs7UUFDOUIsUUFBUTtRQUNSLE1BQU0sS0FBSyxHQUFHO1lBQ1YsR0FBRyxDQUFDLEtBQUs7WUFDVCxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDdEYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlO1NBQzlCLENBQUM7UUFFRixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVsQyxjQUFjO1FBQ2QsTUFBTSxXQUFXLEdBQUcsTUFBQSxHQUFHLGFBQUgsR0FBRyx1QkFBSCxHQUFHLENBQUUsV0FBVyxtQ0FBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDO1FBQ3ZFLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRTNDLFNBQVM7UUFDVCxNQUFNLE1BQU0sR0FBRyxNQUFBLEdBQUcsYUFBSCxHQUFHLHVCQUFILEdBQUcsQ0FBRSxNQUFNLG1DQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDO1FBQ3hELElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTyxTQUFTLENBQUMsSUFBWSxFQUFFLEtBQWM7UUFDMUMsSUFBSSxLQUFLLEVBQUU7WUFDUCxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQztnQkFDMUIsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUM7YUFDMUIsQ0FBQyxDQUFDO1NBQ047YUFBTTtZQUNILElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLFNBQVMsSUFBSSxHQUFHLENBQUMsQ0FBQztTQUNuRDtJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNLLFlBQVksQ0FBQyxLQUE2Qjs7UUFDOUMsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFO1lBQ2xCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDOUM7YUFBTTtZQUNILE9BQU8sTUFBQSxLQUFLLENBQUMsSUFBSSxtQ0FBSSxJQUFJLENBQUM7U0FDN0I7SUFDTCxDQUFDO0lBRU8sT0FBTyxDQUFDLEdBQWU7O1FBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztTQUNqRTtRQUVELElBQUksT0FBTyxHQUFHLEtBQUssVUFBVSxFQUFFO1lBQzNCLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUM5QjthQUFNLElBQUksWUFBWSxJQUFJLEdBQUcsRUFBRTtZQUM1QixNQUFNLElBQUksR0FBNkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDdEUsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDUCxNQUFNLElBQUksS0FBSyxDQUFDLHlEQUF5RCxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUMvRjtZQUVELE9BQU87Z0JBQ0gsS0FBSyxFQUFFLE1BQUEsTUFBQSxNQUFBLElBQUksQ0FBQyxLQUFLLDBDQUFFLFFBQVEsbUNBQUksTUFBQSxJQUFJLENBQUMsS0FBSywwQ0FBRSxJQUFJLG1DQUFJLEVBQUU7Z0JBQ3JELFdBQVcsRUFBRSxNQUFBLElBQUksQ0FBQyxLQUFLLDBDQUFFLFdBQVc7Z0JBQ3BDLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTTthQUNyQixDQUFDO1NBQ0w7UUFFRCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7Ozs7WUE3RkosVUFBVSxTQUFDO2dCQUNSLFVBQVUsRUFBRSxNQUFNO2FBQ3JCOzs7NENBS1EsTUFBTSxTQUFDLGtCQUFrQjtZQTFHbUIsTUFBTTtZQUQ3QyxLQUFLO1lBQVgsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01ldGEsIFRpdGxlfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgRGF0YSwgTmF2aWdhdGlvbkVuZCwgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtmaWx0ZXJ9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZXhwb3J0IHR5cGUgTmF0dXJhbFNlbyA9IE5hdHVyYWxTZW9CYXNpYyB8IE5hdHVyYWxTZW9DYWxsYmFjayB8IE5hdHVyYWxTZW9SZXNvbHZlO1xuXG4vKipcbiAqIFR5cGljYWxseSB1c2VkIGZvciBcInN0YXRpY1wiIHBhZ2VzIHdoZXJlIHRoZXJlIGlzIG5vdCBhIHNpbmdsZSByZXNvbHZlZCBvYmplY3QuIFNvXG4gKiBhbGwgcGFnZXMgc3VjaCBhcyBcIkFib3V0XCIsIG9yIGxpc3Qgb2Ygb2JqZWN0cyAobGlzdCBvZiByaXNrcywgZXRjLikuXG4gKlxuICogVGhpcyBzaG91bGQgYmUgdGhlIG1vc3QgY29tbW9uIHVzZWQgdmFyaWFudC5cbiAqL1xuZXhwb3J0IHR5cGUgTmF0dXJhbFNlb0Jhc2ljID0gUm9ib3RzICYge1xuICAgIC8qKlxuICAgICAqIFRoZSBwYWdlIHRpdGxlLCB0aGF0IHdpbGwgYmUgY29uY2F0ZW5hdGVkIHdpdGggYXBwbGljYXRpb24gbmFtZVxuICAgICAqL1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogSWYgZ2l2ZW4gd2lsbCBiZSB1c2VkIGFzIHBhZ2UgZGVzY3JpcHRpb24sIG90aGVyd2lzZSBmYWxsYmFjayBvbiBkZWZhdWx0IHZhbHVlXG4gICAgICovXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIFR5cGljYWxseSB1c2VkIGZvciBhIFwiZHluYW1pY1wiIHBhZ2Ugd2hlcmUgYSBzaW5nbGUgb2JqZWN0IGlzIHJlc29sdmVkLiBTbyBhIGRldGFpbCBwYWdlLCBzdWNoXG4gKiBhcyB0aGUgZGV0YWlsIG9mIGEgcmlzayBhbmQgc28gb24uXG4gKi9cbmV4cG9ydCB0eXBlIE5hdHVyYWxTZW9SZXNvbHZlID0gUm9ib3RzICYge1xuICAgIC8qKlxuICAgICAqIFRoZSBrZXkgdG8gYmUgdXNlZCBpbiB0aGUgcmVzb2x2ZWQgZGF0YSB0byBmaW5kIHRoZSByZXNvbHZlZCBvYmplY3QuIFRoZSBmdWxsTmFtZVxuICAgICAqIG9yIG5hbWUgb2YgdGhlIG9iamVjdCB3aWxsIGJlIHVzZWQgZm9yIHBhZ2UgdGl0bGUsIGFuZCB0aGUgb2JqZWN0IGRlc2NyaXB0aW9uLCBpZiBhbnksXG4gICAgICogd2lsbCBiZSB1c2VkIGZvciBwYWdlIGRlc2NyaXB0aW9uLlxuICAgICAqL1xuICAgIHJlc29sdmVLZXk6IHN0cmluZztcbn07XG5cbi8qKlxuICogUmFyZWx5IHVzZWQgZm9yIGEgcGFnZSB0aGF0IGhhcyB2ZXJ5IHNwZWNpZmljIG5lZWRzIGFuZCBuZWVkIHRvIGJ1aWxkIHRpdGxlIGFuZCBkZXNjcmlwdGlvbiBpbiBhIGN1c3RvbSB3YXkuXG4gKiBUaGUgY2FsbGJhY2sgYmFjayB3aWxsIGJlIGdpdmVuIHRoZSByZXNvbHZlZCBkYXRhLCBhbmQgaXQgaXMgdXAgdG8gdGhlIGNhbGxiYWNrIHRvIGZpbmQgd2hhdGV2ZXIgaXQgbmVlZHMuXG4gKi9cbmV4cG9ydCB0eXBlIE5hdHVyYWxTZW9DYWxsYmFjayA9IChyb3V0ZURhdGE6IERhdGEpID0+IE5hdHVyYWxTZW9CYXNpYztcblxuaW50ZXJmYWNlIFJvYm90cyB7XG4gICAgLyoqXG4gICAgICogSWYgZ2l2ZW4gd2lsbCBiZSB1c2VkIGFzIHJvYm90cyBtZXRhIHRhZywgb3RoZXJ3aXNlIGZhbGxiYWNrIG9uIGRlZmF1bHQgdmFsdWVcbiAgICAgKi9cbiAgICByb2JvdHM/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmF0dXJhbFNlb0NvbmZpZyB7XG4gICAgLyoqXG4gICAgICogVGhlIG5hbWUgb2YgdGhlIGFwcGxpY2F0aW9uIHRoYXQgd2lsbCBhbHdheXMgYXBwZWFyIGluIHRoZSBwYWdlIHRpdGxlXG4gICAgICovXG4gICAgYXBwbGljYXRpb25OYW1lOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBEZWZhdWx0IHZhbHVlIGZvciBkZXNjcmlwdGlvbiBtZXRhIHRoYXQgaXMgdXNlZCBmb3IgcGFnZXMgd2l0aG91dCB2YWx1ZVxuICAgICAqL1xuICAgIGRlZmF1bHREZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIERlZmF1bHQgdmFsdWUgZm9yIHJvYm90cyBtZXRhIHRoYXQgaXMgdXNlZCBmb3IgcGFnZXMgd2l0aG91dCB2YWx1ZVxuICAgICAqL1xuICAgIGRlZmF1bHRSb2JvdHM/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBJZiBnaXZlbiwgdGhlIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIGZvciBlYWNoIHJvdXRlIGFuZCBtdXN0IHJldHVybiBhIHN0cmluZyB0aGF0IHdpbGxcbiAgICAgKiBiZSBpbnNlcnRlZCBiZXR3ZWVuIHRoZSBwYWdlIHRpdGxlIGFuZCB0aGUgYXBwbGljYXRpb24gbmFtZS5cbiAgICAgKlxuICAgICAqIEl0IHNob3VsZCBiZSB1c2VkIHRvIGNvbXBsZXRlIHRoZSB0aXRsZSB3aXRoIGluZm8gdGhhdCBhcmUgb2Z0ZW4sIGJ1dCBub3QgbmVjZXNzYXJpbHkgYWx3YXlzLFxuICAgICAqIGF2YWlsYWJsZSB0aHJvdWdob3V0IHRoZSBlbnRpcmUgYXBwbGljYXRpb24uIFR5cGljYWxseSB1c2VkIGZvciB0aGUgc2l0ZS9zdGF0ZSBpbiBPS3BpbG90LlxuICAgICAqL1xuICAgIGV4dHJhUGFydD86IChyb3V0ZURhdGE6IERhdGEpID0+IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IE5BVFVSQUxfU0VPX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxOYXR1cmFsU2VvQ29uZmlnPignQ29uZmlndXJhdGlvbiBmb3IgU0VPIHNlcnZpY2UnKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwVGFncyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC88XFwvP1tePl0rPi9nLCAnJyk7XG59XG5cbnR5cGUgUmVzb2x2ZWREYXRhID0ge1xuICAgIG1vZGVsPzoge1xuICAgICAgICBuYW1lPzogc3RyaW5nO1xuICAgICAgICBmdWxsTmFtZT86IHN0cmluZztcbiAgICAgICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgfTtcbn07XG5cbi8qKlxuICogVGhpcyBzZXJ2aWNlIGlzIHJlc3BvbnNpYmxlIHRvIGtlZXAgdXAgdG8gZGF0ZSB0aGUgcGFnZSB0aXRsZSBhbmQgcGFnZSBkZXNjcmlwdGlvbiBhY2NvcmRpbmdcbiAqIHRvIHdoYXQgaXMgY29uZmlndXJlZCBpbiByb3V0aW5nIG9yIGRlZmF1bHQgdmFsdWVzLlxuICpcbiAqIEl0ICoqbXVzdCoqIGJlIGluamVjdGVkIGluIHRoZSByb290IG1vZHVsZSBvZiB0aGUgYXBwbGljYXRpb24gdG8gaGF2ZSBlZmZlY3RzIGluIGFsbCBtb2R1bGVzLiBBbmQgaXRcbiAqIG11c3QgYmUgcHJvdmlkZWQgYSBjb25maWd1cmF0aW9uLlxuICpcbiAqIFRoZSBmdWxsIHRpdGxlIGhhcyB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZTpcbiAqXG4gKiAgICAgcGFnZSB0aXRsZSAtIGV4dHJhIHBhcnQgLSBhcHAgbmFtZVxuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBOYXR1cmFsU2VvU2VydmljZSB7XG4gICAgcHJpdmF0ZSByb3V0ZURhdGE/OiBEYXRhO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoTkFUVVJBTF9TRU9fQ09ORklHKSBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZzogTmF0dXJhbFNlb0NvbmZpZyxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0aXRsZVNlcnZpY2U6IFRpdGxlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG1ldGFUYWdTZXJ2aWNlOiBNZXRhLFxuICAgICkge1xuICAgICAgICB0aGlzLnJvdXRlci5ldmVudHMucGlwZShmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucm91dGVEYXRhID0gdGhpcy5nZXRSb3V0ZURhdGEodGhpcy5yb3V0ZXIucm91dGVyU3RhdGUucm9vdC5zbmFwc2hvdCk7XG4gICAgICAgICAgICBjb25zdCBzZW86IE5hdHVyYWxTZW8gPSB0aGlzLnJvdXRlRGF0YS5zZW8gPz8ge3RpdGxlOiAnJ307XG4gICAgICAgICAgICBjb25zdCBiYXNpYyA9IHRoaXMudG9CYXNpYyhzZW8pO1xuXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZShiYXNpYyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSB0aGUgU0VPIHdpdGggZ2l2ZW4gaW5mby4gVGhlIGV4dHJhIHBhcnQgYW5kIGFwcCBuYW1lIHdpbGwgYmUgYXBwZW5kZWQgYXV0b21hdGljYWxseS5cbiAgICAgKlxuICAgICAqIEluIG1vc3QgY2FzZXMgdGhpcyBzaG91bGQgbm90IGJlIHVzZWQsIGFuZCBpbnN0ZWFkIHRoZSBTRU8gc2hvdWxkIGJlIGNvbmZpZ3VyZWQgaW4gdGhlIHJvdXRpbmcsXG4gICAgICogcG9zc2libHkgd2l0aCB0aGUgY2FsbGJhY2sgdmFyaWFudCBmb3Igc29tZSBkeW5hbWlzbS5cbiAgICAgKlxuICAgICAqIEJ1dCBpbiByYXJlIGNhc2VzIG9ubHkgdGhlIENvbXBvbmVudCBpcyBhYmxlIHRvIGJ1aWxkIGEgcHJvcGVyIHBhZ2UgdGl0bGUsIGFmdGVyIGl0IGdhdGhlciBldmVyeXRoaW5nIGl0XG4gICAgICogbmVlZGVkLiBGb3IgdGhvc2UgY2FzZXMgdGhlIENvbXBvbmVudCBjYW4gaW5qZWN0IHRoaXMgc2VydmljZSBhbmQgdXBkYXRlIHRoZSBTRU8gZGlyZWN0bHkuXG4gICAgICovXG4gICAgcHVibGljIHVwZGF0ZShzZW86IE5hdHVyYWxTZW9CYXNpYyk6IHZvaWQge1xuICAgICAgICAvLyBUaXRsZVxuICAgICAgICBjb25zdCBwYXJ0cyA9IFtcbiAgICAgICAgICAgIHNlby50aXRsZSxcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLmV4dHJhUGFydCAmJiB0aGlzLnJvdXRlRGF0YSA/IHRoaXMuY29uZmlnLmV4dHJhUGFydCh0aGlzLnJvdXRlRGF0YSkgOiBudWxsLFxuICAgICAgICAgICAgdGhpcy5jb25maWcuYXBwbGljYXRpb25OYW1lLFxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IHRpdGxlID0gcGFydHMuZmlsdGVyKHMgPT4gISFzKS5qb2luKCcgLSAnKTtcbiAgICAgICAgdGhpcy50aXRsZVNlcnZpY2Uuc2V0VGl0bGUodGl0bGUpO1xuXG4gICAgICAgIC8vIERlc2NyaXB0aW9uXG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gc2VvPy5kZXNjcmlwdGlvbiA/PyB0aGlzLmNvbmZpZy5kZWZhdWx0RGVzY3JpcHRpb247XG4gICAgICAgIHRoaXMudXBkYXRlVGFnKCdkZXNjcmlwdGlvbicsIGRlc2NyaXB0aW9uKTtcblxuICAgICAgICAvLyBSb2JvdHNcbiAgICAgICAgY29uc3Qgcm9ib3RzID0gc2VvPy5yb2JvdHMgPz8gdGhpcy5jb25maWcuZGVmYXVsdFJvYm90cztcbiAgICAgICAgdGhpcy51cGRhdGVUYWcoJ3JvYm90cycsIHJvYm90cyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVUYWcobmFtZTogc3RyaW5nLCB2YWx1ZT86IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMubWV0YVRhZ1NlcnZpY2UudXBkYXRlVGFnKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBzdHJpcFRhZ3ModmFsdWUpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm1ldGFUYWdTZXJ2aWNlLnJlbW92ZVRhZyhgbmFtZT1cIiR7bmFtZX1cImApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgZGF0YSBmcm9tIHRoZSBtb3N0IGRlZXAvc3BlY2lmaWMgYWN0aXZhdGVkIHJvdXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRSb3V0ZURhdGEocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBEYXRhIHtcbiAgICAgICAgaWYgKHJvdXRlLmZpcnN0Q2hpbGQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFJvdXRlRGF0YShyb3V0ZS5maXJzdENoaWxkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiByb3V0ZS5kYXRhID8/IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHRvQmFzaWMoc2VvOiBOYXR1cmFsU2VvKTogTmF0dXJhbFNlb0Jhc2ljIHtcbiAgICAgICAgaWYgKCF0aGlzLnJvdXRlRGF0YSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNdXN0IGhhdmUgc29tZSByb3V0ZSBkYXRhIHRvIGdldCBiYXNpYyBTRU8nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2Ygc2VvID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZXR1cm4gc2VvKHRoaXMucm91dGVEYXRhKTtcbiAgICAgICAgfSBlbHNlIGlmICgncmVzb2x2ZUtleScgaW4gc2VvKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRhOiBSZXNvbHZlZERhdGEgfCB1bmRlZmluZWQgPSB0aGlzLnJvdXRlRGF0YVtzZW8ucmVzb2x2ZUtleV07XG4gICAgICAgICAgICBpZiAoIWRhdGEpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIHJlc29sdmVkIGRhdGEgZm9yIFNFTyBzZXJ2aWNlIHdpdGgga2V5OiAnICsgc2VvLnJlc29sdmVLZXkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBkYXRhLm1vZGVsPy5mdWxsTmFtZSA/PyBkYXRhLm1vZGVsPy5uYW1lID8/ICcnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBkYXRhLm1vZGVsPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICByb2JvdHM6IHNlby5yb2JvdHMsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNlbztcbiAgICB9XG59XG4iXX0=
@@ -1,63 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- export class NaturalDetailHeaderComponent {
3
- constructor() {
4
- /**
5
- * Must be set to get proper links when used in panels
6
- */
7
- this.isPanel = false;
8
- /**
9
- * If given will show icon before title
10
- */
11
- this.icon = '';
12
- /**
13
- * Title shown if model has no name, or empty name.
14
- *
15
- * Typically should be the human name for the object type, eg: 'Product'
16
- */
17
- this.label = '';
18
- /**
19
- * Label of the root of the breadcrumb, defaults to the value of `label`.
20
- *
21
- * Typically should be the plural form of the object type, eg: 'Products'
22
- */
23
- this.rootLabel = '';
24
- /**
25
- * Title shown if model has no id.
26
- *
27
- * Typically should be similar to 'New product'.
28
- */
29
- this.newLabel = '';
30
- this.breadcrumbs = [];
31
- this.listRoute = [];
32
- }
33
- getRootLink() {
34
- return [this.currentBaseUrl || '/'].concat(this.listRoute);
35
- }
36
- getLink(id) {
37
- if (this.link) {
38
- return this.getRootLink().concat(this.link(id));
39
- }
40
- return this.getRootLink().concat([id]);
41
- }
42
- }
43
- NaturalDetailHeaderComponent.decorators = [
44
- { type: Component, args: [{
45
- selector: 'natural-detail-header',
46
- template: "<div class=\"breadcrumb\">\n <a [routerLink]=\"isPanel ? [] : getRootLink()\" [fragment]=\"listFragment\" color=\"primary\" mat-button>{{\n rootLabel || label\n }}</a>\n <ng-container *ngFor=\"let parent of breadcrumbs\">\n /\n <a [routerLink]=\"isPanel ? [] : getLink(parent.id)\" color=\"primary\" mat-button>\n {{ parent?.fullName || parent?.name }}</a\n >\n </ng-container>\n</div>\n\n<div class=\"body\">\n <div *ngIf=\"icon\" style=\"width: 30px\">\n <natural-icon [name]=\"icon\"></natural-icon>\n </div>\n <div *ngIf=\"!model.id\" class=\"mat-headline no-margin newLabel\">{{ newLabel }}</div>\n <div *ngIf=\"model.id\" class=\"mat-headline no-margin label\">{{ model?.name || model?.fullName || label }}</div>\n <div>\n <ng-content></ng-content>\n </div>\n</div>\n",
47
- styles: [":host{display:flex;flex-direction:column}:host .breadcrumb,:host .body{display:flex;flex-direction:row;align-items:center}:host .breadcrumb{position:relative;top:5px}:host .body{min-height:40px}:host .body>*:not(:last-child){margin-right:5px}:host .body .label,:host .body .newLabel{flex:1}@media screen and (max-width: 600px){:host .body{flex-direction:column;align-items:flex-start}:host .body>*:not(:last-child){margin-bottom:10px!important}:host .body natural-icon{display:none}}\n"]
48
- },] }
49
- ];
50
- NaturalDetailHeaderComponent.propDecorators = {
51
- currentBaseUrl: [{ type: Input }],
52
- isPanel: [{ type: Input }],
53
- icon: [{ type: Input }],
54
- label: [{ type: Input }],
55
- rootLabel: [{ type: Input }],
56
- newLabel: [{ type: Input }],
57
- model: [{ type: Input }],
58
- breadcrumbs: [{ type: Input }],
59
- listRoute: [{ type: Input }],
60
- listFragment: [{ type: Input }],
61
- link: [{ type: Input }]
62
- };
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvbW9kdWxlcy9kZXRhaWwtaGVhZGVyL2RldGFpbC1oZWFkZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBUS9DLE1BQU0sT0FBTyw0QkFBNEI7SUFMekM7UUFXSTs7V0FFRztRQUNhLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFFaEM7O1dBRUc7UUFDYSxTQUFJLEdBQUcsRUFBRSxDQUFDO1FBQzFCOzs7O1dBSUc7UUFDYSxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBRTNCOzs7O1dBSUc7UUFDYSxjQUFTLEdBQUcsRUFBRSxDQUFDO1FBRS9COzs7O1dBSUc7UUFDYSxhQUFRLEdBQUcsRUFBRSxDQUFDO1FBRWQsZ0JBQVcsR0FBYyxFQUFFLENBQUM7UUFDNUIsY0FBUyxHQUFVLEVBQUUsQ0FBQztJQWUxQyxDQUFDO0lBWFUsV0FBVztRQUNkLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVNLE9BQU8sQ0FBQyxFQUFVO1FBQ3JCLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNYLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDbkQ7UUFFRCxPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNDLENBQUM7OztZQXhESixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLHVCQUF1QjtnQkFDakMsbzJCQUE2Qzs7YUFFaEQ7Ozs2QkFLSSxLQUFLO3NCQUtMLEtBQUs7bUJBS0wsS0FBSztvQkFNTCxLQUFLO3dCQU9MLEtBQUs7dUJBT0wsS0FBSztvQkFDTCxLQUFLOzBCQUNMLEtBQUs7d0JBQ0wsS0FBSzsyQkFDTCxLQUFLO21CQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtMaXRlcmFsfSBmcm9tICcuLi8uLi90eXBlcy90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmF0dXJhbC1kZXRhaWwtaGVhZGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZGV0YWlsLWhlYWRlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZGV0YWlsLWhlYWRlci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBOYXR1cmFsRGV0YWlsSGVhZGVyQ29tcG9uZW50IHtcbiAgICAvKipcbiAgICAgKiBCYXNlIFVSTCB1c2VkIHRvIGJ1aWxkIGxpbmtzLCBkZWZhdWx0cyB0byAnLydcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgY3VycmVudEJhc2VVcmw/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBNdXN0IGJlIHNldCB0byBnZXQgcHJvcGVyIGxpbmtzIHdoZW4gdXNlZCBpbiBwYW5lbHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgaXNQYW5lbCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogSWYgZ2l2ZW4gd2lsbCBzaG93IGljb24gYmVmb3JlIHRpdGxlXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIGljb24gPSAnJztcbiAgICAvKipcbiAgICAgKiBUaXRsZSBzaG93biBpZiBtb2RlbCBoYXMgbm8gbmFtZSwgb3IgZW1wdHkgbmFtZS5cbiAgICAgKlxuICAgICAqIFR5cGljYWxseSBzaG91bGQgYmUgdGhlIGh1bWFuIG5hbWUgZm9yIHRoZSBvYmplY3QgdHlwZSwgZWc6ICdQcm9kdWN0J1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBsYWJlbCA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogTGFiZWwgb2YgdGhlIHJvb3Qgb2YgdGhlIGJyZWFkY3J1bWIsIGRlZmF1bHRzIHRvIHRoZSB2YWx1ZSBvZiBgbGFiZWxgLlxuICAgICAqXG4gICAgICogVHlwaWNhbGx5IHNob3VsZCBiZSB0aGUgcGx1cmFsIGZvcm0gb2YgdGhlIG9iamVjdCB0eXBlLCBlZzogJ1Byb2R1Y3RzJ1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyByb290TGFiZWwgPSAnJztcblxuICAgIC8qKlxuICAgICAqIFRpdGxlIHNob3duIGlmIG1vZGVsIGhhcyBubyBpZC5cbiAgICAgKlxuICAgICAqIFR5cGljYWxseSBzaG91bGQgYmUgc2ltaWxhciB0byAnTmV3IHByb2R1Y3QnLlxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBuZXdMYWJlbCA9ICcnO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBtb2RlbCE6IExpdGVyYWw7XG4gICAgQElucHV0KCkgcHVibGljIGJyZWFkY3J1bWJzOiBMaXRlcmFsW10gPSBbXTtcbiAgICBASW5wdXQoKSBwdWJsaWMgbGlzdFJvdXRlOiBhbnlbXSA9IFtdO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBsaXN0RnJhZ21lbnQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBASW5wdXQoKSBwdWJsaWMgbGluaz86IChpZDogc3RyaW5nKSA9PiBhbnlbXTtcblxuICAgIHB1YmxpYyBnZXRSb290TGluaygpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiBbdGhpcy5jdXJyZW50QmFzZVVybCB8fCAnLyddLmNvbmNhdCh0aGlzLmxpc3RSb3V0ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldExpbmsoaWQ6IHN0cmluZyk6IGFueVtdIHtcbiAgICAgICAgaWYgKHRoaXMubGluaykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Um9vdExpbmsoKS5jb25jYXQodGhpcy5saW5rKGlkKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5nZXRSb290TGluaygpLmNvbmNhdChbaWRdKTtcbiAgICB9XG59XG4iXX0=
@@ -1,16 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { NgModule } from '@angular/core';
3
- import { MatButtonModule } from '@angular/material/button';
4
- import { RouterModule } from '@angular/router';
5
- import { NaturalDetailHeaderComponent } from './detail-header.component';
6
- import { NaturalIconModule } from '../icon/icon.module';
7
- export class NaturalDetailHeaderModule {
8
- }
9
- NaturalDetailHeaderModule.decorators = [
10
- { type: NgModule, args: [{
11
- declarations: [NaturalDetailHeaderComponent],
12
- imports: [CommonModule, RouterModule, MatButtonModule, NaturalIconModule],
13
- exports: [NaturalDetailHeaderComponent],
14
- },] }
15
- ];
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsLWhlYWRlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvbW9kdWxlcy9kZXRhaWwtaGVhZGVyL2RldGFpbC1oZWFkZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLDRCQUE0QixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDdkUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFPdEQsTUFBTSxPQUFPLHlCQUF5Qjs7O1lBTHJDLFFBQVEsU0FBQztnQkFDTixZQUFZLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQztnQkFDNUMsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsaUJBQWlCLENBQUM7Z0JBQ3pFLE9BQU8sRUFBRSxDQUFDLDRCQUE0QixDQUFDO2FBQzFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWF0QnV0dG9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHtSb3V0ZXJNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge05hdHVyYWxEZXRhaWxIZWFkZXJDb21wb25lbnR9IGZyb20gJy4vZGV0YWlsLWhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHtOYXR1cmFsSWNvbk1vZHVsZX0gZnJvbSAnLi4vaWNvbi9pY29uLm1vZHVsZSc7XG5cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbTmF0dXJhbERldGFpbEhlYWRlckNvbXBvbmVudF0sXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUm91dGVyTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsIE5hdHVyYWxJY29uTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbTmF0dXJhbERldGFpbEhlYWRlckNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIE5hdHVyYWxEZXRhaWxIZWFkZXJNb2R1bGUge31cbiJdfQ==
@@ -1,68 +0,0 @@
1
- import { __rest } from "tslib";
2
- import { Component } from '@angular/core';
3
- import { MatDialog } from '@angular/material/dialog';
4
- import { ActivatedRoute, Router } from '@angular/router';
5
- export class NaturalDialogTriggerComponent {
6
- constructor(dialog, route, router) {
7
- this.dialog = dialog;
8
- this.route = route;
9
- this.router = router;
10
- // Data from activated route
11
- this.triggerConfig = this.route.snapshot.data.trigger;
12
- // Get data relative to dialog service configuration
13
- const _a = this.triggerConfig.dialogConfig, { data } = _a, config = __rest(_a, ["data"]);
14
- const dialogConfig = Object.assign(Object.assign({}, config), { data: {
15
- data: data,
16
- // Set data accessible into component instantiated by the dialog service
17
- activatedRoute: this.route,
18
- } });
19
- this.dialogRef = this.dialog.open(this.triggerConfig.component, dialogConfig);
20
- // Redirect on closing (if applicable)
21
- this.dialogRef.beforeClosed().subscribe(exitValue => this.redirect(exitValue));
22
- }
23
- /**
24
- * Called when router leaves route, and so on, closes the modal with undefined value to prevent a new redirection
25
- */
26
- ngOnDestroy() {
27
- if (this.dialogRef) {
28
- this.dialogRef.close(-1); // -1 = no redirection
29
- }
30
- }
31
- /**
32
- * Redirects on modal closing under following rules/conditions
33
- *
34
- * If -1 : no redirection
35
- * If undefined, null or empty string : uses the router provided redirection route or fallbacks on parent route if router don't provide
36
- * If a value is provided, should be of type any[] and it's used for redirection.
37
- */
38
- redirect(exitValue) {
39
- const isEmptyExitValue = exitValue == null || exitValue === ''; // undefined, null or ''
40
- if (exitValue === -1) {
41
- // if -1, don't redirect
42
- return;
43
- }
44
- else if (!isEmptyExitValue) {
45
- // If value provided, redirect to that route
46
- this.router.navigate(exitValue);
47
- }
48
- else if (isEmptyExitValue && this.triggerConfig.afterClosedRoute) {
49
- // If value is not provided (null) and router context specified default redirection route, use it
50
- this.router.navigate(this.triggerConfig.afterClosedRoute);
51
- }
52
- else if (isEmptyExitValue) {
53
- // If neither of component or router provides redirection, go to parent (care : parent can't have empty path : ''),
54
- this.router.navigate(['.'], { relativeTo: this.route.parent });
55
- }
56
- }
57
- }
58
- NaturalDialogTriggerComponent.decorators = [
59
- { type: Component, args: [{
60
- template: ''
61
- },] }
62
- ];
63
- NaturalDialogTriggerComponent.ctorParameters = () => [
64
- { type: MatDialog },
65
- { type: ActivatedRoute },
66
- { type: Router }
67
- ];
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLXRyaWdnZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvZGlhbG9nLXRyaWdnZXIvZGlhbG9nLXRyaWdnZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUMsU0FBUyxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBQyxTQUFTLEVBQWdDLE1BQU0sMEJBQTBCLENBQUM7QUFDbEYsT0FBTyxFQUFDLGNBQWMsRUFBRSxNQUFNLEVBQWEsTUFBTSxpQkFBaUIsQ0FBQztBQWtCbkUsTUFBTSxPQUFPLDZCQUE2QjtJQUt0QyxZQUNxQixNQUFpQixFQUNqQixLQUFxQixFQUNyQixNQUFjO1FBRmQsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNqQixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBRS9CLDRCQUE0QjtRQUM1QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFnRCxDQUFDO1FBRS9GLG9EQUFvRDtRQUNwRCxNQUFNLEtBQW9CLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFuRCxFQUFDLElBQUksT0FBOEMsRUFBekMsTUFBTSxjQUFoQixRQUFpQixDQUFrQyxDQUFDO1FBQzFELE1BQU0sWUFBWSxtQ0FDWCxNQUFNLEtBQ1QsSUFBSSxFQUFFO2dCQUNGLElBQUksRUFBRSxJQUFJO2dCQUNWLHdFQUF3RTtnQkFDeEUsY0FBYyxFQUFFLElBQUksQ0FBQyxLQUFLO2FBQzdCLEdBQ0osQ0FBQztRQUVGLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBSS9CLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBRTlDLHNDQUFzQztRQUN0QyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQ7O09BRUc7SUFDSSxXQUFXO1FBQ2QsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxzQkFBc0I7U0FDbkQ7SUFDTCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksUUFBUSxDQUFDLFNBQWdEO1FBQzVELE1BQU0sZ0JBQWdCLEdBQUcsU0FBUyxJQUFJLElBQUksSUFBSSxTQUFTLEtBQUssRUFBRSxDQUFDLENBQUMsd0JBQXdCO1FBRXhGLElBQUksU0FBUyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ2xCLHdCQUF3QjtZQUN4QixPQUFPO1NBQ1Y7YUFBTSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDMUIsNENBQTRDO1lBQzVDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQWtCLENBQUMsQ0FBQztTQUM1QzthQUFNLElBQUksZ0JBQWdCLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRTtZQUNoRSxpR0FBaUc7WUFDakcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBeUIsQ0FBQyxDQUFDO1NBQ3RFO2FBQU0sSUFBSSxnQkFBZ0IsRUFBRTtZQUN6QixtSEFBbUg7WUFDbkgsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBQyxDQUFDLENBQUM7U0FDaEU7SUFDTCxDQUFDOzs7WUFyRUosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxFQUFFO2FBQ2Y7OztZQWxCTyxTQUFTO1lBQ1QsY0FBYztZQUFFLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudFR5cGV9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtDb21wb25lbnQsIE9uRGVzdHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01hdERpYWxvZywgTWF0RGlhbG9nQ29uZmlnLCBNYXREaWFsb2dSZWZ9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlLCBSb3V0ZXIsIFJvdXRlckxpbmt9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmF0dXJhbERpYWxvZ1RyaWdnZXJSb3V0aW5nRGF0YTxULCBEPiB7XG4gICAgY29tcG9uZW50OiBDb21wb25lbnRUeXBlPFQ+O1xuICAgIGFmdGVyQ2xvc2VkUm91dGU/OiBSb3V0ZXJMaW5rWydyb3V0ZXJMaW5rJ107XG4gICAgZGlhbG9nQ29uZmlnOiBNYXREaWFsb2dDb25maWc8RD47XG59XG5cbmV4cG9ydCB0eXBlIE5hdHVyYWxEaWFsb2dUcmlnZ2VyUHJvdmlkZWREYXRhPEQ+ID0ge1xuICAgIGRhdGE/OiBSZWFkb25seTxEPiB8IG51bGw7XG4gICAgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlO1xufTtcblxuZXhwb3J0IHR5cGUgTmF0dXJhbERpYWxvZ1RyaWdnZXJSZWRpcmVjdGlvblZhbHVlcyA9IFJvdXRlckxpbmtbJ3JvdXRlckxpbmsnXSB8IG51bGwgfCB1bmRlZmluZWQgfCAnJyB8IC0xO1xuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZTogJycsXG59KVxuZXhwb3J0IGNsYXNzIE5hdHVyYWxEaWFsb2dUcmlnZ2VyQ29tcG9uZW50PFQsIEQ+IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFQsIE5hdHVyYWxEaWFsb2dUcmlnZ2VyUmVkaXJlY3Rpb25WYWx1ZXM+O1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmlnZ2VyQ29uZmlnOiBOYXR1cmFsRGlhbG9nVHJpZ2dlclJvdXRpbmdEYXRhPFQsIEQ+O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgICkge1xuICAgICAgICAvLyBEYXRhIGZyb20gYWN0aXZhdGVkIHJvdXRlXG4gICAgICAgIHRoaXMudHJpZ2dlckNvbmZpZyA9IHRoaXMucm91dGUuc25hcHNob3QuZGF0YS50cmlnZ2VyIGFzIE5hdHVyYWxEaWFsb2dUcmlnZ2VyUm91dGluZ0RhdGE8VCwgRD47XG5cbiAgICAgICAgLy8gR2V0IGRhdGEgcmVsYXRpdmUgdG8gZGlhbG9nIHNlcnZpY2UgY29uZmlndXJhdGlvblxuICAgICAgICBjb25zdCB7ZGF0YSwgLi4uY29uZmlnfSA9IHRoaXMudHJpZ2dlckNvbmZpZy5kaWFsb2dDb25maWc7XG4gICAgICAgIGNvbnN0IGRpYWxvZ0NvbmZpZzogTWF0RGlhbG9nQ29uZmlnPE5hdHVyYWxEaWFsb2dUcmlnZ2VyUHJvdmlkZWREYXRhPEQ+PiA9IHtcbiAgICAgICAgICAgIC4uLmNvbmZpZyxcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgICAgICAgIC8vIFNldCBkYXRhIGFjY2Vzc2libGUgaW50byBjb21wb25lbnQgaW5zdGFudGlhdGVkIGJ5IHRoZSBkaWFsb2cgc2VydmljZVxuICAgICAgICAgICAgICAgIGFjdGl2YXRlZFJvdXRlOiB0aGlzLnJvdXRlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW48XG4gICAgICAgICAgICBULFxuICAgICAgICAgICAgTmF0dXJhbERpYWxvZ1RyaWdnZXJQcm92aWRlZERhdGE8RD4sXG4gICAgICAgICAgICBOYXR1cmFsRGlhbG9nVHJpZ2dlclJlZGlyZWN0aW9uVmFsdWVzXG4gICAgICAgID4odGhpcy50cmlnZ2VyQ29uZmlnLmNvbXBvbmVudCwgZGlhbG9nQ29uZmlnKTtcblxuICAgICAgICAvLyBSZWRpcmVjdCBvbiBjbG9zaW5nIChpZiBhcHBsaWNhYmxlKVxuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5iZWZvcmVDbG9zZWQoKS5zdWJzY3JpYmUoZXhpdFZhbHVlID0+IHRoaXMucmVkaXJlY3QoZXhpdFZhbHVlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsbGVkIHdoZW4gcm91dGVyIGxlYXZlcyByb3V0ZSwgYW5kIHNvIG9uLCBjbG9zZXMgdGhlIG1vZGFsIHdpdGggdW5kZWZpbmVkIHZhbHVlIHRvIHByZXZlbnQgYSBuZXcgcmVkaXJlY3Rpb25cbiAgICAgKi9cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpYWxvZ1JlZikge1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoLTEpOyAvLyAtMSA9IG5vIHJlZGlyZWN0aW9uXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWRpcmVjdHMgb24gbW9kYWwgY2xvc2luZyB1bmRlciBmb2xsb3dpbmcgcnVsZXMvY29uZGl0aW9uc1xuICAgICAqXG4gICAgICogSWYgLTEgOiBubyByZWRpcmVjdGlvblxuICAgICAqIElmIHVuZGVmaW5lZCwgbnVsbCBvciBlbXB0eSBzdHJpbmcgOiB1c2VzIHRoZSByb3V0ZXIgcHJvdmlkZWQgcmVkaXJlY3Rpb24gcm91dGUgb3IgZmFsbGJhY2tzIG9uIHBhcmVudCByb3V0ZSBpZiByb3V0ZXIgZG9uJ3QgcHJvdmlkZVxuICAgICAqIElmIGEgdmFsdWUgaXMgcHJvdmlkZWQsIHNob3VsZCBiZSBvZiB0eXBlIGFueVtdIGFuZCBpdCdzIHVzZWQgZm9yIHJlZGlyZWN0aW9uLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWRpcmVjdChleGl0VmFsdWU6IE5hdHVyYWxEaWFsb2dUcmlnZ2VyUmVkaXJlY3Rpb25WYWx1ZXMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaXNFbXB0eUV4aXRWYWx1ZSA9IGV4aXRWYWx1ZSA9PSBudWxsIHx8IGV4aXRWYWx1ZSA9PT0gJyc7IC8vIHVuZGVmaW5lZCwgbnVsbCBvciAnJ1xuXG4gICAgICAgIGlmIChleGl0VmFsdWUgPT09IC0xKSB7XG4gICAgICAgICAgICAvLyBpZiAtMSwgZG9uJ3QgcmVkaXJlY3RcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmICghaXNFbXB0eUV4aXRWYWx1ZSkge1xuICAgICAgICAgICAgLy8gSWYgdmFsdWUgcHJvdmlkZWQsIHJlZGlyZWN0IHRvIHRoYXQgcm91dGVcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKGV4aXRWYWx1ZSBhcyBhbnlbXSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNFbXB0eUV4aXRWYWx1ZSAmJiB0aGlzLnRyaWdnZXJDb25maWcuYWZ0ZXJDbG9zZWRSb3V0ZSkge1xuICAgICAgICAgICAgLy8gSWYgdmFsdWUgaXMgbm90IHByb3ZpZGVkIChudWxsKSBhbmQgcm91dGVyIGNvbnRleHQgc3BlY2lmaWVkIGRlZmF1bHQgcmVkaXJlY3Rpb24gcm91dGUsIHVzZSBpdFxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUodGhpcy50cmlnZ2VyQ29uZmlnLmFmdGVyQ2xvc2VkUm91dGUgYXMgYW55W10pO1xuICAgICAgICB9IGVsc2UgaWYgKGlzRW1wdHlFeGl0VmFsdWUpIHtcbiAgICAgICAgICAgIC8vIElmIG5laXRoZXIgb2YgY29tcG9uZW50IG9yIHJvdXRlciBwcm92aWRlcyByZWRpcmVjdGlvbiwgZ28gdG8gcGFyZW50IChjYXJlIDogcGFyZW50IGNhbid0IGhhdmUgZW1wdHkgcGF0aCA6ICcnKSxcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLiddLCB7cmVsYXRpdmVUbzogdGhpcy5yb3V0ZS5wYXJlbnR9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==