@fundamental-ngx/core 0.40.0-rc.12 → 0.40.0-rc.13

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 (377) hide show
  1. package/card/constants.d.ts +0 -1
  2. package/content-density/classes/content-density-observer.settings.d.ts +4 -0
  3. package/content-density/content-density.module.d.ts +3 -3
  4. package/content-density/content-density.types.d.ts +1 -1
  5. package/content-density/directives/content-density.directive.d.ts +1 -1
  6. package/content-density/helpers/get-changes-source.provider.d.ts +1 -0
  7. package/content-density/services/content-density-observer.service.d.ts +33 -43
  8. package/content-density/tokens/content-density-directive.d.ts +2 -2
  9. package/esm2020/action-bar/action-bar.component.mjs +2 -2
  10. package/esm2020/action-sheet/action-sheet-body/action-sheet-body.component.mjs +3 -4
  11. package/esm2020/action-sheet/action-sheet.component.mjs +2 -2
  12. package/esm2020/alert/alert.component.mjs +2 -2
  13. package/esm2020/avatar/avatar.component.mjs +2 -2
  14. package/esm2020/avatar-group/avatar-group.component.mjs +2 -2
  15. package/esm2020/bar/bar.component.mjs +3 -9
  16. package/esm2020/breadcrumb/breadcrumb.component.mjs +2 -2
  17. package/esm2020/busy-indicator/busy-indicator.component.mjs +2 -2
  18. package/esm2020/button/button.component.mjs +6 -14
  19. package/esm2020/calendar/calendar.component.mjs +6 -14
  20. package/esm2020/card/card.component.mjs +4 -16
  21. package/esm2020/card/constants.mjs +1 -2
  22. package/esm2020/carousel/carousel.component.mjs +2 -2
  23. package/esm2020/checkbox/checkbox/checkbox.component.mjs +8 -16
  24. package/esm2020/combobox/combobox.component.mjs +3 -3
  25. package/esm2020/content-density/classes/content-density-observer.settings.mjs +1 -1
  26. package/esm2020/content-density/content-density.module.mjs +4 -5
  27. package/esm2020/content-density/content-density.types.mjs +1 -1
  28. package/esm2020/content-density/directives/content-density.directive.mjs +4 -3
  29. package/esm2020/content-density/helpers/get-changes-source.provider.mjs +6 -2
  30. package/esm2020/content-density/services/content-density-observer.service.mjs +121 -97
  31. package/esm2020/content-density/tokens/content-density-directive.mjs +1 -1
  32. package/esm2020/content-density/variables/default-content-density-consumer-config.mjs +9 -3
  33. package/esm2020/dialog/dialog-close-button/dialog-close-button.component.mjs +3 -3
  34. package/esm2020/dialog/dialog.component.mjs +15 -4
  35. package/esm2020/dynamic-page/dynamic-page.component.mjs +2 -2
  36. package/esm2020/dynamic-side-content/dynamic-side-content.component.mjs +2 -2
  37. package/esm2020/facets/facet/facet.component.mjs +2 -2
  38. package/esm2020/feed-input/directives/feed-input-button.directive.mjs +3 -4
  39. package/esm2020/feed-input/feed-input.component.mjs +2 -2
  40. package/esm2020/feed-list-item/components/list/feed-list.component.mjs +2 -2
  41. package/esm2020/file-uploader/file-uploader.component.mjs +3 -4
  42. package/esm2020/fixed-card-layout/fixed-card-layout.component.mjs +2 -2
  43. package/esm2020/flexible-column-layout/flexible-column-layout.component.mjs +2 -2
  44. package/esm2020/form/fieldset/fieldset.component.mjs +2 -2
  45. package/esm2020/form/form-control/form-control.component.mjs +2 -2
  46. package/esm2020/form/form-control/input-form-control.directive.mjs +4 -16
  47. package/esm2020/form/form-control/textarea-form-control.directive.mjs +4 -16
  48. package/esm2020/form/form-group/form-group.component.mjs +2 -2
  49. package/esm2020/form/form-header/form-header.component.mjs +2 -2
  50. package/esm2020/form/form-item/form-item.component.mjs +2 -2
  51. package/esm2020/form/form-label/form-label.component.mjs +2 -2
  52. package/esm2020/form/form-message/form-message.component.mjs +2 -2
  53. package/esm2020/grid-list/components/grid-list/grid-list.component.mjs +2 -2
  54. package/esm2020/grid-list/components/grid-list-item/grid-list-item.component.mjs +3 -3
  55. package/esm2020/icon/icon.component.mjs +2 -2
  56. package/esm2020/illustrated-message/illustrated-message.component.mjs +2 -2
  57. package/esm2020/info-label/info-label.component.mjs +2 -2
  58. package/esm2020/input-group/input-group-directives.mjs +6 -22
  59. package/esm2020/input-group/input-group.component.mjs +17 -11
  60. package/esm2020/layout-grid/layout-grid.component.mjs +2 -2
  61. package/esm2020/layout-panel/layout-panel.component.mjs +2 -2
  62. package/esm2020/link/link.component.mjs +2 -2
  63. package/esm2020/list/list-navigation-item/list-navigation-item.component.mjs +2 -2
  64. package/esm2020/list/list.component.mjs +6 -10
  65. package/esm2020/menu/menu.component.mjs +3 -4
  66. package/esm2020/message-box/message-box.component.mjs +2 -2
  67. package/esm2020/message-page/message-page.component.mjs +2 -2
  68. package/esm2020/message-strip/message-strip.component.mjs +2 -2
  69. package/esm2020/message-toast/message-toast.component.mjs +2 -2
  70. package/esm2020/micro-process-flow/components/micro-process-flow/micro-process-flow.component.mjs +6 -10
  71. package/esm2020/multi-combobox/multi-combobox.component.mjs +3 -3
  72. package/esm2020/multi-input/multi-input.component.mjs +3 -3
  73. package/esm2020/nested-list/nested-list/nested-list.directive.mjs +4 -8
  74. package/esm2020/notification/notification/notification.component.mjs +2 -2
  75. package/esm2020/object-identifier/object-identifier.component.mjs +2 -2
  76. package/esm2020/object-marker/object-marker.component.mjs +2 -2
  77. package/esm2020/object-number/object-number.component.mjs +2 -2
  78. package/esm2020/object-status/object-status.component.mjs +2 -2
  79. package/esm2020/pagination/pagination.component.mjs +3 -3
  80. package/esm2020/panel/panel.component.mjs +3 -3
  81. package/esm2020/popover/popover-body/popover-body.component.mjs +3 -3
  82. package/esm2020/popover/popover.component.mjs +6 -3
  83. package/esm2020/product-switch/product-switch-body/product-switch-body.component.mjs +2 -2
  84. package/esm2020/progress-indicator/progress-indicator.component.mjs +2 -2
  85. package/esm2020/quick-view/quick-view/quick-view.component.mjs +2 -2
  86. package/esm2020/radio/radio-button/radio-button.component.mjs +3 -3
  87. package/esm2020/rating-indicator/components/rating-indicator.component.mjs +2 -2
  88. package/esm2020/resizable-card-layout/resizable-card-layout/resizable-card-item/resizable-card-item.component.mjs +2 -2
  89. package/esm2020/resizable-card-layout/resizable-card-layout/resizable-card-layout.component.mjs +2 -2
  90. package/esm2020/segmented-button/segmented-button.component.mjs +2 -2
  91. package/esm2020/select/select.component.mjs +9 -7
  92. package/esm2020/shellbar/shellbar.component.mjs +16 -3
  93. package/esm2020/side-navigation/side-navigation.component.mjs +2 -2
  94. package/esm2020/skeleton/components/skeleton.component.mjs +2 -2
  95. package/esm2020/slider/slider.component.mjs +3 -3
  96. package/esm2020/split-button/split-button.component.mjs +5 -11
  97. package/esm2020/splitter/splitter.component.mjs +2 -2
  98. package/esm2020/status-indicator/status-indicator.component.mjs +2 -2
  99. package/esm2020/step-input/step-input.component.mjs +3 -3
  100. package/esm2020/switch/switch.component.mjs +3 -3
  101. package/esm2020/table/table-wrapper.component.mjs +4 -6
  102. package/esm2020/table/table.component.mjs +3 -7
  103. package/esm2020/tabs/tab-list.component.mjs +3 -3
  104. package/esm2020/tabs/tab-nav/tab-nav.component.mjs +4 -4
  105. package/esm2020/text/text.component.mjs +2 -2
  106. package/esm2020/tile/tile.component.mjs +2 -2
  107. package/esm2020/time/time.component.mjs +3 -3
  108. package/esm2020/title/title.component.mjs +2 -2
  109. package/esm2020/token/token.component.mjs +3 -3
  110. package/esm2020/token/tokenizer.component.mjs +16 -8
  111. package/esm2020/toolbar/toolbar.component.mjs +2 -2
  112. package/esm2020/tree/tree.component.mjs +2 -2
  113. package/esm2020/upload-collection/upload-collection.component.mjs +2 -2
  114. package/esm2020/vertical-navigation/vertical-navigation-main-navigation.component.mjs +2 -2
  115. package/esm2020/vertical-navigation/vertical-navigation.component.mjs +2 -2
  116. package/esm2020/wizard/wizard.component.mjs +2 -2
  117. package/fesm2015/fundamental-ngx-core-action-bar.mjs +2 -2
  118. package/fesm2015/fundamental-ngx-core-action-sheet.mjs +4 -4
  119. package/fesm2015/fundamental-ngx-core-action-sheet.mjs.map +1 -1
  120. package/fesm2015/fundamental-ngx-core-alert.mjs +2 -2
  121. package/fesm2015/fundamental-ngx-core-avatar-group.mjs +2 -2
  122. package/fesm2015/fundamental-ngx-core-avatar-group.mjs.map +1 -1
  123. package/fesm2015/fundamental-ngx-core-avatar.mjs +2 -2
  124. package/fesm2015/fundamental-ngx-core-avatar.mjs.map +1 -1
  125. package/fesm2015/fundamental-ngx-core-bar.mjs +2 -8
  126. package/fesm2015/fundamental-ngx-core-bar.mjs.map +1 -1
  127. package/fesm2015/fundamental-ngx-core-breadcrumb.mjs +2 -2
  128. package/fesm2015/fundamental-ngx-core-busy-indicator.mjs +2 -2
  129. package/fesm2015/fundamental-ngx-core-button.mjs +5 -13
  130. package/fesm2015/fundamental-ngx-core-button.mjs.map +1 -1
  131. package/fesm2015/fundamental-ngx-core-calendar.mjs +5 -13
  132. package/fesm2015/fundamental-ngx-core-calendar.mjs.map +1 -1
  133. package/fesm2015/fundamental-ngx-core-card.mjs +3 -16
  134. package/fesm2015/fundamental-ngx-core-card.mjs.map +1 -1
  135. package/fesm2015/fundamental-ngx-core-carousel.mjs +2 -2
  136. package/fesm2015/fundamental-ngx-core-checkbox.mjs +7 -15
  137. package/fesm2015/fundamental-ngx-core-checkbox.mjs.map +1 -1
  138. package/fesm2015/fundamental-ngx-core-combobox.mjs +2 -2
  139. package/fesm2015/fundamental-ngx-core-combobox.mjs.map +1 -1
  140. package/fesm2015/fundamental-ngx-core-content-density.mjs +140 -122
  141. package/fesm2015/fundamental-ngx-core-content-density.mjs.map +1 -1
  142. package/fesm2015/fundamental-ngx-core-dialog.mjs +16 -5
  143. package/fesm2015/fundamental-ngx-core-dialog.mjs.map +1 -1
  144. package/fesm2015/fundamental-ngx-core-dynamic-page.mjs +2 -2
  145. package/fesm2015/fundamental-ngx-core-dynamic-side-content.mjs +2 -2
  146. package/fesm2015/fundamental-ngx-core-facets.mjs +2 -2
  147. package/fesm2015/fundamental-ngx-core-feed-input.mjs +4 -5
  148. package/fesm2015/fundamental-ngx-core-feed-input.mjs.map +1 -1
  149. package/fesm2015/fundamental-ngx-core-feed-list-item.mjs +2 -2
  150. package/fesm2015/fundamental-ngx-core-file-uploader.mjs +2 -3
  151. package/fesm2015/fundamental-ngx-core-file-uploader.mjs.map +1 -1
  152. package/fesm2015/fundamental-ngx-core-fixed-card-layout.mjs +2 -2
  153. package/fesm2015/fundamental-ngx-core-flexible-column-layout.mjs +2 -2
  154. package/fesm2015/fundamental-ngx-core-flexible-column-layout.mjs.map +1 -1
  155. package/fesm2015/fundamental-ngx-core-form.mjs +19 -43
  156. package/fesm2015/fundamental-ngx-core-form.mjs.map +1 -1
  157. package/fesm2015/fundamental-ngx-core-grid-list.mjs +4 -4
  158. package/fesm2015/fundamental-ngx-core-grid-list.mjs.map +1 -1
  159. package/fesm2015/fundamental-ngx-core-icon.mjs +2 -2
  160. package/fesm2015/fundamental-ngx-core-icon.mjs.map +1 -1
  161. package/fesm2015/fundamental-ngx-core-illustrated-message.mjs +2 -2
  162. package/fesm2015/fundamental-ngx-core-illustrated-message.mjs.map +1 -1
  163. package/fesm2015/fundamental-ngx-core-info-label.mjs +2 -2
  164. package/fesm2015/fundamental-ngx-core-input-group.mjs +19 -31
  165. package/fesm2015/fundamental-ngx-core-input-group.mjs.map +1 -1
  166. package/fesm2015/fundamental-ngx-core-layout-grid.mjs +2 -2
  167. package/fesm2015/fundamental-ngx-core-layout-panel.mjs +2 -2
  168. package/fesm2015/fundamental-ngx-core-link.mjs +2 -2
  169. package/fesm2015/fundamental-ngx-core-list.mjs +7 -11
  170. package/fesm2015/fundamental-ngx-core-list.mjs.map +1 -1
  171. package/fesm2015/fundamental-ngx-core-menu.mjs +2 -2
  172. package/fesm2015/fundamental-ngx-core-menu.mjs.map +1 -1
  173. package/fesm2015/fundamental-ngx-core-message-box.mjs +2 -2
  174. package/fesm2015/fundamental-ngx-core-message-page.mjs +2 -2
  175. package/fesm2015/fundamental-ngx-core-message-strip.mjs +2 -2
  176. package/fesm2015/fundamental-ngx-core-message-toast.mjs +2 -2
  177. package/fesm2015/fundamental-ngx-core-micro-process-flow.mjs +5 -9
  178. package/fesm2015/fundamental-ngx-core-micro-process-flow.mjs.map +1 -1
  179. package/fesm2015/fundamental-ngx-core-multi-combobox.mjs +2 -2
  180. package/fesm2015/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
  181. package/fesm2015/fundamental-ngx-core-multi-input.mjs +2 -2
  182. package/fesm2015/fundamental-ngx-core-multi-input.mjs.map +1 -1
  183. package/fesm2015/fundamental-ngx-core-nested-list.mjs +3 -7
  184. package/fesm2015/fundamental-ngx-core-nested-list.mjs.map +1 -1
  185. package/fesm2015/fundamental-ngx-core-notification.mjs +2 -2
  186. package/fesm2015/fundamental-ngx-core-object-identifier.mjs +2 -2
  187. package/fesm2015/fundamental-ngx-core-object-marker.mjs +2 -2
  188. package/fesm2015/fundamental-ngx-core-object-number.mjs +2 -2
  189. package/fesm2015/fundamental-ngx-core-object-status.mjs +2 -2
  190. package/fesm2015/fundamental-ngx-core-pagination.mjs +2 -2
  191. package/fesm2015/fundamental-ngx-core-pagination.mjs.map +1 -1
  192. package/fesm2015/fundamental-ngx-core-panel.mjs +2 -2
  193. package/fesm2015/fundamental-ngx-core-panel.mjs.map +1 -1
  194. package/fesm2015/fundamental-ngx-core-popover.mjs +6 -4
  195. package/fesm2015/fundamental-ngx-core-popover.mjs.map +1 -1
  196. package/fesm2015/fundamental-ngx-core-product-switch.mjs +2 -2
  197. package/fesm2015/fundamental-ngx-core-product-switch.mjs.map +1 -1
  198. package/fesm2015/fundamental-ngx-core-progress-indicator.mjs +2 -2
  199. package/fesm2015/fundamental-ngx-core-quick-view.mjs +2 -2
  200. package/fesm2015/fundamental-ngx-core-quick-view.mjs.map +1 -1
  201. package/fesm2015/fundamental-ngx-core-radio.mjs +2 -2
  202. package/fesm2015/fundamental-ngx-core-radio.mjs.map +1 -1
  203. package/fesm2015/fundamental-ngx-core-rating-indicator.mjs +2 -2
  204. package/fesm2015/fundamental-ngx-core-resizable-card-layout.mjs +4 -4
  205. package/fesm2015/fundamental-ngx-core-segmented-button.mjs +2 -2
  206. package/fesm2015/fundamental-ngx-core-select.mjs +18 -16
  207. package/fesm2015/fundamental-ngx-core-select.mjs.map +1 -1
  208. package/fesm2015/fundamental-ngx-core-shellbar.mjs +16 -4
  209. package/fesm2015/fundamental-ngx-core-shellbar.mjs.map +1 -1
  210. package/fesm2015/fundamental-ngx-core-side-navigation.mjs +2 -2
  211. package/fesm2015/fundamental-ngx-core-side-navigation.mjs.map +1 -1
  212. package/fesm2015/fundamental-ngx-core-skeleton.mjs +2 -2
  213. package/fesm2015/fundamental-ngx-core-slider.mjs +2 -2
  214. package/fesm2015/fundamental-ngx-core-slider.mjs.map +1 -1
  215. package/fesm2015/fundamental-ngx-core-split-button.mjs +5 -11
  216. package/fesm2015/fundamental-ngx-core-split-button.mjs.map +1 -1
  217. package/fesm2015/fundamental-ngx-core-splitter.mjs +2 -2
  218. package/fesm2015/fundamental-ngx-core-status-indicator.mjs +2 -2
  219. package/fesm2015/fundamental-ngx-core-step-input.mjs +2 -2
  220. package/fesm2015/fundamental-ngx-core-step-input.mjs.map +1 -1
  221. package/fesm2015/fundamental-ngx-core-switch.mjs +2 -2
  222. package/fesm2015/fundamental-ngx-core-switch.mjs.map +1 -1
  223. package/fesm2015/fundamental-ngx-core-table.mjs +5 -10
  224. package/fesm2015/fundamental-ngx-core-table.mjs.map +1 -1
  225. package/fesm2015/fundamental-ngx-core-tabs.mjs +5 -5
  226. package/fesm2015/fundamental-ngx-core-tabs.mjs.map +1 -1
  227. package/fesm2015/fundamental-ngx-core-text.mjs +2 -2
  228. package/fesm2015/fundamental-ngx-core-tile.mjs +2 -2
  229. package/fesm2015/fundamental-ngx-core-tile.mjs.map +1 -1
  230. package/fesm2015/fundamental-ngx-core-time.mjs +2 -2
  231. package/fesm2015/fundamental-ngx-core-time.mjs.map +1 -1
  232. package/fesm2015/fundamental-ngx-core-title.mjs +2 -2
  233. package/fesm2015/fundamental-ngx-core-token.mjs +17 -9
  234. package/fesm2015/fundamental-ngx-core-token.mjs.map +1 -1
  235. package/fesm2015/fundamental-ngx-core-toolbar.mjs +2 -2
  236. package/fesm2015/fundamental-ngx-core-tree.mjs +2 -2
  237. package/fesm2015/fundamental-ngx-core-tree.mjs.map +1 -1
  238. package/fesm2015/fundamental-ngx-core-upload-collection.mjs +2 -2
  239. package/fesm2015/fundamental-ngx-core-upload-collection.mjs.map +1 -1
  240. package/fesm2015/fundamental-ngx-core-vertical-navigation.mjs +4 -4
  241. package/fesm2015/fundamental-ngx-core-wizard.mjs +2 -2
  242. package/fesm2020/fundamental-ngx-core-action-bar.mjs +2 -2
  243. package/fesm2020/fundamental-ngx-core-action-sheet.mjs +4 -4
  244. package/fesm2020/fundamental-ngx-core-action-sheet.mjs.map +1 -1
  245. package/fesm2020/fundamental-ngx-core-alert.mjs +2 -2
  246. package/fesm2020/fundamental-ngx-core-avatar-group.mjs +2 -2
  247. package/fesm2020/fundamental-ngx-core-avatar-group.mjs.map +1 -1
  248. package/fesm2020/fundamental-ngx-core-avatar.mjs +2 -2
  249. package/fesm2020/fundamental-ngx-core-avatar.mjs.map +1 -1
  250. package/fesm2020/fundamental-ngx-core-bar.mjs +2 -8
  251. package/fesm2020/fundamental-ngx-core-bar.mjs.map +1 -1
  252. package/fesm2020/fundamental-ngx-core-breadcrumb.mjs +2 -2
  253. package/fesm2020/fundamental-ngx-core-busy-indicator.mjs +2 -2
  254. package/fesm2020/fundamental-ngx-core-button.mjs +5 -13
  255. package/fesm2020/fundamental-ngx-core-button.mjs.map +1 -1
  256. package/fesm2020/fundamental-ngx-core-calendar.mjs +5 -13
  257. package/fesm2020/fundamental-ngx-core-calendar.mjs.map +1 -1
  258. package/fesm2020/fundamental-ngx-core-card.mjs +3 -16
  259. package/fesm2020/fundamental-ngx-core-card.mjs.map +1 -1
  260. package/fesm2020/fundamental-ngx-core-carousel.mjs +2 -2
  261. package/fesm2020/fundamental-ngx-core-checkbox.mjs +7 -15
  262. package/fesm2020/fundamental-ngx-core-checkbox.mjs.map +1 -1
  263. package/fesm2020/fundamental-ngx-core-combobox.mjs +2 -2
  264. package/fesm2020/fundamental-ngx-core-combobox.mjs.map +1 -1
  265. package/fesm2020/fundamental-ngx-core-content-density.mjs +139 -128
  266. package/fesm2020/fundamental-ngx-core-content-density.mjs.map +1 -1
  267. package/fesm2020/fundamental-ngx-core-dialog.mjs +16 -5
  268. package/fesm2020/fundamental-ngx-core-dialog.mjs.map +1 -1
  269. package/fesm2020/fundamental-ngx-core-dynamic-page.mjs +2 -2
  270. package/fesm2020/fundamental-ngx-core-dynamic-side-content.mjs +2 -2
  271. package/fesm2020/fundamental-ngx-core-facets.mjs +2 -2
  272. package/fesm2020/fundamental-ngx-core-feed-input.mjs +4 -5
  273. package/fesm2020/fundamental-ngx-core-feed-input.mjs.map +1 -1
  274. package/fesm2020/fundamental-ngx-core-feed-list-item.mjs +2 -2
  275. package/fesm2020/fundamental-ngx-core-file-uploader.mjs +2 -3
  276. package/fesm2020/fundamental-ngx-core-file-uploader.mjs.map +1 -1
  277. package/fesm2020/fundamental-ngx-core-fixed-card-layout.mjs +2 -2
  278. package/fesm2020/fundamental-ngx-core-flexible-column-layout.mjs +2 -2
  279. package/fesm2020/fundamental-ngx-core-flexible-column-layout.mjs.map +1 -1
  280. package/fesm2020/fundamental-ngx-core-form.mjs +19 -43
  281. package/fesm2020/fundamental-ngx-core-form.mjs.map +1 -1
  282. package/fesm2020/fundamental-ngx-core-grid-list.mjs +4 -4
  283. package/fesm2020/fundamental-ngx-core-grid-list.mjs.map +1 -1
  284. package/fesm2020/fundamental-ngx-core-icon.mjs +2 -2
  285. package/fesm2020/fundamental-ngx-core-icon.mjs.map +1 -1
  286. package/fesm2020/fundamental-ngx-core-illustrated-message.mjs +2 -2
  287. package/fesm2020/fundamental-ngx-core-illustrated-message.mjs.map +1 -1
  288. package/fesm2020/fundamental-ngx-core-info-label.mjs +2 -2
  289. package/fesm2020/fundamental-ngx-core-input-group.mjs +19 -31
  290. package/fesm2020/fundamental-ngx-core-input-group.mjs.map +1 -1
  291. package/fesm2020/fundamental-ngx-core-layout-grid.mjs +2 -2
  292. package/fesm2020/fundamental-ngx-core-layout-panel.mjs +2 -2
  293. package/fesm2020/fundamental-ngx-core-link.mjs +2 -2
  294. package/fesm2020/fundamental-ngx-core-list.mjs +7 -11
  295. package/fesm2020/fundamental-ngx-core-list.mjs.map +1 -1
  296. package/fesm2020/fundamental-ngx-core-menu.mjs +2 -2
  297. package/fesm2020/fundamental-ngx-core-menu.mjs.map +1 -1
  298. package/fesm2020/fundamental-ngx-core-message-box.mjs +2 -2
  299. package/fesm2020/fundamental-ngx-core-message-page.mjs +2 -2
  300. package/fesm2020/fundamental-ngx-core-message-strip.mjs +2 -2
  301. package/fesm2020/fundamental-ngx-core-message-toast.mjs +2 -2
  302. package/fesm2020/fundamental-ngx-core-micro-process-flow.mjs +5 -9
  303. package/fesm2020/fundamental-ngx-core-micro-process-flow.mjs.map +1 -1
  304. package/fesm2020/fundamental-ngx-core-multi-combobox.mjs +2 -2
  305. package/fesm2020/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
  306. package/fesm2020/fundamental-ngx-core-multi-input.mjs +2 -2
  307. package/fesm2020/fundamental-ngx-core-multi-input.mjs.map +1 -1
  308. package/fesm2020/fundamental-ngx-core-nested-list.mjs +3 -7
  309. package/fesm2020/fundamental-ngx-core-nested-list.mjs.map +1 -1
  310. package/fesm2020/fundamental-ngx-core-notification.mjs +2 -2
  311. package/fesm2020/fundamental-ngx-core-object-identifier.mjs +2 -2
  312. package/fesm2020/fundamental-ngx-core-object-marker.mjs +2 -2
  313. package/fesm2020/fundamental-ngx-core-object-number.mjs +2 -2
  314. package/fesm2020/fundamental-ngx-core-object-status.mjs +2 -2
  315. package/fesm2020/fundamental-ngx-core-pagination.mjs +2 -2
  316. package/fesm2020/fundamental-ngx-core-pagination.mjs.map +1 -1
  317. package/fesm2020/fundamental-ngx-core-panel.mjs +2 -2
  318. package/fesm2020/fundamental-ngx-core-panel.mjs.map +1 -1
  319. package/fesm2020/fundamental-ngx-core-popover.mjs +6 -4
  320. package/fesm2020/fundamental-ngx-core-popover.mjs.map +1 -1
  321. package/fesm2020/fundamental-ngx-core-product-switch.mjs +2 -2
  322. package/fesm2020/fundamental-ngx-core-product-switch.mjs.map +1 -1
  323. package/fesm2020/fundamental-ngx-core-progress-indicator.mjs +2 -2
  324. package/fesm2020/fundamental-ngx-core-quick-view.mjs +2 -2
  325. package/fesm2020/fundamental-ngx-core-quick-view.mjs.map +1 -1
  326. package/fesm2020/fundamental-ngx-core-radio.mjs +2 -2
  327. package/fesm2020/fundamental-ngx-core-radio.mjs.map +1 -1
  328. package/fesm2020/fundamental-ngx-core-rating-indicator.mjs +2 -2
  329. package/fesm2020/fundamental-ngx-core-resizable-card-layout.mjs +4 -4
  330. package/fesm2020/fundamental-ngx-core-segmented-button.mjs +2 -2
  331. package/fesm2020/fundamental-ngx-core-select.mjs +18 -16
  332. package/fesm2020/fundamental-ngx-core-select.mjs.map +1 -1
  333. package/fesm2020/fundamental-ngx-core-shellbar.mjs +16 -4
  334. package/fesm2020/fundamental-ngx-core-shellbar.mjs.map +1 -1
  335. package/fesm2020/fundamental-ngx-core-side-navigation.mjs +2 -2
  336. package/fesm2020/fundamental-ngx-core-side-navigation.mjs.map +1 -1
  337. package/fesm2020/fundamental-ngx-core-skeleton.mjs +2 -2
  338. package/fesm2020/fundamental-ngx-core-slider.mjs +2 -2
  339. package/fesm2020/fundamental-ngx-core-slider.mjs.map +1 -1
  340. package/fesm2020/fundamental-ngx-core-split-button.mjs +5 -11
  341. package/fesm2020/fundamental-ngx-core-split-button.mjs.map +1 -1
  342. package/fesm2020/fundamental-ngx-core-splitter.mjs +2 -2
  343. package/fesm2020/fundamental-ngx-core-status-indicator.mjs +2 -2
  344. package/fesm2020/fundamental-ngx-core-step-input.mjs +2 -2
  345. package/fesm2020/fundamental-ngx-core-step-input.mjs.map +1 -1
  346. package/fesm2020/fundamental-ngx-core-switch.mjs +2 -2
  347. package/fesm2020/fundamental-ngx-core-switch.mjs.map +1 -1
  348. package/fesm2020/fundamental-ngx-core-table.mjs +5 -10
  349. package/fesm2020/fundamental-ngx-core-table.mjs.map +1 -1
  350. package/fesm2020/fundamental-ngx-core-tabs.mjs +5 -5
  351. package/fesm2020/fundamental-ngx-core-tabs.mjs.map +1 -1
  352. package/fesm2020/fundamental-ngx-core-text.mjs +2 -2
  353. package/fesm2020/fundamental-ngx-core-tile.mjs +2 -2
  354. package/fesm2020/fundamental-ngx-core-tile.mjs.map +1 -1
  355. package/fesm2020/fundamental-ngx-core-time.mjs +2 -2
  356. package/fesm2020/fundamental-ngx-core-time.mjs.map +1 -1
  357. package/fesm2020/fundamental-ngx-core-title.mjs +2 -2
  358. package/fesm2020/fundamental-ngx-core-token.mjs +17 -9
  359. package/fesm2020/fundamental-ngx-core-token.mjs.map +1 -1
  360. package/fesm2020/fundamental-ngx-core-toolbar.mjs +2 -2
  361. package/fesm2020/fundamental-ngx-core-tree.mjs +2 -2
  362. package/fesm2020/fundamental-ngx-core-tree.mjs.map +1 -1
  363. package/fesm2020/fundamental-ngx-core-upload-collection.mjs +2 -2
  364. package/fesm2020/fundamental-ngx-core-upload-collection.mjs.map +1 -1
  365. package/fesm2020/fundamental-ngx-core-vertical-navigation.mjs +4 -4
  366. package/fesm2020/fundamental-ngx-core-wizard.mjs +2 -2
  367. package/fundamental-ngx-core-v0.40.0-rc.13.tgz +0 -0
  368. package/input-group/input-group.component.d.ts +4 -2
  369. package/package.json +4 -4
  370. package/schematics/add-dependencies/index.js +6 -6
  371. package/select/select.component.d.ts +3 -1
  372. package/split-button/split-button.component.d.ts +0 -1
  373. package/table/table.component.d.ts +0 -4
  374. package/token/tokenizer.component.d.ts +8 -2
  375. package/content-density/helpers/content-density-change-callback-factory.d.ts +0 -3
  376. package/esm2020/content-density/helpers/content-density-change-callback-factory.mjs +0 -27
  377. package/fundamental-ngx-core-v0.40.0-rc.12.tgz +0 -0
