@koobiq/components 18.35.0 → 18.37.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 (626) hide show
  1. package/accordion/accordion.component.d.ts +1 -1
  2. package/app-switcher/_app-switcher-theme.scss +34 -0
  3. package/app-switcher/app-switcher-animations.d.ts +5 -0
  4. package/app-switcher/app-switcher-dropdown-app.d.ts +11 -0
  5. package/app-switcher/app-switcher-dropdown-app.scss +85 -0
  6. package/app-switcher/app-switcher-dropdown-site.d.ts +9 -0
  7. package/app-switcher/app-switcher-dropdown-site.scss +53 -0
  8. package/app-switcher/app-switcher.d.ts +191 -0
  9. package/app-switcher/app-switcher.module.d.ts +10 -0
  10. package/app-switcher/app-switcher.scss +64 -0
  11. package/app-switcher/index.d.ts +1 -0
  12. package/app-switcher/kbq-app-switcher-list-item.d.ts +16 -0
  13. package/app-switcher/kbq-app-switcher-list-item.scss +180 -0
  14. package/app-switcher/public-api.d.ts +6 -0
  15. package/autocomplete/autocomplete.scss +2 -17
  16. package/badge/badge.component.d.ts +1 -1
  17. package/badge/badge.component.scss +2 -0
  18. package/breadcrumbs/breadcrumbs.d.ts +2 -1
  19. package/breadcrumbs/breadcrumbs.scss +8 -4
  20. package/button/button.component.d.ts +3 -2
  21. package/button-toggle/button-toggle.scss +0 -2
  22. package/content-panel/content-panel.d.ts +1 -1
  23. package/content-panel/index.d.ts +0 -1
  24. package/core/common-behaviors/clipboard.d.ts +1 -1
  25. package/core/common-behaviors/color.d.ts +5 -5
  26. package/core/common-behaviors/focus-monitor.d.ts +19 -0
  27. package/core/common-behaviors/hover.d.ts +15 -0
  28. package/core/common-behaviors/index.d.ts +4 -0
  29. package/core/common-behaviors/orientation.d.ts +4 -0
  30. package/core/common-behaviors/read-state.d.ts +12 -0
  31. package/core/locales/en-US.d.ts +62 -0
  32. package/core/locales/es-LA.d.ts +62 -0
  33. package/core/locales/formatters.d.ts +0 -72
  34. package/core/locales/index.d.ts +0 -2
  35. package/core/locales/locale-service.d.ts +292 -250
  36. package/core/locales/pt-BR.d.ts +62 -0
  37. package/core/locales/ru-RU.d.ts +62 -0
  38. package/core/locales/tk-TM.d.ts +62 -0
  39. package/core/locales/types.d.ts +22 -0
  40. package/core/navbar/rectangle-item.d.ts +1 -1
  41. package/core/option/action.d.ts +1 -1
  42. package/core/option/option.d.ts +3 -2
  43. package/core/pop-up/constants.d.ts +2 -1
  44. package/core/pop-up/pop-up-trigger.d.ts +3 -3
  45. package/core/pop-up/pop-up.d.ts +2 -1
  46. package/core/select/common.d.ts +6 -1
  47. package/core/select/constants.d.ts +5 -0
  48. package/core/styles/common/_select.scss +25 -0
  49. package/core/styles/typography/_typography.scss +23 -82
  50. package/core/utils/dom.d.ts +1 -6
  51. package/datepicker/datepicker-module.d.ts +2 -1
  52. package/divider/divider.scss +1 -0
  53. package/dropdown/dropdown-item.scss +8 -7
  54. package/dropdown/dropdown.component.d.ts +5 -1
  55. package/dropdown/dropdown.module.d.ts +1 -1
  56. package/dropdown/dropdown.scss +5 -14
  57. package/esm2022/accordion/accordion-content.mjs +3 -3
  58. package/esm2022/accordion/accordion-header.mjs +3 -3
  59. package/esm2022/accordion/accordion-item.mjs +3 -3
  60. package/esm2022/accordion/accordion-trigger.component.mjs +3 -3
  61. package/esm2022/accordion/accordion.component.mjs +5 -5
  62. package/esm2022/accordion/accordion.module.mjs +4 -4
  63. package/esm2022/actions-panel/actions-panel-container.mjs +3 -3
  64. package/esm2022/actions-panel/actions-panel.mjs +3 -3
  65. package/esm2022/actions-panel/module.mjs +4 -4
  66. package/esm2022/alert/alert.component.mjs +12 -12
  67. package/esm2022/alert/alert.module.mjs +4 -4
  68. package/esm2022/app-switcher/app-switcher-animations.mjs +18 -0
  69. package/esm2022/app-switcher/app-switcher-dropdown-app.mjs +75 -0
  70. package/esm2022/app-switcher/app-switcher-dropdown-site.mjs +60 -0
  71. package/esm2022/app-switcher/app-switcher.mjs +446 -0
  72. package/esm2022/app-switcher/app-switcher.module.mjs +45 -0
  73. package/esm2022/app-switcher/index.mjs +2 -0
  74. package/esm2022/app-switcher/kbq-app-switcher-list-item.mjs +84 -0
  75. package/esm2022/app-switcher/koobiq-components-app-switcher.mjs +5 -0
  76. package/esm2022/app-switcher/public-api.mjs +7 -0
  77. package/esm2022/autocomplete/autocomplete-origin.directive.mjs +3 -3
  78. package/esm2022/autocomplete/autocomplete-trigger.directive.mjs +7 -7
  79. package/esm2022/autocomplete/autocomplete.component.mjs +3 -3
  80. package/esm2022/autocomplete/autocomplete.module.mjs +4 -4
  81. package/esm2022/badge/badge.component.mjs +11 -11
  82. package/esm2022/badge/badge.module.mjs +4 -4
  83. package/esm2022/breadcrumbs/breadcrumbs.mjs +58 -49
  84. package/esm2022/breadcrumbs/breadcrumbs.module.mjs +4 -4
  85. package/esm2022/button/button.component.mjs +12 -10
  86. package/esm2022/button/button.dropdown-trigger.directive.mjs +3 -3
  87. package/esm2022/button/button.module.mjs +4 -4
  88. package/esm2022/button-toggle/button-toggle.component.mjs +8 -8
  89. package/esm2022/button-toggle/button-toggle.module.mjs +4 -4
  90. package/esm2022/checkbox/checkbox-module.mjs +4 -4
  91. package/esm2022/checkbox/checkbox-required-validator.mjs +3 -3
  92. package/esm2022/checkbox/checkbox.mjs +3 -3
  93. package/esm2022/clamped-text/clamped-text.mjs +3 -3
  94. package/esm2022/clamped-text/module.mjs +4 -4
  95. package/esm2022/code-block/code-block-highlight.mjs +12 -7
  96. package/esm2022/code-block/code-block.mjs +4 -4
  97. package/esm2022/code-block/code-block.module.mjs +4 -4
  98. package/esm2022/content-panel/content-panel.mjs +26 -26
  99. package/esm2022/content-panel/index.mjs +1 -2
  100. package/esm2022/content-panel/module.mjs +4 -4
  101. package/esm2022/core/common-behaviors/clipboard.mjs +4 -4
  102. package/esm2022/core/common-behaviors/color.mjs +7 -7
  103. package/esm2022/core/common-behaviors/common-module.mjs +6 -5
  104. package/esm2022/core/common-behaviors/disabled.mjs +2 -1
  105. package/esm2022/core/common-behaviors/error-state.mjs +2 -1
  106. package/esm2022/core/common-behaviors/focus-monitor.mjs +37 -0
  107. package/esm2022/core/common-behaviors/hover.mjs +34 -0
  108. package/esm2022/core/common-behaviors/index.mjs +5 -1
  109. package/esm2022/core/common-behaviors/orientation.mjs +2 -0
  110. package/esm2022/core/common-behaviors/read-state.mjs +33 -0
  111. package/esm2022/core/common-behaviors/tabindex.mjs +2 -1
  112. package/esm2022/core/error/error-state-matcher.mjs +9 -9
  113. package/esm2022/core/form-field/field-sizing-content.mjs +8 -5
  114. package/esm2022/core/formatters/date/formatter.mjs +3 -3
  115. package/esm2022/core/formatters/date/formatter.pipe.mjs +78 -78
  116. package/esm2022/core/formatters/filesize/formatter.mjs +3 -3
  117. package/esm2022/core/formatters/index.mjs +4 -4
  118. package/esm2022/core/formatters/number/formatter.mjs +14 -14
  119. package/esm2022/core/forms/forms-module.mjs +4 -4
  120. package/esm2022/core/forms/forms.directive.mjs +6 -6
  121. package/esm2022/core/highlight/highlight.pipe.mjs +3 -3
  122. package/esm2022/core/highlight/index.mjs +4 -4
  123. package/esm2022/core/line/line.mjs +7 -7
  124. package/esm2022/core/locales/en-US.mjs +105 -1
  125. package/esm2022/core/locales/es-LA.mjs +114 -10
  126. package/esm2022/core/locales/formatters.mjs +1 -73
  127. package/esm2022/core/locales/index.mjs +1 -3
  128. package/esm2022/core/locales/locale-service.mjs +5 -11
  129. package/esm2022/core/locales/locale-service.module.mjs +4 -4
  130. package/esm2022/core/locales/pt-BR.mjs +123 -19
  131. package/esm2022/core/locales/ru-RU.mjs +119 -1
  132. package/esm2022/core/locales/tk-TM.mjs +128 -24
  133. package/esm2022/core/locales/types.mjs +1 -1
  134. package/esm2022/core/navbar/rectangle-item.mjs +7 -6
  135. package/esm2022/core/option/action-container.mjs +3 -3
  136. package/esm2022/core/option/action.mjs +4 -4
  137. package/esm2022/core/option/optgroup.mjs +3 -3
  138. package/esm2022/core/option/option-module.mjs +4 -4
  139. package/esm2022/core/option/option.mjs +13 -9
  140. package/esm2022/core/pop-up/constants.mjs +2 -1
  141. package/esm2022/core/pop-up/pop-up-trigger.mjs +7 -6
  142. package/esm2022/core/pop-up/pop-up.mjs +4 -4
  143. package/esm2022/core/select/common.mjs +35 -19
  144. package/esm2022/core/select/constants.mjs +6 -1
  145. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +3 -3
  146. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.module.mjs +4 -4
  147. package/esm2022/core/services/measure-scrollbar.service.mjs +3 -3
  148. package/esm2022/core/services/theme.service.mjs +3 -3
  149. package/esm2022/core/utils/dom.mjs +2 -8
  150. package/esm2022/core/version.mjs +2 -2
  151. package/esm2022/datepicker/calendar-body.component.mjs +3 -3
  152. package/esm2022/datepicker/calendar-header.component.mjs +7 -6
  153. package/esm2022/datepicker/calendar.component.mjs +3 -3
  154. package/esm2022/datepicker/datepicker-input.directive.mjs +6 -6
  155. package/esm2022/datepicker/datepicker-intl.mjs +3 -3
  156. package/esm2022/datepicker/datepicker-module.mjs +11 -8
  157. package/esm2022/datepicker/datepicker-toggle.component.mjs +9 -9
  158. package/esm2022/datepicker/datepicker.component.mjs +6 -6
  159. package/esm2022/datepicker/month-view.component.mjs +3 -3
  160. package/esm2022/divider/divider.component.mjs +4 -4
  161. package/esm2022/divider/divider.module.mjs +4 -4
  162. package/esm2022/dl/dl.component.mjs +9 -9
  163. package/esm2022/dl/dl.module.mjs +4 -4
  164. package/esm2022/dropdown/dropdown-content.directive.mjs +3 -3
  165. package/esm2022/dropdown/dropdown-item.component.mjs +5 -5
  166. package/esm2022/dropdown/dropdown-trigger.directive.mjs +5 -5
  167. package/esm2022/dropdown/dropdown.component.mjs +18 -8
  168. package/esm2022/dropdown/dropdown.module.mjs +14 -10
  169. package/esm2022/dynamic-translation/dynamic-translation.mjs +9 -9
  170. package/esm2022/dynamic-translation/module.mjs +4 -4
  171. package/esm2022/ellipsis-center/ellipsis-center.directive.mjs +12 -9
  172. package/esm2022/empty-state/empty-state.component.mjs +15 -15
  173. package/esm2022/empty-state/empty-state.module.mjs +4 -4
  174. package/esm2022/file-upload/file-drop.mjs +7 -5
  175. package/esm2022/file-upload/file-upload.mjs +1 -1
  176. package/esm2022/file-upload/file-upload.module.mjs +4 -4
  177. package/esm2022/file-upload/multiple-file-upload.component.mjs +20 -13
  178. package/esm2022/file-upload/single-file-upload.component.mjs +19 -6
  179. package/esm2022/filter-bar/filter-bar-button.mjs +3 -3
  180. package/esm2022/filter-bar/filter-bar.mjs +8 -4
  181. package/esm2022/filter-bar/filter-bar.module.mjs +4 -4
  182. package/esm2022/filter-bar/filter-refresher.mjs +3 -3
  183. package/esm2022/filter-bar/filter-reset.mjs +3 -3
  184. package/esm2022/filter-bar/filter-search.mjs +6 -6
  185. package/esm2022/filter-bar/filters.mjs +12 -7
  186. package/esm2022/filter-bar/pipe-add.mjs +6 -5
  187. package/esm2022/filter-bar/pipe.directive.mjs +3 -3
  188. package/esm2022/filter-bar/pipes/base-pipe.mjs +17 -9
  189. package/esm2022/filter-bar/pipes/pipe-button.mjs +3 -3
  190. package/esm2022/filter-bar/pipes/pipe-date.mjs +6 -6
  191. package/esm2022/filter-bar/pipes/pipe-datetime.mjs +6 -6
  192. package/esm2022/filter-bar/pipes/pipe-multi-select.mjs +15 -9
  193. package/esm2022/filter-bar/pipes/pipe-multi-tree-select.mjs +12 -7
  194. package/esm2022/filter-bar/pipes/pipe-readonly.mjs +6 -6
  195. package/esm2022/filter-bar/pipes/pipe-select.mjs +6 -6
  196. package/esm2022/filter-bar/pipes/pipe-state.mjs +3 -3
  197. package/esm2022/filter-bar/pipes/pipe-text.mjs +6 -6
  198. package/esm2022/filter-bar/pipes/pipe-title.mjs +26 -21
  199. package/esm2022/filter-bar/pipes/pipe-tree-select.mjs +6 -6
  200. package/esm2022/form-field/cleaner.mjs +3 -3
  201. package/esm2022/form-field/error.mjs +3 -3
  202. package/esm2022/form-field/fieldset.mjs +11 -11
  203. package/esm2022/form-field/form-field.mjs +11 -11
  204. package/esm2022/form-field/form-field.module.mjs +4 -4
  205. package/esm2022/form-field/hint.mjs +3 -3
  206. package/esm2022/form-field/label.mjs +3 -3
  207. package/esm2022/form-field/password-hint.mjs +3 -3
  208. package/esm2022/form-field/password-toggle.mjs +7 -7
  209. package/esm2022/form-field/prefix.mjs +3 -3
  210. package/esm2022/form-field/reactive-password-hint.mjs +3 -3
  211. package/esm2022/form-field/stepper.mjs +44 -13
  212. package/esm2022/form-field/suffix.mjs +3 -3
  213. package/esm2022/form-field/validate.directive.mjs +3 -3
  214. package/esm2022/icon/icon-button.component.mjs +3 -3
  215. package/esm2022/icon/icon-item.component.mjs +3 -3
  216. package/esm2022/icon/icon.component.mjs +4 -4
  217. package/esm2022/icon/icon.module.mjs +4 -4
  218. package/esm2022/inline-edit/index.mjs +3 -0
  219. package/esm2022/inline-edit/inline-edit.mjs +382 -0
  220. package/esm2022/inline-edit/koobiq-components-inline-edit.mjs +5 -0
  221. package/esm2022/inline-edit/module.mjs +25 -0
  222. package/esm2022/input/input-number-validators.mjs +6 -6
  223. package/esm2022/input/input-number.mjs +10 -9
  224. package/esm2022/input/input-password.mjs +4 -4
  225. package/esm2022/input/input.mjs +7 -7
  226. package/esm2022/input/input.module.mjs +11 -8
  227. package/esm2022/link/link.component.mjs +6 -6
  228. package/esm2022/link/link.module.mjs +4 -4
  229. package/esm2022/list/list-selection.component.mjs +40 -24
  230. package/esm2022/list/list.component.mjs +6 -6
  231. package/esm2022/list/list.module.mjs +4 -4
  232. package/esm2022/loader-overlay/loader-overlay.component.mjs +13 -13
  233. package/esm2022/loader-overlay/loader-overlay.module.mjs +4 -4
  234. package/esm2022/markdown/markdown.component.mjs +10 -10
  235. package/esm2022/markdown/markdown.module.mjs +4 -4
  236. package/esm2022/markdown/markdown.service.mjs +3 -3
  237. package/esm2022/modal/css-unit.pipe.mjs +3 -3
  238. package/esm2022/modal/modal-control.service.mjs +3 -3
  239. package/esm2022/modal/modal-util.mjs +7 -3
  240. package/esm2022/modal/modal.component.mjs +5 -5
  241. package/esm2022/modal/modal.directive.mjs +12 -12
  242. package/esm2022/modal/modal.module.mjs +4 -4
  243. package/esm2022/modal/modal.service.mjs +5 -4
  244. package/esm2022/navbar/navbar-item.component.mjs +53 -44
  245. package/esm2022/navbar/navbar.component.mjs +17 -13
  246. package/esm2022/navbar/navbar.module.mjs +4 -4
  247. package/esm2022/navbar/vertical-navbar.component.mjs +6 -6
  248. package/esm2022/navbar-ic/navbar-ic-header.mjs +25 -9
  249. package/esm2022/navbar-ic/navbar-ic-item.mjs +35 -44
  250. package/esm2022/navbar-ic/navbar-ic.animation.mjs +10 -2
  251. package/esm2022/navbar-ic/navbar-ic.mjs +50 -21
  252. package/esm2022/navbar-ic/navbar-ic.module.mjs +4 -4
  253. package/esm2022/notification-center/index.mjs +2 -0
  254. package/esm2022/notification-center/koobiq-components-notification-center.mjs +5 -0
  255. package/esm2022/notification-center/notification-center-animations.mjs +18 -0
  256. package/esm2022/notification-center/notification-center.mjs +353 -0
  257. package/esm2022/notification-center/notification-center.module.mjs +38 -0
  258. package/esm2022/notification-center/notification-center.service.mjs +127 -0
  259. package/esm2022/notification-center/notification-item.mjs +70 -0
  260. package/esm2022/notification-center/public-api.mjs +5 -0
  261. package/esm2022/overflow-items/module.mjs +4 -4
  262. package/esm2022/overflow-items/overflow-items.mjs +95 -41
  263. package/esm2022/popover/popover-confirm.component.mjs +10 -10
  264. package/esm2022/popover/popover.component.mjs +31 -13
  265. package/esm2022/popover/popover.module.mjs +4 -4
  266. package/esm2022/progress-bar/progress-bar.component.mjs +9 -9
  267. package/esm2022/progress-bar/progress-bar.module.mjs +4 -4
  268. package/esm2022/progress-spinner/progress-spinner.component.mjs +9 -9
  269. package/esm2022/progress-spinner/progress-spinner.module.mjs +4 -4
  270. package/esm2022/radio/radio.component.mjs +6 -6
  271. package/esm2022/radio/radio.module.mjs +4 -4
  272. package/esm2022/resizer/index.mjs +3 -0
  273. package/esm2022/resizer/koobiq-components-resizer.mjs +5 -0
  274. package/esm2022/resizer/module.mjs +17 -0
  275. package/esm2022/resizer/resizer.mjs +135 -0
  276. package/esm2022/risk-level/risk-level.component.mjs +3 -3
  277. package/esm2022/risk-level/risk-level.module.mjs +4 -4
  278. package/esm2022/scrollbar/scrollbar.component.mjs +3 -3
  279. package/esm2022/scrollbar/scrollbar.directive.mjs +7 -6
  280. package/esm2022/scrollbar/scrollbar.module.mjs +4 -4
  281. package/esm2022/search-expandable/index.mjs +2 -0
  282. package/esm2022/search-expandable/koobiq-components-search-expandable.mjs +5 -0
  283. package/esm2022/search-expandable/public-api.mjs +3 -0
  284. package/esm2022/search-expandable/search-expandable.mjs +177 -0
  285. package/esm2022/search-expandable/search-expandable.module.mjs +18 -0
  286. package/esm2022/select/select-option.directive.mjs +3 -3
  287. package/esm2022/select/select.component.mjs +38 -23
  288. package/esm2022/select/select.module.mjs +12 -8
  289. package/esm2022/sidebar/sidebar.component.mjs +9 -9
  290. package/esm2022/sidebar/sidebar.module.mjs +4 -4
  291. package/esm2022/sidepanel/sidepanel-container.component.mjs +5 -5
  292. package/esm2022/sidepanel/sidepanel-directives.mjs +15 -15
  293. package/esm2022/sidepanel/sidepanel.module.mjs +4 -4
  294. package/esm2022/sidepanel/sidepanel.service.mjs +3 -3
  295. package/esm2022/split-button/index.mjs +2 -0
  296. package/esm2022/split-button/koobiq-components-split-button.mjs +5 -0
  297. package/esm2022/split-button/public-api.mjs +3 -0
  298. package/esm2022/split-button/split-button.mjs +133 -0
  299. package/esm2022/split-button/split-button.module.mjs +18 -0
  300. package/esm2022/splitter/splitter.component.mjs +13 -13
  301. package/esm2022/splitter/splitter.module.mjs +4 -4
  302. package/esm2022/table/table.component.mjs +6 -6
  303. package/esm2022/table/table.module.mjs +4 -4
  304. package/esm2022/tabs/paginated-tab-header.mjs +4 -4
  305. package/esm2022/tabs/tab-body.component.mjs +6 -6
  306. package/esm2022/tabs/tab-content.directive.mjs +3 -3
  307. package/esm2022/tabs/tab-group.component.mjs +15 -15
  308. package/esm2022/tabs/tab-header.component.mjs +4 -4
  309. package/esm2022/tabs/tab-label-wrapper.directive.mjs +4 -4
  310. package/esm2022/tabs/tab-label.directive.mjs +3 -3
  311. package/esm2022/tabs/tab-nav-bar.mjs +10 -10
  312. package/esm2022/tabs/tab.component.mjs +3 -3
  313. package/esm2022/tabs/tabs.module.mjs +4 -4
  314. package/esm2022/tags/tag-input.mjs +38 -36
  315. package/esm2022/tags/tag-list.component.mjs +281 -250
  316. package/esm2022/tags/tag.component.mjs +206 -140
  317. package/esm2022/tags/tag.module.mjs +4 -4
  318. package/esm2022/textarea/textarea.component.mjs +5 -5
  319. package/esm2022/textarea/textarea.module.mjs +7 -6
  320. package/esm2022/time-range/constants.mjs +42 -0
  321. package/esm2022/time-range/index.mjs +8 -0
  322. package/esm2022/time-range/koobiq-components-time-range.mjs +5 -0
  323. package/esm2022/time-range/module.mjs +36 -0
  324. package/esm2022/time-range/time-range-editor.mjs +224 -0
  325. package/esm2022/time-range/time-range-title-as-form-field.mjs +60 -0
  326. package/esm2022/time-range/time-range-title.mjs +112 -0
  327. package/esm2022/time-range/time-range.mjs +234 -0
  328. package/esm2022/time-range/time-range.service.mjs +126 -0
  329. package/esm2022/time-range/types.mjs +2 -0
  330. package/esm2022/timepicker/timepicker.directive.mjs +4 -4
  331. package/esm2022/timepicker/timepicker.module.mjs +9 -8
  332. package/esm2022/timezone/cities-by-filter.pipe.mjs +3 -3
  333. package/esm2022/timezone/timezone-option.component.mjs +5 -5
  334. package/esm2022/timezone/timezone-option.directive.mjs +3 -3
  335. package/esm2022/timezone/timezone-select.component.mjs +9 -9
  336. package/esm2022/timezone/timezone.module.mjs +10 -8
  337. package/esm2022/timezone/utc-offset.pipe.mjs +3 -3
  338. package/esm2022/title/title.directive.mjs +9 -5
  339. package/esm2022/title/title.module.mjs +4 -4
  340. package/esm2022/toast/toast-container.component.mjs +3 -3
  341. package/esm2022/toast/toast.component.mjs +20 -14
  342. package/esm2022/toast/toast.module.mjs +4 -4
  343. package/esm2022/toast/toast.service.mjs +5 -4
  344. package/esm2022/toast/toast.type.mjs +1 -1
  345. package/esm2022/toggle/toggle.component.mjs +6 -6
  346. package/esm2022/toggle/toggle.module.mjs +4 -4
  347. package/esm2022/tooltip/tooltip.component.mjs +19 -19
  348. package/esm2022/tooltip/tooltip.module.mjs +4 -4
  349. package/esm2022/top-bar/module.mjs +4 -4
  350. package/esm2022/top-bar/top-bar.mjs +11 -11
  351. package/esm2022/tree/node.mjs +3 -3
  352. package/esm2022/tree/outlet.mjs +3 -3
  353. package/esm2022/tree/padding.directive.mjs +3 -3
  354. package/esm2022/tree/toggle.mjs +16 -12
  355. package/esm2022/tree/tree-base.mjs +7 -7
  356. package/esm2022/tree/tree-option.component.mjs +11 -14
  357. package/esm2022/tree/tree-selection.component.mjs +26 -16
  358. package/esm2022/tree/tree.mjs +3 -3
  359. package/esm2022/tree/tree.module.mjs +4 -4
  360. package/esm2022/tree-select/tree-select.component.mjs +142 -84
  361. package/esm2022/tree-select/tree-select.module.mjs +11 -8
  362. package/esm2022/username/module.mjs +4 -4
  363. package/esm2022/username/username.mjs +15 -15
  364. package/esm2022/username/username.pipe.mjs +8 -8
  365. package/fesm2022/koobiq-components-accordion.mjs +20 -20
  366. package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
  367. package/fesm2022/koobiq-components-actions-panel.mjs +10 -10
  368. package/fesm2022/koobiq-components-alert.mjs +16 -16
  369. package/fesm2022/koobiq-components-app-switcher.mjs +704 -0
  370. package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -0
  371. package/fesm2022/koobiq-components-autocomplete.mjs +16 -16
  372. package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
  373. package/fesm2022/koobiq-components-badge.mjs +14 -14
  374. package/fesm2022/koobiq-components-badge.mjs.map +1 -1
  375. package/fesm2022/koobiq-components-breadcrumbs.mjs +61 -52
  376. package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
  377. package/fesm2022/koobiq-components-button-toggle.mjs +12 -12
  378. package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
  379. package/fesm2022/koobiq-components-button.mjs +18 -16
  380. package/fesm2022/koobiq-components-button.mjs.map +1 -1
  381. package/fesm2022/koobiq-components-checkbox.mjs +10 -10
  382. package/fesm2022/koobiq-components-clamped-text.mjs +7 -7
  383. package/fesm2022/koobiq-components-code-block.mjs +18 -13
  384. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  385. package/fesm2022/koobiq-components-content-panel.mjs +31 -165
  386. package/fesm2022/koobiq-components-content-panel.mjs.map +1 -1
  387. package/fesm2022/koobiq-components-core.mjs +962 -581
  388. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  389. package/fesm2022/koobiq-components-datepicker.mjs +47 -44
  390. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  391. package/fesm2022/koobiq-components-divider.mjs +8 -8
  392. package/fesm2022/koobiq-components-divider.mjs.map +1 -1
  393. package/fesm2022/koobiq-components-dl.mjs +13 -13
  394. package/fesm2022/koobiq-components-dropdown.mjs +41 -27
  395. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  396. package/fesm2022/koobiq-components-dynamic-translation.mjs +13 -13
  397. package/fesm2022/koobiq-components-ellipsis-center.mjs +11 -8
  398. package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
  399. package/fesm2022/koobiq-components-empty-state.mjs +19 -19
  400. package/fesm2022/koobiq-components-file-upload.mjs +45 -25
  401. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  402. package/fesm2022/koobiq-components-filter-bar.mjs +147 -114
  403. package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
  404. package/fesm2022/koobiq-components-form-field.mjs +100 -73
  405. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  406. package/fesm2022/koobiq-components-icon.mjs +13 -13
  407. package/fesm2022/koobiq-components-icon.mjs.map +1 -1
  408. package/fesm2022/koobiq-components-inline-edit.mjs +411 -0
  409. package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -0
  410. package/fesm2022/koobiq-components-input.mjs +34 -31
  411. package/fesm2022/koobiq-components-input.mjs.map +1 -1
  412. package/fesm2022/koobiq-components-link.mjs +10 -10
  413. package/fesm2022/koobiq-components-link.mjs.map +1 -1
  414. package/fesm2022/koobiq-components-list.mjs +49 -33
  415. package/fesm2022/koobiq-components-list.mjs.map +1 -1
  416. package/fesm2022/koobiq-components-loader-overlay.mjs +16 -16
  417. package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
  418. package/fesm2022/koobiq-components-markdown.mjs +16 -16
  419. package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
  420. package/fesm2022/koobiq-components-modal.mjs +36 -31
  421. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  422. package/fesm2022/koobiq-components-navbar-ic.mjs +122 -81
  423. package/fesm2022/koobiq-components-navbar-ic.mjs.map +1 -1
  424. package/fesm2022/koobiq-components-navbar.mjs +77 -64
  425. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  426. package/fesm2022/koobiq-components-notification-center.mjs +586 -0
  427. package/fesm2022/koobiq-components-notification-center.mjs.map +1 -0
  428. package/fesm2022/koobiq-components-overflow-items.mjs +98 -44
  429. package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
  430. package/fesm2022/koobiq-components-popover.mjs +43 -25
  431. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  432. package/fesm2022/koobiq-components-progress-bar.mjs +13 -13
  433. package/fesm2022/koobiq-components-progress-spinner.mjs +13 -13
  434. package/fesm2022/koobiq-components-radio.mjs +10 -10
  435. package/fesm2022/koobiq-components-resizer.mjs +156 -0
  436. package/fesm2022/koobiq-components-resizer.mjs.map +1 -0
  437. package/fesm2022/koobiq-components-risk-level.mjs +7 -7
  438. package/fesm2022/koobiq-components-scrollbar.mjs +13 -12
  439. package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
  440. package/fesm2022/koobiq-components-search-expandable.mjs +199 -0
  441. package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -0
  442. package/fesm2022/koobiq-components-select.mjs +51 -33
  443. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  444. package/fesm2022/koobiq-components-sidebar.mjs +13 -13
  445. package/fesm2022/koobiq-components-sidepanel.mjs +26 -26
  446. package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
  447. package/fesm2022/koobiq-components-split-button.mjs +155 -0
  448. package/fesm2022/koobiq-components-split-button.mjs.map +1 -0
  449. package/fesm2022/koobiq-components-splitter.mjs +16 -16
  450. package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
  451. package/fesm2022/koobiq-components-table.mjs +10 -10
  452. package/fesm2022/koobiq-components-tabs.mjs +52 -52
  453. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  454. package/fesm2022/koobiq-components-tags.mjs +522 -428
  455. package/fesm2022/koobiq-components-tags.mjs.map +1 -1
  456. package/fesm2022/koobiq-components-textarea.mjs +10 -10
  457. package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
  458. package/fesm2022/koobiq-components-time-range.mjs +809 -0
  459. package/fesm2022/koobiq-components-time-range.mjs.map +1 -0
  460. package/fesm2022/koobiq-components-timepicker.mjs +11 -11
  461. package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
  462. package/fesm2022/koobiq-components-timezone.mjs +31 -29
  463. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  464. package/fesm2022/koobiq-components-title.mjs +12 -8
  465. package/fesm2022/koobiq-components-title.mjs.map +1 -1
  466. package/fesm2022/koobiq-components-toast.mjs +28 -21
  467. package/fesm2022/koobiq-components-toast.mjs.map +1 -1
  468. package/fesm2022/koobiq-components-toggle.mjs +9 -9
  469. package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
  470. package/fesm2022/koobiq-components-tooltip.mjs +22 -22
  471. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
  472. package/fesm2022/koobiq-components-top-bar.mjs +15 -15
  473. package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
  474. package/fesm2022/koobiq-components-tree-select.mjs +151 -91
  475. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  476. package/fesm2022/koobiq-components-tree.mjs +72 -61
  477. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  478. package/fesm2022/koobiq-components-username.mjs +27 -27
  479. package/file-upload/_file-upload-theme.scss +33 -35
  480. package/file-upload/file-upload-tokens.scss +1 -2
  481. package/file-upload/file-upload.d.ts +1 -1
  482. package/file-upload/file-upload.scss +4 -7
  483. package/file-upload/multiple-file-upload.component.d.ts +2 -1
  484. package/file-upload/multiple-file-upload.component.scss +12 -14
  485. package/file-upload/single-file-upload.component.d.ts +2 -0
  486. package/file-upload/single-file-upload.component.scss +5 -7
  487. package/filter-bar/filter-bar.d.ts +3 -1
  488. package/filter-bar/filter-search.scss +1 -3
  489. package/filter-bar/filters.d.ts +1 -0
  490. package/filter-bar/pipes/base-pipe.d.ts +6 -2
  491. package/filter-bar/pipes/base-pipe.scss +3 -3
  492. package/filter-bar/pipes/pipe-date.scss +4 -1
  493. package/filter-bar/pipes/pipe-title.d.ts +2 -0
  494. package/form-field/fieldset-tokens.scss +1 -0
  495. package/form-field/form-field-tokens.scss +1 -1
  496. package/form-field/form-field.d.ts +1 -1
  497. package/form-field/form-field.scss +7 -7
  498. package/form-field/password-toggle.d.ts +1 -1
  499. package/form-field/stepper.d.ts +28 -6
  500. package/icon/icon.component.d.ts +2 -2
  501. package/inline-edit/index.d.ts +2 -0
  502. package/inline-edit/inline-edit-tokens.scss +8 -0
  503. package/inline-edit/inline-edit.d.ts +140 -0
  504. package/inline-edit/inline-edit.scss +208 -0
  505. package/inline-edit/module.d.ts +7 -0
  506. package/input/input-number.d.ts +1 -1
  507. package/input/input-password.d.ts +2 -2
  508. package/input/input.d.ts +2 -2
  509. package/input/input.module.d.ts +2 -1
  510. package/link/link.component.d.ts +3 -3
  511. package/list/list-selection.component.d.ts +13 -2
  512. package/loader-overlay/loader-overlay.component.d.ts +1 -1
  513. package/markdown/_markdown-theme.scss +1 -2
  514. package/markdown/markdown-tokens.scss +1 -0
  515. package/markdown/markdown.scss +10 -4
  516. package/modal/modal-tokens.scss +2 -1
  517. package/modal/modal-util.d.ts +5 -2
  518. package/modal/modal.component.d.ts +1 -1
  519. package/modal/modal.scss +3 -4
  520. package/navbar/_navbar-item_vertical.scss +10 -0
  521. package/navbar/navbar-brand.scss +5 -2
  522. package/navbar/navbar-item.component.d.ts +3 -2
  523. package/navbar/navbar.component.d.ts +4 -4
  524. package/navbar/vertical-navbar.component.d.ts +2 -2
  525. package/navbar/vertical-navbar.scss +1 -0
  526. package/navbar-ic/navbar-ic-header.d.ts +4 -3
  527. package/navbar-ic/navbar-ic-header.scss +0 -4
  528. package/navbar-ic/navbar-ic-item.d.ts +3 -2
  529. package/navbar-ic/navbar-ic-item.scss +0 -4
  530. package/navbar-ic/navbar-ic.animation.d.ts +1 -0
  531. package/navbar-ic/navbar-ic.d.ts +11 -2
  532. package/notification-center/_notification-center-theme.scss +27 -0
  533. package/notification-center/index.d.ts +1 -0
  534. package/notification-center/notification-center-animations.d.ts +5 -0
  535. package/notification-center/notification-center.d.ts +153 -0
  536. package/notification-center/notification-center.module.d.ts +7 -0
  537. package/notification-center/notification-center.scss +126 -0
  538. package/notification-center/notification-center.service.d.ts +72 -0
  539. package/notification-center/notification-item.d.ts +27 -0
  540. package/notification-center/notification-item.scss +157 -0
  541. package/notification-center/public-api.d.ts +4 -0
  542. package/overflow-items/overflow-items.d.ts +23 -9
  543. package/package.json +46 -4
  544. package/popover/popover-tokens.scss +1 -0
  545. package/popover/popover.component.d.ts +9 -1
  546. package/popover/popover.scss +18 -11
  547. package/prebuilt-themes/dark-theme.css +1 -1
  548. package/prebuilt-themes/light-theme.css +1 -1
  549. package/prebuilt-themes/theme.css +1 -1
  550. package/resizer/index.d.ts +2 -0
  551. package/resizer/module.d.ts +7 -0
  552. package/{content-panel/resizable.d.ts → resizer/resizer.d.ts} +18 -13
  553. package/schematics/collection.json +5 -0
  554. package/schematics/migrations/icons-replacement/README.md +93 -0
  555. package/schematics/migrations/icons-replacement/data.js +92 -0
  556. package/schematics/migrations/icons-replacement/index.js +84 -0
  557. package/schematics/migrations/icons-replacement/schema.json +32 -0
  558. package/schematics/ng-add/index.js +6 -6
  559. package/scrollbar/scrollbar.component.scss +2 -3
  560. package/search-expandable/index.d.ts +1 -0
  561. package/search-expandable/public-api.d.ts +2 -0
  562. package/search-expandable/search-expandable.d.ts +70 -0
  563. package/search-expandable/search-expandable.module.d.ts +7 -0
  564. package/search-expandable/search-expandable.scss +21 -0
  565. package/select/select.component.d.ts +38 -3
  566. package/select/select.module.d.ts +2 -1
  567. package/select/select.scss +1 -17
  568. package/sidepanel/sidepanel-tokens.scss +2 -0
  569. package/sidepanel/sidepanel.scss +2 -0
  570. package/split-button/_split-button-theme.scss +114 -0
  571. package/split-button/index.d.ts +1 -0
  572. package/split-button/public-api.d.ts +2 -0
  573. package/split-button/split-button.d.ts +37 -0
  574. package/split-button/split-button.module.d.ts +7 -0
  575. package/split-button/split-button.scss +72 -0
  576. package/splitter/splitter.component.d.ts +5 -5
  577. package/tabs/paginated-tab-header.d.ts +1 -1
  578. package/tabs/tab-header.component.d.ts +2 -2
  579. package/tabs/tab-label-wrapper.directive.d.ts +2 -2
  580. package/tabs/tab-nav-bar.d.ts +3 -3
  581. package/tags/_tag-theme.scss +21 -15
  582. package/tags/tag-input.d.ts +18 -7
  583. package/tags/tag-list.component.d.ts +175 -64
  584. package/tags/tag-list.scss +24 -14
  585. package/tags/tag-tokens.scss +17 -1
  586. package/tags/tag.component.d.ts +91 -27
  587. package/tags/tag.scss +9 -0
  588. package/textarea/textarea-tokens.scss +6 -1
  589. package/textarea/textarea.component.d.ts +2 -2
  590. package/textarea/textarea.module.d.ts +2 -1
  591. package/textarea/textarea.scss +4 -0
  592. package/time-range/constants.d.ts +19 -0
  593. package/time-range/index.d.ts +7 -0
  594. package/time-range/module.d.ts +10 -0
  595. package/time-range/time-range-editor.d.ts +65 -0
  596. package/time-range/time-range-title-as-form-field.d.ts +41 -0
  597. package/time-range/time-range-title.d.ts +18 -0
  598. package/time-range/time-range.d.ts +78 -0
  599. package/time-range/time-range.scss +66 -0
  600. package/time-range/time-range.service.d.ts +25 -0
  601. package/time-range/types.d.ts +69 -0
  602. package/timepicker/timepicker.directive.d.ts +2 -2
  603. package/timepicker/timepicker.module.d.ts +2 -1
  604. package/timezone/timezone-option.component.scss +6 -0
  605. package/timezone/timezone.module.d.ts +1 -1
  606. package/toast/toast.component.d.ts +6 -4
  607. package/toast/toast.component.scss +11 -1
  608. package/toast/toast.service.d.ts +1 -0
  609. package/toast/toast.type.d.ts +1 -0
  610. package/toggle/_toggle-theme.scss +8 -5
  611. package/toggle/toggle-tokens.scss +0 -1
  612. package/toggle/toggle.scss +11 -15
  613. package/top-bar/top-bar-tokens.scss +1 -1
  614. package/top-bar/top-bar.scss +3 -0
  615. package/tree/toggle.d.ts +1 -1
  616. package/tree/tree-base.d.ts +2 -2
  617. package/tree/tree-option.component.d.ts +2 -1
  618. package/tree/tree-selection.component.d.ts +12 -3
  619. package/tree-select/tree-select.component.d.ts +49 -8
  620. package/tree-select/tree-select.module.d.ts +2 -1
  621. package/tree-select/tree-select.scss +4 -0
  622. package/core/locales/fa-IR.d.ts +0 -100
  623. package/core/locales/zh-CN.d.ts +0 -100
  624. package/esm2022/content-panel/resizable.mjs +0 -138
  625. package/esm2022/core/locales/fa-IR.mjs +0 -99
  626. package/esm2022/core/locales/zh-CN.mjs +0 -99
