@ecodev/natural 41.3.0 → 42.2.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 (350) 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 +172 -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 +190 -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 +50 -0
  34. package/esm2020/lib/modules/common/directives/linkable-tab.directive.mjs +79 -0
  35. package/esm2020/lib/modules/common/directives/src-density.directive.mjs +62 -0
  36. package/esm2020/lib/modules/common/pipes/capitalize.pipe.mjs +18 -0
  37. package/esm2020/lib/modules/common/pipes/ellipsis.pipe.mjs +14 -0
  38. package/esm2020/lib/modules/common/pipes/enum.pipe.mjs +25 -0
  39. package/esm2020/lib/modules/common/pipes/swiss-date.pipe.mjs +20 -0
  40. package/esm2020/lib/modules/common/public-api.mjs +13 -0
  41. package/esm2020/lib/modules/common/services/memory-storage.mjs +112 -0
  42. package/esm2020/lib/modules/common/services/seo.service.mjs +114 -0
  43. package/esm2020/lib/modules/detail-header/detail-header.component.mjs +76 -0
  44. package/esm2020/lib/modules/detail-header/detail-header.module.mjs +21 -0
  45. package/{esm2015/lib/modules/detail-header/public-api.js → esm2020/lib/modules/detail-header/public-api.mjs} +0 -0
  46. package/esm2020/lib/modules/dialog-trigger/dialog-trigger.component.mjs +69 -0
  47. package/esm2020/lib/modules/dialog-trigger/dialog-trigger.module.mjs +19 -0
  48. package/{esm2015/lib/modules/dialog-trigger/public-api.js → esm2020/lib/modules/dialog-trigger/public-api.mjs} +0 -0
  49. package/esm2020/lib/modules/dropdown-components/abstract-association-select-component.directive.mjs +98 -0
  50. package/esm2020/lib/modules/dropdown-components/natural-dropdown-components.module.mjs +92 -0
  51. package/{esm2015/lib/modules/dropdown-components/public-api.js → esm2020/lib/modules/dropdown-components/public-api.mjs} +0 -0
  52. package/esm2020/lib/modules/dropdown-components/type-date/type-date.component.mjs +133 -0
  53. package/esm2020/lib/modules/dropdown-components/type-date-range/type-date-range.component.mjs +137 -0
  54. package/esm2020/lib/modules/dropdown-components/type-hierarchic-selector/type-hierarchic-selector.component.mjs +69 -0
  55. package/esm2020/lib/modules/dropdown-components/type-natural-select/type-natural-select.component.mjs +38 -0
  56. package/esm2020/lib/modules/dropdown-components/type-number/type-number.component.mjs +104 -0
  57. package/esm2020/lib/modules/dropdown-components/type-select/type-select.component.mjs +169 -0
  58. package/esm2020/lib/modules/dropdown-components/type-text/type-text.component.mjs +57 -0
  59. package/{esm2015/lib/modules/dropdown-components/types.js → esm2020/lib/modules/dropdown-components/types.mjs} +0 -0
  60. package/{esm2015/lib/modules/dropdown-components/utils.js → esm2020/lib/modules/dropdown-components/utils.mjs} +0 -0
  61. package/esm2020/lib/modules/file/abstract-file.mjs +231 -0
  62. package/esm2020/lib/modules/file/component/file.component.mjs +143 -0
  63. package/esm2020/lib/modules/file/file-drop.directive.mjs +110 -0
  64. package/esm2020/lib/modules/file/file-select.directive.mjs +28 -0
  65. package/esm2020/lib/modules/file/file.module.mjs +24 -0
  66. package/esm2020/lib/modules/file/file.service.mjs +48 -0
  67. package/{esm2015/lib/modules/file/public-api.js → esm2020/lib/modules/file/public-api.mjs} +0 -0
  68. package/{esm2015/lib/modules/file/types.js → esm2020/lib/modules/file/types.mjs} +0 -0
  69. package/{esm2015/lib/modules/file/utils.js → esm2020/lib/modules/file/utils.mjs} +3 -4
  70. package/esm2020/lib/modules/fixed-button/fixed-button.component.mjs +27 -0
  71. package/esm2020/lib/modules/fixed-button/fixed-button.module.mjs +21 -0
  72. package/{esm2015/lib/modules/fixed-button/public-api.js → esm2020/lib/modules/fixed-button/public-api.mjs} +0 -0
  73. package/esm2020/lib/modules/fixed-button-detail/fixed-button-detail.component.mjs +36 -0
  74. package/esm2020/lib/modules/fixed-button-detail/fixed-button-detail.module.mjs +20 -0
  75. package/{esm2015/lib/modules/fixed-button-detail/public-api.js → esm2020/lib/modules/fixed-button-detail/public-api.mjs} +0 -0
  76. package/{esm2015/lib/modules/hierarchic-selector/classes/flat-node.js → esm2020/lib/modules/hierarchic-selector/classes/flat-node.mjs} +1 -1
  77. package/{esm2015/lib/modules/hierarchic-selector/classes/hierarchic-configuration.js → esm2020/lib/modules/hierarchic-selector/classes/hierarchic-configuration.mjs} +0 -0
  78. package/{esm2015/lib/modules/hierarchic-selector/classes/hierarchic-filters-configuration.js → esm2020/lib/modules/hierarchic-selector/classes/hierarchic-filters-configuration.mjs} +0 -0
  79. package/{esm2015/lib/modules/hierarchic-selector/classes/model-node.js → esm2020/lib/modules/hierarchic-selector/classes/model-node.mjs} +1 -1
  80. package/esm2020/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.component.mjs +364 -0
  81. package/esm2020/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.service.mjs +258 -0
  82. package/esm2020/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.component.mjs +31 -0
  83. package/esm2020/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.service.mjs +23 -0
  84. package/esm2020/lib/modules/hierarchic-selector/hierarchic-selector.module.mjs +81 -0
  85. package/{esm2015/lib/modules/hierarchic-selector/public-api.js → esm2020/lib/modules/hierarchic-selector/public-api.mjs} +0 -0
  86. package/esm2020/lib/modules/icon/icon.component.mjs +92 -0
  87. package/esm2020/lib/modules/icon/icon.module.mjs +30 -0
  88. package/{esm2015/lib/modules/icon/public-api.js → esm2020/lib/modules/icon/public-api.mjs} +0 -0
  89. package/esm2020/lib/modules/matomo/matomo-module.module.mjs +12 -0
  90. package/esm2020/lib/modules/matomo/matomo.service.mjs +105 -0
  91. package/{esm2015/lib/modules/matomo/public-api.js → esm2020/lib/modules/matomo/public-api.mjs} +0 -0
  92. package/esm2020/lib/modules/panels/abstract-panel.mjs +56 -0
  93. 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
  94. package/esm2020/lib/modules/panels/panels.component.mjs +26 -0
  95. package/esm2020/lib/modules/panels/panels.module.mjs +33 -0
  96. package/esm2020/lib/modules/panels/panels.service.mjs +325 -0
  97. package/{esm2015/lib/modules/panels/panels.urlmatcher.js → esm2020/lib/modules/panels/panels.urlmatcher.mjs} +0 -0
  98. package/{esm2015/lib/modules/panels/public-api.js → esm2020/lib/modules/panels/public-api.mjs} +0 -0
  99. package/{esm2015/lib/modules/panels/types.js → esm2020/lib/modules/panels/types.mjs} +0 -0
  100. package/{esm2015/lib/modules/relations/public-api.js → esm2020/lib/modules/relations/public-api.mjs} +0 -0
  101. package/esm2020/lib/modules/relations/relations.component.mjs +198 -0
  102. package/esm2020/lib/modules/relations/relations.module.mjs +58 -0
  103. package/{esm2015/lib/modules/search/classes/graphql-doctrine.js → esm2020/lib/modules/search/classes/graphql-doctrine.mjs} +0 -0
  104. package/{esm2015/lib/modules/search/classes/graphql-doctrine.types.js → esm2020/lib/modules/search/classes/graphql-doctrine.types.mjs} +0 -0
  105. package/{esm2015/lib/modules/search/classes/transformers.js → esm2020/lib/modules/search/classes/transformers.mjs} +0 -0
  106. package/{esm2015/lib/modules/search/classes/url.js → esm2020/lib/modules/search/classes/url.mjs} +0 -0
  107. package/{esm2015/lib/modules/search/classes/utils.js → esm2020/lib/modules/search/classes/utils.mjs} +0 -0
  108. package/{esm2015/lib/modules/search/dropdown-container/dropdown-container-animations.js → esm2020/lib/modules/search/dropdown-container/dropdown-container-animations.mjs} +0 -0
  109. package/esm2020/lib/modules/search/dropdown-container/dropdown-container.component.mjs +88 -0
  110. package/{esm2015/lib/modules/search/dropdown-container/dropdown-ref.js → esm2020/lib/modules/search/dropdown-container/dropdown-ref.mjs} +1 -1
  111. package/esm2020/lib/modules/search/dropdown-container/dropdown.service.mjs +93 -0
  112. package/esm2020/lib/modules/search/facet-selector/facet-selector.component.mjs +50 -0
  113. package/esm2020/lib/modules/search/group/group.component.mjs +45 -0
  114. package/esm2020/lib/modules/search/input/input.component.mjs +328 -0
  115. package/{esm2015/lib/modules/search/public-api.js → esm2020/lib/modules/search/public-api.mjs} +0 -0
  116. package/esm2020/lib/modules/search/search/search.component.mjs +78 -0
  117. package/esm2020/lib/modules/search/search.module.mjs +84 -0
  118. package/{esm2015/lib/modules/search/types/dropdown-component.js → esm2020/lib/modules/search/types/dropdown-component.mjs} +0 -0
  119. package/{esm2015/lib/modules/search/types/facet.js → esm2020/lib/modules/search/types/facet.mjs} +0 -0
  120. package/{esm2015/lib/modules/search/types/values.js → esm2020/lib/modules/search/types/values.mjs} +0 -0
  121. package/esm2020/lib/modules/select/abstract-select.component.mjs +186 -0
  122. package/{esm2015/lib/modules/select/public-api.js → esm2020/lib/modules/select/public-api.mjs} +0 -0
  123. package/esm2020/lib/modules/select/select/select.component.mjs +207 -0
  124. package/esm2020/lib/modules/select/select-enum/select-enum.component.mjs +47 -0
  125. package/esm2020/lib/modules/select/select-hierarchic/select-hierarchic.component.mjs +127 -0
  126. package/esm2020/lib/modules/select/select.module.mjs +68 -0
  127. package/{esm2015/lib/modules/sidenav/public-api.js → esm2020/lib/modules/sidenav/public-api.mjs} +0 -0
  128. package/esm2020/lib/modules/sidenav/sidenav/sidenav.component.mjs +15 -0
  129. package/esm2020/lib/modules/sidenav/sidenav-container/sidenav-container.component.mjs +87 -0
  130. package/esm2020/lib/modules/sidenav/sidenav-content/sidenav-content.component.mjs +12 -0
  131. package/esm2020/lib/modules/sidenav/sidenav-stack.service.mjs +52 -0
  132. package/esm2020/lib/modules/sidenav/sidenav.module.mjs +25 -0
  133. package/esm2020/lib/modules/sidenav/sidenav.service.mjs +195 -0
  134. package/{esm2015/lib/modules/stamp/public-api.js → esm2020/lib/modules/stamp/public-api.mjs} +0 -0
  135. package/esm2020/lib/modules/stamp/stamp-module.module.mjs +18 -0
  136. package/esm2020/lib/modules/stamp/stamp.component.mjs +14 -0
  137. package/{esm2015/lib/modules/table-button/public-api.js → esm2020/lib/modules/table-button/public-api.mjs} +0 -0
  138. package/esm2020/lib/modules/table-button/table-button.component.mjs +48 -0
  139. package/esm2020/lib/modules/table-button/table-button.module.mjs +21 -0
  140. package/esm2020/lib/services/abstract-model.service.mjs +509 -0
  141. package/esm2020/lib/services/enum.service.mjs +67 -0
  142. package/esm2020/lib/services/link-mutation.service.mjs +153 -0
  143. package/esm2020/lib/services/persistence.service.mjs +113 -0
  144. package/esm2020/lib/services/swiss-parsing-date-adapter.service.mjs +55 -0
  145. package/{esm2015/lib/types/types.js → esm2020/lib/types/types.mjs} +0 -0
  146. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  147. package/fesm2015/{ecodev-natural.js → ecodev-natural.mjs} +2808 -2392
  148. package/fesm2015/ecodev-natural.mjs.map +1 -0
  149. package/fesm2020/ecodev-natural.mjs +10495 -0
  150. package/fesm2020/ecodev-natural.mjs.map +1 -0
  151. package/lib/classes/abstract-controller.d.ts +3 -0
  152. package/lib/classes/abstract-detail.d.ts +3 -0
  153. package/lib/classes/abstract-editable-list.d.ts +3 -0
  154. package/lib/classes/abstract-list.d.ts +3 -0
  155. package/lib/classes/abstract-navigable-list.d.ts +3 -0
  156. package/lib/classes/query-variable-manager.d.ts +19 -8
  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 +4 -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 +15 -0
  168. package/lib/modules/common/directives/linkable-tab.directive.d.ts +3 -0
  169. package/lib/modules/common/directives/src-density.directive.d.ts +3 -0
  170. package/lib/modules/common/pipes/capitalize.pipe.d.ts +3 -0
  171. package/lib/modules/common/pipes/ellipsis.pipe.d.ts +3 -0
  172. package/lib/modules/common/pipes/enum.pipe.d.ts +3 -0
  173. package/lib/modules/common/pipes/swiss-date.pipe.d.ts +3 -0
  174. package/lib/modules/common/public-api.d.ts +0 -1
  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 +9 -2
  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/public-api.js +0 -14
  282. package/esm2015/lib/modules/common/services/memory-storage.js +0 -110
  283. package/esm2015/lib/modules/common/services/seo.service.js +0 -120
  284. package/esm2015/lib/modules/detail-header/detail-header.component.js +0 -63
  285. package/esm2015/lib/modules/detail-header/detail-header.module.js +0 -16
  286. package/esm2015/lib/modules/dialog-trigger/dialog-trigger.component.js +0 -68
  287. package/esm2015/lib/modules/dialog-trigger/dialog-trigger.module.js +0 -14
  288. package/esm2015/lib/modules/dropdown-components/abstract-association-select-component.directive.js +0 -96
  289. package/esm2015/lib/modules/dropdown-components/natural-dropdown-components.module.js +0 -51
  290. package/esm2015/lib/modules/dropdown-components/type-date/type-date.component.js +0 -123
  291. package/esm2015/lib/modules/dropdown-components/type-date-range/type-date-range.component.js +0 -128
  292. package/esm2015/lib/modules/dropdown-components/type-hierarchic-selector/type-hierarchic-selector.component.js +0 -63
  293. package/esm2015/lib/modules/dropdown-components/type-natural-select/type-natural-select.component.js +0 -31
  294. package/esm2015/lib/modules/dropdown-components/type-number/type-number.component.js +0 -99
  295. package/esm2015/lib/modules/dropdown-components/type-select/type-select.component.js +0 -161
  296. package/esm2015/lib/modules/dropdown-components/type-text/type-text.component.js +0 -53
  297. package/esm2015/lib/modules/file/abstract-file.js +0 -223
  298. package/esm2015/lib/modules/file/component/file.component.js +0 -133
  299. package/esm2015/lib/modules/file/file-drop.directive.js +0 -99
  300. package/esm2015/lib/modules/file/file-select.directive.js +0 -25
  301. package/esm2015/lib/modules/file/file.module.js +0 -19
  302. package/esm2015/lib/modules/file/file.service.js +0 -47
  303. package/esm2015/lib/modules/fixed-button/fixed-button.component.js +0 -23
  304. package/esm2015/lib/modules/fixed-button/fixed-button.module.js +0 -16
  305. package/esm2015/lib/modules/fixed-button-detail/fixed-button-detail.component.js +0 -31
  306. package/esm2015/lib/modules/fixed-button-detail/fixed-button-detail.module.js +0 -15
  307. package/esm2015/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.component.js +0 -351
  308. package/esm2015/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.service.js +0 -258
  309. package/esm2015/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.component.js +0 -28
  310. package/esm2015/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.service.js +0 -23
  311. package/esm2015/lib/modules/hierarchic-selector/hierarchic-selector.module.js +0 -46
  312. package/esm2015/lib/modules/icon/icon.component.js +0 -78
  313. package/esm2015/lib/modules/icon/icon.module.js +0 -25
  314. package/esm2015/lib/modules/matomo/matomo-module.module.js +0 -7
  315. package/esm2015/lib/modules/matomo/matomo.service.js +0 -106
  316. package/esm2015/lib/modules/panels/abstract-panel.js +0 -50
  317. package/esm2015/lib/modules/panels/panels.component.js +0 -26
  318. package/esm2015/lib/modules/panels/panels.module.js +0 -28
  319. package/esm2015/lib/modules/panels/panels.service.js +0 -331
  320. package/esm2015/lib/modules/relations/relations.component.js +0 -181
  321. package/esm2015/lib/modules/relations/relations.module.js +0 -33
  322. package/esm2015/lib/modules/search/dropdown-container/dropdown-container.component.js +0 -87
  323. package/esm2015/lib/modules/search/dropdown-container/dropdown.service.js +0 -95
  324. package/esm2015/lib/modules/search/facet-selector/facet-selector.component.js +0 -47
  325. package/esm2015/lib/modules/search/group/group.component.js +0 -39
  326. package/esm2015/lib/modules/search/input/input.component.js +0 -316
  327. package/esm2015/lib/modules/search/search/search.component.js +0 -71
  328. package/esm2015/lib/modules/search/search.module.js +0 -52
  329. package/esm2015/lib/modules/select/abstract-select.component.js +0 -176
  330. package/esm2015/lib/modules/select/select/select.component.js +0 -190
  331. package/esm2015/lib/modules/select/select-enum/select-enum.component.js +0 -34
  332. package/esm2015/lib/modules/select/select-hierarchic/select-hierarchic.component.js +0 -120
  333. package/esm2015/lib/modules/select/select.module.js +0 -39
  334. package/esm2015/lib/modules/sidenav/sidenav/sidenav.component.js +0 -12
  335. package/esm2015/lib/modules/sidenav/sidenav-container/sidenav-container.component.js +0 -79
  336. package/esm2015/lib/modules/sidenav/sidenav-content/sidenav-content.component.js +0 -13
  337. package/esm2015/lib/modules/sidenav/sidenav-stack.service.js +0 -50
  338. package/esm2015/lib/modules/sidenav/sidenav.module.js +0 -20
  339. package/esm2015/lib/modules/sidenav/sidenav.service.js +0 -199
  340. package/esm2015/lib/modules/stamp/stamp-module.module.js +0 -13
  341. package/esm2015/lib/modules/stamp/stamp.component.js +0 -13
  342. package/esm2015/lib/modules/table-button/table-button.component.js +0 -38
  343. package/esm2015/lib/modules/table-button/table-button.module.js +0 -16
  344. package/esm2015/lib/services/abstract-model.service.js +0 -509
  345. package/esm2015/lib/services/enum.service.js +0 -68
  346. package/esm2015/lib/services/link-mutation.service.js +0 -155
  347. package/esm2015/lib/services/persistence.service.js +0 -114
  348. package/esm2015/lib/services/swiss-parsing-date-adapter.service.js +0 -55
  349. package/fesm2015/ecodev-natural.js.map +0 -1
  350. package/lib/modules/common/directives/reactive-asterisk.directive.d.ts +0 -10