@@ -1,14 +1,12 @@
1
- import { ChangeDetectorRef, ElementRef, Injectable, InjectFlags, Injector } from '@angular/core';
2
- import { BehaviorSubject, distinctUntilChanged, finalize, map, takeUntil, tap } from 'rxjs';
3
- import { GlobalContentDensityService } from '../services/global-content-density.service';
4
- import { getChangesSource$ } from '../helpers/get-changes-source.provider';
5
- import { defaultContentDensityObserverConfigs } from '../variables/default-content-density-consumer-config';
6
- import { contentDensityCallbackFactory } from '../helpers/content-density-change-callback-factory';
7
- import { isCompact, isCondensed, isCozy } from '../helpers/density-type-checkers';
8
- import { CONTENT_DENSITY_DIRECTIVE } from '../tokens/content-density-directive';
1
+ import { ElementRef, inject, Injectable, InjectFlags, Injector, Renderer2 } from '@angular/core';
9
2
  import { DestroyedService } from '@fundamental-ngx/cdk/utils';
3
+ import { BehaviorSubject, distinctUntilChanged, map, takeUntil } from 'rxjs';
10
4
  import { ContentDensityObserverSettings } from '../classes/content-density-observer.settings';
5
+ import { getChangesSource$ } from '../helpers/get-changes-source.provider';
6
+ import { GlobalContentDensityService } from '../services/global-content-density.service';
7
+ import { CONTENT_DENSITY_DIRECTIVE } from '../tokens/content-density-directive';
11
8
  import { ContentDensityMode } from '../types/content-density.mode';