@@ -9,15 +9,15 @@ const COMPONENTS = [
9
9
  KbqIconItem
10
10
  ];
11
11
  export class KbqIconModule {
12
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqIconModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
13
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: KbqIconModule, imports: [KbqIcon,
12
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqIconModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
13
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: KbqIconModule, imports: [KbqIcon,
14
14
  KbqIconButton,
15
15
  KbqIconItem], exports: [KbqIcon,
16
16
  KbqIconButton,
17
17
  KbqIconItem] }); }
18
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqIconModule }); }
18
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqIconModule }); }
19
19
  }
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqIconModule, decorators: [{
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqIconModule, decorators: [{
21
21
  type: NgModule,
22
22
  args: [{
23
23
  imports: COMPONENTS,
@@ -0,0 +1,3 @@
1
+ export * from './inline-edit';
2
+ export * from './module';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2lubGluZS1lZGl0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9pbmxpbmUtZWRpdCc7XG5leHBvcnQgKiBmcm9tICcuL21vZHVsZSc7XG4iXX0=
@@ -0,0 +1,382 @@
1
+ import { animate, style, transition, trigger } from '@angular/animations';
2
+ import { CdkMonitorFocus, CdkTrapFocus } from '@angular/cdk/a11y';
3
+ import { hasModifierKey } from '@angular/cdk/keycodes';
4
+ import { CdkConnectedOverlay, CdkOverlayOrigin, Overlay } from '@angular/cdk/overlay';
5
+ import { DOCUMENT } from '@angular/common';
6
+ import { booleanAttribute, ChangeDetectionStrategy, Component, computed, contentChild, Directive, ElementRef, inject, input, numberAttribute, output, signal, viewChild, viewChildren, ViewEncapsulation } from '@angular/core';
7
+ import { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';
8
+ import { AbstractControl, NgControl } from '@angular/forms';
9
+ import { KbqAutocompleteTrigger } from '@koobiq/components/autocomplete';
10
+ import { KbqButtonModule } from '@koobiq/components/button';
11
+ import { KbqAnimationCurves, KbqAnimationDurations, KbqComponentColors, KbqFocusMonitor, PopUpPlacements } from '@koobiq/components/core';
12
+ import { KbqDropdownTrigger } from '@koobiq/components/dropdown';
13
+ import { KbqFormField, KbqLabel } from '@koobiq/components/form-field';
14
+ import { KbqIcon } from '@koobiq/components/icon';
15
+ import { KbqSelect } from '@koobiq/components/select';
16
+ import { KbqTooltipTrigger } from '@koobiq/components/tooltip';
17
+ import { KbqTreeSelect } from '@koobiq/components/tree-select';
18
+ import { skip } from 'rxjs';
19
+ import { takeUntil } from 'rxjs/operators';
20
+ import * as i0 from "@angular/core";
21
+ import * as i1 from "@koobiq/components/core";
22
+ import * as i2 from "@koobiq/components/button";
23
+ const KBQ_INLINE_EDIT_ACTION_BUTTONS_ANIMATION = trigger('panelAnimation', [
24
+ transition(':enter', [
25
+ style({ transform: 'translateY(100%)', opacity: 0 }),
26
+ animate(`${KbqAnimationDurations.Instant} ${KbqAnimationCurves.DecelerationCurve}`, style({ transform: 'translateY(0%)', opacity: 1 }))
27
+ ])
28
+ ]);
29
+ const baseClass = 'kbq-inline-edit';
30
+ /** @docs-private */
31
+ export class KbqFocusRegionItem {
32
+ constructor() {
33
+ this.tabOut = output();
34
+ this.isFocused = false;
35
+ }
36
+ onTabOut(event) {
37
+ if (this.isFocused) {
38
+ this.tabOut.emit(event);
39
+ }
40
+ this.isFocused = !this.isFocused;
41
+ }
42
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqFocusRegionItem, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
43
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: KbqFocusRegionItem, isStandalone: true, selector: "[kbqFocusRegionItem]", outputs: { tabOut: "tabOut" }, host: { listeners: { "focusin": "isFocused = true", "keydown.tab": "onTabOut($event)", "keydown.shift.tab": "onTabOut($event)" } }, exportAs: ["kbqFocusRegionItem"], ngImport: i0 }); }
44
+ }
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqFocusRegionItem, decorators: [{
46
+ type: Directive,
47
+ args: [{
48
+ standalone: true,
49
+ selector: '[kbqFocusRegionItem]',
50
+ exportAs: 'kbqFocusRegionItem',
51
+ host: {
52
+ '(focusin)': 'isFocused = true',
53
+ '(keydown.tab)': 'onTabOut($event)',
54
+ '(keydown.shift.tab)': 'onTabOut($event)'
55
+ }
56
+ }]
57
+ }] });
58
+ /** Directive for easy using styles of inline edit placeholder publicly. */
59
+ export class KbqInlineEditPlaceholder {
60
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqInlineEditPlaceholder, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
61
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: KbqInlineEditPlaceholder, isStandalone: true, selector: "[kbqInlineEditPlaceholder]", host: { classAttribute: "kbq-inline-edit__placeholder" }, exportAs: ["kbqInlineEditPlaceholder"], ngImport: i0 }); }
62
+ }
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqInlineEditPlaceholder, decorators: [{
64
+ type: Directive,
65
+ args: [{
66
+ standalone: true,
67
+ selector: '[kbqInlineEditPlaceholder]',
68
+ exportAs: 'kbqInlineEditPlaceholder',
69
+ host: {
70
+ class: 'kbq-inline-edit__placeholder'
71
+ }
72
+ }]
73
+ }] });
74
+ /**
75
+ * This directive enhances element acting as dropdown trigger,
76
+ * visually indicating the active state with the `kbq-active` class.
77
+ * Also, it prevents click/keydown events from being propagated to disable mode toggling of parent component.
78
+ */
79
+ export class KbqInlineEditMenu {
80
+ constructor() {
81
+ /** @docs-private */
82
+ this.dropdownTrigger = inject(KbqDropdownTrigger, { optional: true });
83
+ }
84
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqInlineEditMenu, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
85
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: KbqInlineEditMenu, isStandalone: true, selector: "[kbqInlineEditMenu]", host: { attributes: { "role": "button" }, listeners: { "click": "$event.stopPropagation()", "keydown.enter": "$event.stopPropagation()", "keydown.space": "$event.stopPropagation()" }, properties: { "class.kbq-active": "dropdownTrigger?.opened" }, classAttribute: "kbq-inline-edit__menu" }, exportAs: ["kbqInlineEditMenu"], ngImport: i0 }); }
86
+ }
87
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqInlineEditMenu, decorators: [{
88
+ type: Directive,
89
+ args: [{
90
+ standalone: true,
91
+ selector: '[kbqInlineEditMenu]',
92
+ exportAs: 'kbqInlineEditMenu',
93
+ host: {
94
+ role: 'button',
95
+ class: 'kbq-inline-edit__menu',
96
+ '[class.kbq-active]': 'dropdownTrigger?.opened',
97
+ '(click)': '$event.stopPropagation()',
98
+ '(keydown.enter)': '$event.stopPropagation()',
99
+ '(keydown.space)': '$event.stopPropagation()'
100
+ }
101
+ }]
102
+ }] });
103
+ /**
104
+ * Customizable component that enables edit-in-place logic for specified control and it's view.
105
+ * This component is projecting edit/view mode templates and adds keyboard/pointer handlers.
106
+ * Edit mode opens in a positioned overlay that matches the view mode width or can be customized.
107
+ */
108
+ export class KbqInlineEdit {
109
+ constructor() {
110
+ this.elementRef = inject(ElementRef);
111
+ this.kbqFocusMonitor = inject(KbqFocusMonitor, { host: true });
112
+ this.overlay = inject(Overlay);
113
+ this.document = inject(DOCUMENT);
114
+ /**
115
+ * Whether to show save/cancel action buttons in edit mode.
116
+ * @default false
117
+ */
118
+ this.showActions = input(false, { transform: booleanAttribute });
119
+ /**
120
+ * Whether to automatically show validation error tooltips on save attempts.
121
+ * @default true
122
+ */
123
+ this.showTooltipOnError = input(true, { transform: booleanAttribute });
124
+ /** Custom validation tooltip message. */
125
+ this.validationTooltip = input();
126
+ /**
127
+ * Disables the component, preventing interaction and mode switching. Only allows menu dropdown.
128
+ * @default false
129
+ */
130
+ this.disabled = input(false, { transform: booleanAttribute });
131
+ /** Custom width in pixels for the edit mode overlay. Auto-calculated if not set. */
132
+ this.editModeWidth = input(undefined, { transform: numberAttribute });
133
+ /** User-defined tooltip placement */
134
+ this.tooltipPlacement = input();
135
+ /** Handler function to retrieve the current value */
136
+ this.getValueHandler = input();
137
+ /** Handler function to update the value */
138
+ this.setValueHandler = input();
139
+ /**
140
+ * Customizable function that checks if saving on enter available.
141
+ */
142
+ this.canSaveOnEnter = input((event) => hasModifierKey(event, 'ctrlKey', 'metaKey') || !(event.target instanceof HTMLTextAreaElement));
143
+ /** Emitted when the inline edit is saved successfully. */
144
+ this.saved = output();
145
+ /** Emitted when the inline edit is canceled and changes are discarded. */
146
+ this.canceled = output();
147
+ /** Emitted when mode switched to edit/view */
148
+ this.modeChange = output();
149
+ /** @docs-private */
150
+ this.menu = contentChild(KbqInlineEditMenu);
151
+ /** @docs-private */
152
+ this.label = contentChild(KbqLabel);
153
+ /** @docs-private */
154
+ this.formFieldRef = contentChild(KbqFormField);
155
+ /** @docs-private */
156
+ this.overlayOrigin = viewChild.required(CdkOverlayOrigin);
157
+ /** @docs-private */
158
+ this.tooltipTrigger = viewChild(KbqTooltipTrigger);
159
+ /** @docs-private */
160
+ this.overlayDir = viewChild(CdkConnectedOverlay);
161
+ /** @docs-private */
162
+ this.regionItems = viewChildren(KbqFocusRegionItem);
163
+ /** @docs-private */
164
+ this.mode = signal('view');
165
+ /** @docs-private */
166
+ this.overlayWidth = signal('');
167
+ /** @docs-private */
168
+ this.scrollStrategy = signal(this.overlay.scrollStrategies.reposition());
169
+ /** @docs-private */
170
+ this.modeAsReadonly = computed(() => this.mode());
171
+ /** @docs-private */
172
+ this.className = computed(() => `${baseClass}_${this.mode()}`);
173
+ /** @docs-private */
174
+ this.isEditMode = computed(() => this.mode() === 'edit');
175
+ /** @docs-private */
176
+ this.tabIndex = computed(() => (this.isEditMode() || this.disabled() ? -1 : 0));
177
+ /** @docs-private */
178
+ this.placements = PopUpPlacements;
179
+ /** @docs-private */
180
+ this.colors = KbqComponentColors;
181
+ toObservable(this.mode)
182
+ .pipe(skip(1), takeUntilDestroyed())
183
+ .subscribe((currentMode) => this.modeChange.emit(currentMode));
184
+ }
185
+ /** @docs-private */
186
+ toggleMode() {
187
+ this.mode.update((mode) => (mode === 'view' ? 'edit' : 'view'));
188
+ }
189
+ /** @docs-private */
190
+ onClick(event) {
191
+ if (this.disabled() || this.isEditMode())
192
+ return;
193
+ event.preventDefault();
194
+ event.stopPropagation();
195
+ this.kbqFocusMonitor.focusVia(this.overlayOrigin().elementRef, 'program');
196
+ this.toggleMode();
197
+ }
198
+ /** @docs-private */
199
+ onAttach() {
200
+ this.setOverlayWidth();
201
+ this.setOverlayKeydownListener();
202
+ const formFieldRef = this.formFieldRef();
203
+ formFieldRef?.control.stateChanges
204
+ .pipe(takeUntil(this.overlayDir().overlayRef.detachments()))
205
+ .subscribe(() => {
206
+ if (!this.isInvalid()) {
207
+ const tooltipTrigger = this.tooltipTrigger();
208
+ tooltipTrigger?.isOpen && tooltipTrigger?.hide();
209
+ }
210
+ });
211
+ setTimeout(() => {
212
+ formFieldRef?.focus();
213
+ this.initialValue = this.getValue();
214
+ const input = this.getInputNativeElement();
215
+ if (this.initialValue)
216
+ input?.select();
217
+ if (formFieldRef) {
218
+ this.openPanel(formFieldRef);
219
+ }
220
+ }, 0);
221
+ }
222
+ /** @docs-private */
223
+ save($event) {
224
+ if (this.isInvalid()) {
225
+ $event?.stopPropagation();
226
+ this.showTooltipOnError() && this.tooltipTrigger()?.show();
227
+ }
228
+ else {
229
+ this.toggleMode();
230
+ this.saved.emit();
231
+ }
232
+ }
233
+ /** @docs-private */
234
+ cancel() {
235
+ this.setValue(this.initialValue);
236
+ const input = this.getInputNativeElement();
237
+ if (input) {
238
+ input.selectionStart = input.selectionEnd = null;
239
+ }
240
+ this.toggleMode();
241
+ this.canceled.emit();
242
+ }
243
+ /** @docs-private */
244
+ onOverlayKeydown(event) {
245
+ this.formFieldRef()?.control.ngControl?.control?.markAsTouched();
246
+ const canSaveOnEnter = this.canSaveOnEnter();
247
+ switch (event.key) {
248
+ case 'Escape': {
249
+ this.cancel();
250
+ break;
251
+ }
252
+ case 'Enter': {
253
+ if (canSaveOnEnter(event)) {
254
+ event.preventDefault();
255
+ this.formFieldRef()?.control.ngControl?.control?.markAsTouched();
256
+ setTimeout(() => this.save(event));
257
+ }
258
+ break;
259
+ }
260
+ default: {
261
+ return;
262
+ }
263
+ }
264
+ }
265
+ /**
266
+ * Sets up Tab key listeners on region items.
267
+ * Single item: Tab moves to next edit.
268
+ * Multiple items: Shift+Tab on first or Tab on last moves to next edit.
269
+ */
270
+ setOverlayKeydownListener() {
271
+ const regionItems = this.regionItems();
272
+ if (regionItems.length === 0)
273
+ return;
274
+ const firstItem = regionItems.at(0);
275
+ const lastItem = regionItems.at(regionItems.length - 1);
276
+ if (regionItems.length === 1) {
277
+ firstItem?.tabOut.subscribe((event) => this.saveAndFocusNextInlineEdit(event));
278
+ }
279
+ else {
280
+ firstItem?.tabOut.subscribe((event) => hasModifierKey(event, 'shiftKey') && this.saveAndFocusNextInlineEdit(event));
281
+ lastItem?.tabOut.subscribe((event) => !hasModifierKey(event, 'shiftKey') && this.saveAndFocusNextInlineEdit(event));
282
+ }
283
+ }
284
+ saveAndFocusNextInlineEdit(event) {
285
+ this.save(event);
286
+ if (this.isInvalid())
287
+ return;
288
+ setTimeout(() => {
289
+ const activeElement = this.document.activeElement;
290
+ if (activeElement?.classList?.contains('kbq-inline-edit__focus_container')) {
291
+ activeElement.dispatchEvent(new KeyboardEvent('keydown', { key: 'Enter' }));
292
+ }
293
+ });
294
+ }
295
+ isInvalid() {
296
+ const formFieldRef = this.formFieldRef();
297
+ if (!formFieldRef)
298
+ return false;
299
+ return formFieldRef.invalid;
300
+ }
301
+ getValue() {
302
+ const getValueHandler = this.getValueHandler();
303
+ if (getValueHandler)
304
+ return getValueHandler();
305
+ const control = this.coerceControl();
306
+ return control?.value;
307
+ }
308
+ setValue(value) {
309
+ const setValue = this.setValueHandler();
310
+ if (setValue) {
311
+ setValue(this.initialValue);
312
+ return;
313
+ }
314
+ const control = this.coerceControl();
315
+ if (!control)
316
+ return;
317
+ if (control instanceof AbstractControl) {
318
+ control.setValue(value);
319
+ }
320
+ else {
321
+ control.value = value;
322
+ }
323
+ }
324
+ coerceControl() {
325
+ const formFieldRef = this.formFieldRef();
326
+ if (!formFieldRef)
327
+ return null;
328
+ if (formFieldRef.control.ngControl instanceof NgControl) {
329
+ return formFieldRef.control.ngControl.control;
330
+ }
331
+ return formFieldRef.control;
332
+ }
333
+ setOverlayWidth() {
334
+ const editModeWidth = this.editModeWidth();
335
+ if (editModeWidth) {
336
+ this.overlayWidth.set(editModeWidth);
337
+ return;
338
+ }
339
+ const elementRef = this.label()
340
+ ? this.overlayOrigin().elementRef
341
+ : this.elementRef;
342
+ this.overlayWidth.set(elementRef?.nativeElement.offsetWidth ?? '');
343
+ }
344
+ // @TODO refactor this (#DS-4181)
345
+ openPanel(formFieldRef) {
346
+ const control = formFieldRef.control;
347
+ if (control instanceof KbqSelect || control instanceof KbqTreeSelect) {
348
+ control.open();
349
+ }
350
+ else if (control instanceof KbqAutocompleteTrigger) {
351
+ control.openPanel();
352
+ }
353
+ }
354
+ getInputNativeElement() {
355
+ return this.overlayDir()?.overlayRef.overlayElement.querySelector('input:not([type="file"]),textarea') ?? null;
356
+ }
357
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqInlineEdit, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
358
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: KbqInlineEdit, isStandalone: true, selector: "kbq-inline-edit", inputs: { showActions: { classPropertyName: "showActions", publicName: "showActions", isSignal: true, isRequired: false, transformFunction: null }, showTooltipOnError: { classPropertyName: "showTooltipOnError", publicName: "showTooltipOnError", isSignal: true, isRequired: false, transformFunction: null }, validationTooltip: { classPropertyName: "validationTooltip", publicName: "validationTooltip", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, editModeWidth: { classPropertyName: "editModeWidth", publicName: "editModeWidth", isSignal: true, isRequired: false, transformFunction: null }, tooltipPlacement: { classPropertyName: "tooltipPlacement", publicName: "tooltipPlacement", isSignal: true, isRequired: false, transformFunction: null }, getValueHandler: { classPropertyName: "getValueHandler", publicName: "getValueHandler", isSignal: true, isRequired: false, transformFunction: null }, setValueHandler: { classPropertyName: "setValueHandler", publicName: "setValueHandler", isSignal: true, isRequired: false, transformFunction: null }, canSaveOnEnter: { classPropertyName: "canSaveOnEnter", publicName: "canSaveOnEnter", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { saved: "saved", canceled: "canceled", modeChange: "modeChange" }, host: { listeners: { "click": "onClick($event)", "keydown.enter": "onClick($event)", "keydown.space": "onClick($event)" }, properties: { "class": "className()", "class.kbq-inline-edit_with-label": "!!label()", "class.kbq-inline-edit_with-menu": "!!menu()", "class.kbq-inline-edit_disabled": "disabled()" }, classAttribute: "kbq-inline-edit" }, queries: [{ propertyName: "menu", first: true, predicate: KbqInlineEditMenu, descendants: true, isSignal: true }, { propertyName: "label", first: true, predicate: KbqLabel, descendants: true, isSignal: true }, { propertyName: "formFieldRef", first: true, predicate: KbqFormField, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: CdkOverlayOrigin, descendants: true, isSignal: true }, { propertyName: "tooltipTrigger", first: true, predicate: KbqTooltipTrigger, descendants: true, isSignal: true }, { propertyName: "overlayDir", first: true, predicate: CdkConnectedOverlay, descendants: true, isSignal: true }, { propertyName: "regionItems", predicate: KbqFocusRegionItem, descendants: true, isSignal: true }], exportAs: ["kbqInlineEdit"], hostDirectives: [{ directive: i1.KbqFocusMonitor }], ngImport: i0, template: "@if (label()) {\n <div class=\"kbq-inline-edit__label\">\n <ng-content select=\"kbq-label\" />\n </div>\n}\n\n<div class=\"kbq-inline-edit__view-container\">\n <ng-content select=\"[kbqInlineEditViewMode]\" />\n\n <div\n #overlayOrigin\n class=\"kbq-inline-edit__focus_container kbq-inline-edit__overlay-origin\"\n cdkMonitorElementFocus\n cdkOverlayOrigin\n [tabIndex]=\"tabIndex()\"\n (keydown.enter)=\"onClick($event)\"\n ></div>\n\n @if (menu() && mode() === 'view') {\n <div class=\"kbq-inline-edit__menu-mask kbq-mask\">\n <div class=\"kbq-inline-edit__menu-mask-fade kbq-mask__fade\"></div>\n <div class=\"kbq-inline-edit__menu-mask-container kbq-mask__container\">\n <ng-content select=\"[kbqInlineEditMenu]\" />\n </div>\n </div>\n }\n\n <ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayOpen]=\"isEditMode()\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOffsetY]=\"-overlayOrigin.offsetHeight\"\n [cdkConnectedOverlayWidth]=\"overlayWidth()\"\n [cdkConnectedOverlayDisableClose]=\"true\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy()\"\n [cdkConnectedOverlayHasBackdrop]=\"false\"\n (attach)=\"onAttach()\"\n (overlayOutsideClick)=\"save($event)\"\n (overlayKeydown)=\"onOverlayKeydown($event)\"\n >\n <div class=\"kbq-inline-edit__panel\" cdkTrapFocus cdkTrapFocusAutoCapture>\n <div\n class=\"kbq-inline-edit__control-container\"\n kbqFocusRegionItem\n [kbqTooltipColor]=\"colors.Error\"\n [kbqTooltip]=\"validationTooltip() ?? ''\"\n [kbqTooltipArrow]=\"false\"\n [kbqTrigger]=\"'manual'\"\n [kbqPlacement]=\"tooltipPlacement() ?? placements.TopLeft\"\n >\n <ng-content select=\"[kbqInlineEditEditMode]\" />\n </div>\n\n @if (showActions()) {\n <div class=\"kbq-inline-edit__action-buttons\" role=\"group\" [@panelAnimation]>\n <button kbq-button [color]=\"'contrast'\" (click)=\"save($event)\">\n <i kbq-icon=\"kbq-check_16\"></i>\n </button>\n <button\n kbqFocusRegionItem\n kbq-button\n [color]=\"'contrast-fade'\"\n (click)=\"cancel()\"\n (keydown.enter)=\"cancel()\"\n >\n <i kbq-icon=\"kbq-xmark_16\"></i>\n </button>\n </div>\n }\n </div>\n </ng-template>\n</div>\n", styles: [".kbq-inline-edit{display:flex;flex-direction:column;justify-content:center;border-radius:var(--kbq-size-border-radius);padding:var(--kbq-inline-edit-padding-vertical) var(--kbq-inline-edit-padding-horizontal);min-height:var(--kbq-inline-edit-height);box-sizing:border-box;font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}.kbq-inline-edit.kbq-inline-edit_view:not(.kbq-inline-edit_disabled):hover{--kbq-inline-edit-background: var(--kbq-states-background-transparent-hover);--kbq-mask-background: var(--kbq-states-background-contrast-less-hover);cursor:pointer}.kbq-inline-edit.kbq-inline-edit_view:not(.kbq-inline-edit_disabled):active,.kbq-inline-edit.kbq-inline-edit_view:not(.kbq-inline-edit_disabled):has(.kbq-inline-edit__menu.kbq-active){--kbq-inline-edit-background: var(--kbq-states-background-transparent-active);--kbq-mask-background: var(--kbq-states-background-contrast-less-active)}.kbq-inline-edit.kbq-inline-edit_view.kbq-inline-edit_disabled:hover,.kbq-inline-edit.kbq-inline-edit_view.kbq-inline-edit_disabled:has(.kbq-inline-edit__menu.kbq-active){--kbq-mask-background: var(--kbq-background-bg)}.kbq-inline-edit .kbq-label{color:var(--kbq-inline-edit-label-color)}.kbq-inline-edit .kbq-inline-edit__focus_container{background:var(--kbq-inline-edit-background);border-color:var(--kbq-inline-edit-background)}.kbq-inline-edit .kbq-inline-edit__focus_container:focus-visible{outline:none}.kbq-inline-edit .kbq-inline-edit__focus_container.cdk-keyboard-focused{outline:1px solid var(--kbq-states-line-focus-theme);border-color:var(--kbq-states-line-focus-theme)}.kbq-inline-edit:not(.kbq-inline-edit_with-label){--kbq-inline-edit-padding-horizontal: calc(var(--kbq-size-m) - var(--kbq-size-border-width))}.kbq-inline-edit.kbq-inline-edit_with-label{padding-top:var(--kbq-inline-edit-padding-vertical);padding-bottom:var(--kbq-inline-edit-padding-vertical)}.kbq-inline-edit.kbq-inline-edit_with-label.kbq-inline-edit_edit .kbq-inline-edit__view-container{position:relative}.kbq-inline-edit.kbq-inline-edit_with-label .kbq-inline-edit__label{margin-bottom:var(--kbq-size-3xs)}.kbq-inline-edit.kbq-inline-edit_view .kbq-inline-edit__view-container{text-overflow:ellipsis}.kbq-inline-edit:hover .kbq-inline-edit__menu-mask,.kbq-inline-edit.cdk-keyboard-focused .kbq-inline-edit__menu-mask{opacity:1}.kbq-inline-edit .kbq-inline-edit__placeholder{color:var(--kbq-foreground-contrast-secondary)}.kbq-inline-edit{position:relative}.kbq-inline-edit .kbq-mask{display:flex;position:absolute;top:0;right:0}.kbq-inline-edit .kbq-mask .kbq-mask__fade{background:var(--kbq-mask-background, transparent);mask-image:linear-gradient(90deg,transparent,var(--kbq-black-default))}.kbq-inline-edit .kbq-mask .kbq-mask__container{background:var(--kbq-mask-background, transparent)}.kbq-inline-edit .kbq-inline-edit__menu-mask{opacity:0;height:100%;justify-content:flex-end;border-top-right-radius:var(--kbq-size-border-radius);border-bottom-right-radius:var(--kbq-size-border-radius)}.kbq-inline-edit .kbq-inline-edit__menu-mask:has(.kbq-inline-edit__menu.kbq-pressed,.kbq-inline-edit__menu.cdk-keyboard-focused){opacity:1}.kbq-inline-edit .kbq-inline-edit__menu-mask .kbq-inline-edit__menu-mask-fade{width:32px}.kbq-inline-edit .kbq-inline-edit__menu-mask .kbq-inline-edit__menu-mask-container{display:flex;justify-content:flex-end;min-width:40px;border-radius:inherit}.kbq-inline-edit .kbq-inline-edit__menu-mask .kbq-inline-edit__menu{display:inline-flex;align-self:flex-start;padding:var(--kbq-size-s);z-index:2}.kbq-inline-edit .kbq-inline-edit__focus_container{position:absolute;top:0;left:0;width:calc(100% - 2 * var(--kbq-size-border-width));height:calc(100% - 2 * var(--kbq-size-border-width));border:var(--kbq-size-border-width) solid transparent;border-radius:var(--kbq-size-border-radius);z-index:1}.kbq-inline-edit__panel{width:100%}.kbq-inline-edit__panel .kbq-inline-edit__control-container{border-radius:var(--kbq-size-border-radius)}.kbq-inline-edit__panel .kbq-inline-edit__action-buttons{position:absolute;left:calc(-1 * var(--kbq-inline-edit-padding-horizontal));display:inline-flex;flex-direction:row;gap:var(--kbq-size-xxs);padding:var(--kbq-size-xxs) var(--kbq-size-s) var(--kbq-size-s)}.kbq-inline-edit__panel .kbq-inline-edit__control-container,.kbq-inline-edit__panel .kbq-inline-edit__action-buttons>.kbq-button-icon{box-shadow:var(--kbq-shadow-popup)}\n", ":where(.kbq-inline-edit,.kbq-inline-edit__panel){--kbq-inline-edit-background: transparent;--kbq-inline-edit-height: var(--kbq-size-3xl);--kbq-inline-edit-padding-horizontal: var(--kbq-size-s);--kbq-inline-edit-padding-vertical: 5px;--kbq-inline-edit-panel-shadow: var(--kbq-shadow-popup);--kbq-inline-edit-label-color: var(--kbq-foreground-contrast-secondary)}\n"], dependencies: [{ kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "ngmodule", type: KbqButtonModule }, { kind: "component", type: i2.KbqButton, selector: "[kbq-button]", inputs: ["kbqStyle", "disabled", "tabIndex"] }, { kind: "directive", type: i2.KbqButtonCssStyler, selector: "[kbq-button]" }, { kind: "component", type: KbqIcon, selector: "[kbq-icon]", inputs: ["small", "autoColor", "kbq-icon"] }, { kind: "directive", type: KbqTooltipTrigger, selector: "[kbqTooltip]", inputs: ["hideWithTimeout", "kbqVisible", "kbqPlacement", "kbqRelativeToPointer", "kbqPlacementPriority", "kbqTooltip", "kbqTooltipDisabled", "kbqEnterDelay", "kbqLeaveDelay", "kbqTrigger", "kbqTooltipClass", "kbqTooltipContext", "kbqTooltipColor", "kbqTooltipArrow", "kbqTooltipOffset"], outputs: ["kbqPlacementChange", "kbqVisibleChange"], exportAs: ["kbqTooltip"] }, { kind: "directive", type: KbqFocusRegionItem, selector: "[kbqFocusRegionItem]", outputs: ["tabOut"], exportAs: ["kbqFocusRegionItem"] }, { kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }], animations: [KBQ_INLINE_EDIT_ACTION_BUTTONS_ANIMATION], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
359
+ }
360
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqInlineEdit, decorators: [{
361
+ type: Component,
362
+ args: [{ standalone: true, selector: 'kbq-inline-edit', exportAs: 'kbqInlineEdit', host: {
363
+ class: baseClass,
364
+ '[class]': 'className()',
365
+ '[class.kbq-inline-edit_with-label]': '!!label()',
366
+ '[class.kbq-inline-edit_with-menu]': '!!menu()',
367
+ '[class.kbq-inline-edit_disabled]': 'disabled()',
368
+ '(click)': 'onClick($event)',
369
+ '(keydown.enter)': 'onClick($event)',
370
+ '(keydown.space)': 'onClick($event)'
371
+ }, hostDirectives: [KbqFocusMonitor], imports: [
372
+ CdkConnectedOverlay,
373
+ CdkOverlayOrigin,
374
+ KbqButtonModule,
375
+ KbqIcon,
376
+ KbqTooltipTrigger,
377
+ KbqFocusRegionItem,
378
+ CdkTrapFocus,
379
+ CdkMonitorFocus
380
+ ], animations: [KBQ_INLINE_EDIT_ACTION_BUTTONS_ANIMATION], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "@if (label()) {\n <div class=\"kbq-inline-edit__label\">\n <ng-content select=\"kbq-label\" />\n </div>\n}\n\n<div class=\"kbq-inline-edit__view-container\">\n <ng-content select=\"[kbqInlineEditViewMode]\" />\n\n <div\n #overlayOrigin\n class=\"kbq-inline-edit__focus_container kbq-inline-edit__overlay-origin\"\n cdkMonitorElementFocus\n cdkOverlayOrigin\n [tabIndex]=\"tabIndex()\"\n (keydown.enter)=\"onClick($event)\"\n ></div>\n\n @if (menu() && mode() === 'view') {\n <div class=\"kbq-inline-edit__menu-mask kbq-mask\">\n <div class=\"kbq-inline-edit__menu-mask-fade kbq-mask__fade\"></div>\n <div class=\"kbq-inline-edit__menu-mask-container kbq-mask__container\">\n <ng-content select=\"[kbqInlineEditMenu]\" />\n </div>\n </div>\n }\n\n <ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayOpen]=\"isEditMode()\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOffsetY]=\"-overlayOrigin.offsetHeight\"\n [cdkConnectedOverlayWidth]=\"overlayWidth()\"\n [cdkConnectedOverlayDisableClose]=\"true\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy()\"\n [cdkConnectedOverlayHasBackdrop]=\"false\"\n (attach)=\"onAttach()\"\n (overlayOutsideClick)=\"save($event)\"\n (overlayKeydown)=\"onOverlayKeydown($event)\"\n >\n <div class=\"kbq-inline-edit__panel\" cdkTrapFocus cdkTrapFocusAutoCapture>\n <div\n class=\"kbq-inline-edit__control-container\"\n kbqFocusRegionItem\n [kbqTooltipColor]=\"colors.Error\"\n [kbqTooltip]=\"validationTooltip() ?? ''\"\n [kbqTooltipArrow]=\"false\"\n [kbqTrigger]=\"'manual'\"\n [kbqPlacement]=\"tooltipPlacement() ?? placements.TopLeft\"\n >\n <ng-content select=\"[kbqInlineEditEditMode]\" />\n </div>\n\n @if (showActions()) {\n <div class=\"kbq-inline-edit__action-buttons\" role=\"group\" [@panelAnimation]>\n <button kbq-button [color]=\"'contrast'\" (click)=\"save($event)\">\n <i kbq-icon=\"kbq-check_16\"></i>\n </button>\n <button\n kbqFocusRegionItem\n kbq-button\n [color]=\"'contrast-fade'\"\n (click)=\"cancel()\"\n (keydown.enter)=\"cancel()\"\n >\n <i kbq-icon=\"kbq-xmark_16\"></i>\n </button>\n </div>\n }\n </div>\n </ng-template>\n</div>\n", styles: [".kbq-inline-edit{display:flex;flex-direction:column;justify-content:center;border-radius:var(--kbq-size-border-radius);padding:var(--kbq-inline-edit-padding-vertical) var(--kbq-inline-edit-padding-horizontal);min-height:var(--kbq-inline-edit-height);box-sizing:border-box;font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}.kbq-inline-edit.kbq-inline-edit_view:not(.kbq-inline-edit_disabled):hover{--kbq-inline-edit-background: var(--kbq-states-background-transparent-hover);--kbq-mask-background: var(--kbq-states-background-contrast-less-hover);cursor:pointer}.kbq-inline-edit.kbq-inline-edit_view:not(.kbq-inline-edit_disabled):active,.kbq-inline-edit.kbq-inline-edit_view:not(.kbq-inline-edit_disabled):has(.kbq-inline-edit__menu.kbq-active){--kbq-inline-edit-background: var(--kbq-states-background-transparent-active);--kbq-mask-background: var(--kbq-states-background-contrast-less-active)}.kbq-inline-edit.kbq-inline-edit_view.kbq-inline-edit_disabled:hover,.kbq-inline-edit.kbq-inline-edit_view.kbq-inline-edit_disabled:has(.kbq-inline-edit__menu.kbq-active){--kbq-mask-background: var(--kbq-background-bg)}.kbq-inline-edit .kbq-label{color:var(--kbq-inline-edit-label-color)}.kbq-inline-edit .kbq-inline-edit__focus_container{background:var(--kbq-inline-edit-background);border-color:var(--kbq-inline-edit-background)}.kbq-inline-edit .kbq-inline-edit__focus_container:focus-visible{outline:none}.kbq-inline-edit .kbq-inline-edit__focus_container.cdk-keyboard-focused{outline:1px solid var(--kbq-states-line-focus-theme);border-color:var(--kbq-states-line-focus-theme)}.kbq-inline-edit:not(.kbq-inline-edit_with-label){--kbq-inline-edit-padding-horizontal: calc(var(--kbq-size-m) - var(--kbq-size-border-width))}.kbq-inline-edit.kbq-inline-edit_with-label{padding-top:var(--kbq-inline-edit-padding-vertical);padding-bottom:var(--kbq-inline-edit-padding-vertical)}.kbq-inline-edit.kbq-inline-edit_with-label.kbq-inline-edit_edit .kbq-inline-edit__view-container{position:relative}.kbq-inline-edit.kbq-inline-edit_with-label .kbq-inline-edit__label{margin-bottom:var(--kbq-size-3xs)}.kbq-inline-edit.kbq-inline-edit_view .kbq-inline-edit__view-container{text-overflow:ellipsis}.kbq-inline-edit:hover .kbq-inline-edit__menu-mask,.kbq-inline-edit.cdk-keyboard-focused .kbq-inline-edit__menu-mask{opacity:1}.kbq-inline-edit .kbq-inline-edit__placeholder{color:var(--kbq-foreground-contrast-secondary)}.kbq-inline-edit{position:relative}.kbq-inline-edit .kbq-mask{display:flex;position:absolute;top:0;right:0}.kbq-inline-edit .kbq-mask .kbq-mask__fade{background:var(--kbq-mask-background, transparent);mask-image:linear-gradient(90deg,transparent,var(--kbq-black-default))}.kbq-inline-edit .kbq-mask .kbq-mask__container{background:var(--kbq-mask-background, transparent)}.kbq-inline-edit .kbq-inline-edit__menu-mask{opacity:0;height:100%;justify-content:flex-end;border-top-right-radius:var(--kbq-size-border-radius);border-bottom-right-radius:var(--kbq-size-border-radius)}.kbq-inline-edit .kbq-inline-edit__menu-mask:has(.kbq-inline-edit__menu.kbq-pressed,.kbq-inline-edit__menu.cdk-keyboard-focused){opacity:1}.kbq-inline-edit .kbq-inline-edit__menu-mask .kbq-inline-edit__menu-mask-fade{width:32px}.kbq-inline-edit .kbq-inline-edit__menu-mask .kbq-inline-edit__menu-mask-container{display:flex;justify-content:flex-end;min-width:40px;border-radius:inherit}.kbq-inline-edit .kbq-inline-edit__menu-mask .kbq-inline-edit__menu{display:inline-flex;align-self:flex-start;padding:var(--kbq-size-s);z-index:2}.kbq-inline-edit .kbq-inline-edit__focus_container{position:absolute;top:0;left:0;width:calc(100% - 2 * var(--kbq-size-border-width));height:calc(100% - 2 * var(--kbq-size-border-width));border:var(--kbq-size-border-width) solid transparent;border-radius:var(--kbq-size-border-radius);z-index:1}.kbq-inline-edit__panel{width:100%}.kbq-inline-edit__panel .kbq-inline-edit__control-container{border-radius:var(--kbq-size-border-radius)}.kbq-inline-edit__panel .kbq-inline-edit__action-buttons{position:absolute;left:calc(-1 * var(--kbq-inline-edit-padding-horizontal));display:inline-flex;flex-direction:row;gap:var(--kbq-size-xxs);padding:var(--kbq-size-xxs) var(--kbq-size-s) var(--kbq-size-s)}.kbq-inline-edit__panel .kbq-inline-edit__control-container,.kbq-inline-edit__panel .kbq-inline-edit__action-buttons>.kbq-button-icon{box-shadow:var(--kbq-shadow-popup)}\n", ":where(.kbq-inline-edit,.kbq-inline-edit__panel){--kbq-inline-edit-background: transparent;--kbq-inline-edit-height: var(--kbq-size-3xl);--kbq-inline-edit-padding-horizontal: var(--kbq-size-s);--kbq-inline-edit-padding-vertical: 5px;--kbq-inline-edit-panel-shadow: var(--kbq-shadow-popup);--kbq-inline-edit-label-color: var(--kbq-foreground-contrast-secondary)}\n"] }]
381
+ }], ctorParameters: () => [] });
382
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5saW5lLWVkaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2lubGluZS1lZGl0L2lubGluZS1lZGl0LnRzIiwiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9pbmxpbmUtZWRpdC9pbmxpbmUtZWRpdC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFrQixNQUFNLHNCQUFzQixDQUFDO0FBQ3RHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLFlBQVksRUFDWixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsZUFBZSxFQUNmLE1BQU0sRUFDTixNQUFNLEVBRU4sU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFDSCxrQkFBa0Is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LEVBQUUsU0FBUzt3QkFDaEIsU0FBUyxFQUFFLGFBQWE7d0JBQ3hCLG9DQUFvQyxFQUFFLFdBQVc7d0JBQ2pELG1DQUFtQyxFQUFFLFVBQVU7d0JBQy9DLGtDQUFrQyxFQUFFLFlBQVk7d0JBQ2hELFNBQVMsRUFBRSxpQkFBaUI7d0JBQzVCLGlCQUFpQixFQUFFLGlCQUFpQjt3QkFDcEMsaUJBQWlCLEVBQUUsaUJBQWlCO3FCQUN2QyxrQkFDZSxDQUFDLGVBQWUsQ0FBQyxXQUN4Qjt3QkFDTCxtQkFBbUI7d0JBQ25CLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixPQUFPO3dCQUNQLGlCQUFpQjt3QkFDakIsa0JBQWtCO3dCQUNsQixZQUFZO3dCQUNaLGVBQWU7cUJBQ2xCLGNBQ1csQ0FBQyx3Q0FBd0MsQ0FBQyxtQkFDckMsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBDZGtNb25pdG9yRm9jdXMsIENka1RyYXBGb2N1cyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IGhhc01vZGlmaWVyS2V5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IENka0Nvbm5lY3RlZE92ZXJsYXksIENka092ZXJsYXlPcmlnaW4sIE92ZXJsYXksIFNjcm9sbFN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBjb21wdXRlZCxcbiAgICBjb250ZW50Q2hpbGQsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgaW5qZWN0LFxuICAgIGlucHV0LFxuICAgIG51bWJlckF0dHJpYnV0ZSxcbiAgICBvdXRwdXQsXG4gICAgc2lnbmFsLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIHZpZXdDaGlsZCxcbiAgICB2aWV3Q2hpbGRyZW4sXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQsIHRvT2JzZXJ2YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgS2JxQXV0b2NvbXBsZXRlVHJpZ2dlciB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHsgS2JxQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQge1xuICAgIEticUFuaW1hdGlvbkN1cnZlcyxcbiAgICBLYnFBbmltYXRpb25EdXJhdGlvbnMsXG4gICAgS2JxQ29tcG9uZW50Q29sb3JzLFxuICAgIEticUZvY3VzTW9uaXRvcixcbiAgICBQb3BVcFBsYWNlbWVudHNcbn0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2NvcmUnO1xuaW1wb3J0IHsgS2JxRHJvcGRvd25UcmlnZ2VyIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2Ryb3Bkb3duJztcbmltcG9ydCB7IEticUZvcm1GaWVsZCwgS2JxTGFiZWwgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBLYnFJY29uIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2ljb24nO1xuaW1wb3J0IHsgS2JxU2VsZWN0IH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL3NlbGVjdCc7XG5pbXBvcnQgeyBLYnFUb29sdGlwVHJpZ2dlciB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy90b29sdGlwJztcbmltcG9ydCB7IEticVRyZWVTZWxlY3QgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvdHJlZS1zZWxlY3QnO1xuaW1wb3J0IHsgc2tpcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5jb25zdCBLQlFfSU5MSU5FX0VESVRfQUNUSU9OX0JVVFRPTlNfQU5JTUFUSU9OID0gdHJpZ2dlcigncGFuZWxBbmltYXRpb24nLCBbXG4gICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xuICAgICAgICBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMTAwJSknLCBvcGFjaXR5OiAwIH0pLFxuICAgICAgICBhbmltYXRlKFxuICAgICAgICAgICAgYCR7S2JxQW5pbWF0aW9uRHVyYXRpb25zLkluc3RhbnR9ICR7S2JxQW5pbWF0aW9uQ3VydmVzLkRlY2VsZXJhdGlvbkN1cnZlfWAsXG4gICAgICAgICAgICBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCUpJywgb3BhY2l0eTogMSB9KVxuICAgICAgICApXSlcblxuXSk7XG5cbmNvbnN0IGJhc2VDbGFzcyA9ICdrYnEtaW5saW5lLWVkaXQnO1xuXG4vKiogQGRvY3MtcHJpdmF0ZSAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ1trYnFGb2N1c1JlZ2lvbkl0ZW1dJyxcbiAgICBleHBvcnRBczogJ2ticUZvY3VzUmVnaW9uSXRlbScsXG4gICAgaG9zdDoge1xuICAgICAgICAnKGZvY3VzaW4pJzogJ2lzRm9jdXNlZCA9IHRydWUnLFxuICAgICAgICAnKGtleWRvd24udGFiKSc6ICdvblRhYk91dCgkZXZlbnQpJyxcbiAgICAgICAgJyhrZXlkb3duLnNoaWZ0LnRhYiknOiAnb25UYWJPdXQoJGV2ZW50KSdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEticUZvY3VzUmVnaW9uSXRlbSB7XG4gICAgcmVhZG9ubHkgdGFiT3V0ID0gb3V0cHV0PEtleWJvYXJkRXZlbnQ+KCk7XG5cbiAgICBwcm90ZWN0ZWQgaXNGb2N1c2VkID0gZmFsc2U7XG5cbiAgICBwcm90ZWN0ZWQgb25UYWJPdXQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNGb2N1c2VkKSB7XG4gICAgICAgICAgICB0aGlzLnRhYk91dC5lbWl0KGV2ZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaXNGb2N1c2VkID0gIXRoaXMuaXNGb2N1c2VkO1xuICAgIH1cbn1cblxuLyoqIERpcmVjdGl2ZSBmb3IgZWFzeSB1c2luZyBzdHlsZXMgb2YgaW5saW5lIGVkaXQgcGxhY2Vob2xkZXIgcHVibGljbHkuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnW2ticUlubGluZUVkaXRQbGFjZWhvbGRlcl0nLFxuICAgIGV4cG9ydEFzOiAna2JxSW5saW5lRWRpdFBsYWNlaG9sZGVyJyxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAna2JxLWlubGluZS1lZGl0X19wbGFjZWhvbGRlcidcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEticUlubGluZUVkaXRQbGFjZWhvbGRlciB7fVxuXG4vKipcbiAqIFRoaXMgZGlyZWN0aXZlIGVuaGFuY2VzIGVsZW1lbnQgYWN0aW5nIGFzIGRyb3Bkb3duIHRyaWdnZXIsXG4gKiB2aXN1YWxseSBpbmRpY2F0aW5nIHRoZSBhY3RpdmUgc3RhdGUgd2l0aCB0aGUgYGticS1hY3RpdmVgIGNsYXNzLlxuICogQWxzbywgaXQgcHJldmVudHMgY2xpY2sva2V5ZG93biBldmVudHMgZnJvbSBiZWluZyBwcm9wYWdhdGVkIHRvIGRpc2FibGUgbW9kZSB0b2dnbGluZyBvZiBwYXJlbnQgY29tcG9uZW50LlxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnW2ticUlubGluZUVkaXRNZW51XScsXG4gICAgZXhwb3J0QXM6ICdrYnFJbmxpbmVFZGl0TWVudScsXG4gICAgaG9zdDoge1xuICAgICAgICByb2xlOiAnYnV0dG9uJyxcbiAgICAgICAgY2xhc3M6ICdrYnEtaW5saW5lLWVkaXRfX21lbnUnLFxuICAgICAgICAnW2NsYXNzLmticS1hY3RpdmVdJzogJ2Ryb3Bkb3duVHJpZ2dlcj8ub3BlbmVkJyxcbiAgICAgICAgJyhjbGljayknOiAnJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpJyxcbiAgICAgICAgJyhrZXlkb3duLmVudGVyKSc6ICckZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCknLFxuICAgICAgICAnKGtleWRvd24uc3BhY2UpJzogJyRldmVudC5zdG9wUHJvcGFnYXRpb24oKSdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEticUlubGluZUVkaXRNZW51IHtcbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBkcm9wZG93blRyaWdnZXIgPSBpbmplY3QoS2JxRHJvcGRvd25UcmlnZ2VyLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xufVxuXG4vKipcbiAqIEN1c3RvbWl6YWJsZSBjb21wb25lbnQgdGhhdCBlbmFibGVzIGVkaXQtaW4tcGxhY2UgbG9naWMgZm9yIHNwZWNpZmllZCBjb250cm9sIGFuZCBpdCdzIHZpZXcuXG4gKiBUaGlzIGNvbXBvbmVudCBpcyBwcm9qZWN0aW5nIGVkaXQvdmlldyBtb2RlIHRlbXBsYXRlcyBhbmQgYWRkcyBrZXlib2FyZC9wb2ludGVyIGhhbmRsZXJzLlxuICogRWRpdCBtb2RlIG9wZW5zIGluIGEgcG9zaXRpb25lZCBvdmVybGF5IHRoYXQgbWF0Y2hlcyB0aGUgdmlldyBtb2RlIHdpZHRoIG9yIGNhbiBiZSBjdXN0b21pemVkLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAna2JxLWlubGluZS1lZGl0JyxcbiAgICBleHBvcnRBczogJ2ticUlubGluZUVkaXQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbmxpbmUtZWRpdC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9pbmxpbmUtZWRpdC5zY3NzJywgJy4vaW5saW5lLWVkaXQtdG9rZW5zLnNjc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiBiYXNlQ2xhc3MsXG4gICAgICAgICdbY2xhc3NdJzogJ2NsYXNzTmFtZSgpJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtaW5saW5lLWVkaXRfd2l0aC1sYWJlbF0nOiAnISFsYWJlbCgpJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtaW5saW5lLWVkaXRfd2l0aC1tZW51XSc6ICchIW1lbnUoKScsXG4gICAgICAgICdbY2xhc3Mua2JxLWlubGluZS1lZGl0X2Rpc2FibGVkXSc6ICdkaXNhYmxlZCgpJyxcbiAgICAgICAgJyhjbGljayknOiAnb25DbGljaygkZXZlbnQpJyxcbiAgICAgICAgJyhrZXlkb3duLmVudGVyKSc6ICdvbkNsaWNrKCRldmVudCknLFxuICAgICAgICAnKGtleWRvd24uc3BhY2UpJzogJ29uQ2xpY2soJGV2ZW50KSdcbiAgICB9LFxuICAgIGhvc3REaXJlY3RpdmVzOiBbS2JxRm9jdXNNb25pdG9yXSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENka0Nvbm5lY3RlZE92ZXJsYXksXG4gICAgICAgIENka092ZXJsYXlPcmlnaW4sXG4gICAgICAgIEticUJ1dHRvbk1vZHVsZSxcbiAgICAgICAgS2JxSWNvbixcbiAgICAgICAgS2JxVG9vbHRpcFRyaWdnZXIsXG4gICAgICAgIEticUZvY3VzUmVnaW9uSXRlbSxcbiAgICAgICAgQ2RrVHJhcEZvY3VzLFxuICAgICAgICBDZGtNb25pdG9yRm9jdXNcbiAgICBdLFxuICAgIGFuaW1hdGlvbnM6IFtLQlFfSU5MSU5FX0VESVRfQUNUSU9OX0JVVFRPTlNfQU5JTUFUSU9OXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEticUlubGluZUVkaXQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZiA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBrYnFGb2N1c01vbml0b3IgPSBpbmplY3QoS2JxRm9jdXNNb25pdG9yLCB7IGhvc3Q6IHRydWUgfSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBvdmVybGF5ID0gaW5qZWN0KE92ZXJsYXkpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBzaG93IHNhdmUvY2FuY2VsIGFjdGlvbiBidXR0b25zIGluIGVkaXQgbW9kZS5cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IHNob3dBY3Rpb25zID0gaW5wdXQoZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gYXV0b21hdGljYWxseSBzaG93IHZhbGlkYXRpb24gZXJyb3IgdG9vbHRpcHMgb24gc2F2ZSBhdHRlbXB0cy5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgcmVhZG9ubHkgc2hvd1Rvb2x0aXBPbkVycm9yID0gaW5wdXQodHJ1ZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG4gICAgLyoqIEN1c3RvbSB2YWxpZGF0aW9uIHRvb2x0aXAgbWVzc2FnZS4gKi9cbiAgICByZWFkb25seSB2YWxpZGF0aW9uVG9vbHRpcCA9IGlucHV0PHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4+KCk7XG4gICAgLyoqXG4gICAgICogRGlzYWJsZXMgdGhlIGNvbXBvbmVudCwgcHJldmVudGluZyBpbnRlcmFjdGlvbiBhbmQgbW9kZSBzd2l0Y2hpbmcuIE9ubHkgYWxsb3dzIG1lbnUgZHJvcGRvd24uXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICByZWFkb25seSBkaXNhYmxlZCA9IGlucHV0KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcbiAgICAvKiogQ3VzdG9tIHdpZHRoIGluIHBpeGVscyBmb3IgdGhlIGVkaXQgbW9kZSBvdmVybGF5LiBBdXRvLWNhbGN1bGF0ZWQgaWYgbm90IHNldC4gKi9cbiAgICByZWFkb25seSBlZGl0TW9kZVdpZHRoID0gaW5wdXQodW5kZWZpbmVkLCB7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pO1xuICAgIC8qKiBVc2VyLWRlZmluZWQgdG9vbHRpcCBwbGFjZW1lbnQgKi9cbiAgICByZWFkb25seSB0b29sdGlwUGxhY2VtZW50ID0gaW5wdXQ8UG9wVXBQbGFjZW1lbnRzPigpO1xuICAgIC8qKiBIYW5kbGVyIGZ1bmN0aW9uIHRvIHJldHJpZXZlIHRoZSBjdXJyZW50IHZhbHVlICovXG4gICAgcmVhZG9ubHkgZ2V0VmFsdWVIYW5kbGVyID0gaW5wdXQ8KCkgPT4gdW5rbm93bj4oKTtcbiAgICAvKiogSGFuZGxlciBmdW5jdGlvbiB0byB1cGRhdGUgdGhlIHZhbHVlICovXG4gICAgcmVhZG9ubHkgc2V0VmFsdWVIYW5kbGVyID0gaW5wdXQ8KHZhbHVlOiBhbnkpID0+IHZvaWQ+KCk7XG4gICAgLyoqXG4gICAgICogQ3VzdG9taXphYmxlIGZ1bmN0aW9uIHRoYXQgY2hlY2tzIGlmIHNhdmluZyBvbiBlbnRlciBhdmFpbGFibGUuXG4gICAgICovXG4gICAgcmVhZG9ubHkgY2FuU2F2ZU9uRW50ZXIgPSBpbnB1dChcbiAgICAgICAgKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogYm9vbGVhbiA9PlxuICAgICAgICAgICAgaGFzTW9kaWZpZXJLZXkoZXZlbnQsICdjdHJsS2V5JywgJ21ldGFLZXknKSB8fCAhKGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIEhUTUxUZXh0QXJlYUVsZW1lbnQpXG4gICAgKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gdGhlIGlubGluZSBlZGl0IGlzIHNhdmVkIHN1Y2Nlc3NmdWxseS4gKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2F2ZWQgPSBvdXRwdXQoKTtcbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSBpbmxpbmUgZWRpdCBpcyBjYW5jZWxlZCBhbmQgY2hhbmdlcyBhcmUgZGlzY2FyZGVkLiAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjYW5jZWxlZCA9IG91dHB1dCgpO1xuICAgIC8qKiBFbWl0dGVkIHdoZW4gbW9kZSBzd2l0Y2hlZCB0byBlZGl0L3ZpZXcgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbW9kZUNoYW5nZSA9IG91dHB1dDwndmlldycgfCAnZWRpdCc+KCk7XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBtZW51ID0gY29udGVudENoaWxkKEticUlubGluZUVkaXRNZW51KTtcbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBsYWJlbCA9IGNvbnRlbnRDaGlsZChLYnFMYWJlbCk7XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZm9ybUZpZWxkUmVmID0gY29udGVudENoaWxkKEticUZvcm1GaWVsZCk7XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBvdmVybGF5T3JpZ2luID0gdmlld0NoaWxkLnJlcXVpcmVkKENka092ZXJsYXlPcmlnaW4pO1xuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRvb2x0aXBUcmlnZ2VyID0gdmlld0NoaWxkKEticVRvb2x0aXBUcmlnZ2VyKTtcbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBvdmVybGF5RGlyID0gdmlld0NoaWxkKENka0Nvbm5lY3RlZE92ZXJsYXkpO1xuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHJlZ2lvbkl0ZW1zID0gdmlld0NoaWxkcmVuKEticUZvY3VzUmVnaW9uSXRlbSk7XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBtb2RlID0gc2lnbmFsPCd2aWV3JyB8ICdlZGl0Jz4oJ3ZpZXcnKTtcbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBvdmVybGF5V2lkdGggPSBzaWduYWw8bnVtYmVyIHwgc3RyaW5nPignJyk7XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2Nyb2xsU3RyYXRlZ3kgPSBzaWduYWw8U2Nyb2xsU3RyYXRlZ3k+KHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKSk7XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICByZWFkb25seSBtb2RlQXNSZWFkb25seSA9IGNvbXB1dGVkKCgpID0+IHRoaXMubW9kZSgpKTtcblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNsYXNzTmFtZSA9IGNvbXB1dGVkKCgpID0+IGAke2Jhc2VDbGFzc31fJHt0aGlzLm1vZGUoKX1gKTtcbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBpc0VkaXRNb2RlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5tb2RlKCkgPT09ICdlZGl0Jyk7XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGFiSW5kZXggPSBjb21wdXRlZCgoKSA9PiAodGhpcy5pc0VkaXRNb2RlKCkgfHwgdGhpcy5kaXNhYmxlZCgpID8gLTEgOiAwKSk7XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBwbGFjZW1lbnRzID0gUG9wVXBQbGFjZW1lbnRzO1xuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29sb3JzID0gS2JxQ29tcG9uZW50Q29sb3JzO1xuXG4gICAgcHJpdmF0ZSBpbml0aWFsVmFsdWU6IHVua25vd247XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdG9PYnNlcnZhYmxlKHRoaXMubW9kZSlcbiAgICAgICAgICAgIC5waXBlKHNraXAoMSksIHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoY3VycmVudE1vZGUpID0+IHRoaXMubW9kZUNoYW5nZS5lbWl0KGN1cnJlbnRNb2RlKSk7XG4gICAgfVxuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcm90ZWN0ZWQgdG9nZ2xlTW9kZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tb2RlLnVwZGF0ZSgobW9kZSkgPT4gKG1vZGUgPT09ICd2aWV3JyA/ICdlZGl0JyA6ICd2aWV3JykpO1xuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgcHJvdGVjdGVkIG9uQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKCkgfHwgdGhpcy5pc0VkaXRNb2RlKCkpIHJldHVybjtcblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5rYnFGb2N1c01vbml0b3IuZm9jdXNWaWEodGhpcy5vdmVybGF5T3JpZ2luKCkuZWxlbWVudFJlZiwgJ3Byb2dyYW0nKTtcblxuICAgICAgICB0aGlzLnRvZ2dsZU1vZGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCBvbkF0dGFjaCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRPdmVybGF5V2lkdGgoKTtcbiAgICAgICAgdGhpcy5zZXRPdmVybGF5S2V5ZG93bkxpc3RlbmVyKCk7XG5cbiAgICAgICAgY29uc3QgZm9ybUZpZWxkUmVmID0gdGhpcy5mb3JtRmllbGRSZWYoKTtcblxuICAgICAgICBmb3JtRmllbGRSZWY/LmNvbnRyb2wuc3RhdGVDaGFuZ2VzXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5vdmVybGF5RGlyKCkhLm92ZXJsYXlSZWYuZGV0YWNobWVudHMoKSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNJbnZhbGlkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdG9vbHRpcFRyaWdnZXIgPSB0aGlzLnRvb2x0aXBUcmlnZ2VyKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFRyaWdnZXI/LmlzT3BlbiAmJiB0b29sdGlwVHJpZ2dlcj8uaGlkZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgZm9ybUZpZWxkUmVmPy5mb2N1cygpO1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsVmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5nZXRJbnB1dE5hdGl2ZUVsZW1lbnQoKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuaW5pdGlhbFZhbHVlKSBpbnB1dD8uc2VsZWN0KCk7XG5cbiAgICAgICAgICAgIGlmIChmb3JtRmllbGRSZWYpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5QYW5lbChmb3JtRmllbGRSZWYpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCAwKTtcbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCBzYXZlKCRldmVudD86IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzSW52YWxpZCgpKSB7XG4gICAgICAgICAgICAkZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgdGhpcy5zaG93VG9vbHRpcE9uRXJyb3IoKSAmJiB0aGlzLnRvb2x0aXBUcmlnZ2VyKCk/LnNob3coKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlTW9kZSgpO1xuICAgICAgICAgICAgdGhpcy5zYXZlZC5lbWl0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCBjYW5jZWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0VmFsdWUodGhpcy5pbml0aWFsVmFsdWUpO1xuXG4gICAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5nZXRJbnB1dE5hdGl2ZUVsZW1lbnQoKTtcblxuICAgICAgICBpZiAoaW5wdXQpIHtcbiAgICAgICAgICAgIGlucHV0LnNlbGVjdGlvblN0YXJ0ID0gaW5wdXQuc2VsZWN0aW9uRW5kID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudG9nZ2xlTW9kZSgpO1xuICAgICAgICB0aGlzLmNhbmNlbGVkLmVtaXQoKTtcbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCBvbk92ZXJsYXlLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybUZpZWxkUmVmKCk/LmNvbnRyb2wubmdDb250cm9sPy5jb250cm9sPy5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICAgIGNvbnN0IGNhblNhdmVPbkVudGVyID0gdGhpcy5jYW5TYXZlT25FbnRlcigpO1xuXG4gICAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgICAgICBjYXNlICdFc2NhcGUnOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYW5jZWwoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ0VudGVyJzoge1xuICAgICAgICAgICAgICAgIGlmIChjYW5TYXZlT25FbnRlcihldmVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtRmllbGRSZWYoKT8uY29udHJvbC5uZ0NvbnRyb2w/LmNvbnRyb2w/Lm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNhdmUoZXZlbnQpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHVwIFRhYiBrZXkgbGlzdGVuZXJzIG9uIHJlZ2lvbiBpdGVtcy5cbiAgICAgKiBTaW5nbGUgaXRlbTogVGFiIG1vdmVzIHRvIG5leHQgZWRpdC5cbiAgICAgKiBNdWx0aXBsZSBpdGVtczogU2hpZnQrVGFiIG9uIGZpcnN0IG9yIFRhYiBvbiBsYXN0IG1vdmVzIHRvIG5leHQgZWRpdC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHNldE92ZXJsYXlLZXlkb3duTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlZ2lvbkl0ZW1zID0gdGhpcy5yZWdpb25JdGVtcygpO1xuXG4gICAgICAgIGlmIChyZWdpb25JdGVtcy5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgICAgICBjb25zdCBmaXJzdEl0ZW0gPSByZWdpb25JdGVtcy5hdCgwKTtcbiAgICAgICAgY29uc3QgbGFzdEl0ZW0gPSByZWdpb25JdGVtcy5hdChyZWdpb25JdGVtcy5sZW5ndGggLSAxKTtcblxuICAgICAgICBpZiAocmVnaW9uSXRlbXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBmaXJzdEl0ZW0/LnRhYk91dC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB0aGlzLnNhdmVBbmRGb2N1c05leHRJbmxpbmVFZGl0KGV2ZW50KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmaXJzdEl0ZW0/LnRhYk91dC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgKGV2ZW50KSA9PiBoYXNNb2RpZmllcktleShldmVudCwgJ3NoaWZ0S2V5JykgJiYgdGhpcy5zYXZlQW5kRm9jdXNOZXh0SW5saW5lRWRpdChldmVudClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGxhc3RJdGVtPy50YWJPdXQuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgIChldmVudCkgPT4gIWhhc01vZGlmaWVyS2V5KGV2ZW50LCAnc2hpZnRLZXknKSAmJiB0aGlzLnNhdmVBbmRGb2N1c05leHRJbmxpbmVFZGl0KGV2ZW50KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2F2ZUFuZEZvY3VzTmV4dElubGluZUVkaXQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zYXZlKGV2ZW50KTtcbiAgICAgICAgaWYgKHRoaXMuaXNJbnZhbGlkKCkpIHJldHVybjtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZUVsZW1lbnQgPSB0aGlzLmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgICAgIGlmIChhY3RpdmVFbGVtZW50Py5jbGFzc0xpc3Q/LmNvbnRhaW5zKCdrYnEtaW5saW5lLWVkaXRfX2ZvY3VzX2NvbnRhaW5lcicpKSB7XG4gICAgICAgICAgICAgICAgYWN0aXZlRWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBLZXlib2FyZEV2ZW50KCdrZXlkb3duJywgeyBrZXk6ICdFbnRlcicgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzSW52YWxpZCgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZm9ybUZpZWxkUmVmID0gdGhpcy5mb3JtRmllbGRSZWYoKTtcblxuICAgICAgICBpZiAoIWZvcm1GaWVsZFJlZikgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgIHJldHVybiBmb3JtRmllbGRSZWYuaW52YWxpZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFZhbHVlKCkge1xuICAgICAgICBjb25zdCBnZXRWYWx1ZUhhbmRsZXIgPSB0aGlzLmdldFZhbHVlSGFuZGxlcigpO1xuXG4gICAgICAgIGlmIChnZXRWYWx1ZUhhbmRsZXIpIHJldHVybiBnZXRWYWx1ZUhhbmRsZXIoKTtcblxuICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5jb2VyY2VDb250cm9sKCk7XG5cbiAgICAgICAgcmV0dXJuIGNvbnRyb2w/LnZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0VmFsdWU8VD4odmFsdWU6IFQpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2V0VmFsdWUgPSB0aGlzLnNldFZhbHVlSGFuZGxlcigpO1xuXG4gICAgICAgIGlmIChzZXRWYWx1ZSkge1xuICAgICAgICAgICAgc2V0VmFsdWUodGhpcy5pbml0aWFsVmFsdWUpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5jb2VyY2VDb250cm9sKCk7XG5cbiAgICAgICAgaWYgKCFjb250cm9sKSByZXR1cm47XG5cbiAgICAgICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBBYnN0cmFjdENvbnRyb2wpIHtcbiAgICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29udHJvbC52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb2VyY2VDb250cm9sKCkge1xuICAgICAgICBjb25zdCBmb3JtRmllbGRSZWYgPSB0aGlzLmZvcm1GaWVsZFJlZigpO1xuXG4gICAgICAgIGlmICghZm9ybUZpZWxkUmVmKSByZXR1cm4gbnVsbDtcblxuICAgICAgICBpZiAoZm9ybUZpZWxkUmVmLmNvbnRyb2wubmdDb250cm9sIGluc3RhbmNlb2YgTmdDb250cm9sKSB7XG4gICAgICAgICAgICByZXR1cm4gZm9ybUZpZWxkUmVmLmNvbnRyb2wubmdDb250cm9sLmNvbnRyb2w7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZm9ybUZpZWxkUmVmLmNvbnRyb2w7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRPdmVybGF5V2lkdGgoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGVkaXRNb2RlV2lkdGggPSB0aGlzLmVkaXRNb2RlV2lkdGgoKTtcblxuICAgICAgICBpZiAoZWRpdE1vZGVXaWR0aCkge1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5V2lkdGguc2V0KGVkaXRNb2RlV2lkdGgpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB8IHVuZGVmaW5lZCA9IHRoaXMubGFiZWwoKVxuICAgICAgICAgICAgPyB0aGlzLm92ZXJsYXlPcmlnaW4oKS5lbGVtZW50UmVmXG4gICAgICAgICAgICA6IHRoaXMuZWxlbWVudFJlZjtcblxuICAgICAgICB0aGlzLm92ZXJsYXlXaWR0aC5zZXQoZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCA/PyAnJyk7XG4gICAgfVxuXG4gICAgLy8gQFRPRE8gcmVmYWN0b3IgdGhpcyAoI0RTLTQxODEpXG4gICAgcHJpdmF0ZSBvcGVuUGFuZWwoZm9ybUZpZWxkUmVmOiBLYnFGb3JtRmllbGQpIHtcbiAgICAgICAgY29uc3QgY29udHJvbCA9IGZvcm1GaWVsZFJlZi5jb250cm9sO1xuXG4gICAgICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgS2JxU2VsZWN0IHx8IGNvbnRyb2wgaW5zdGFuY2VvZiBLYnFUcmVlU2VsZWN0KSB7XG4gICAgICAgICAgICBjb250cm9sLm9wZW4oKTtcbiAgICAgICAgfSBlbHNlIGlmIChjb250cm9sIGluc3RhbmNlb2YgS2JxQXV0b2NvbXBsZXRlVHJpZ2dlcikge1xuICAgICAgICAgICAgY29udHJvbC5vcGVuUGFuZWwoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SW5wdXROYXRpdmVFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQgfCBIVE1MVGV4dEFyZWFFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLm92ZXJsYXlEaXIoKT8ub3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dDpub3QoW3R5cGU9XCJmaWxlXCJdKSx0ZXh0YXJlYScpID8/IG51bGw7XG4gICAgfVxufVxuIiwiQGlmIChsYWJlbCgpKSB7XG4gICAgPGRpdiBjbGFzcz1cImticS1pbmxpbmUtZWRpdF9fbGFiZWxcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwia2JxLWxhYmVsXCIgLz5cbiAgICA8L2Rpdj5cbn1cblxuPGRpdiBjbGFzcz1cImticS1pbmxpbmUtZWRpdF9fdmlldy1jb250YWluZXJcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJba2JxSW5saW5lRWRpdFZpZXdNb2RlXVwiIC8+XG5cbiAgICA8ZGl2XG4gICAgICAgICNvdmVybGF5T3JpZ2luXG4gICAgICAgIGNsYXNzPVwia2JxLWlubGluZS1lZGl0X19mb2N1c19jb250YWluZXIga2JxLWlubGluZS1lZGl0X19vdmVybGF5LW9yaWdpblwiXG4gICAgICAgIGNka01vbml0b3JFbGVtZW50Rm9jdXNcbiAgICAgICAgY2RrT3ZlcmxheU9yaWdpblxuICAgICAgICBbdGFiSW5kZXhdPVwidGFiSW5kZXgoKVwiXG4gICAgICAgIChrZXlkb3duLmVudGVyKT1cIm9uQ2xpY2soJGV2ZW50KVwiXG4gICAgPjwvZGl2PlxuXG4gICAgQGlmIChtZW51KCkgJiYgbW9kZSgpID09PSAndmlldycpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImticS1pbmxpbmUtZWRpdF9fbWVudS1tYXNrIGticS1tYXNrXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwia2JxLWlubGluZS1lZGl0X19tZW51LW1hc2stZmFkZSBrYnEtbWFza19fZmFkZVwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImticS1pbmxpbmUtZWRpdF9fbWVudS1tYXNrLWNvbnRhaW5lciBrYnEtbWFza19fY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2ticUlubGluZUVkaXRNZW51XVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuXG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIGNka0Nvbm5lY3RlZE92ZXJsYXlcbiAgICAgICAgY2RrQ29ubmVjdGVkT3ZlcmxheUxvY2tQb3NpdGlvblxuICAgICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwiaXNFZGl0TW9kZSgpXCJcbiAgICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwib3ZlcmxheU9yaWdpblwiXG4gICAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T2Zmc2V0WV09XCItb3ZlcmxheU9yaWdpbi5vZmZzZXRIZWlnaHRcIlxuICAgICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheVdpZHRoXT1cIm92ZXJsYXlXaWR0aCgpXCJcbiAgICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlEaXNhYmxlQ2xvc2VdPVwidHJ1ZVwiXG4gICAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5U2Nyb2xsU3RyYXRlZ3ldPVwic2Nyb2xsU3RyYXRlZ3koKVwiXG4gICAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5SGFzQmFja2Ryb3BdPVwiZmFsc2VcIlxuICAgICAgICAoYXR0YWNoKT1cIm9uQXR0YWNoKClcIlxuICAgICAgICAob3ZlcmxheU91dHNpZGVDbGljayk9XCJzYXZlKCRldmVudClcIlxuICAgICAgICAob3ZlcmxheUtleWRvd24pPVwib25PdmVybGF5S2V5ZG93bigkZXZlbnQpXCJcbiAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJrYnEtaW5saW5lLWVkaXRfX3BhbmVsXCIgY2RrVHJhcEZvY3VzIGNka1RyYXBGb2N1c0F1dG9DYXB0dXJlPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwia2JxLWlubGluZS1lZGl0X19jb250cm9sLWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAga2JxRm9jdXNSZWdpb25JdGVtXG4gICAgICAgICAgICAgICAgW2ticVRvb2x0aXBDb2xvcl09XCJjb2xvcnMuRXJyb3JcIlxuICAgICAgICAgICAgICAgIFtrYnFUb29sdGlwXT1cInZhbGlkYXRpb25Ub29sdGlwKCkgPz8gJydcIlxuICAgICAgICAgICAgICAgIFtrYnFUb29sdGlwQXJyb3ddPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIFtrYnFUcmlnZ2VyXT1cIidtYW51YWwnXCJcbiAgICAgICAgICAgICAgICBba2JxUGxhY2VtZW50XT1cInRvb2x0aXBQbGFjZW1lbnQoKSA/PyBwbGFjZW1lbnRzLlRvcExlZnRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltrYnFJbmxpbmVFZGl0RWRpdE1vZGVdXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICBAaWYgKHNob3dBY3Rpb25zKCkpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwia2JxLWlubGluZS1lZGl0X19hY3Rpb24tYnV0dG9uc1wiIHJvbGU9XCJncm91cFwiIFtAcGFuZWxBbmltYXRpb25dPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGticS1idXR0b24gW2NvbG9yXT1cIidjb250cmFzdCdcIiAoY2xpY2spPVwic2F2ZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBrYnEtaWNvbj1cImticS1jaGVja18xNlwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGticUZvY3VzUmVnaW9uSXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAga2JxLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cIidjb250cmFzdC1mYWRlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2FuY2VsKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiY2FuY2VsKClcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBrYnEtaWNvbj1cImticS14bWFya18xNlwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia29vYmlxLWNvbXBvbmVudHMtaW5saW5lLWVkaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2lubGluZS1lZGl0L2tvb2JpcS1jb21wb25lbnRzLWlubGluZS1lZGl0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -0,0 +1,25 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { KbqInlineEdit, KbqInlineEditMenu, KbqInlineEditPlaceholder } from './inline-edit';
3
+ import * as i0 from "@angular/core";
4
+ const COMPONENTS = [
5
+ KbqInlineEdit,
6
+ KbqInlineEditPlaceholder,
7
+ KbqInlineEditMenu
8
+ ];
9
+ export class KbqInlineEditModule {
10
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqInlineEditModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
11
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: KbqInlineEditModule, imports: [KbqInlineEdit,
12
+ KbqInlineEditPlaceholder,
13
+ KbqInlineEditMenu], exports: [KbqInlineEdit,
14
+ KbqInlineEditPlaceholder,
15
+ KbqInlineEditMenu] }); }
16
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqInlineEditModule, imports: [KbqInlineEdit] }); }
17
+ }
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqInlineEditModule, decorators: [{
19
+ type: NgModule,
20
+ args: [{
21
+ imports: COMPONENTS,
22
+ exports: COMPONENTS
23
+ }]
24
+ }] });
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9pbmxpbmUtZWRpdC9tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUzRixNQUFNLFVBQVUsR0FBRztJQUNmLGFBQWE7SUFDYix3QkFBd0I7SUFDeEIsaUJBQWlCO0NBQ3BCLENBQUM7QUFNRixNQUFNLE9BQU8sbUJBQW1CO2tJQUFuQixtQkFBbUI7bUlBQW5CLG1CQUFtQixZQVQ1QixhQUFhO1lBQ2Isd0JBQXdCO1lBQ3hCLGlCQUFpQixhQUZqQixhQUFhO1lBQ2Isd0JBQXdCO1lBQ3hCLGlCQUFpQjttSUFPUixtQkFBbUIsWUFUNUIsYUFBYTs7NEZBU0osbUJBQW1CO2tCQUovQixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxVQUFVO29CQUNuQixPQUFPLEVBQUUsVUFBVTtpQkFDdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgS2JxSW5saW5lRWRpdCwgS2JxSW5saW5lRWRpdE1lbnUsIEticUlubGluZUVkaXRQbGFjZWhvbGRlciB9IGZyb20gJy4vaW5saW5lLWVkaXQnO1xuXG5jb25zdCBDT01QT05FTlRTID0gW1xuICAgIEticUlubGluZUVkaXQsXG4gICAgS2JxSW5saW5lRWRpdFBsYWNlaG9sZGVyLFxuICAgIEticUlubGluZUVkaXRNZW51XG5dO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IENPTVBPTkVOVFMsXG4gICAgZXhwb3J0czogQ09NUE9ORU5UU1xufSlcbmV4cG9ydCBjbGFzcyBLYnFJbmxpbmVFZGl0TW9kdWxlIHt9XG4iXX0=
@@ -28,10 +28,10 @@ export class MinValidator {
28
28
  createValidator() {
29
29
  this.validator = Validators.min(parseInt(this.min, 10));
30
30
  }
31
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MinValidator, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
32
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: MinValidator, selector: "[min][formControlName],[min][formControl],[min][ngModel]", inputs: { min: "min" }, host: { properties: { "attr.min": "min ? min : null" } }, providers: [MIN_VALIDATOR], usesOnChanges: true, ngImport: i0 }); }
31
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MinValidator, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
32
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: MinValidator, selector: "[min][formControlName],[min][formControl],[min][ngModel]", inputs: { min: "min" }, host: { properties: { "attr.min": "min ? min : null" } }, providers: [MIN_VALIDATOR], usesOnChanges: true, ngImport: i0 }); }
33
33
  }
34
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MinValidator, decorators: [{
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MinValidator, decorators: [{
35
35
  type: Directive,
36
36
  args: [{
37
37
  selector: '[min][formControlName],[min][formControl],[min][ngModel]',
@@ -70,10 +70,10 @@ export class MaxValidator {
70
70
  createValidator() {
71
71
  this.validator = Validators.max(parseInt(this.max, 10));
72
72
  }
73
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MaxValidator, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
74
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: MaxValidator, selector: "[max][formControlName],[max][formControl],[max][ngModel]", inputs: { max: "max" }, host: { properties: { "attr.max": "max ? max : null" } }, providers: [MAX_VALIDATOR], usesOnChanges: true, ngImport: i0 }); }
73
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MaxValidator, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
74
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: MaxValidator, selector: "[max][formControlName],[max][formControl],[max][ngModel]", inputs: { max: "max" }, host: { properties: { "attr.max": "max ? max : null" } }, providers: [MAX_VALIDATOR], usesOnChanges: true, ngImport: i0 }); }
75
75
  }
76
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MaxValidator, decorators: [{
76
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MaxValidator, decorators: [{
77
77
  type: Directive,
78
78
  args: [{
79
79
  selector: '[max][formControlName],[max][formControl],[max][ngModel]',