@@ -0,0 +1,47 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { FormsModule } from '@angular/forms';
4
+ import { MatButtonModule } from '@angular/material/button';
5
+ import { MatCheckboxModule } from '@angular/material/checkbox';
6
+ import { MatMenuModule } from '@angular/material/menu';
7
+ import { NaturalIconModule } from '../icon/icon.module';
8
+ import { NaturalColumnsPickerColumnDirective } from './columns-picker-column.directive';
9
+ import { NaturalColumnsPickerComponent } from './columns-picker.component';
10
+ import { MatTooltipModule } from '@angular/material/tooltip';
11
+ import * as i0 from "@angular/core";
12
+ export class NaturalColumnsPickerModule {
13
+ }
14
+ NaturalColumnsPickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalColumnsPickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
15
+ NaturalColumnsPickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalColumnsPickerModule, declarations: [NaturalColumnsPickerColumnDirective, NaturalColumnsPickerComponent], imports: [CommonModule,
16
+ FormsModule,
17
+ MatMenuModule,
18
+ MatButtonModule,
19
+ MatCheckboxModule,
20
+ NaturalIconModule,
21
+ MatTooltipModule], exports: [NaturalColumnsPickerColumnDirective, NaturalColumnsPickerComponent] });
22
+ NaturalColumnsPickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalColumnsPickerModule, imports: [[
23
+ CommonModule,
24
+ FormsModule,
25
+ MatMenuModule,
26
+ MatButtonModule,
27
+ MatCheckboxModule,
28
+ NaturalIconModule,
29
+ MatTooltipModule,
30
+ ]] });
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalColumnsPickerModule, decorators: [{
32
+ type: NgModule,
33
+ args: [{
34
+ declarations: [NaturalColumnsPickerColumnDirective, NaturalColumnsPickerComponent],
35
+ imports: [
36
+ CommonModule,
37
+ FormsModule,
38
+ MatMenuModule,
39
+ MatButtonModule,
40
+ MatCheckboxModule,
41
+ NaturalIconModule,
42
+ MatTooltipModule,
43
+ ],
44
+ exports: [NaturalColumnsPickerColumnDirective, NaturalColumnsPickerComponent],
45
+ }]
46
+ }] });
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1ucy1waWNrZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvY29sdW1ucy1waWNrZXIvY29sdW1ucy1waWNrZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxtQ0FBbUMsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ3RGLE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3pFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDOztBQWUzRCxNQUFNLE9BQU8sMEJBQTBCOzt1SEFBMUIsMEJBQTBCO3dIQUExQiwwQkFBMEIsaUJBWnBCLG1DQUFtQyxFQUFFLDZCQUE2QixhQUU3RSxZQUFZO1FBQ1osV0FBVztRQUNYLGFBQWE7UUFDYixlQUFlO1FBQ2YsaUJBQWlCO1FBQ2pCLGlCQUFpQjtRQUNqQixnQkFBZ0IsYUFFVixtQ0FBbUMsRUFBRSw2QkFBNkI7d0hBRW5FLDBCQUEwQixZQVgxQjtZQUNMLFlBQVk7WUFDWixXQUFXO1lBQ1gsYUFBYTtZQUNiLGVBQWU7WUFDZixpQkFBaUI7WUFDakIsaUJBQWlCO1lBQ2pCLGdCQUFnQjtTQUNuQjsyRkFHUSwwQkFBMEI7a0JBYnRDLFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFLENBQUMsbUNBQW1DLEVBQUUsNkJBQTZCLENBQUM7b0JBQ2xGLE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsYUFBYTt3QkFDYixlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsaUJBQWlCO3dCQUNqQixnQkFBZ0I7cUJBQ25CO29CQUNELE9BQU8sRUFBRSxDQUFDLG1DQUFtQyxFQUFFLDZCQUE2QixDQUFDO2lCQUNoRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge01hdEJ1dHRvbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7TWF0Q2hlY2tib3hNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcbmltcG9ydCB7TWF0TWVudU1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQge05hdHVyYWxJY29uTW9kdWxlfSBmcm9tICcuLi9pY29uL2ljb24ubW9kdWxlJztcbmltcG9ydCB7TmF0dXJhbENvbHVtbnNQaWNrZXJDb2x1bW5EaXJlY3RpdmV9IGZyb20gJy4vY29sdW1ucy1waWNrZXItY29sdW1uLmRpcmVjdGl2ZSc7XG5pbXBvcnQge05hdHVyYWxDb2x1bW5zUGlja2VyQ29tcG9uZW50fSBmcm9tICcuL2NvbHVtbnMtcGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQge01hdFRvb2x0aXBNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW05hdHVyYWxDb2x1bW5zUGlja2VyQ29sdW1uRGlyZWN0aXZlLCBOYXR1cmFsQ29sdW1uc1BpY2tlckNvbXBvbmVudF0sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBNYXRNZW51TW9kdWxlLFxuICAgICAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgICAgIE1hdENoZWNrYm94TW9kdWxlLFxuICAgICAgICBOYXR1cmFsSWNvbk1vZHVsZSxcbiAgICAgICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtOYXR1cmFsQ29sdW1uc1BpY2tlckNvbHVtbkRpcmVjdGl2ZSwgTmF0dXJhbENvbHVtbnNQaWNrZXJDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBOYXR1cmFsQ29sdW1uc1BpY2tlck1vZHVsZSB7fVxuIl19
@@ -0,0 +1,50 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { NaturalHttpPrefixDirective } from '../../directives/http-prefix.directive';
4
+ import { NaturalLinkableTabDirective } from './directives/linkable-tab.directive';
5
+ import { NaturalCapitalizePipe } from './pipes/capitalize.pipe';
6
+ import { NaturalEllipsisPipe } from './pipes/ellipsis.pipe';
7
+ import { NaturalEnumPipe } from './pipes/enum.pipe';
8
+ import { localStorageProvider, sessionStorageProvider } from './services/memory-storage';
9
+ import { NaturalSwissDatePipe } from './pipes/swiss-date.pipe';
10
+ import { MatFormFieldModule } from '@angular/material/form-field';
11
+ import { MatInputModule } from '@angular/material/input';
12
+ import { MatSelectModule } from '@angular/material/select';
13
+ import { NaturalSrcDensityDirective } from './directives/src-density.directive';
14
+ import * as i0 from "@angular/core";
15
+ const declarationsToExport = [
16
+ NaturalCapitalizePipe,
17
+ NaturalEllipsisPipe,
18
+ NaturalEnumPipe,
19
+ NaturalSwissDatePipe,
20
+ NaturalHttpPrefixDirective,
21
+ NaturalSrcDensityDirective,
22
+ NaturalLinkableTabDirective,
23
+ ];
24
+ export class NaturalCommonModule {
25
+ }
26
+ NaturalCommonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalCommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
27
+ NaturalCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalCommonModule, declarations: [NaturalCapitalizePipe,
28
+ NaturalEllipsisPipe,
29
+ NaturalEnumPipe,
30
+ NaturalSwissDatePipe,
31
+ NaturalHttpPrefixDirective,
32
+ NaturalSrcDensityDirective,
33
+ NaturalLinkableTabDirective], imports: [CommonModule, MatFormFieldModule, MatInputModule, MatSelectModule], exports: [NaturalCapitalizePipe,
34
+ NaturalEllipsisPipe,
35
+ NaturalEnumPipe,
36
+ NaturalSwissDatePipe,
37
+ NaturalHttpPrefixDirective,
38
+ NaturalSrcDensityDirective,
39
+ NaturalLinkableTabDirective] });
40
+ NaturalCommonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalCommonModule, providers: [sessionStorageProvider, localStorageProvider], imports: [[CommonModule, MatFormFieldModule, MatInputModule, MatSelectModule]] });
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalCommonModule, decorators: [{
42
+ type: NgModule,
43
+ args: [{
44
+ declarations: [...declarationsToExport],
45
+ imports: [CommonModule, MatFormFieldModule, MatInputModule, MatSelectModule],
46
+ exports: [...declarationsToExport],
47
+ providers: [sessionStorageProvider, localStorageProvider],
48
+ }]
49
+ }] });
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLW1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL2NvbW1vbi9jb21tb24tbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBQ2xGLE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ2hGLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUUsc0JBQXNCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLG9DQUFvQyxDQUFDOztBQUU5RSxNQUFNLG9CQUFvQixHQUFHO0lBQ3pCLHFCQUFxQjtJQUNyQixtQkFBbUI7SUFDbkIsZUFBZTtJQUNmLG9CQUFvQjtJQUNwQiwwQkFBMEI7SUFDMUIsMEJBQTBCO0lBQzFCLDJCQUEyQjtDQUM5QixDQUFDO0FBUUYsTUFBTSxPQUFPLG1CQUFtQjs7Z0hBQW5CLG1CQUFtQjtpSEFBbkIsbUJBQW1CLGlCQWY1QixxQkFBcUI7UUFDckIsbUJBQW1CO1FBQ25CLGVBQWU7UUFDZixvQkFBb0I7UUFDcEIsMEJBQTBCO1FBQzFCLDBCQUEwQjtRQUMxQiwyQkFBMkIsYUFLakIsWUFBWSxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxlQUFlLGFBWDNFLHFCQUFxQjtRQUNyQixtQkFBbUI7UUFDbkIsZUFBZTtRQUNmLG9CQUFvQjtRQUNwQiwwQkFBMEI7UUFDMUIsMEJBQTBCO1FBQzFCLDJCQUEyQjtpSEFTbEIsbUJBQW1CLGFBRmpCLENBQUMsc0JBQXNCLEVBQUUsb0JBQW9CLENBQUMsWUFGaEQsQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLGVBQWUsQ0FBQzsyRkFJbkUsbUJBQW1CO2tCQU4vQixRQUFRO21CQUFDO29CQUNOLFlBQVksRUFBRSxDQUFDLEdBQUcsb0JBQW9CLENBQUM7b0JBQ3ZDLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsZUFBZSxDQUFDO29CQUM1RSxPQUFPLEVBQUUsQ0FBQyxHQUFHLG9CQUFvQixDQUFDO29CQUNsQyxTQUFTLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSxvQkFBb0IsQ0FBQztpQkFDNUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOYXR1cmFsSHR0cFByZWZpeERpcmVjdGl2ZX0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9odHRwLXByZWZpeC5kaXJlY3RpdmUnO1xuaW1wb3J0IHtOYXR1cmFsTGlua2FibGVUYWJEaXJlY3RpdmV9IGZyb20gJy4vZGlyZWN0aXZlcy9saW5rYWJsZS10YWIuZGlyZWN0aXZlJztcbmltcG9ydCB7TmF0dXJhbENhcGl0YWxpemVQaXBlfSBmcm9tICcuL3BpcGVzL2NhcGl0YWxpemUucGlwZSc7XG5pbXBvcnQge05hdHVyYWxFbGxpcHNpc1BpcGV9IGZyb20gJy4vcGlwZXMvZWxsaXBzaXMucGlwZSc7XG5pbXBvcnQge05hdHVyYWxFbnVtUGlwZX0gZnJvbSAnLi9waXBlcy9lbnVtLnBpcGUnO1xuaW1wb3J0IHtsb2NhbFN0b3JhZ2VQcm92aWRlciwgc2Vzc2lvblN0b3JhZ2VQcm92aWRlcn0gZnJvbSAnLi9zZXJ2aWNlcy9tZW1vcnktc3RvcmFnZSc7XG5pbXBvcnQge05hdHVyYWxTd2lzc0RhdGVQaXBlfSBmcm9tICcuL3BpcGVzL3N3aXNzLWRhdGUucGlwZSc7XG5pbXBvcnQge01hdEZvcm1GaWVsZE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQge01hdElucHV0TW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQge01hdFNlbGVjdE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7TmF0dXJhbFNyY0RlbnNpdHlEaXJlY3RpdmV9IGZyb20gJy4vZGlyZWN0aXZlcy9zcmMtZGVuc2l0eS5kaXJlY3RpdmUnO1xuXG5jb25zdCBkZWNsYXJhdGlvbnNUb0V4cG9ydCA9IFtcbiAgICBOYXR1cmFsQ2FwaXRhbGl6ZVBpcGUsXG4gICAgTmF0dXJhbEVsbGlwc2lzUGlwZSxcbiAgICBOYXR1cmFsRW51bVBpcGUsXG4gICAgTmF0dXJhbFN3aXNzRGF0ZVBpcGUsXG4gICAgTmF0dXJhbEh0dHBQcmVmaXhEaXJlY3RpdmUsXG4gICAgTmF0dXJhbFNyY0RlbnNpdHlEaXJlY3RpdmUsXG4gICAgTmF0dXJhbExpbmthYmxlVGFiRGlyZWN0aXZlLFxuXTtcblxuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFsuLi5kZWNsYXJhdGlvbnNUb0V4cG9ydF0sXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0Rm9ybUZpZWxkTW9kdWxlLCBNYXRJbnB1dE1vZHVsZSwgTWF0U2VsZWN0TW9kdWxlXSxcbiAgICBleHBvcnRzOiBbLi4uZGVjbGFyYXRpb25zVG9FeHBvcnRdLFxuICAgIHByb3ZpZGVyczogW3Nlc3Npb25TdG9yYWdlUHJvdmlkZXIsIGxvY2FsU3RvcmFnZVByb3ZpZGVyXSxcbn0pXG5leHBvcnQgY2xhc3MgTmF0dXJhbENvbW1vbk1vZHVsZSB7fVxuIl19
@@ -0,0 +1,79 @@
1
+ import { Directive, Input } from '@angular/core';
2
+ import { clone } from 'lodash-es';
3
+ import { takeUntil } from 'rxjs/operators';
4
+ import { NaturalAbstractController } from '../../../classes/abstract-controller';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/material/tabs";
7
+ import * as i2 from "@angular/router";
8
+ /**
9
+ * Returns an identifier for the tab
10
+ */
11
+ function getTabId(tab) {
12
+ return tab.content?.viewContainerRef.element.nativeElement.id ?? '';
13
+ }
14
+ /**
15
+ * Usage :
16
+ *
17
+ * <mat-tab-group [naturalLinkableTab]="!isPanel">
18
+ * <mat-tab label="Third 1">third 1</mat-tab> // First tab doesn't need id. This keeps url clean on default one
19
+ * <mat-tab label="Third 2" id="third2">Third 2</mat-tab>
20
+ * ...
21
+ * </mat-tab-group>
22
+ */
23
+ export class NaturalLinkableTabDirective extends NaturalAbstractController {
24
+ constructor(component, route, router) {
25
+ super();
26
+ this.component = component;
27
+ this.route = route;
28
+ this.router = router;
29
+ /**
30
+ * If false, disables the persistent navigation
31
+ */
32
+ this.naturalLinkableTab = true;
33
+ }
34
+ ngAfterViewInit() {
35
+ if (this.naturalLinkableTab === false) {
36
+ return;
37
+ }
38
+ // When url params change, update the mat-tab-group selected tab
39
+ this.route.fragment.pipe(takeUntil(this.ngUnsubscribe)).subscribe(fragment => {
40
+ // Get index of tab that matches wanted name
41
+ const tabIndex = this.getTabIndex(fragment);
42
+ // If tab index is valid (>= 0) go to given fragment
43
+ // If there is no fragment at all, go to first tab (index is -1 in this case)
44
+ if (tabIndex >= 0 || !fragment) {
45
+ this.component.selectedIndex = tabIndex;
46
+ }
47
+ });
48
+ // When mat-tab-groups selected tab change, update url
49
+ this.component.selectedTabChange.pipe(takeUntil(this.ngUnsubscribe)).subscribe((event) => {
50
+ const activatedTabName = getTabId(event.tab);
51
+ const segments = this.route.snapshot.url;
52
+ if (!segments.length) {
53
+ // This should never happen in normal usage, because it would means there is no route at all in the app
54
+ throw new Error('Cannot update URL for tabs without any segments in URL');
55
+ }
56
+ // Get url matrix params (/segment;matrix=param) only without route params (segment/:id)
57
+ const params = clone(segments[segments.length - 1].parameters);
58
+ this.router.navigate(['.', params], {
59
+ relativeTo: this.route,
60
+ queryParamsHandling: 'preserve',
61
+ fragment: activatedTabName && activatedTabName.length ? activatedTabName : undefined,
62
+ });
63
+ });
64
+ }
65
+ getTabIndex(fragment) {
66
+ return this.component._tabs.toArray().findIndex(tab => fragment === getTabId(tab));
67
+ }
68
+ }
69
+ NaturalLinkableTabDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalLinkableTabDirective, deps: [{ token: i1.MatTabGroup }, { token: i2.ActivatedRoute }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Directive });
70
+ NaturalLinkableTabDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.0", type: NaturalLinkableTabDirective, selector: "mat-tab-group[naturalLinkableTab]", inputs: { naturalLinkableTab: "naturalLinkableTab" }, usesInheritance: true, ngImport: i0 });
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalLinkableTabDirective, decorators: [{
72
+ type: Directive,
73
+ args: [{
74
+ selector: 'mat-tab-group[naturalLinkableTab]',
75
+ }]
76
+ }], ctorParameters: function () { return [{ type: i1.MatTabGroup }, { type: i2.ActivatedRoute }, { type: i2.Router }]; }, propDecorators: { naturalLinkableTab: [{
77
+ type: Input
78
+ }] } });
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua2FibGUtdGFiLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL2NvbW1vbi9kaXJlY3RpdmVzL2xpbmthYmxlLXRhYi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRzlELE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDaEMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDOzs7O0FBRS9FOztHQUVHO0FBQ0gsU0FBUyxRQUFRLENBQUMsR0FBVztJQUN6QixPQUFPLEdBQUcsQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO0FBQ3hFLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUlILE1BQU0sT0FBTywyQkFBNEIsU0FBUSx5QkFBeUI7SUFNdEUsWUFDcUIsU0FBc0IsRUFDdEIsS0FBcUIsRUFDckIsTUFBYztRQUUvQixLQUFLLEVBQUUsQ0FBQztRQUpTLGNBQVMsR0FBVCxTQUFTLENBQWE7UUFDdEIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQVJuQzs7V0FFRztRQUNhLHVCQUFrQixHQUFpQixJQUFJLENBQUM7SUFReEQsQ0FBQztJQUVNLGVBQWU7UUFDbEIsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEtBQUssS0FBSyxFQUFFO1lBQ25DLE9BQU87U0FDVjtRQUVELGdFQUFnRTtRQUNoRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUN6RSw0Q0FBNEM7WUFDNUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUU1QyxvREFBb0Q7WUFDcEQsNkVBQTZFO1lBQzdFLElBQUksUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDO2FBQzNDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxzREFBc0Q7UUFDdEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQXdCLEVBQUUsRUFBRTtZQUN4RyxNQUFNLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDN0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO2dCQUNsQix1R0FBdUc7Z0JBQ3ZHLE1BQU0sSUFBSSxLQUFLLENBQUMsd0RBQXdELENBQUMsQ0FBQzthQUM3RTtZQUVELHdGQUF3RjtZQUN4RixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFL0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEVBQUU7Z0JBQ2hDLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDdEIsbUJBQW1CLEVBQUUsVUFBVTtnQkFDL0IsUUFBUSxFQUFFLGdCQUFnQixJQUFJLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLFNBQVM7YUFDdkYsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sV0FBVyxDQUFDLFFBQXVCO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7O3dIQXJEUSwyQkFBMkI7NEdBQTNCLDJCQUEyQjsyRkFBM0IsMkJBQTJCO2tCQUh2QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxtQ0FBbUM7aUJBQ2hEO29KQUttQixrQkFBa0I7c0JBQWpDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNYXRUYWIsIE1hdFRhYkNoYW5nZUV2ZW50LCBNYXRUYWJHcm91cH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge2Nsb25lfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHt0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7TmF0dXJhbEFic3RyYWN0Q29udHJvbGxlcn0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9hYnN0cmFjdC1jb250cm9sbGVyJztcblxuLyoqXG4gKiBSZXR1cm5zIGFuIGlkZW50aWZpZXIgZm9yIHRoZSB0YWJcbiAqL1xuZnVuY3Rpb24gZ2V0VGFiSWQodGFiOiBNYXRUYWIpOiBzdHJpbmcge1xuICAgIHJldHVybiB0YWIuY29udGVudD8udmlld0NvbnRhaW5lclJlZi5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuaWQgPz8gJyc7XG59XG5cbi8qKlxuICogVXNhZ2UgOlxuICpcbiAqIDxtYXQtdGFiLWdyb3VwIFtuYXR1cmFsTGlua2FibGVUYWJdPVwiIWlzUGFuZWxcIj5cbiAqICAgICA8bWF0LXRhYiBsYWJlbD1cIlRoaXJkIDFcIj50aGlyZCAxPC9tYXQtdGFiPiAvLyBGaXJzdCB0YWIgZG9lc24ndCBuZWVkIGlkLiBUaGlzIGtlZXBzIHVybCBjbGVhbiBvbiBkZWZhdWx0IG9uZVxuICogICAgIDxtYXQtdGFiIGxhYmVsPVwiVGhpcmQgMlwiIGlkPVwidGhpcmQyXCI+VGhpcmQgMjwvbWF0LXRhYj5cbiAqICAgICAuLi5cbiAqIDwvbWF0LXRhYi1ncm91cD5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdtYXQtdGFiLWdyb3VwW25hdHVyYWxMaW5rYWJsZVRhYl0nLFxufSlcbmV4cG9ydCBjbGFzcyBOYXR1cmFsTGlua2FibGVUYWJEaXJlY3RpdmUgZXh0ZW5kcyBOYXR1cmFsQWJzdHJhY3RDb250cm9sbGVyIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgLyoqXG4gICAgICogSWYgZmFsc2UsIGRpc2FibGVzIHRoZSBwZXJzaXN0ZW50IG5hdmlnYXRpb25cbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgbmF0dXJhbExpbmthYmxlVGFiOiBib29sZWFuIHwgJycgPSB0cnVlO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNvbXBvbmVudDogTWF0VGFiR3JvdXAsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm5hdHVyYWxMaW5rYWJsZVRhYiA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFdoZW4gdXJsIHBhcmFtcyBjaGFuZ2UsIHVwZGF0ZSB0aGUgbWF0LXRhYi1ncm91cCBzZWxlY3RlZCB0YWJcbiAgICAgICAgdGhpcy5yb3V0ZS5mcmFnbWVudC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoZnJhZ21lbnQgPT4ge1xuICAgICAgICAgICAgLy8gR2V0IGluZGV4IG9mIHRhYiB0aGF0IG1hdGNoZXMgd2FudGVkIG5hbWVcbiAgICAgICAgICAgIGNvbnN0IHRhYkluZGV4ID0gdGhpcy5nZXRUYWJJbmRleChmcmFnbWVudCk7XG5cbiAgICAgICAgICAgIC8vIElmIHRhYiBpbmRleCBpcyB2YWxpZCAoPj0gMCkgZ28gdG8gZ2l2ZW4gZnJhZ21lbnRcbiAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGZyYWdtZW50IGF0IGFsbCwgZ28gdG8gZmlyc3QgdGFiIChpbmRleCBpcyAtMSBpbiB0aGlzIGNhc2UpXG4gICAgICAgICAgICBpZiAodGFiSW5kZXggPj0gMCB8fCAhZnJhZ21lbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudC5zZWxlY3RlZEluZGV4ID0gdGFiSW5kZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFdoZW4gbWF0LXRhYi1ncm91cHMgc2VsZWN0ZWQgdGFiIGNoYW5nZSwgdXBkYXRlIHVybFxuICAgICAgICB0aGlzLmNvbXBvbmVudC5zZWxlY3RlZFRhYkNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKGV2ZW50OiBNYXRUYWJDaGFuZ2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYWN0aXZhdGVkVGFiTmFtZSA9IGdldFRhYklkKGV2ZW50LnRhYik7XG4gICAgICAgICAgICBjb25zdCBzZWdtZW50cyA9IHRoaXMucm91dGUuc25hcHNob3QudXJsO1xuICAgICAgICAgICAgaWYgKCFzZWdtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAvLyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4gaW4gbm9ybWFsIHVzYWdlLCBiZWNhdXNlIGl0IHdvdWxkIG1lYW5zIHRoZXJlIGlzIG5vIHJvdXRlIGF0IGFsbCBpbiB0aGUgYXBwXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgdXBkYXRlIFVSTCBmb3IgdGFicyB3aXRob3V0IGFueSBzZWdtZW50cyBpbiBVUkwnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gR2V0IHVybCBtYXRyaXggcGFyYW1zICgvc2VnbWVudDttYXRyaXg9cGFyYW0pIG9ubHkgd2l0aG91dCByb3V0ZSBwYXJhbXMgKHNlZ21lbnQvOmlkKVxuICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gY2xvbmUoc2VnbWVudHNbc2VnbWVudHMubGVuZ3RoIC0gMV0ucGFyYW1ldGVycyk7XG5cbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLicsIHBhcmFtc10sIHtcbiAgICAgICAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLFxuICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdwcmVzZXJ2ZScsXG4gICAgICAgICAgICAgICAgZnJhZ21lbnQ6IGFjdGl2YXRlZFRhYk5hbWUgJiYgYWN0aXZhdGVkVGFiTmFtZS5sZW5ndGggPyBhY3RpdmF0ZWRUYWJOYW1lIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VGFiSW5kZXgoZnJhZ21lbnQ6IHN0cmluZyB8IG51bGwpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5jb21wb25lbnQuX3RhYnMudG9BcnJheSgpLmZpbmRJbmRleCh0YWIgPT4gZnJhZ21lbnQgPT09IGdldFRhYklkKHRhYikpO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,62 @@
1
+ import { Directive, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class NaturalSrcDensityDirective {
4
+ constructor(elementRef) {
5
+ this.elementRef = elementRef;
6
+ }
7
+ /**
8
+ * Automatically apply image selection based on screen density.
9
+ *
10
+ * The given URL **MUST** be the normal density URL. And it **MUST** include
11
+ * the size as last path segment. That size will automatically be changed
12
+ * for other screen densities. That means that the server **MUST** be able to
13
+ * serve an image of the given size.
14
+ *
15
+ * Usage:
16
+ *
17
+ * ```html
18
+ * <img [naturalSrcDensity]="'/api/image/123/200'" />
19
+ * ```
20
+ *
21
+ * Will generate something like:
22
+ *
23
+ * ```html
24
+ * <img
25
+ * src="/api/image/123/200"
26
+ * 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"
27
+ * />
28
+ * ```
29
+ *
30
+ * See https://web.dev/codelab-density-descriptors/
31
+ */
32
+ set naturalSrcDensity(src) {
33
+ if (!src) {
34
+ return;
35
+ }
36
+ const match = src.match(/^(.*\/)(\d+)$/);
37
+ const base = match?.[1];
38
+ const size = +(match?.[2] ?? 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.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalSrcDensityDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
53
+ NaturalSrcDensityDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.0", type: NaturalSrcDensityDirective, selector: "img[naturalSrcDensity]", inputs: { naturalSrcDensity: "naturalSrcDensity" }, ngImport: i0 });
54
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalSrcDensityDirective, decorators: [{
55
+ type: Directive,
56
+ args: [{
57
+ selector: 'img[naturalSrcDensity]',
58
+ }]
59
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { naturalSrcDensity: [{
60
+ type: Input
61
+ }] } });
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjLWRlbnNpdHkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvY29tbW9uL2RpcmVjdGl2ZXMvc3JjLWRlbnNpdHkuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQWMsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDOztBQUszRCxNQUFNLE9BQU8sMEJBQTBCO0lBbURuQyxZQUFvQyxVQUF3QztRQUF4QyxlQUFVLEdBQVYsVUFBVSxDQUE4QjtJQUFHLENBQUM7SUFsRGhGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0F3Qkc7SUFDSCxJQUNXLGlCQUFpQixDQUFDLEdBQVc7UUFDcEMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNOLE9BQU87U0FDVjtRQUVELE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDekMsTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEIsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRWhDLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNoQixJQUFJLElBQUksSUFBSSxJQUFJLEVBQUU7WUFDZCxxRkFBcUY7WUFDckYsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7WUFDdEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQztZQUN2QixNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZCLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7WUFFdkIsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLElBQUksS0FBSyxJQUFJLEdBQUcsTUFBTSxVQUFVLElBQUksR0FBRyxLQUFLLFFBQVEsSUFBSSxHQUFHLEtBQUssUUFBUSxJQUFJLEdBQUcsS0FBSyxLQUFLLENBQUM7U0FDaEg7UUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDbEQsQ0FBQzs7dUhBakRRLDBCQUEwQjsyR0FBMUIsMEJBQTBCOzJGQUExQiwwQkFBMEI7a0JBSHRDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHdCQUF3QjtpQkFDckM7aUdBNEJjLGlCQUFpQjtzQkFEM0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnaW1nW25hdHVyYWxTcmNEZW5zaXR5XScsXG59KVxuZXhwb3J0IGNsYXNzIE5hdHVyYWxTcmNEZW5zaXR5RGlyZWN0aXZlIHtcbiAgICAvKipcbiAgICAgKiBBdXRvbWF0aWNhbGx5IGFwcGx5IGltYWdlIHNlbGVjdGlvbiBiYXNlZCBvbiBzY3JlZW4gZGVuc2l0eS5cbiAgICAgKlxuICAgICAqIFRoZSBnaXZlbiBVUkwgKipNVVNUKiogYmUgdGhlIG5vcm1hbCBkZW5zaXR5IFVSTC4gQW5kIGl0ICoqTVVTVCoqIGluY2x1ZGVcbiAgICAgKiB0aGUgc2l6ZSBhcyBsYXN0IHBhdGggc2VnbWVudC4gVGhhdCBzaXplIHdpbGwgYXV0b21hdGljYWxseSBiZSBjaGFuZ2VkXG4gICAgICogZm9yIG90aGVyIHNjcmVlbiBkZW5zaXRpZXMuIFRoYXQgbWVhbnMgdGhhdCB0aGUgc2VydmVyICoqTVVTVCoqIGJlIGFibGUgdG9cbiAgICAgKiBzZXJ2ZSBhbiBpbWFnZSBvZiB0aGUgZ2l2ZW4gc2l6ZS5cbiAgICAgKlxuICAgICAqIFVzYWdlOlxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpbWcgW25hdHVyYWxTcmNEZW5zaXR5XT1cIicvYXBpL2ltYWdlLzEyMy8yMDAnXCIgLz5cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIFdpbGwgZ2VuZXJhdGUgc29tZXRoaW5nIGxpa2U6XG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGltZ1xuICAgICAqICAgICBzcmM9XCIvYXBpL2ltYWdlLzEyMy8yMDBcIlxuICAgICAqICAgICBzcmNzZXQ9XCIvYXBpL2ltYWdlLzEyMy8yMDAsIC9hcGkvaW1hZ2UvMTIzLzMwMCAxLjV4LCAvYXBpL2ltYWdlLzEyMy80MDAgMngsIC9hcGkvaW1hZ2UvMTIzLzYwMCAzeCwgL2FwaS9pbWFnZS8xMjMvODAwIDR4XCJcbiAgICAgKiAvPlxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogU2VlIGh0dHBzOi8vd2ViLmRldi9jb2RlbGFiLWRlbnNpdHktZGVzY3JpcHRvcnMvXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IG5hdHVyYWxTcmNEZW5zaXR5KHNyYzogc3RyaW5nKSB7XG4gICAgICAgIGlmICghc3JjKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtYXRjaCA9IHNyYy5tYXRjaCgvXiguKlxcLykoXFxkKykkLyk7XG4gICAgICAgIGNvbnN0IGJhc2UgPSBtYXRjaD8uWzFdO1xuICAgICAgICBjb25zdCBzaXplID0gKyhtYXRjaD8uWzJdID8/IDApO1xuXG4gICAgICAgIGxldCBzcmNzZXQgPSAnJztcbiAgICAgICAgaWYgKGJhc2UgJiYgc2l6ZSkge1xuICAgICAgICAgICAgLy8gVGhpcyBzaG91bGQgY292ZXIgbW9zdCBjb21tb24gZGVuc2l0aWVzIGFjY29yZGluZyB0byBodHRwczovL3d3dy5teWRldmljZS5pby8jdGFiMVxuICAgICAgICAgICAgY29uc3Qgc2l6ZTE1ID0gTWF0aC5yb3VuZChzaXplICogMS41KTtcbiAgICAgICAgICAgIGNvbnN0IHNpemUyID0gc2l6ZSAqIDI7XG4gICAgICAgICAgICBjb25zdCBzaXplMyA9IHNpemUgKiAzO1xuICAgICAgICAgICAgY29uc3Qgc2l6ZTQgPSBzaXplICogNDtcblxuICAgICAgICAgICAgc3Jjc2V0ID0gYCR7YmFzZX0ke3NpemV9LCAke2Jhc2V9JHtzaXplMTV9IDEuNXgsICR7YmFzZX0ke3NpemUyfSAyeCwgJHtiYXNlfSR7c2l6ZTN9IDN4LCAke2Jhc2V9JHtzaXplNH0gNHhgO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3JjID0gc3JjO1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zcmNzZXQgPSBzcmNzZXQ7XG4gICAgfVxuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MSW1hZ2VFbGVtZW50Pikge31cbn1cbiJdfQ==
@@ -0,0 +1,18 @@
1
+ import { Pipe } from '@angular/core';
2
+ import { upperCaseFirstLetter } from '../../../classes/utility';
3
+ import * as i0 from "@angular/core";
4
+ export class NaturalCapitalizePipe {
5
+ transform(value) {
6
+ if (value) {
7
+ return upperCaseFirstLetter(value);
8
+ }
9
+ return value;
10
+ }
11
+ }
12
+ NaturalCapitalizePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalCapitalizePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
13
+ NaturalCapitalizePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalCapitalizePipe, name: "capitalize" });
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalCapitalizePipe, decorators: [{
15
+ type: Pipe,
16
+ args: [{ name: 'capitalize' }]
17
+ }] });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FwaXRhbGl6ZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvY29tbW9uL3BpcGVzL2NhcGl0YWxpemUucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsSUFBSSxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQzs7QUFHOUQsTUFBTSxPQUFPLHFCQUFxQjtJQUN2QixTQUFTLENBQUMsS0FBb0I7UUFDakMsSUFBSSxLQUFLLEVBQUU7WUFDUCxPQUFPLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3RDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQzs7a0hBUFEscUJBQXFCO2dIQUFyQixxQkFBcUI7MkZBQXJCLHFCQUFxQjtrQkFEakMsSUFBSTttQkFBQyxFQUFDLElBQUksRUFBRSxZQUFZLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1BpcGUsIFBpcGVUcmFuc2Zvcm19IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt1cHBlckNhc2VGaXJzdExldHRlcn0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy91dGlsaXR5JztcblxuQFBpcGUoe25hbWU6ICdjYXBpdGFsaXplJ30pXG5leHBvcnQgY2xhc3MgTmF0dXJhbENhcGl0YWxpemVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgcHVibGljIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nIHwgbnVsbCk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiB1cHBlckNhc2VGaXJzdExldHRlcih2YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,14 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class NaturalEllipsisPipe {
4
+ transform(value, limit) {
5
+ return value.substr(0, limit - 1) + (value.length > limit ? '…' : '');
6
+ }
7
+ }
8
+ NaturalEllipsisPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalEllipsisPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
9
+ NaturalEllipsisPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalEllipsisPipe, name: "ellipsis" });
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalEllipsisPipe, decorators: [{
11
+ type: Pipe,
12
+ args: [{ name: 'ellipsis' }]
13
+ }] });
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxsaXBzaXMucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL2NvbW1vbi9waXBlcy9lbGxpcHNpcy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQWdCLE1BQU0sZUFBZSxDQUFDOztBQUdsRCxNQUFNLE9BQU8sbUJBQW1CO0lBQ3JCLFNBQVMsQ0FBQyxLQUFhLEVBQUUsS0FBYTtRQUN6QyxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLENBQUM7O2dIQUhRLG1CQUFtQjs4R0FBbkIsbUJBQW1COzJGQUFuQixtQkFBbUI7a0JBRC9CLElBQUk7bUJBQUMsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQaXBlLCBQaXBlVHJhbnNmb3JtfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQFBpcGUoe25hbWU6ICdlbGxpcHNpcyd9KVxuZXhwb3J0IGNsYXNzIE5hdHVyYWxFbGxpcHNpc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICBwdWJsaWMgdHJhbnNmb3JtKHZhbHVlOiBzdHJpbmcsIGxpbWl0OiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdmFsdWUuc3Vic3RyKDAsIGxpbWl0IC0gMSkgKyAodmFsdWUubGVuZ3RoID4gbGltaXQgPyAn4oCmJyA6ICcnKTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,25 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../../services/enum.service";
4
+ /**
5
+ * A pipe to output an enum user-friendly name, instead of its value.
6
+ *
7
+ * Usage would be: {{ element.priority | enum: 'Priority' | async }}
8
+ */
9
+ export class NaturalEnumPipe {
10
+ constructor(enumService) {
11
+ this.enumService = enumService;
12
+ }
13
+ transform(value, enumName) {
14
+ return this.enumService.getValueName(value, enumName);
15
+ }
16
+ }
17
+ NaturalEnumPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalEnumPipe, deps: [{ token: i1.NaturalEnumService }], target: i0.ɵɵFactoryTarget.Pipe });
18
+ NaturalEnumPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalEnumPipe, name: "enum" });
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalEnumPipe, decorators: [{
20
+ type: Pipe,
21
+ args: [{
22
+ name: 'enum',
23
+ }]
24
+ }], ctorParameters: function () { return [{ type: i1.NaturalEnumService }]; } });
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvY29tbW9uL3BpcGVzL2VudW0ucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsSUFBSSxFQUFnQixNQUFNLGVBQWUsQ0FBQzs7O0FBSWxEOzs7O0dBSUc7QUFJSCxNQUFNLE9BQU8sZUFBZTtJQUN4QixZQUFvQyxXQUErQjtRQUEvQixnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7SUFBRyxDQUFDO0lBRWhFLFNBQVMsQ0FBQyxLQUFVLEVBQUUsUUFBZ0I7UUFDekMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDMUQsQ0FBQzs7NEdBTFEsZUFBZTswR0FBZixlQUFlOzJGQUFmLGVBQWU7a0JBSDNCLElBQUk7bUJBQUM7b0JBQ0YsSUFBSSxFQUFFLE1BQU07aUJBQ2YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1BpcGUsIFBpcGVUcmFuc2Zvcm19IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOYXR1cmFsRW51bVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2VudW0uc2VydmljZSc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIEEgcGlwZSB0byBvdXRwdXQgYW4gZW51bSB1c2VyLWZyaWVuZGx5IG5hbWUsIGluc3RlYWQgb2YgaXRzIHZhbHVlLlxuICpcbiAqIFVzYWdlIHdvdWxkIGJlOiB7eyBlbGVtZW50LnByaW9yaXR5IHwgZW51bTogJ1ByaW9yaXR5JyB8IGFzeW5jIH19XG4gKi9cbkBQaXBlKHtcbiAgICBuYW1lOiAnZW51bScsXG59KVxuZXhwb3J0IGNsYXNzIE5hdHVyYWxFbnVtUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGVudW1TZXJ2aWNlOiBOYXR1cmFsRW51bVNlcnZpY2UpIHt9XG5cbiAgICBwdWJsaWMgdHJhbnNmb3JtKHZhbHVlOiBhbnksIGVudW1OYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5lbnVtU2VydmljZS5nZXRWYWx1ZU5hbWUodmFsdWUsIGVudW1OYW1lKTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,20 @@
1
+ import { Pipe } from '@angular/core';
2
+ import { DatePipe } from '@angular/common';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * A normal DatePipe but with default formatting to be '12.24.2020 23:30' to match the most common use-cases
6
+ */
7
+ export class NaturalSwissDatePipe extends DatePipe {
8
+ transform(value, format = 'dd.MM.y HH:mm', timezone, locale) {
9
+ return super.transform(value, format, timezone, locale);
10
+ }
11
+ }
12
+ NaturalSwissDatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalSwissDatePipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe });
13
+ NaturalSwissDatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalSwissDatePipe, name: "swissDate" });
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalSwissDatePipe, decorators: [{
15
+ type: Pipe,
16
+ args: [{
17
+ name: 'swissDate',
18
+ }]
19
+ }] });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpc3MtZGF0ZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvY29tbW9uL3BpcGVzL3N3aXNzLWRhdGUucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsSUFBSSxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7O0FBRXpDOztHQUVHO0FBSUgsTUFBTSxPQUFPLG9CQUFxQixTQUFRLFFBQVE7SUFRdkMsU0FBUyxDQUNaLEtBQWdELEVBQ2hELE1BQU0sR0FBRyxlQUFlLEVBQ3hCLFFBQWlCLEVBQ2pCLE1BQWU7UUFFZixPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDNUQsQ0FBQzs7aUhBZlEsb0JBQW9COytHQUFwQixvQkFBb0I7MkZBQXBCLG9CQUFvQjtrQkFIaEMsSUFBSTttQkFBQztvQkFDRixJQUFJLEVBQUUsV0FBVztpQkFDcEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1BpcGUsIFBpcGVUcmFuc2Zvcm19IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtEYXRlUGlwZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuLyoqXG4gKiBBIG5vcm1hbCBEYXRlUGlwZSBidXQgd2l0aCBkZWZhdWx0IGZvcm1hdHRpbmcgdG8gYmUgJzEyLjI0LjIwMjAgMjM6MzAnIHRvIG1hdGNoIHRoZSBtb3N0IGNvbW1vbiB1c2UtY2FzZXNcbiAqL1xuQFBpcGUoe1xuICAgIG5hbWU6ICdzd2lzc0RhdGUnLFxufSlcbmV4cG9ydCBjbGFzcyBOYXR1cmFsU3dpc3NEYXRlUGlwZSBleHRlbmRzIERhdGVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgcHVibGljIHRyYW5zZm9ybSh2YWx1ZTogbnVsbCB8IHVuZGVmaW5lZCwgZm9ybWF0Pzogc3RyaW5nLCB0aW1lem9uZT86IHN0cmluZywgbG9jYWxlPzogc3RyaW5nKTogbnVsbDtcbiAgICBwdWJsaWMgdHJhbnNmb3JtKFxuICAgICAgICB2YWx1ZTogRGF0ZSB8IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQsXG4gICAgICAgIGZvcm1hdD86IHN0cmluZyxcbiAgICAgICAgdGltZXpvbmU/OiBzdHJpbmcsXG4gICAgICAgIGxvY2FsZT86IHN0cmluZyxcbiAgICApOiBzdHJpbmcgfCBudWxsO1xuICAgIHB1YmxpYyB0cmFuc2Zvcm0oXG4gICAgICAgIHZhbHVlOiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgICAgICAgZm9ybWF0ID0gJ2RkLk1NLnkgSEg6bW0nLFxuICAgICAgICB0aW1lem9uZT86IHN0cmluZyxcbiAgICAgICAgbG9jYWxlPzogc3RyaW5nLFxuICAgICk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICByZXR1cm4gc3VwZXIudHJhbnNmb3JtKHZhbHVlLCBmb3JtYXQsIHRpbWV6b25lLCBsb2NhbGUpO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,13 @@
1
+ /*
2
+ * Public API Surface of natural
3
+ */
4
+ export * from './common-module';
5
+ export * from './directives/linkable-tab.directive';
6
+ export * from './pipes/capitalize.pipe';
7
+ export * from './pipes/ellipsis.pipe';
8
+ export * from './pipes/enum.pipe';
9
+ export * from './pipes/swiss-date.pipe';
10
+ export * from './services/memory-storage';
11
+ export { NaturalSrcDensityDirective } from './directives/src-density.directive';
12
+ export { NATURAL_SEO_CONFIG, NaturalSeoService, } from './services/seo.service';
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL2NvbW1vbi9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RSxPQUFPLEVBQ0gsa0JBQWtCLEVBRWxCLGlCQUFpQixHQUtwQixNQUFNLHdCQUF3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBuYXR1cmFsXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9jb21tb24tbW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9saW5rYWJsZS10YWIuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvY2FwaXRhbGl6ZS5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvZWxsaXBzaXMucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL2VudW0ucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL3N3aXNzLWRhdGUucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL21lbW9yeS1zdG9yYWdlJztcbmV4cG9ydCB7TmF0dXJhbFNyY0RlbnNpdHlEaXJlY3RpdmV9IGZyb20gJy4vZGlyZWN0aXZlcy9zcmMtZGVuc2l0eS5kaXJlY3RpdmUnO1xuZXhwb3J0IHtcbiAgICBOQVRVUkFMX1NFT19DT05GSUcsXG4gICAgTmF0dXJhbFNlb0NvbmZpZyxcbiAgICBOYXR1cmFsU2VvU2VydmljZSxcbiAgICBOYXR1cmFsU2VvLFxuICAgIE5hdHVyYWxTZW9CYXNpYyxcbiAgICBOYXR1cmFsU2VvUmVzb2x2ZSxcbiAgICBOYXR1cmFsU2VvQ2FsbGJhY2ssXG59IGZyb20gJy4vc2VydmljZXMvc2VvLnNlcnZpY2UnO1xuIl19
@@ -0,0 +1,112 @@
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.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalMemoryStorage, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
41
+ NaturalMemoryStorage.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalMemoryStorage, providedIn: 'root' });
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalMemoryStorage, decorators: [{
43
+ type: Injectable,
44
+ args: [{
45
+ providedIn: 'root',
46
+ }]
47
+ }] });
48
+ export function sessionStorageFactory() {
49
+ try {
50
+ // eslint-disable-next-line no-restricted-globals
51
+ if (typeof sessionStorage !== 'undefined') {
52
+ // eslint-disable-next-line no-restricted-globals
53
+ return sessionStorage;
54
+ }
55
+ }
56
+ catch (e) {
57
+ // nothing do to
58
+ }
59
+ return new NaturalMemoryStorage();
60
+ }
61
+ /**
62
+ * Standard `sessionStorage` provider that is compatible with SSR.
63
+ *
64
+ * In SSR environment, or when `sessionStorage` is not available, will return a `NaturalMemoryStorage`
65
+ */
66
+ export const sessionStorageProvider = {
67
+ // Here we must use a factory that return directly the value, otherwise it will
68
+ // crash when running on server because the value does not exist (but the factory will
69
+ // never actually be called on server, so the server will not see the missing value)
70
+ provide: SESSION_STORAGE,
71
+ useFactory: sessionStorageFactory,
72
+ };
73
+ /**
74
+ * Provide in-memory session storage to be used only in tests or SSR
75
+ */
76
+ export const memorySessionStorageProvider = {
77
+ provide: SESSION_STORAGE,
78
+ useClass: NaturalMemoryStorage,
79
+ };
80
+ export function localStorageFactory() {
81
+ try {
82
+ // eslint-disable-next-line no-restricted-globals
83
+ if (typeof localStorage !== 'undefined') {
84
+ // eslint-disable-next-line no-restricted-globals
85
+ return localStorage;
86
+ }
87
+ }
88
+ catch (e) {
89
+ // Do nothing
90
+ }
91
+ return new NaturalMemoryStorage();
92
+ }
93
+ /**
94
+ * Standard `localStorage` provider that is compatible with SSR.
95
+ *
96
+ * In SSR environment, or when `localStorage` is not available, will return a `NaturalMemoryStorage`
97
+ */
98
+ export const localStorageProvider = {
99
+ // Here we must use a factory that return directly the value, otherwise it will
100
+ // crash when running on server because the value does not exist (but the factory will
101
+ // never actually be called on server, so the server will not see the missing value)
102
+ provide: LOCAL_STORAGE,
103
+ useFactory: localStorageFactory,
104
+ };
105
+ /**
106
+ * Provide in-memory local storage to be used only in tests or SSR
107
+ */
108
+ export const memoryLocalStorageProvider = {
109
+ provide: LOCAL_STORAGE,
110
+ useClass: NaturalMemoryStorage,
111
+ };
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LXN0b3JhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvbW9kdWxlcy9jb21tb24vc2VydmljZXMvbWVtb3J5LXN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBRSxjQUFjLEVBQVcsTUFBTSxlQUFlLENBQUM7O0FBRW5FLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxJQUFJLGNBQWMsQ0FDN0MsdUVBQXVFLENBQzFFLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxjQUFjLENBQzNDLHFFQUFxRSxDQUN4RSxDQUFDO0FBT0Y7Ozs7R0FJRztBQUlILE1BQU0sT0FBTyxvQkFBb0I7SUFIakM7UUFJcUIsU0FBSSxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO0tBaUNyRDtJQS9CRyxJQUFXLE1BQU07UUFDYixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQzFCLENBQUM7SUFFTSxLQUFLO1FBQ1IsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRU0sT0FBTyxDQUFDLEdBQVc7UUFDdEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakMsT0FBTyxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUM5QyxDQUFDO0lBRU0sR0FBRyxDQUFDLEtBQWE7UUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2hDLElBQUksQ0FBQyxFQUFFLEtBQUssS0FBSyxFQUFFO2dCQUNmLE9BQU8sR0FBRyxDQUFDO2FBQ2Q7U0FDSjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxVQUFVLENBQUMsR0FBVztRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRU0sT0FBTyxDQUFDLEdBQVcsRUFBRSxLQUFhO1FBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDOztpSEFqQ1Esb0JBQW9CO3FIQUFwQixvQkFBb0IsY0FGakIsTUFBTTsyRkFFVCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOztBQXFDRCxNQUFNLFVBQVUscUJBQXFCO0lBQ2pDLElBQUk7UUFDQSxpREFBaUQ7UUFDakQsSUFBSSxPQUFPLGNBQWMsS0FBSyxXQUFXLEVBQUU7WUFDdkMsaURBQWlEO1lBQ2pELE9BQU8sY0FBYyxDQUFDO1NBQ3pCO0tBQ0o7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNSLGdCQUFnQjtLQUNuQjtJQUVELE9BQU8sSUFBSSxvQkFBb0IsRUFBRSxDQUFDO0FBQ3RDLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQWE7SUFDNUMsK0VBQStFO0lBQy9FLHNGQUFzRjtJQUN0RixvRkFBb0Y7SUFDcEYsT0FBTyxFQUFFLGVBQWU7SUFDeEIsVUFBVSxFQUFFLHFCQUFxQjtDQUNwQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBYTtJQUNsRCxPQUFPLEVBQUUsZUFBZTtJQUN4QixRQUFRLEVBQUUsb0JBQW9CO0NBQ2pDLENBQUM7QUFFRixNQUFNLFVBQVUsbUJBQW1CO0lBQy9CLElBQUk7UUFDQSxpREFBaUQ7UUFDakQsSUFBSSxPQUFPLFlBQVksS0FBSyxXQUFXLEVBQUU7WUFDckMsaURBQWlEO1lBQ2pELE9BQU8sWUFBWSxDQUFDO1NBQ3ZCO0tBQ0o7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNSLGFBQWE7S0FDaEI7SUFFRCxPQUFPLElBQUksb0JBQW9CLEVBQUUsQ0FBQztBQUN0QyxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFhO0lBQzFDLCtFQUErRTtJQUMvRSxzRkFBc0Y7SUFDdEYsb0ZBQW9GO0lBQ3BGLE9BQU8sRUFBRSxhQUFhO0lBQ3RCLFVBQVUsRUFBRSxtQkFBbUI7Q0FDbEMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQWE7SUFDaEQsT0FBTyxFQUFFLGFBQWE7SUFDdEIsUUFBUSxFQUFFLG9CQUFvQjtDQUNqQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgUHJvdmlkZXJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgU0VTU0lPTl9TVE9SQUdFID0gbmV3IEluamVjdGlvblRva2VuPE5hdHVyYWxTdG9yYWdlPihcbiAgICAnU2Vzc2lvbiBzdG9yYWdlIHRoYXQgY2FuIGJlIHNoaW1lZCB3aGVuIHJ1bm5pbmcgb24gc2VydmVyIG9yIGluIHRlc3RzJyxcbik7XG5cbmV4cG9ydCBjb25zdCBMT0NBTF9TVE9SQUdFID0gbmV3IEluamVjdGlvblRva2VuPE5hdHVyYWxTdG9yYWdlPihcbiAgICAnTG9jYWwgc3RvcmFnZSB0aGF0IGNhbiBiZSBzaGltZWQgd2hlbiBydW5uaW5nIG9uIHNlcnZlciBvciBpbiB0ZXN0cycsXG4pO1xuXG4vKipcbiAqIE5vcm1hbCBgU3RvcmFnZWAgdHlwZSwgYnV0IHdpdGhvdXQgYXJyYXkgYWNjZXNzXG4gKi9cbmV4cG9ydCB0eXBlIE5hdHVyYWxTdG9yYWdlID0gUGljazxTdG9yYWdlLCAnbGVuZ3RoJyB8ICdjbGVhcicgfCAnZ2V0SXRlbScgfCAna2V5JyB8ICdyZW1vdmVJdGVtJyB8ICdzZXRJdGVtJz47XG5cbi8qKlxuICogTWVtb3J5IHN0b3JhZ2UgdG8ga2VlcCBzdG9yZSB2b2xhdGlsZSB0aGluZ3MgaW4gbWVtb3J5XG4gKlxuICogU2hvdWxkIGJlIHVzZWQgdG8gc2hpbSBzZXNzaW9uU3RvcmFnZSB3aGVuIHJ1bm5pbmcgb24gc2VydmVyIG9yIGluIG91ciB0ZXN0c1xuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBOYXR1cmFsTWVtb3J5U3RvcmFnZSBpbXBsZW1lbnRzIE5hdHVyYWxTdG9yYWdlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRhdGEgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuXG4gICAgcHVibGljIGdldCBsZW5ndGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5zaXplO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kYXRhLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEl0ZW0oa2V5OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmRhdGEuZ2V0KGtleSk7XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBrZXkoaW5kZXg6IG51bWJlcik6IHN0cmluZyB8IG51bGwge1xuICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIHRoaXMuZGF0YS5rZXlzKCkpIHtcbiAgICAgICAgICAgIGlmIChpKysgPT09IGluZGV4KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGtleTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVJdGVtKGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGF0YS5kZWxldGUoa2V5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0SXRlbShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmRhdGEuc2V0KGtleSwgdmFsdWUpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlc3Npb25TdG9yYWdlRmFjdG9yeSgpOiBOYXR1cmFsU3RvcmFnZSB7XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtZ2xvYmFsc1xuICAgICAgICBpZiAodHlwZW9mIHNlc3Npb25TdG9yYWdlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtZ2xvYmFsc1xuICAgICAgICAgICAgcmV0dXJuIHNlc3Npb25TdG9yYWdlO1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBub3RoaW5nIGRvIHRvXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBOYXR1cmFsTWVtb3J5U3RvcmFnZSgpO1xufVxuXG4vKipcbiAqIFN0YW5kYXJkIGBzZXNzaW9uU3RvcmFnZWAgcHJvdmlkZXIgdGhhdCBpcyBjb21wYXRpYmxlIHdpdGggU1NSLlxuICpcbiAqIEluIFNTUiBlbnZpcm9ubWVudCwgb3Igd2hlbiBgc2Vzc2lvblN0b3JhZ2VgIGlzIG5vdCBhdmFpbGFibGUsIHdpbGwgcmV0dXJuIGEgYE5hdHVyYWxNZW1vcnlTdG9yYWdlYFxuICovXG5leHBvcnQgY29uc3Qgc2Vzc2lvblN0b3JhZ2VQcm92aWRlcjogUHJvdmlkZXIgPSB7XG4gICAgLy8gSGVyZSB3ZSBtdXN0IHVzZSBhIGZhY3RvcnkgdGhhdCByZXR1cm4gZGlyZWN0bHkgdGhlIHZhbHVlLCBvdGhlcndpc2UgaXQgd2lsbFxuICAgIC8vIGNyYXNoIHdoZW4gcnVubmluZyBvbiBzZXJ2ZXIgYmVjYXVzZSB0aGUgdmFsdWUgZG9lcyBub3QgZXhpc3QgKGJ1dCB0aGUgZmFjdG9yeSB3aWxsXG4gICAgLy8gbmV2ZXIgYWN0dWFsbHkgYmUgY2FsbGVkIG9uIHNlcnZlciwgc28gdGhlIHNlcnZlciB3aWxsIG5vdCBzZWUgdGhlIG1pc3NpbmcgdmFsdWUpXG4gICAgcHJvdmlkZTogU0VTU0lPTl9TVE9SQUdFLFxuICAgIHVzZUZhY3Rvcnk6IHNlc3Npb25TdG9yYWdlRmFjdG9yeSxcbn07XG5cbi8qKlxuICogUHJvdmlkZSBpbi1tZW1vcnkgc2Vzc2lvbiBzdG9yYWdlIHRvIGJlIHVzZWQgb25seSBpbiB0ZXN0cyBvciBTU1JcbiAqL1xuZXhwb3J0IGNvbnN0IG1lbW9yeVNlc3Npb25TdG9yYWdlUHJvdmlkZXI6IFByb3ZpZGVyID0ge1xuICAgIHByb3ZpZGU6IFNFU1NJT05fU1RPUkFHRSxcbiAgICB1c2VDbGFzczogTmF0dXJhbE1lbW9yeVN0b3JhZ2UsXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gbG9jYWxTdG9yYWdlRmFjdG9yeSgpOiBOYXR1cmFsU3RvcmFnZSB7XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtZ2xvYmFsc1xuICAgICAgICBpZiAodHlwZW9mIGxvY2FsU3RvcmFnZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWdsb2JhbHNcbiAgICAgICAgICAgIHJldHVybiBsb2NhbFN0b3JhZ2U7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIERvIG5vdGhpbmdcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IE5hdHVyYWxNZW1vcnlTdG9yYWdlKCk7XG59XG5cbi8qKlxuICogU3RhbmRhcmQgYGxvY2FsU3RvcmFnZWAgcHJvdmlkZXIgdGhhdCBpcyBjb21wYXRpYmxlIHdpdGggU1NSLlxuICpcbiAqIEluIFNTUiBlbnZpcm9ubWVudCwgb3Igd2hlbiBgbG9jYWxTdG9yYWdlYCBpcyBub3QgYXZhaWxhYmxlLCB3aWxsIHJldHVybiBhIGBOYXR1cmFsTWVtb3J5U3RvcmFnZWBcbiAqL1xuZXhwb3J0IGNvbnN0IGxvY2FsU3RvcmFnZVByb3ZpZGVyOiBQcm92aWRlciA9IHtcbiAgICAvLyBIZXJlIHdlIG11c3QgdXNlIGEgZmFjdG9yeSB0aGF0IHJldHVybiBkaXJlY3RseSB0aGUgdmFsdWUsIG90aGVyd2lzZSBpdCB3aWxsXG4gICAgLy8gY3Jhc2ggd2hlbiBydW5uaW5nIG9uIHNlcnZlciBiZWNhdXNlIHRoZSB2YWx1ZSBkb2VzIG5vdCBleGlzdCAoYnV0IHRoZSBmYWN0b3J5IHdpbGxcbiAgICAvLyBuZXZlciBhY3R1YWxseSBiZSBjYWxsZWQgb24gc2VydmVyLCBzbyB0aGUgc2VydmVyIHdpbGwgbm90IHNlZSB0aGUgbWlzc2luZyB2YWx1ZSlcbiAgICBwcm92aWRlOiBMT0NBTF9TVE9SQUdFLFxuICAgIHVzZUZhY3Rvcnk6IGxvY2FsU3RvcmFnZUZhY3RvcnksXG59O1xuXG4vKipcbiAqIFByb3ZpZGUgaW4tbWVtb3J5IGxvY2FsIHN0b3JhZ2UgdG8gYmUgdXNlZCBvbmx5IGluIHRlc3RzIG9yIFNTUlxuICovXG5leHBvcnQgY29uc3QgbWVtb3J5TG9jYWxTdG9yYWdlUHJvdmlkZXI6IFByb3ZpZGVyID0ge1xuICAgIHByb3ZpZGU6IExPQ0FMX1NUT1JBR0UsXG4gICAgdXNlQ2xhc3M6IE5hdHVyYWxNZW1vcnlTdG9yYWdlLFxufTtcbiJdfQ==