9
+ import { defaultContentDensityObserverConfigs } from '../variables/default-content-density-consumer-config';
12
10
  import * as i0 from "@angular/core";
13
11
  import * as i1 from "../classes/content-density-observer.settings";
14
12
  const isFactoryProvider = (obj) => !!(obj && obj.useFactory);
@@ -51,127 +49,153 @@ const initialContentDensity = (injector, configuration) => {
51
49
  });
52
50
  };
53
51
  export class ContentDensityObserver extends BehaviorSubject {
52
+ /** @hidden */
53
+ get isCompact() {
54
+ return this._isCompact$.value;
55
+ }
56
+ /** @hidden */
57
+ get isCozy() {
58
+ return this._isCozy$.value;
59
+ }
60
+ /** @hidden */
61
+ get isCondensed() {
62
+ return this._isCondensed$.value;
63
+ }
54
64
  /** @hidden */
55
65
  constructor(_injector, _providedConfig) {
56
66
  super(initialContentDensity(_injector, _providedConfig));
57
67
  this._injector = _injector;
58
68
  this._providedConfig = _providedConfig;
59
69
  /** @hidden */
60
- this._callbacks = new Map();
70
+ this._isCompact$ = new BehaviorSubject(false);
61
71
  /** @hidden */
62
- this.alternativeTo = {
63
- [ContentDensityMode.COMPACT]: () => this.isSupported(ContentDensityMode.CONDENSED) ? ContentDensityMode.CONDENSED : ContentDensityMode.COZY,
64
- [ContentDensityMode.CONDENSED]: () => this.isSupported(ContentDensityMode.COMPACT) ? ContentDensityMode.COMPACT : ContentDensityMode.COZY,
72
+ this._isCozy$ = new BehaviorSubject(false);
73
+ /** @hidden */
74
+ this._isCondensed$ = new BehaviorSubject(false);
75
+ /** @hidden */
76
+ this.isCompact$ = this._isCompact$.asObservable();
77
+ /** @hidden */
78
+ this.isCozy$ = this._isCozy$.asObservable();
79
+ /** @hidden */
80
+ this.isCondensed$ = this._isCondensed$.asObservable();
81
+ /** @hidden */
82
+ this._globalContentDensityService = inject(GlobalContentDensityService, {
83
+ optional: true
84
+ });
85
+ /** @hidden */
86
+ this._contentDensityDirective = inject(CONTENT_DENSITY_DIRECTIVE, {
87
+ optional: true
88
+ });
89
+ /** @hidden */
90
+ this._parentContentDensityObserver = inject(ContentDensityObserver, {
91
+ optional: true,
92
+ skipSelf: true
93
+ });
94
+ /** @hidden */
95
+ this._renderer = inject(Renderer2);
96
+ /** @hidden */
97
+ this._destroy$ = inject(DestroyedService);
98
+ /** @hidden */
99
+ this._elementRef = inject(ElementRef);
100
+ /** @hidden */
101
+ this._elements = [this._elementRef];
102
+ /** @hidden */
103
+ this._alternativeTo = {
104
+ [ContentDensityMode.COMPACT]: () => this._isSupported(ContentDensityMode.CONDENSED) ? ContentDensityMode.CONDENSED : ContentDensityMode.COZY,
105
+ [ContentDensityMode.CONDENSED]: () => this._isSupported(ContentDensityMode.COMPACT) ? ContentDensityMode.COMPACT : ContentDensityMode.COZY,
65
106
  [ContentDensityMode.COZY]: () => ContentDensityMode.COZY // No alternative here, everyone should support it
66
107
  };
67
- if (_providedConfig?.debug) {
68
- console.log({ initialContentDensity: initialContentDensity(_injector, _providedConfig) });
69
- }
70
- this.configuration = {
108
+ const destroySub = this._destroy$.subscribe({
109
+ complete: () => {
110
+ destroySub.unsubscribe();
111
+ this.complete();
112
+ if (this.config.debug) {
113
+ console.log('ContentDensityObserver: destroyed');
114
+ }
115
+ }
116
+ });
117
+ this.config = {
71
118
  ...defaultContentDensityObserverConfigs,
119
+ ...(this._parentContentDensityObserver?.config ?? {}),
72
120
  ...(_providedConfig || {})
73
121
  };
74
- this.destroy$ = this._injector.get(DestroyedService);
75
- this.changeDetectorRef = this._injector.get(ChangeDetectorRef);
76
- this.contentDensityDirective = this._injector.get(CONTENT_DENSITY_DIRECTIVE, undefined, InjectFlags.Optional);
77
- this.contentDensityService = this._injector.get(GlobalContentDensityService, undefined, InjectFlags.Optional);
78
- const changesSource$ = getChangesSource$({
79
- defaultContentDensity: getDefaultContentDensity(this._injector, this.configuration),
80
- contentDensityDirective: this.contentDensityDirective,
81
- contentDensityService: this.contentDensityService
82
- }).pipe(map((density) => {
83
- if (this.configuration.debug) {
122
+ getChangesSource$({
123
+ defaultContentDensity: this.value,
124
+ contentDensityDirective: this._contentDensityDirective ?? undefined,
125
+ contentDensityService: this._globalContentDensityService ?? undefined,
126
+ parentContentDensityService: this.config.restrictChildContentDensity
127
+ ? this._parentContentDensityObserver?.asObservable() ?? undefined
128
+ : undefined
129
+ })
130
+ .pipe(map((density) => {
131
+ if (this.config.debug) {
84
132
  console.log(`ContentDensityObserver: density changed to ${density}`);
85
133
  }
86
- if (!this.isSupported(density)) {
134
+ if (!this._isSupported(density)) {
87
135
  try {
88
- return this.alternativeTo[density]();
136
+ if (this.config.debug) {
137
+ console.log(`ContentDensityObserver: ${density} is not supported. Failing back to alternative one.`);
138
+ }
139
+ return this._alternativeTo[density]();
89
140
  }
90
141
  catch (e) {
91
142
  throw new Error(`ContentDensityObserver: density ${density} is not supported`);
92
143
  }
93
144
  }
94
145
  return density;
95
- }), distinctUntilChanged(), takeUntil(this.destroy$));
96
- changesSource$
97
- .pipe(tap((density) => this._callCallbacks(density)), finalize(() => this.complete()))
146
+ }), distinctUntilChanged(), takeUntil(this._destroy$))
98
147
  .subscribe((density) => {
99
- if (this.configuration.debug) {
100
- console.log(`ContentDensityObserver: density emmited ${density}`);
101
- }
102
148
  this.next(density);
103
- this.changeDetectorRef.markForCheck();
149
+ this._applyClass();
150
+ this._isCompact$.next(density === ContentDensityMode.COMPACT);
151
+ this._isCozy$.next(density === ContentDensityMode.COZY);
152
+ this._isCondensed$.next(density === ContentDensityMode.CONDENSED);
104
153
  });
105
- this.isCompact$ = changesSource$.pipe(map(isCompact));
106
- this.isCozy$ = changesSource$.pipe(map(isCozy));
107
- this.isCondensed$ = changesSource$.pipe(map(isCondensed));
108
- if (_providedConfig) {
109
- this.consume({
110
- contentDensitySettings: this.configuration,
111
- elementRef: () => this._injector.get(ElementRef)
112
- });
113
- }
114
154
  }
115
- /** Check if the given density is supported */
116
- isSupported(density) {
117
- return this.configuration.supportedContentDensity.includes(density);
155
+ /** @hidden */
156
+ consume(...consumers) {
157
+ this._elements.concat(...consumers.map((c) => c.elementRef()));
118
158
  }
119
159
  /**
120
- * Sync isCompact. Calls ChangeDetectorRef.markForCheck() on update
160
+ * Completes the stream and closes all internal subscriptions.
121
161
  */
122
- get isCompact() {
123
- if (!this._compactSubscription) {
124
- this._compactSubscription = this._listenToChanges(this.isCompact$, (v) => (this._isCompact = v));
125
- }
126
- return this._isCompact;
162
+ complete() {
163
+ super.complete();
164
+ this._isCondensed$.complete();
165
+ this._isCozy$.complete();
166
+ this._isCompact$.complete();
167
+ this._parentContentDensityObserver = null;
168
+ this._contentDensityDirective = null;
169
+ this._globalContentDensityService = null;
170
+ this._elementRef = null;
171
+ this._renderer = null;
172
+ this._elements = [];
127
173
  }
128
- /**
129
- * Sync isCondensed. Calls ChangeDetectorRef.markForCheck() on update
130
- */
131
- get isCondensed() {
132
- if (!this._condensedSubscription) {
133
- this._condensedSubscription = this._listenToChanges(this.isCondensed$, (v) => (this._isCondensed = v));
134
- }
135
- return this._isCondensed;
174
+ /** @hidden */
175
+ removeConsumer(consumer) {
176
+ this._elements.splice(this._elements.indexOf(consumer.elementRef()), 1);
136
177
  }
137
- /**
138
- * Sync isCozy. Calls ChangeDetectorRef.markForCheck() on update
139
- */
140
- get isCozy() {
141
- if (!this._cozySubscription) {
142
- this._cozySubscription = this._listenToChanges(this.isCozy$, (v) => (this._isCozy = v));
178
+ /** @hidden */
179
+ _applyClass() {
180
+ if (!this.config?.modifiers) {
181
+ return;
143
182
  }
144
- return this._isCozy;
145
- }
146
- /**
147
- * Pass consumers callback function, or configuration object to be called on density change
148
- */
149
- consume(...consumerConfigs) {
150
- consumerConfigs.forEach((consumerConfig) => {
151
- const callback = contentDensityCallbackFactory(consumerConfig);
152
- this._callbacks.set(consumerConfig, callback);
153
- callback(this.value);
154
- });
155
- return this;
156
- }
157
- /**
158
- * Remove consumer callback from list of callbacks
159
- */
160
- removeConsumer(...consumerConfigs) {
161
- consumerConfigs.forEach((consumerConfig) => {
162
- this._callbacks.delete(consumerConfig);
183
+ const modifiers = this.config.modifiers;
184
+ const parentContentDensityEqual = this._parentContentDensityObserver?.value === this.value;
185
+ this._elements.forEach((element) => {
186
+ Object.values(modifiers).forEach((className) => {
187
+ this._renderer?.removeClass(element?.nativeElement, className);
188
+ });
189
+ // Simply remove all modifiers from current element. Content density state is covered by parent element.
190
+ if (parentContentDensityEqual && !this.config.alwaysAddModifiers) {
191
+ return;
192
+ }
193
+ this._renderer?.addClass(element?.nativeElement, modifiers[this.value]);
163
194
  });
164
- return this;
165
195
  }
166
- /** @hidden */
167
- _callCallbacks(density) {
168
- this._callbacks.forEach((callback) => callback(density));
169
- }
170
- /** @hidden */
171
- _listenToChanges(source, callback) {
172
- return source
173
- .pipe(tap(callback), tap(() => this.changeDetectorRef.markForCheck()), takeUntil(this.destroy$))
174
- .subscribe();
196
+ /** Check if the given density is supported */
197
+ _isSupported(density) {
198
+ return this.config.supportedContentDensity?.includes(density) ?? false;
175
199
  }
176
200
  }
177
201
  ContentDensityObserver.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: ContentDensityObserver, deps: [{ token: i0.Injector }, { token: i1.ContentDensityObserverSettings }], target: i0.ɵɵFactoryTarget.Injectable });
@@ -179,4 +203,4 @@ ContentDensityObserver.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0
179
203
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: ContentDensityObserver, decorators: [{
180
204
  type: Injectable
181
205
  }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.ContentDensityObserverSettings }]; } });
182
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1kZW5zaXR5LW9ic2VydmVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9jb250ZW50LWRlbnNpdHkvc2VydmljZXMvY29udGVudC1kZW5zaXR5LW9ic2VydmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBdUIsVUFBVSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFNdEgsT0FBTyxFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUE0QixTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RILE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQzVHLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ25HLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzlGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7QUFFbkUsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEdBQVEsRUFBOEIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSyxHQUEyQixDQUFDLFVBQVUs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QUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsY0FBYztJQUNOLGNBQWMsQ0FBQyxPQUEyQjtRQUM5QyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELGNBQWM7SUFDTixnQkFBZ0IsQ0FBQyxNQUEyQixFQUFFLFFBQXFDO1FBQ3ZGLE9BQU8sTUFBTTthQUNSLElBQUksQ0FDRCxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQ2IsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxFQUNoRCxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUMzQjthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ3JCLENBQUM7O21IQXBMUSxzQkFBc0I7dUhBQXRCLHNCQUFzQjsyRkFBdEIsc0JBQXNCO2tCQURsQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIEVsZW1lbnRSZWYsIEZhY3RvcnlTYW5zUHJvdmlkZXIsIEluamVjdGFibGUsIEluamVjdEZsYWdzLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBDb250ZW50RGVuc2l0eUNhbGxiYWNrRm4sXG4gICAgQ29udGVudERlbnNpdHlPYnNlcnZlclRhcmdldCxcbiAgICBMb2NhbENvbnRlbnREZW5zaXR5TW9kZVxufSBmcm9tICcuLi9jb250ZW50LWRlbnNpdHkudHlwZXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmluYWxpemUsIG1hcCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgR2xvYmFsQ29udGVudERlbnNpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZ2xvYmFsLWNvbnRlbnQtZGVuc2l0eS5zZXJ2aWNlJztcbmltcG9ydCB7IGdldENoYW5nZXNTb3VyY2UkIH0gZnJvbSAnLi4vaGVscGVycy9nZXQtY2hhbmdlcy1zb3VyY2UucHJvdmlkZXInO1xuaW1wb3J0IHsgZGVmYXVsdENvbnRlbnREZW5zaXR5T2JzZXJ2ZXJDb25maWdzIH0gZnJvbSAnLi4vdmFyaWFibGVzL2RlZmF1bHQtY29udGVudC1kZW5zaXR5LWNvbnN1bWVyLWNvbmZpZyc7XG5pbXBvcnQgeyBjb250ZW50RGVuc2l0eUNhbGxiYWNrRmFjdG9yeSB9IGZyb20gJy4uL2hlbHBlcnMvY29udGVudC1kZW5zaXR5LWNoYW5nZS1jYWxsYmFjay1mYWN0b3J5JztcbmltcG9ydCB7IGlzQ29tcGFjdCwgaXNDb25kZW5zZWQsIGlzQ296eSB9IGZyb20gJy4uL2hlbHBlcnMvZGVuc2l0eS10eXBlLWNoZWNrZXJzJztcbmltcG9ydCB7IENPTlRFTlRfREVOU0lUWV9ESVJFQ1RJVkUgfSBmcm9tICcuLi90b2tlbnMvY29udGVudC1kZW5zaXR5LWRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEZXN0cm95ZWRTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlPYnNlcnZlclNldHRpbmdzIH0gZnJvbSAnLi4vY2xhc3Nlcy9jb250ZW50LWRlbnNpdHktb2JzZXJ2ZXIuc2V0dGluZ3MnO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlNb2RlIH0gZnJvbSAnLi4vdHlwZXMvY29udGVudC1kZW5zaXR5Lm1vZGUnO1xuXG5jb25zdCBpc0ZhY3RvcnlQcm92aWRlciA9IChvYmo6IGFueSk6IG9iaiBpcyBGYWN0b3J5U2Fuc1Byb3ZpZGVyID0+ICEhKG9iaiAmJiAob2JqIGFzIEZhY3RvcnlTYW5zUHJvdmlkZXIpLnVzZUZhY3RvcnkpO1xuXG5jb25zdCBnZXREZXBzID0gKGluamVjdG9yOiBJbmplY3RvciwgZGVmYXVsdENvbnRlbnREZW5zaXR5OiBGYWN0b3J5U2Fuc1Byb3ZpZGVyKTogQXJyYXk8YW55PiA9PlxuICAgIChkZWZhdWx0Q29udGVudERlbnNpdHkuZGVwcyB8fCBbXSkubWFwKChkZXApOiBhbnkgPT4ge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkZXApKSB7XG4gICAgICAgICAgICBsZXQgdHlwZTtcbiAgICAgICAgICAgIGxldCBmbGFncyA9IEluamVjdEZsYWdzLkRlZmF1bHQ7XG4gICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgZGVwLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZsYWcgPSBkZXBbaW5kZXhdWydfX05HX0RJX0ZMQUdfXyddO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZmxhZyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWJpdHdpc2VcbiAgICAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gZmxhZztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0eXBlID0gZGVwW2luZGV4XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaW5qZWN0b3IuZ2V0KHR5cGUsIHVuZGVmaW5lZCwgZmxhZ3MpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpbmplY3Rvci5nZXQoZGVwLCB1bmRlZmluZWQsIEluamVjdEZsYWdzLkRlZmF1bHQpO1xuICAgIH0pO1xuXG5jb25zdCBnZXREZWZhdWx0Q29udGVudERlbnNpdHkgPSAoXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIGNvbmZpZ3VyYXRpb246IFJlcXVpcmVkPENvbnRlbnREZW5zaXR5T2JzZXJ2ZXJTZXR0aW5ncz5cbik6IENvbnRlbnREZW5zaXR5TW9kZSA9PiB7XG4gICAgaWYgKHR5cGVvZiBjb25maWd1cmF0aW9uLmRlZmF1bHRDb250ZW50RGVuc2l0eSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb24uZGVmYXVsdENvbnRlbnREZW5zaXR5IGFzIENvbnRlbnREZW5zaXR5TW9kZTtcbiAgICB9XG4gICAgaWYgKGlzRmFjdG9yeVByb3ZpZGVyKGNvbmZpZ3VyYXRpb24uZGVmYXVsdENvbnRlbnREZW5zaXR5KSkge1xuICAgICAgICBjb25zdCBkZXBzID0gZ2V0RGVwcyhpbmplY3RvciwgY29uZmlndXJhdGlvbi5kZWZhdWx0Q29udGVudERlbnNpdHkpO1xuICAgICAgICByZXR1cm4gY29uZmlndXJhdGlvbi5kZWZhdWx0Q29udGVudERlbnNpdHkudXNlRmFjdG9yeSguLi5kZXBzKTtcbiAgICB9XG4gICAgcmV0dXJuIGluamVjdG9yLmdldChjb25maWd1cmF0aW9uLmRlZmF1bHRDb250ZW50RGVuc2l0eSwgdW5kZWZpbmVkLCB1bmRlZmluZWQpO1xufTtcblxuY29uc3QgaW5pdGlhbENvbnRlbnREZW5zaXR5ID0gKFxuICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBjb25maWd1cmF0aW9uPzogQ29udGVudERlbnNpdHlPYnNlcnZlclNldHRpbmdzXG4pOiBDb250ZW50RGVuc2l0eU1vZGUgPT4ge1xuICAgIGNvbnN0IHNlcnZpY2VWYWx1ZSA9IGluamVjdG9yLmdldChHbG9iYWxDb250ZW50RGVuc2l0eVNlcnZpY2UsIG51bGwsIEluamVjdEZsYWdzLk9wdGlvbmFsKT8uY3VycmVudENvbnRlbnREZW5zaXR5O1xuICAgIGlmIChzZXJ2aWNlVmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHNlcnZpY2VWYWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGdldERlZmF1bHRDb250ZW50RGVuc2l0eShpbmplY3Rvciwge1xuICAgICAgICAuLi5kZWZhdWx0Q29udGVudERlbnNpdHlPYnNlcnZlckNvbmZpZ3MsXG4gICAgICAgIC4uLihjb25maWd1cmF0aW9uIHx8IHt9KVxuICAgIH0pO1xufTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIgZXh0ZW5kcyBCZWhhdmlvclN1YmplY3Q8Q29udGVudERlbnNpdHlNb2RlPiB7XG4gICAgLyoqIFN0cmVhbSBmb3IgZ2V0dGluZyBjb21wYWN0IHN0YXRlIGNoYW5nZXMgKi9cbiAgICBpc0NvbXBhY3QkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIC8qKiBTdHJlYW0gZm9yIGdldHRpbmcgY296eSBzdGF0ZSBjaGFuZ2VzICovXG4gICAgaXNDb3p5JDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICAvKiogU3RyZWFtIGZvciBnZXR0aW5nIGNvbmRlbnNlZCBzdGF0ZSBjaGFuZ2VzICovXG4gICAgaXNDb25kZW5zZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYWxsYmFja3M6IE1hcDxhbnksIENvbnRlbnREZW5zaXR5Q2FsbGJhY2tGbj4gPSBuZXcgTWFwPGFueSwgQ29udGVudERlbnNpdHlDYWxsYmFja0ZuPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pc0NvbXBhY3Q6IGJvb2xlYW47XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pc0Nvenk6IGJvb2xlYW47XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pc0NvbmRlbnNlZDogYm9vbGVhbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY29tcGFjdFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY29uZGVuc2VkU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jb3p5U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlndXJhdGlvbjogUmVxdWlyZWQ8Q29udGVudERlbnNpdHlPYnNlcnZlclNldHRpbmdzPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBhbHRlcm5hdGl2ZVRvID0ge1xuICAgICAgICBbQ29udGVudERlbnNpdHlNb2RlLkNPTVBBQ1RdOiAoKTogQ29udGVudERlbnNpdHlNb2RlID0+XG4gICAgICAgICAgICB0aGlzLmlzU3VwcG9ydGVkKENvbnRlbnREZW5zaXR5TW9kZS5DT05ERU5TRUQpID8gQ29udGVudERlbnNpdHlNb2RlLkNPTkRFTlNFRCA6IENvbnRlbnREZW5zaXR5TW9kZS5DT1pZLFxuICAgICAgICBbQ29udGVudERlbnNpdHlNb2RlLkNPTkRFTlNFRF06ICgpOiBDb250ZW50RGVuc2l0eU1vZGUgPT5cbiAgICAgICAgICAgIHRoaXMuaXNTdXBwb3J0ZWQoQ29udGVudERlbnNpdHlNb2RlLkNPTVBBQ1QpID8gQ29udGVudERlbnNpdHlNb2RlLkNPTVBBQ1QgOiBDb250ZW50RGVuc2l0eU1vZGUuQ09aWSxcbiAgICAgICAgW0NvbnRlbnREZW5zaXR5TW9kZS5DT1pZXTogKCk6IENvbnRlbnREZW5zaXR5TW9kZSA9PiBDb250ZW50RGVuc2l0eU1vZGUuQ09aWSAvLyBObyBhbHRlcm5hdGl2ZSBoZXJlLCBldmVyeW9uZSBzaG91bGQgc3VwcG9ydCBpdFxuICAgIH07XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQ6IE9ic2VydmFibGU8dm9pZD47XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZjtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgY29udGVudERlbnNpdHlEaXJlY3RpdmU/OiBPYnNlcnZhYmxlPExvY2FsQ29udGVudERlbnNpdHlNb2RlPjtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgY29udGVudERlbnNpdHlTZXJ2aWNlPzogR2xvYmFsQ29udGVudERlbnNpdHlTZXJ2aWNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IsIHByaXZhdGUgX3Byb3ZpZGVkQ29uZmlnPzogQ29udGVudERlbnNpdHlPYnNlcnZlclNldHRpbmdzKSB7XG4gICAgICAgIHN1cGVyKGluaXRpYWxDb250ZW50RGVuc2l0eShfaW5qZWN0b3IsIF9wcm92aWRlZENvbmZpZykpO1xuICAgICAgICBpZiAoX3Byb3ZpZGVkQ29uZmlnPy5kZWJ1Zykge1xuICAgICAgICAgICAgY29uc29sZS5sb2coeyBpbml0aWFsQ29udGVudERlbnNpdHk6IGluaXRpYWxDb250ZW50RGVuc2l0eShfaW5qZWN0b3IsIF9wcm92aWRlZENvbmZpZykgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uID0ge1xuICAgICAgICAgICAgLi4uZGVmYXVsdENvbnRlbnREZW5zaXR5T2JzZXJ2ZXJDb25maWdzLFxuICAgICAgICAgICAgLi4uKF9wcm92aWRlZENvbmZpZyB8fCB7fSlcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5kZXN0cm95JCA9IHRoaXMuX2luamVjdG9yLmdldChEZXN0cm95ZWRTZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZiA9IHRoaXMuX2luamVjdG9yLmdldChDaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgICAgIHRoaXMuY29udGVudERlbnNpdHlEaXJlY3RpdmUgPSB0aGlzLl9pbmplY3Rvci5nZXQoQ09OVEVOVF9ERU5TSVRZX0RJUkVDVElWRSwgdW5kZWZpbmVkLCBJbmplY3RGbGFncy5PcHRpb25hbCk7XG4gICAgICAgIHRoaXMuY29udGVudERlbnNpdHlTZXJ2aWNlID0gdGhpcy5faW5qZWN0b3IuZ2V0KEdsb2JhbENvbnRlbnREZW5zaXR5U2VydmljZSwgdW5kZWZpbmVkLCBJbmplY3RGbGFncy5PcHRpb25hbCk7XG5cbiAgICAgICAgY29uc3QgY2hhbmdlc1NvdXJjZSQ6IE9ic2VydmFibGU8Q29udGVudERlbnNpdHlNb2RlPiA9IGdldENoYW5nZXNTb3VyY2UkKHtcbiAgICAgICAgICAgIGRlZmF1bHRDb250ZW50RGVuc2l0eTogZ2V0RGVmYXVsdENvbnRlbnREZW5zaXR5KHRoaXMuX2luamVjdG9yLCB0aGlzLmNvbmZpZ3VyYXRpb24pLFxuICAgICAgICAgICAgY29udGVudERlbnNpdHlEaXJlY3RpdmU6IHRoaXMuY29udGVudERlbnNpdHlEaXJlY3RpdmUsXG4gICAgICAgICAgICBjb250ZW50RGVuc2l0eVNlcnZpY2U6IHRoaXMuY29udGVudERlbnNpdHlTZXJ2aWNlXG4gICAgICAgIH0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGRlbnNpdHk6IENvbnRlbnREZW5zaXR5TW9kZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24uZGVidWcpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYENvbnRlbnREZW5zaXR5T2JzZXJ2ZXI6IGRlbnNpdHkgY2hhbmdlZCB0byAke2RlbnNpdHl9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc1N1cHBvcnRlZChkZW5zaXR5KSkge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWx0ZXJuYXRpdmVUb1tkZW5zaXR5XSgpO1xuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbnRlbnREZW5zaXR5T2JzZXJ2ZXI6IGRlbnNpdHkgJHtkZW5zaXR5fSBpcyBub3Qgc3VwcG9ydGVkYCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlbnNpdHk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICAgICAgKTtcbiAgICAgICAgY2hhbmdlc1NvdXJjZSRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRhcCgoZGVuc2l0eSkgPT4gdGhpcy5fY2FsbENhbGxiYWNrcyhkZW5zaXR5KSksXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5jb21wbGV0ZSgpKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZGVuc2l0eSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24uZGVidWcpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYENvbnRlbnREZW5zaXR5T2JzZXJ2ZXI6IGRlbnNpdHkgZW1taXRlZCAke2RlbnNpdHl9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMubmV4dChkZW5zaXR5KTtcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuaXNDb21wYWN0JCA9IGNoYW5nZXNTb3VyY2UkLnBpcGUobWFwKGlzQ29tcGFjdCkpO1xuICAgICAgICB0aGlzLmlzQ296eSQgPSBjaGFuZ2VzU291cmNlJC5waXBlKG1hcChpc0NvenkpKTtcbiAgICAgICAgdGhpcy5pc0NvbmRlbnNlZCQgPSBjaGFuZ2VzU291cmNlJC5waXBlKG1hcChpc0NvbmRlbnNlZCkpO1xuICAgICAgICBpZiAoX3Byb3ZpZGVkQ29uZmlnKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnN1bWUoe1xuICAgICAgICAgICAgICAgIGNvbnRlbnREZW5zaXR5U2V0dGluZ3M6IHRoaXMuY29uZmlndXJhdGlvbixcbiAgICAgICAgICAgICAgICBlbGVtZW50UmVmOiAoKSA9PiB0aGlzLl9pbmplY3Rvci5nZXQoRWxlbWVudFJlZilcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIENoZWNrIGlmIHRoZSBnaXZlbiBkZW5zaXR5IGlzIHN1cHBvcnRlZCAqL1xuICAgIGlzU3VwcG9ydGVkKGRlbnNpdHk6IENvbnRlbnREZW5zaXR5TW9kZSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uLnN1cHBvcnRlZENvbnRlbnREZW5zaXR5LmluY2x1ZGVzKGRlbnNpdHkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN5bmMgaXNDb21wYWN0LiBDYWxscyBDaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSBvbiB1cGRhdGVcbiAgICAgKi9cbiAgICBnZXQgaXNDb21wYWN0KCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuX2NvbXBhY3RTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbXBhY3RTdWJzY3JpcHRpb24gPSB0aGlzLl9saXN0ZW5Ub0NoYW5nZXModGhpcy5pc0NvbXBhY3QkLCAodikgPT4gKHRoaXMuX2lzQ29tcGFjdCA9IHYpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5faXNDb21wYWN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN5bmMgaXNDb25kZW5zZWQuIENhbGxzIENoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpIG9uIHVwZGF0ZVxuICAgICAqL1xuICAgIGdldCBpc0NvbmRlbnNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLl9jb25kZW5zZWRTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbmRlbnNlZFN1YnNjcmlwdGlvbiA9IHRoaXMuX2xpc3RlblRvQ2hhbmdlcyh0aGlzLmlzQ29uZGVuc2VkJCwgKHYpID0+ICh0aGlzLl9pc0NvbmRlbnNlZCA9IHYpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5faXNDb25kZW5zZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3luYyBpc0NvenkuIENhbGxzIENoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpIG9uIHVwZGF0ZVxuICAgICAqL1xuICAgIGdldCBpc0NvenkoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5fY296eVN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5fY296eVN1YnNjcmlwdGlvbiA9IHRoaXMuX2xpc3RlblRvQ2hhbmdlcyh0aGlzLmlzQ296eSQsICh2KSA9PiAodGhpcy5faXNDb3p5ID0gdikpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0Nvenk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFzcyBjb25zdW1lcnMgY2FsbGJhY2sgZnVuY3Rpb24sIG9yIGNvbmZpZ3VyYXRpb24gb2JqZWN0IHRvIGJlIGNhbGxlZCBvbiBkZW5zaXR5IGNoYW5nZVxuICAgICAqL1xuICAgIGNvbnN1bWUoXG4gICAgICAgIC4uLmNvbnN1bWVyQ29uZmlnczogQXJyYXk8Q29udGVudERlbnNpdHlPYnNlcnZlclRhcmdldCB8IENvbnRlbnREZW5zaXR5Q2FsbGJhY2tGbj5cbiAgICApOiBDb250ZW50RGVuc2l0eU9ic2VydmVyIHtcbiAgICAgICAgY29uc3VtZXJDb25maWdzLmZvckVhY2goKGNvbnN1bWVyQ29uZmlnKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjYWxsYmFjayA9IGNvbnRlbnREZW5zaXR5Q2FsbGJhY2tGYWN0b3J5KGNvbnN1bWVyQ29uZmlnKTtcbiAgICAgICAgICAgIHRoaXMuX2NhbGxiYWNrcy5zZXQoY29uc3VtZXJDb25maWcsIGNhbGxiYWNrKTtcbiAgICAgICAgICAgIGNhbGxiYWNrKHRoaXMudmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlIGNvbnN1bWVyIGNhbGxiYWNrIGZyb20gbGlzdCBvZiBjYWxsYmFja3NcbiAgICAgKi9cbiAgICByZW1vdmVDb25zdW1lcihcbiAgICAgICAgLi4uY29uc3VtZXJDb25maWdzOiBBcnJheTxDb250ZW50RGVuc2l0eU9ic2VydmVyVGFyZ2V0IHwgQ29udGVudERlbnNpdHlDYWxsYmFja0ZuPlxuICAgICk6IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIge1xuICAgICAgICBjb25zdW1lckNvbmZpZ3MuZm9yRWFjaCgoY29uc3VtZXJDb25maWcpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2NhbGxiYWNrcy5kZWxldGUoY29uc3VtZXJDb25maWcpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYWxsQ2FsbGJhY2tzKGRlbnNpdHk6IENvbnRlbnREZW5zaXR5TW9kZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jYWxsYmFja3MuZm9yRWFjaCgoY2FsbGJhY2spID0+IGNhbGxiYWNrKGRlbnNpdHkpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3RlblRvQ2hhbmdlcyhzb3VyY2U6IE9ic2VydmFibGU8Ym9vbGVhbj4sIGNhbGxiYWNrOiAobmV3VmFsdWU6IGJvb2xlYW4pID0+IHZvaWQpOiBTdWJzY3JpcHRpb24ge1xuICAgICAgICByZXR1cm4gc291cmNlXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YXAoY2FsbGJhY2spLFxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG59XG4iXX0=
206
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1kZW5zaXR5LW9ic2VydmVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9jb250ZW50LWRlbnNpdHkvc2VydmljZXMvY29udGVudC1kZW5zaXR5LW9ic2VydmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBdUIsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0SCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0UsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFOUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDekYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbkUsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sc0RBQXNELENBQUM7OztBQUU1RyxNQUFNLGlCQUFpQixHQUFHLENBQUMsR0FBUSxFQUE4QixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFLLEdBQTJCLENBQUMsVUFBVSxDQUFDLENBQUM7QUFFdkgsTUFBTSxPQUFPLEdBQUcsQ0FBQyxRQUFrQixFQUFFLHFCQUEwQyxFQUFjLEVBQUUsQ0FDM0YsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFD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QVMsRUFBRTtZQUN6QixPQUFPO1NBQ1Y7UUFDRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUV4QyxNQUFNLHlCQUF5QixHQUFHLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQztRQUUzRixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQy9CLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7Z0JBQzNDLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDbkUsQ0FBQyxDQUFDLENBQUM7WUFFSCx3R0FBd0c7WUFDeEcsSUFBSSx5QkFBeUIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUU7Z0JBQzlELE9BQU87YUFDVjtZQUVELElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUUsQ0FBQyxDQUFDO1FBQzdFLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELDhDQUE4QztJQUN0QyxZQUFZLENBQUMsT0FBMkI7UUFDNUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLHVCQUF1QixFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLENBQUM7SUFDM0UsQ0FBQzs7bUhBaExRLHNCQUFzQjt1SEFBdEIsc0JBQXNCOzJGQUF0QixzQkFBc0I7a0JBRGxDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBGYWN0b3J5U2Fuc1Byb3ZpZGVyLCBpbmplY3QsIEluamVjdGFibGUsIEluamVjdEZsYWdzLCBJbmplY3RvciwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEZXN0cm95ZWRTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXJTZXR0aW5ncyB9IGZyb20gJy4uL2NsYXNzZXMvY29udGVudC1kZW5zaXR5LW9ic2VydmVyLnNldHRpbmdzJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXJUYXJnZXQgfSBmcm9tICcuLi9jb250ZW50LWRlbnNpdHkudHlwZXMnO1xuaW1wb3J0IHsgZ2V0Q2hhbmdlc1NvdXJjZSQgfSBmcm9tICcuLi9oZWxwZXJzL2dldC1jaGFuZ2VzLXNvdXJjZS5wcm92aWRlcic7XG5pbXBvcnQgeyBHbG9iYWxDb250ZW50RGVuc2l0eVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9nbG9iYWwtY29udGVudC1kZW5zaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ09OVEVOVF9ERU5TSVRZX0RJUkVDVElWRSB9IGZyb20gJy4uL3Rva2Vucy9jb250ZW50LWRlbnNpdHktZGlyZWN0aXZlJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5TW9kZSB9IGZyb20gJy4uL3R5cGVzL2NvbnRlbnQtZGVuc2l0eS5tb2RlJztcbmltcG9ydCB7IGRlZmF1bHRDb250ZW50RGVuc2l0eU9ic2VydmVyQ29uZmlncyB9IGZyb20gJy4uL3ZhcmlhYmxlcy9kZWZhdWx0LWNvbnRlbnQtZGVuc2l0eS1jb25zdW1lci1jb25maWcnO1xuXG5jb25zdCBpc0ZhY3RvcnlQcm92aWRlciA9IChvYmo6IGFueSk6IG9iaiBpcyBGYWN0b3J5U2Fuc1Byb3ZpZGVyID0+ICEhKG9iaiAmJiAob2JqIGFzIEZhY3RvcnlTYW5zUHJvdmlkZXIpLnVzZUZhY3RvcnkpO1xuXG5jb25zdCBnZXREZXBzID0gKGluamVjdG9yOiBJbmplY3RvciwgZGVmYXVsdENvbnRlbnREZW5zaXR5OiBGYWN0b3J5U2Fuc1Byb3ZpZGVyKTogQXJyYXk8YW55PiA9PlxuICAgIChkZWZhdWx0Q29udGVudERlbnNpdHkuZGVwcyB8fCBbXSkubWFwKChkZXApOiBhbnkgPT4ge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkZXApKSB7XG4gICAgICAgICAgICBsZXQgdHlwZTtcbiAgICAgICAgICAgIGxldCBmbGFncyA9IEluamVjdEZsYWdzLkRlZmF1bHQ7XG4gICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgZGVwLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZsYWcgPSBkZXBbaW5kZXhdWydfX05HX0RJX0ZMQUdfXyddO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZmxhZyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWJpdHdpc2VcbiAgICAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gZmxhZztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0eXBlID0gZGVwW2luZGV4XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaW5qZWN0b3IuZ2V0KHR5cGUsIHVuZGVmaW5lZCwgZmxhZ3MpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpbmplY3Rvci5nZXQoZGVwLCB1bmRlZmluZWQsIEluamVjdEZsYWdzLkRlZmF1bHQpO1xuICAgIH0pO1xuXG5jb25zdCBnZXREZWZhdWx0Q29udGVudERlbnNpdHkgPSAoXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIGNvbmZpZ3VyYXRpb246IFJlcXVpcmVkPENvbnRlbnREZW5zaXR5T2JzZXJ2ZXJTZXR0aW5ncz5cbik6IENvbnRlbnREZW5zaXR5TW9kZSA9PiB7XG4gICAgaWYgKHR5cGVvZiBjb25maWd1cmF0aW9uLmRlZmF1bHRDb250ZW50RGVuc2l0eSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb24uZGVmYXVsdENvbnRlbnREZW5zaXR5IGFzIENvbnRlbnREZW5zaXR5TW9kZTtcbiAgICB9XG4gICAgaWYgKGlzRmFjdG9yeVByb3ZpZGVyKGNvbmZpZ3VyYXRpb24uZGVmYXVsdENvbnRlbnREZW5zaXR5KSkge1xuICAgICAgICBjb25zdCBkZXBzID0gZ2V0RGVwcyhpbmplY3RvciwgY29uZmlndXJhdGlvbi5kZWZhdWx0Q29udGVudERlbnNpdHkpO1xuICAgICAgICByZXR1cm4gY29uZmlndXJhdGlvbi5kZWZhdWx0Q29udGVudERlbnNpdHkudXNlRmFjdG9yeSguLi5kZXBzKTtcbiAgICB9XG4gICAgcmV0dXJuIGluamVjdG9yLmdldChjb25maWd1cmF0aW9uLmRlZmF1bHRDb250ZW50RGVuc2l0eSwgdW5kZWZpbmVkLCB1bmRlZmluZWQpO1xufTtcblxuY29uc3QgaW5pdGlhbENvbnRlbnREZW5zaXR5ID0gKFxuICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBjb25maWd1cmF0aW9uPzogQ29udGVudERlbnNpdHlPYnNlcnZlclNldHRpbmdzXG4pOiBDb250ZW50RGVuc2l0eU1vZGUgPT4ge1xuICAgIGNvbnN0IHNlcnZpY2VWYWx1ZSA9IGluamVjdG9yLmdldChHbG9iYWxDb250ZW50RGVuc2l0eVNlcnZpY2UsIG51bGwsIEluamVjdEZsYWdzLk9wdGlvbmFsKT8uY3VycmVudENvbnRlbnREZW5zaXR5O1xuICAgIGlmIChzZXJ2aWNlVmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHNlcnZpY2VWYWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGdldERlZmF1bHRDb250ZW50RGVuc2l0eShpbmplY3Rvciwge1xuICAgICAgICAuLi5kZWZhdWx0Q29udGVudERlbnNpdHlPYnNlcnZlckNvbmZpZ3MsXG4gICAgICAgIC4uLihjb25maWd1cmF0aW9uIHx8IHt9KVxuICAgIH0pO1xufTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIgZXh0ZW5kcyBCZWhhdmlvclN1YmplY3Q8Q29udGVudERlbnNpdHlNb2RlPiB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9pc0NvbXBhY3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9pc0NvenkkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9pc0NvbmRlbnNlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IGNvbmZpZzogQ29udGVudERlbnNpdHlPYnNlcnZlclNldHRpbmdzO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgaXNDb21wYWN0JCA9IHRoaXMuX2lzQ29tcGFjdCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBpc0NvenkkID0gdGhpcy5faXNDb3p5JC5hc09ic2VydmFibGUoKTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IGlzQ29uZGVuc2VkJCA9IHRoaXMuX2lzQ29uZGVuc2VkJC5hc09ic2VydmFibGUoKTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBpc0NvbXBhY3QoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0NvbXBhY3QkLnZhbHVlO1xuICAgIH1cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBpc0NvenkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0NvenkkLnZhbHVlO1xuICAgIH1cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBpc0NvbmRlbnNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzQ29uZGVuc2VkJC52YWx1ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dsb2JhbENvbnRlbnREZW5zaXR5U2VydmljZSA9IGluamVjdChHbG9iYWxDb250ZW50RGVuc2l0eVNlcnZpY2UsIHtcbiAgICAgICAgb3B0aW9uYWw6IHRydWVcbiAgICB9KTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY29udGVudERlbnNpdHlEaXJlY3RpdmUgPSBpbmplY3QoQ09OVEVOVF9ERU5TSVRZX0RJUkVDVElWRSwge1xuICAgICAgICBvcHRpb25hbDogdHJ1ZVxuICAgIH0pO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9wYXJlbnRDb250ZW50RGVuc2l0eU9ic2VydmVyID0gaW5qZWN0KENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIsIHtcbiAgICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgICAgIHNraXBTZWxmOiB0cnVlXG4gICAgfSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIgfCBudWxsID0gaW5qZWN0KFJlbmRlcmVyMik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gaW5qZWN0KERlc3Ryb3llZFNlcnZpY2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPGFueT4gfCBudWxsID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9lbGVtZW50cyA9IFt0aGlzLl9lbGVtZW50UmVmXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYWx0ZXJuYXRpdmVUbyA9IHtcbiAgICAgICAgW0NvbnRlbnREZW5zaXR5TW9kZS5DT01QQUNUXTogKCk6IENvbnRlbnREZW5zaXR5TW9kZSA9PlxuICAgICAgICAgICAgdGhpcy5faXNTdXBwb3J0ZWQoQ29udGVudERlbnNpdHlNb2RlLkNPTkRFTlNFRCkgPyBDb250ZW50RGVuc2l0eU1vZGUuQ09OREVOU0VEIDogQ29udGVudERlbnNpdHlNb2RlLkNPWlksXG4gICAgICAgIFtDb250ZW50RGVuc2l0eU1vZGUuQ09OREVOU0VEXTogKCk6IENvbnRlbnREZW5zaXR5TW9kZSA9PlxuICAgICAgICAgICAgdGhpcy5faXNTdXBwb3J0ZWQoQ29udGVudERlbnNpdHlNb2RlLkNPTVBBQ1QpID8gQ29udGVudERlbnNpdHlNb2RlLkNPTVBBQ1QgOiBDb250ZW50RGVuc2l0eU1vZGUuQ09aWSxcbiAgICAgICAgW0NvbnRlbnREZW5zaXR5TW9kZS5DT1pZXTogKCk6IENvbnRlbnREZW5zaXR5TW9kZSA9PiBDb250ZW50RGVuc2l0eU1vZGUuQ09aWSAvLyBObyBhbHRlcm5hdGl2ZSBoZXJlLCBldmVyeW9uZSBzaG91bGQgc3VwcG9ydCBpdFxuICAgIH07XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2luamVjdG9yOiBJbmplY3RvciwgcHJpdmF0ZSBfcHJvdmlkZWRDb25maWc/OiBDb250ZW50RGVuc2l0eU9ic2VydmVyU2V0dGluZ3MpIHtcbiAgICAgICAgc3VwZXIoaW5pdGlhbENvbnRlbnREZW5zaXR5KF9pbmplY3RvciwgX3Byb3ZpZGVkQ29uZmlnKSk7XG5cbiAgICAgICAgY29uc3QgZGVzdHJveVN1YiA9IHRoaXMuX2Rlc3Ryb3kkLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGRlc3Ryb3lTdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlnLmRlYnVnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdDb250ZW50RGVuc2l0eU9ic2VydmVyOiBkZXN0cm95ZWQnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgICAgICAgLi4uZGVmYXVsdENvbnRlbnREZW5zaXR5T2JzZXJ2ZXJDb25maWdzLFxuICAgICAgICAgICAgLi4uKHRoaXMuX3BhcmVudENvbnRlbnREZW5zaXR5T2JzZXJ2ZXI/LmNvbmZpZyA/PyB7fSksXG4gICAgICAgICAgICAuLi4oX3Byb3ZpZGVkQ29uZmlnIHx8IHt9KVxuICAgICAgICB9O1xuXG4gICAgICAgIGdldENoYW5nZXNTb3VyY2UkKHtcbiAgICAgICAgICAgIGRlZmF1bHRDb250ZW50RGVuc2l0eTogdGhpcy52YWx1ZSxcbiAgICAgICAgICAgIGNvbnRlbnREZW5zaXR5RGlyZWN0aXZlOiB0aGlzLl9jb250ZW50RGVuc2l0eURpcmVjdGl2ZSA/PyB1bmRlZmluZWQsXG4gICAgICAgICAgICBjb250ZW50RGVuc2l0eVNlcnZpY2U6IHRoaXMuX2dsb2JhbENvbnRlbnREZW5zaXR5U2VydmljZSA/PyB1bmRlZmluZWQsXG4gICAgICAgICAgICBwYXJlbnRDb250ZW50RGVuc2l0eVNlcnZpY2U6IHRoaXMuY29uZmlnLnJlc3RyaWN0Q2hpbGRDb250ZW50RGVuc2l0eVxuICAgICAgICAgICAgICAgID8gdGhpcy5fcGFyZW50Q29udGVudERlbnNpdHlPYnNlcnZlcj8uYXNPYnNlcnZhYmxlKCkgPz8gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoZGVuc2l0eSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb25maWcuZGVidWcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBDb250ZW50RGVuc2l0eU9ic2VydmVyOiBkZW5zaXR5IGNoYW5nZWQgdG8gJHtkZW5zaXR5fWApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5faXNTdXBwb3J0ZWQoZGVuc2l0eSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlnLmRlYnVnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYENvbnRlbnREZW5zaXR5T2JzZXJ2ZXI6ICR7ZGVuc2l0eX0gaXMgbm90IHN1cHBvcnRlZC4gRmFpbGluZyBiYWNrIHRvIGFsdGVybmF0aXZlIG9uZS5gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9hbHRlcm5hdGl2ZVRvW2RlbnNpdHldKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb250ZW50RGVuc2l0eU9ic2VydmVyOiBkZW5zaXR5ICR7ZGVuc2l0eX0gaXMgbm90IHN1cHBvcnRlZGApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkZW5zaXR5O1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZGVuc2l0eSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubmV4dChkZW5zaXR5KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9hcHBseUNsYXNzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5faXNDb21wYWN0JC5uZXh0KGRlbnNpdHkgPT09IENvbnRlbnREZW5zaXR5TW9kZS5DT01QQUNUKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9pc0NvenkkLm5leHQoZGVuc2l0eSA9PT0gQ29udGVudERlbnNpdHlNb2RlLkNPWlkpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2lzQ29uZGVuc2VkJC5uZXh0KGRlbnNpdHkgPT09IENvbnRlbnREZW5zaXR5TW9kZS5DT05ERU5TRUQpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdW1lKC4uLmNvbnN1bWVyczogQ29udGVudERlbnNpdHlPYnNlcnZlclRhcmdldFtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2VsZW1lbnRzLmNvbmNhdCguLi5jb25zdW1lcnMubWFwKChjKSA9PiBjLmVsZW1lbnRSZWYoKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbXBsZXRlcyB0aGUgc3RyZWFtIGFuZCBjbG9zZXMgYWxsIGludGVybmFsIHN1YnNjcmlwdGlvbnMuXG4gICAgICovXG4gICAgb3ZlcnJpZGUgY29tcGxldGUoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX2lzQ29uZGVuc2VkJC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9pc0NvenkkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX2lzQ29tcGFjdCQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5fcGFyZW50Q29udGVudERlbnNpdHlPYnNlcnZlciA9IG51bGw7XG4gICAgICAgIHRoaXMuX2NvbnRlbnREZW5zaXR5RGlyZWN0aXZlID0gbnVsbDtcbiAgICAgICAgdGhpcy5fZ2xvYmFsQ29udGVudERlbnNpdHlTZXJ2aWNlID0gbnVsbDtcbiAgICAgICAgdGhpcy5fZWxlbWVudFJlZiA9IG51bGw7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyID0gbnVsbDtcbiAgICAgICAgdGhpcy5fZWxlbWVudHMgPSBbXTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlbW92ZUNvbnN1bWVyKGNvbnN1bWVyOiBDb250ZW50RGVuc2l0eU9ic2VydmVyVGFyZ2V0KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2VsZW1lbnRzLnNwbGljZSh0aGlzLl9lbGVtZW50cy5pbmRleE9mKGNvbnN1bWVyLmVsZW1lbnRSZWYoKSksIDEpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYXBwbHlDbGFzcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbmZpZz8ubW9kaWZpZXJzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbW9kaWZpZXJzID0gdGhpcy5jb25maWcubW9kaWZpZXJzO1xuXG4gICAgICAgIGNvbnN0IHBhcmVudENvbnRlbnREZW5zaXR5RXF1YWwgPSB0aGlzLl9wYXJlbnRDb250ZW50RGVuc2l0eU9ic2VydmVyPy52YWx1ZSA9PT0gdGhpcy52YWx1ZTtcblxuICAgICAgICB0aGlzLl9lbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgICBPYmplY3QudmFsdWVzKG1vZGlmaWVycykuZm9yRWFjaCgoY2xhc3NOYW1lKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXI/LnJlbW92ZUNsYXNzKGVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQsIGNsYXNzTmFtZSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLy8gU2ltcGx5IHJlbW92ZSBhbGwgbW9kaWZpZXJzIGZyb20gY3VycmVudCBlbGVtZW50LiBDb250ZW50IGRlbnNpdHkgc3RhdGUgaXMgY292ZXJlZCBieSBwYXJlbnQgZWxlbWVudC5cbiAgICAgICAgICAgIGlmIChwYXJlbnRDb250ZW50RGVuc2l0eUVxdWFsICYmICF0aGlzLmNvbmZpZy5hbHdheXNBZGRNb2RpZmllcnMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyPy5hZGRDbGFzcyhlbGVtZW50Py5uYXRpdmVFbGVtZW50LCBtb2RpZmllcnNbdGhpcy52YWx1ZV0hKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIENoZWNrIGlmIHRoZSBnaXZlbiBkZW5zaXR5IGlzIHN1cHBvcnRlZCAqL1xuICAgIHByaXZhdGUgX2lzU3VwcG9ydGVkKGRlbnNpdHk6IENvbnRlbnREZW5zaXR5TW9kZSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maWcuc3VwcG9ydGVkQ29udGVudERlbnNpdHk/LmluY2x1ZGVzKGRlbnNpdHkpID8/IGZhbHNlO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,3 +1,3 @@
1
1
  import { InjectionToken } from '@angular/core';
2
2
  export const CONTENT_DENSITY_DIRECTIVE = new InjectionToken('ContentDensityDirective');
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1kZW5zaXR5LWRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2NvbnRlbnQtZGVuc2l0eS90b2tlbnMvY29udGVudC1kZW5zaXR5LWRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSS9DLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLElBQUksY0FBYyxDQUFpQyx5QkFBeUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5TW9kZSB9IGZyb20gJy4uL3R5cGVzL2NvbnRlbnQtZGVuc2l0eS5tb2RlJztcblxuZXhwb3J0IGNvbnN0IENPTlRFTlRfREVOU0lUWV9ESVJFQ1RJVkUgPSBuZXcgSW5qZWN0aW9uVG9rZW48T2JzZXJ2YWJsZTxDb250ZW50RGVuc2l0eU1vZGU+PignQ29udGVudERlbnNpdHlEaXJlY3RpdmUnKTtcbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1kZW5zaXR5LWRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2NvbnRlbnQtZGVuc2l0eS90b2tlbnMvY29udGVudC1kZW5zaXR5LWRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSS9DLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLElBQUksY0FBYyxDQUN2RCx5QkFBeUIsQ0FDNUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMb2NhbENvbnRlbnREZW5zaXR5TW9kZSB9IGZyb20gJy4uL2NvbnRlbnQtZGVuc2l0eS50eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBDT05URU5UX0RFTlNJVFlfRElSRUNUSVZFID0gbmV3IEluamVjdGlvblRva2VuPE9ic2VydmFibGU8TG9jYWxDb250ZW50RGVuc2l0eU1vZGU+PihcbiAgICAnQ29udGVudERlbnNpdHlEaXJlY3RpdmUnXG4pO1xuIl19
@@ -1,8 +1,14 @@
1
1
  import { ContentDensityMode } from '../types/content-density.mode';
2
2
  export const defaultContentDensityObserverConfigs = {
3
- modifiers: {},
3
+ modifiers: {
4
+ [ContentDensityMode.COMPACT]: 'is-compact',
5
+ [ContentDensityMode.COZY]: 'is-cozy',
6
+ [ContentDensityMode.CONDENSED]: 'is-condensed'
7
+ },
4
8
  supportedContentDensity: [ContentDensityMode.COMPACT, ContentDensityMode.COZY],
5
9
  defaultContentDensity: ContentDensityMode.COZY,
6
- debug: false
10
+ debug: false,
11
+ alwaysAddModifiers: false,
12
+ restrictChildContentDensity: false
7
13
  };
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1jb250ZW50LWRlbnNpdHktY29uc3VtZXItY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvY29udGVudC1kZW5zaXR5L3ZhcmlhYmxlcy9kZWZhdWx0LWNvbnRlbnQtZGVuc2l0eS1jb25zdW1lci1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHbkUsTUFBTSxDQUFDLE1BQU0sb0NBQW9DLEdBQTZDO0lBQzFGLFNBQVMsRUFBRSxFQUFFO0lBQ2IsdUJBQXVCLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDO0lBQzlFLHFCQUFxQixFQUFFLGtCQUFrQixDQUFDLElBQUk7SUFDOUMsS0FBSyxFQUFFLEtBQUs7Q0FDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udGVudERlbnNpdHlNb2RlIH0gZnJvbSAnLi4vdHlwZXMvY29udGVudC1kZW5zaXR5Lm1vZGUnO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlPYnNlcnZlclNldHRpbmdzIH0gZnJvbSAnLi4vY2xhc3Nlcy9jb250ZW50LWRlbnNpdHktb2JzZXJ2ZXIuc2V0dGluZ3MnO1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdENvbnRlbnREZW5zaXR5T2JzZXJ2ZXJDb25maWdzOiBSZXF1aXJlZDxDb250ZW50RGVuc2l0eU9ic2VydmVyU2V0dGluZ3M+ID0ge1xuICAgIG1vZGlmaWVyczoge30sXG4gICAgc3VwcG9ydGVkQ29udGVudERlbnNpdHk6IFtDb250ZW50RGVuc2l0eU1vZGUuQ09NUEFDVCwgQ29udGVudERlbnNpdHlNb2RlLkNPWlldLFxuICAgIGRlZmF1bHRDb250ZW50RGVuc2l0eTogQ29udGVudERlbnNpdHlNb2RlLkNPWlksXG4gICAgZGVidWc6IGZhbHNlXG59O1xuIl19
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1jb250ZW50LWRlbnNpdHktY29uc3VtZXItY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvY29udGVudC1kZW5zaXR5L3ZhcmlhYmxlcy9kZWZhdWx0LWNvbnRlbnQtZGVuc2l0eS1jb25zdW1lci1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHbkUsTUFBTSxDQUFDLE1BQU0sb0NBQW9DLEdBQTZDO0lBQzFGLFNBQVMsRUFBRTtRQUNQLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLEVBQUUsWUFBWTtRQUMxQyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVM7UUFDcEMsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsRUFBRSxjQUFjO0tBQ2pEO0lBQ0QsdUJBQXVCLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDO0lBQzlFLHFCQUFxQixFQUFFLGtCQUFrQixDQUFDLElBQUk7SUFDOUMsS0FBSyxFQUFFLEtBQUs7SUFDWixrQkFBa0IsRUFBRSxLQUFLO0lBQ3pCLDJCQUEyQixFQUFFLEtBQUs7Q0FDckMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRlbnREZW5zaXR5TW9kZSB9IGZyb20gJy4uL3R5cGVzL2NvbnRlbnQtZGVuc2l0eS5tb2RlJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXJTZXR0aW5ncyB9IGZyb20gJy4uL2NsYXNzZXMvY29udGVudC1kZW5zaXR5LW9ic2VydmVyLnNldHRpbmdzJztcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRDb250ZW50RGVuc2l0eU9ic2VydmVyQ29uZmlnczogUmVxdWlyZWQ8Q29udGVudERlbnNpdHlPYnNlcnZlclNldHRpbmdzPiA9IHtcbiAgICBtb2RpZmllcnM6IHtcbiAgICAgICAgW0NvbnRlbnREZW5zaXR5TW9kZS5DT01QQUNUXTogJ2lzLWNvbXBhY3QnLFxuICAgICAgICBbQ29udGVudERlbnNpdHlNb2RlLkNPWlldOiAnaXMtY296eScsXG4gICAgICAgIFtDb250ZW50RGVuc2l0eU1vZGUuQ09OREVOU0VEXTogJ2lzLWNvbmRlbnNlZCdcbiAgICB9LFxuICAgIHN1cHBvcnRlZENvbnRlbnREZW5zaXR5OiBbQ29udGVudERlbnNpdHlNb2RlLkNPTVBBQ1QsIENvbnRlbnREZW5zaXR5TW9kZS5DT1pZXSxcbiAgICBkZWZhdWx0Q29udGVudERlbnNpdHk6IENvbnRlbnREZW5zaXR5TW9kZS5DT1pZLFxuICAgIGRlYnVnOiBmYWxzZSxcbiAgICBhbHdheXNBZGRNb2RpZmllcnM6IGZhbHNlLFxuICAgIHJlc3RyaWN0Q2hpbGRDb250ZW50RGVuc2l0eTogZmFsc2Vcbn07XG4iXX0=
@@ -15,7 +15,7 @@ export class DialogCloseButtonComponent {
15
15
  }
16
16
  }
17
17
  DialogCloseButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: DialogCloseButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
18
- DialogCloseButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: DialogCloseButtonComponent, selector: "[fd-dialog-close-button]", inputs: { mobile: "mobile", title: "title" }, host: { properties: { "attr.aria-label": "\"close\"", "class.fd-button": "true", "class.fd-button--compact": "!mobile", "class.fd-button--transparent": "true", "attr.title": "title" } }, ngImport: i0, template: `<fd-icon glyph="decline"></fd-icon><ng-content></ng-content>`, isInline: true, dependencies: [{ kind: "component", type: i1.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }] });
18
+ DialogCloseButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: DialogCloseButtonComponent, selector: "[fd-dialog-close-button]", inputs: { mobile: "mobile", title: "title" }, host: { properties: { "attr.aria-label": "\"close\"", "class.fd-button": "true", "class.is-compact": "!mobile", "class.fd-button--transparent": "true", "attr.title": "title" } }, ngImport: i0, template: `<fd-icon glyph="decline"></fd-icon><ng-content></ng-content>`, isInline: true, dependencies: [{ kind: "component", type: i1.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }] });
19
19
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: DialogCloseButtonComponent, decorators: [{
20
20
  type: Component,
21
21
  args: [{
@@ -24,7 +24,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImpor
24
24
  host: {
25
25
  '[attr.aria-label]': '"close"',
26
26
  '[class.fd-button]': 'true',
27
- '[class.fd-button--compact]': '!mobile',
27
+ '[class.is-compact]': '!mobile',
28
28
  '[class.fd-button--transparent]': 'true',
29
29
  '[attr.title]': 'title'
30
30
  },
@@ -35,4 +35,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImpor
35
35
  }], title: [{
36
36
  type: Input
37
37
  }] } });
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWNsb3NlLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9kaWFsb2cvZGlhbG9nLWNsb3NlLWJ1dHRvbi9kaWFsb2ctY2xvc2UtYnV0dG9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBRWpEOzs7Ozs7R0FNRztBQWFILE1BQU0sT0FBTywwQkFBMEI7SUFadkM7UUFhSSxrREFBa0Q7UUFFbEQsV0FBTSxHQUFHLEtBQUssQ0FBQztLQUtsQjs7dUhBUlksMEJBQTBCOzJHQUExQiwwQkFBMEIseVNBRnpCLDhEQUE4RDsyRkFFL0QsMEJBQTBCO2tCQVp0QyxTQUFTO21CQUFDO29CQUNQLDhEQUE4RDtvQkFDOUQsUUFBUSxFQUFFLDBCQUEwQjtvQkFDcEMsSUFBSSxFQUFFO3dCQUNGLG1CQUFtQixFQUFFLFNBQVM7d0JBQzlCLG1CQUFtQixFQUFFLE1BQU07d0JBQzNCLDRCQUE0QixFQUFFLFNBQVM7d0JBQ3ZDLGdDQUFnQyxFQUFFLE1BQU07d0JBQ3hDLGNBQWMsRUFBRSxPQUFPO3FCQUMxQjtvQkFDRCxRQUFRLEVBQUUsOERBQThEO2lCQUMzRTs4QkFJRyxNQUFNO3NCQURMLEtBQUs7Z0JBS04sS0FBSztzQkFESixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIERpcmVjdGl2ZSB0aGF0IGFwcGxpZXMgZnVuZGFtZW50YWwgZGlhbG9nIHN0eWxpbmcgdG8gYSBkaWFsb2cgY2xvc2UgYnV0dG9uLlxuICpcbiAqIGBgYGh0bWxcbiAqIDxidXR0b24gZmQtZGlhbG9nLWNsb3NlLWJ1dHRvbj48L2J1dHRvbj5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnW2ZkLWRpYWxvZy1jbG9zZS1idXR0b25dJyxcbiAgICBob3N0OiB7XG4gICAgICAgICdbYXR0ci5hcmlhLWxhYmVsXSc6ICdcImNsb3NlXCInLFxuICAgICAgICAnW2NsYXNzLmZkLWJ1dHRvbl0nOiAndHJ1ZScsXG4gICAgICAgICdbY2xhc3MuZmQtYnV0dG9uLS1jb21wYWN0XSc6ICchbW9iaWxlJyxcbiAgICAgICAgJ1tjbGFzcy5mZC1idXR0b24tLXRyYW5zcGFyZW50XSc6ICd0cnVlJyxcbiAgICAgICAgJ1thdHRyLnRpdGxlXSc6ICd0aXRsZSdcbiAgICB9LFxuICAgIHRlbXBsYXRlOiBgPGZkLWljb24gZ2x5cGg9XCJkZWNsaW5lXCI+PC9mZC1pY29uPjxuZy1jb250ZW50PjwvbmctY29udGVudD5gXG59KVxuZXhwb3J0IGNsYXNzIERpYWxvZ0Nsb3NlQnV0dG9uQ29tcG9uZW50IHtcbiAgICAvKiogRGlzcGxheXMgZGlhbG9nIGNsb3NlIGJ1dHRvbiBpbiBtb2JpbGUgbW9kZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgbW9iaWxlID0gZmFsc2U7XG5cbiAgICAvKiogYWRkIHRpdGxlIGR5bmFtaWNhbGx5IHRvIGFkZCBhIHRvb2x0aXAgKi9cbiAgICBASW5wdXQoKVxuICAgIHRpdGxlOiBzdHJpbmc7XG59XG4iXX0=
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWNsb3NlLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9kaWFsb2cvZGlhbG9nLWNsb3NlLWJ1dHRvbi9kaWFsb2ctY2xvc2UtYnV0dG9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBRWpEOzs7Ozs7R0FNRztBQWFILE1BQU0sT0FBTywwQkFBMEI7SUFadkM7UUFhSSxrREFBa0Q7UUFFbEQsV0FBTSxHQUFHLEtBQUssQ0FBQztLQUtsQjs7dUhBUlksMEJBQTBCOzJHQUExQiwwQkFBMEIsaVNBRnpCLDhEQUE4RDsyRkFFL0QsMEJBQTBCO2tCQVp0QyxTQUFTO21CQUFDO29CQUNQLDhEQUE4RDtvQkFDOUQsUUFBUSxFQUFFLDBCQUEwQjtvQkFDcEMsSUFBSSxFQUFFO3dCQUNGLG1CQUFtQixFQUFFLFNBQVM7d0JBQzlCLG1CQUFtQixFQUFFLE1BQU07d0JBQzNCLG9CQUFvQixFQUFFLFNBQVM7d0JBQy9CLGdDQUFnQyxFQUFFLE1BQU07d0JBQ3hDLGNBQWMsRUFBRSxPQUFPO3FCQUMxQjtvQkFDRCxRQUFRLEVBQUUsOERBQThEO2lCQUMzRTs4QkFJRyxNQUFNO3NCQURMLEtBQUs7Z0JBS04sS0FBSztzQkFESixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIERpcmVjdGl2ZSB0aGF0IGFwcGxpZXMgZnVuZGFtZW50YWwgZGlhbG9nIHN0eWxpbmcgdG8gYSBkaWFsb2cgY2xvc2UgYnV0dG9uLlxuICpcbiAqIGBgYGh0bWxcbiAqIDxidXR0b24gZmQtZGlhbG9nLWNsb3NlLWJ1dHRvbj48L2J1dHRvbj5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnW2ZkLWRpYWxvZy1jbG9zZS1idXR0b25dJyxcbiAgICBob3N0OiB7XG4gICAgICAgICdbYXR0ci5hcmlhLWxhYmVsXSc6ICdcImNsb3NlXCInLFxuICAgICAgICAnW2NsYXNzLmZkLWJ1dHRvbl0nOiAndHJ1ZScsXG4gICAgICAgICdbY2xhc3MuaXMtY29tcGFjdF0nOiAnIW1vYmlsZScsXG4gICAgICAgICdbY2xhc3MuZmQtYnV0dG9uLS10cmFuc3BhcmVudF0nOiAndHJ1ZScsXG4gICAgICAgICdbYXR0ci50aXRsZV0nOiAndGl0bGUnXG4gICAgfSxcbiAgICB0ZW1wbGF0ZTogYDxmZC1pY29uIGdseXBoPVwiZGVjbGluZVwiPjwvZmQtaWNvbj48bmctY29udGVudD48L25nLWNvbnRlbnQ+YFxufSlcbmV4cG9ydCBjbGFzcyBEaWFsb2dDbG9zZUJ1dHRvbkNvbXBvbmVudCB7XG4gICAgLyoqIERpc3BsYXlzIGRpYWxvZyBjbG9zZSBidXR0b24gaW4gbW9iaWxlIG1vZGUgKi9cbiAgICBASW5wdXQoKVxuICAgIG1vYmlsZSA9IGZhbHNlO1xuXG4gICAgLyoqIGFkZCB0aXRsZSBkeW5hbWljYWxseSB0byBhZGQgYSB0b29sdGlwICovXG4gICAgQElucHV0KClcbiAgICB0aXRsZTogc3RyaW5nO1xufVxuIl19