@seniorsistemas/data-seniorx-core 2.3.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (262) hide show
  1. package/core/constants/autocomplete.const.d.ts +4 -0
  2. package/core/constants/context-selector.const.d.ts +1 -0
  3. package/core/constants/gantt.const.d.ts +7 -0
  4. package/core/constants/hyperlink.const.d.ts +1 -0
  5. package/core/constants/inline-edit.const.d.ts +4 -0
  6. package/core/constants/kanban.const.d.ts +2 -0
  7. package/core/constants/pin-code-field.const.d.ts +5 -0
  8. package/core/constants/rating-scale.const.d.ts +1 -0
  9. package/core/constants/spotlight.const.d.ts +8 -0
  10. package/core/constants/star-rating.const.d.ts +4 -0
  11. package/core/constants/stepper.const.d.ts +1 -0
  12. package/core/constants/tiered-menu.const.d.ts +3 -0
  13. package/core/types/autocomplete.type.d.ts +9 -0
  14. package/core/types/chat.type.d.ts +12 -0
  15. package/core/types/checkbox-list.type.d.ts +12 -0
  16. package/core/types/gantt.type.d.ts +22 -0
  17. package/core/types/grid-menu.type.d.ts +13 -0
  18. package/core/types/hyperlink.type.d.ts +1 -0
  19. package/core/types/image-cropper.type.d.ts +20 -0
  20. package/core/types/inline-edit.type.d.ts +26 -0
  21. package/core/types/kanban.type.d.ts +36 -0
  22. package/core/types/panel.type.d.ts +16 -0
  23. package/core/types/profile-picture-picker.type.d.ts +9 -0
  24. package/core/types/rating-scale.type.d.ts +5 -0
  25. package/core/types/select-button.type.d.ts +1 -0
  26. package/core/types/spotlight.type.d.ts +34 -0
  27. package/core/types/star-rating.type.d.ts +1 -0
  28. package/core/types/stepper.type.d.ts +20 -0
  29. package/core/types/table-column.type.d.ts +3 -1
  30. package/core/types/table-options.type.d.ts +8 -2
  31. package/core/types/table.type.d.ts +1 -1
  32. package/core/types/tiered-menu.type.d.ts +16 -0
  33. package/core/types/tree.type.d.ts +25 -0
  34. package/core/types/workspace-switch.type.d.ts +6 -0
  35. package/core/utils/body-scroll.util.d.ts +2 -0
  36. package/core/utils/roving-focus.util.d.ts +2 -0
  37. package/core/utils/selection.util.d.ts +3 -0
  38. package/core/utils/tree.util.d.ts +4 -0
  39. package/esm2022/core/constants/autocomplete.const.mjs +5 -0
  40. package/esm2022/core/constants/context-selector.const.mjs +2 -0
  41. package/esm2022/core/constants/gantt.const.mjs +7 -0
  42. package/esm2022/core/constants/hyperlink.const.mjs +2 -1
  43. package/esm2022/core/constants/inline-edit.const.mjs +5 -0
  44. package/esm2022/core/constants/kanban.const.mjs +3 -0
  45. package/esm2022/core/constants/pin-code-field.const.mjs +6 -0
  46. package/esm2022/core/constants/rating-scale.const.mjs +2 -0
  47. package/esm2022/core/constants/spotlight.const.mjs +9 -0
  48. package/esm2022/core/constants/star-rating.const.mjs +5 -0
  49. package/esm2022/core/constants/stepper.const.mjs +2 -0
  50. package/esm2022/core/constants/table.const.mjs +2 -2
  51. package/esm2022/core/constants/tiered-menu.const.mjs +4 -0
  52. package/esm2022/core/types/autocomplete.type.mjs +2 -0
  53. package/esm2022/core/types/chat.type.mjs +2 -0
  54. package/esm2022/core/types/checkbox-list.type.mjs +2 -0
  55. package/esm2022/core/types/gantt.type.mjs +2 -0
  56. package/esm2022/core/types/grid-menu.type.mjs +2 -0
  57. package/esm2022/core/types/hyperlink.type.mjs +1 -1
  58. package/esm2022/core/types/image-cropper.type.mjs +2 -0
  59. package/esm2022/core/types/inline-edit.type.mjs +2 -0
  60. package/esm2022/core/types/kanban.type.mjs +2 -0
  61. package/esm2022/core/types/panel.type.mjs +9 -0
  62. package/esm2022/core/types/profile-picture-picker.type.mjs +2 -0
  63. package/esm2022/core/types/rating-scale.type.mjs +2 -0
  64. package/esm2022/core/types/select-button.type.mjs +1 -1
  65. package/esm2022/core/types/spotlight.type.mjs +2 -0
  66. package/esm2022/core/types/star-rating.type.mjs +2 -0
  67. package/esm2022/core/types/stepper.type.mjs +7 -0
  68. package/esm2022/core/types/table-column.type.mjs +1 -1
  69. package/esm2022/core/types/table-options.type.mjs +1 -1
  70. package/esm2022/core/types/table.type.mjs +1 -1
  71. package/esm2022/core/types/tiered-menu.type.mjs +2 -0
  72. package/esm2022/core/types/tree.type.mjs +2 -0
  73. package/esm2022/core/types/workspace-switch.type.mjs +2 -0
  74. package/esm2022/core/utils/body-scroll.util.mjs +19 -0
  75. package/esm2022/core/utils/combobox.util.mjs +3 -2
  76. package/esm2022/core/utils/roving-focus.util.mjs +20 -0
  77. package/esm2022/core/utils/selection.util.mjs +13 -0
  78. package/esm2022/core/utils/string.util.mjs +8 -3
  79. package/esm2022/core/utils/tree.util.mjs +23 -0
  80. package/esm2022/features/accordion/accordion.component.mjs +2 -2
  81. package/esm2022/features/accordion/{accordion-item.component.mjs → components/accordion-item/accordion-item.component.mjs} +7 -7
  82. package/esm2022/features/autocomplete/autocomplete.component.mjs +501 -0
  83. package/esm2022/features/autocomplete/components/autocomplete-chip/autocomplete-chip.component.mjs +30 -0
  84. package/esm2022/features/breadcrumb/breadcrumb.component.mjs +2 -2
  85. package/esm2022/features/card-list/card/card.component.mjs +63 -99
  86. package/esm2022/features/chat/chat.component.mjs +126 -0
  87. package/esm2022/features/checkbox-list/checkbox-list.component.mjs +125 -0
  88. package/esm2022/features/combobox/combobox.component.mjs +20 -8
  89. package/esm2022/features/context-selector/context-selector.component.mjs +198 -0
  90. package/esm2022/features/filters/filters.component.mjs +1 -1
  91. package/esm2022/features/gantt/components/gantt-side-table/gantt-side-table.component.mjs +17 -0
  92. package/esm2022/features/gantt/gantt-date.utils.mjs +97 -0
  93. package/esm2022/features/gantt/gantt.component.mjs +89 -0
  94. package/esm2022/features/gantt/gantt.engine.mjs +662 -0
  95. package/esm2022/features/grid-menu/grid-menu.component.mjs +104 -0
  96. package/esm2022/features/hyperlink/hyperlink.component.mjs +7 -4
  97. package/esm2022/features/icon-picker/icon-picker.component.mjs +3 -3
  98. package/esm2022/features/image-cropper/image-cropper.component.mjs +218 -0
  99. package/esm2022/features/image-cropper/services/image-cropper.service.mjs +50 -0
  100. package/esm2022/features/infinite-scroll/infinite-scroll.directive.mjs +89 -0
  101. package/esm2022/features/info-sign/info-sign.component.mjs +3 -3
  102. package/esm2022/features/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.mjs +38 -0
  103. package/esm2022/features/inline-edit/components/fields/inline-edit-text/inline-edit-text.component.mjs +29 -0
  104. package/esm2022/features/inline-edit/components/fields/inline-edit-textarea/inline-edit-textarea.component.mjs +29 -0
  105. package/esm2022/features/inline-edit/components/inline-edit-item/inline-edit-item.component.mjs +131 -0
  106. package/esm2022/features/inline-edit/fields/inline-edit-field.mjs +17 -0
  107. package/esm2022/features/inline-edit/fields/inline-edit-number-field.mjs +15 -0
  108. package/esm2022/features/inline-edit/fields/inline-edit-text-field.mjs +11 -0
  109. package/esm2022/features/inline-edit/fields/inline-edit-textarea-field.mjs +15 -0
  110. package/esm2022/features/inline-edit/inline-edit.component.mjs +27 -0
  111. package/esm2022/features/interactive-content/interactive-content.directive.mjs +140 -0
  112. package/esm2022/features/kanban/components/kanban-column/kanban-column.component.mjs +88 -0
  113. package/esm2022/features/kanban/components/kanban-item/kanban-item.component.mjs +72 -0
  114. package/esm2022/features/kanban/components/kanban-item-dragging/kanban-item-dragging.component.mjs +19 -0
  115. package/esm2022/features/kanban/directives/kanban-template.directive.mjs +22 -0
  116. package/esm2022/features/kanban/kanban.component.mjs +198 -0
  117. package/esm2022/features/kanban/services/kanban-event.service.mjs +27 -0
  118. package/esm2022/features/loading-state/loading-state.component.mjs +3 -62
  119. package/esm2022/features/mouse-events/directives/double-click.directive.mjs +34 -0
  120. package/esm2022/features/mouse-events/directives/long-press.directive.mjs +61 -0
  121. package/esm2022/features/paginator/paginator.component.mjs +8 -3
  122. package/esm2022/features/panel/panel.component.mjs +43 -11
  123. package/esm2022/features/pin-code-field/pin-code-field.component.mjs +234 -0
  124. package/esm2022/features/profile-picture-picker/profile-picture-picker.component.mjs +330 -0
  125. package/esm2022/features/rating-scale/rating-scale.component.mjs +86 -0
  126. package/esm2022/features/row-card-list/row-card/row-card.component.mjs +3 -3
  127. package/esm2022/features/scaffold/scaffold.component.mjs +4 -6
  128. package/esm2022/features/select-button/select-button.component.mjs +7 -4
  129. package/esm2022/features/speech-recognition/services/speech-recognition.service.mjs +148 -0
  130. package/esm2022/features/speech-recognition/services/text-to-speech.service.mjs +88 -0
  131. package/esm2022/features/speech-recognition/speech-recognition.component.mjs +243 -0
  132. package/esm2022/features/spotlight/components/spotlight-overlay/spotlight-overlay.component.mjs +521 -0
  133. package/esm2022/features/spotlight/directives/spotlight-step.directive.mjs +38 -0
  134. package/esm2022/features/spotlight/services/spotlight-tour.service.mjs +179 -0
  135. package/esm2022/features/spotlight/spotlight.component.mjs +160 -0
  136. package/esm2022/features/star-rating/star-rating.component.mjs +95 -0
  137. package/esm2022/features/stepper/stepper.component.mjs +86 -0
  138. package/esm2022/features/switch/switch.component.mjs +12 -8
  139. package/esm2022/features/tab/{tab-item.component.mjs → components/tab-item/tab-item.component.mjs} +1 -1
  140. package/esm2022/features/tab/tab.component.mjs +4 -4
  141. package/esm2022/features/table/components/table-cell-content.component.mjs +14 -5
  142. package/esm2022/features/table/table.component.mjs +220 -29
  143. package/esm2022/features/table/utils/table-data.util.mjs +71 -8
  144. package/esm2022/features/table/utils/table-layout.util.mjs +21 -1
  145. package/esm2022/features/tiered-menu/components/tiered-menu/tiered-menu.component.mjs +367 -0
  146. package/esm2022/features/tiered-menu/components/tiered-menu-divider/tiered-menu-divider.component.mjs +11 -0
  147. package/esm2022/features/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.mjs +97 -0
  148. package/esm2022/features/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.mjs +181 -0
  149. package/esm2022/features/tiered-menu/directives/tiered-menu.directive.mjs +246 -0
  150. package/esm2022/features/tiered-menu/services/tiered-menu.event.service.mjs +16 -0
  151. package/esm2022/features/tiered-menu/services/tiered-menu.global.service.mjs +12 -0
  152. package/esm2022/features/tiered-menu/services/tiered-menu.service.mjs +49 -0
  153. package/esm2022/features/tree/components/tree-node-item/tree-node-item.component.mjs +169 -0
  154. package/esm2022/features/tree/tree.component.mjs +211 -0
  155. package/esm2022/features/visual-sql-editor/components/visual-sql-editor-field-modal/visual-sql-editor-field-modal.component.mjs +41 -0
  156. package/esm2022/features/visual-sql-editor/components/visual-sql-editor-filter-modal/visual-sql-editor-filter-modal.component.mjs +38 -0
  157. package/esm2022/features/visual-sql-editor/components/visual-sql-editor-join-modal/visual-sql-editor-join-modal.component.mjs +29 -0
  158. package/esm2022/features/visual-sql-editor/components/visual-sql-editor-sort-modal/visual-sql-editor-sort-modal.component.mjs +29 -0
  159. package/esm2022/features/visual-sql-editor/components/visual-sql-editor-source-modal/visual-sql-editor-source-modal.component.mjs +35 -0
  160. package/esm2022/features/visual-sql-editor/services/visual-sql-editor-flow.service.mjs +106 -0
  161. package/esm2022/features/visual-sql-editor/services/visual-sql-editor-state.service.mjs +230 -0
  162. package/esm2022/features/visual-sql-editor/types/visual-sql-editor.types.mjs +2 -0
  163. package/esm2022/features/visual-sql-editor/utils/visual-sql-editor-sanitize.util.mjs +72 -0
  164. package/esm2022/features/visual-sql-editor/utils/visual-sql-editor-sql.util.mjs +281 -0
  165. package/esm2022/features/visual-sql-editor/utils/visual-sql-editor-text.util.mjs +37 -0
  166. package/esm2022/features/visual-sql-editor/utils/visual-sql-editor.constants.mjs +89 -0
  167. package/esm2022/features/visual-sql-editor/visual-sql-editor.component.mjs +172 -630
  168. package/esm2022/locales/en.json +351 -3
  169. package/esm2022/locales/es-CO.json +351 -3
  170. package/esm2022/locales/pt.json +351 -3
  171. package/esm2022/providers/features.provider.mjs +40 -4
  172. package/esm2022/public-api.mjs +56 -3
  173. package/features/accordion/accordion.component.d.ts +1 -1
  174. package/features/accordion/{accordion-item.component.d.ts → components/accordion-item/accordion-item.component.d.ts} +1 -1
  175. package/features/autocomplete/autocomplete.component.d.ts +102 -0
  176. package/features/autocomplete/components/autocomplete-chip/autocomplete-chip.component.d.ts +11 -0
  177. package/features/card-list/card/card.component.d.ts +14 -34
  178. package/features/chat/chat.component.d.ts +31 -0
  179. package/features/checkbox-list/checkbox-list.component.d.ts +26 -0
  180. package/features/combobox/combobox.component.d.ts +2 -1
  181. package/features/context-selector/context-selector.component.d.ts +37 -0
  182. package/features/gantt/components/gantt-side-table/gantt-side-table.component.d.ts +8 -0
  183. package/features/gantt/gantt-date.utils.d.ts +36 -0
  184. package/features/gantt/gantt.component.d.ts +24 -0
  185. package/features/gantt/gantt.engine.d.ts +52 -0
  186. package/features/grid-menu/grid-menu.component.d.ts +29 -0
  187. package/features/hyperlink/hyperlink.component.d.ts +2 -1
  188. package/features/image-cropper/image-cropper.component.d.ts +43 -0
  189. package/features/image-cropper/services/image-cropper.service.d.ts +13 -0
  190. package/features/infinite-scroll/infinite-scroll.directive.d.ts +25 -0
  191. package/features/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.d.ts +13 -0
  192. package/features/inline-edit/components/fields/inline-edit-text/inline-edit-text.component.d.ts +13 -0
  193. package/features/inline-edit/components/fields/inline-edit-textarea/inline-edit-textarea.component.d.ts +13 -0
  194. package/features/inline-edit/components/inline-edit-item/inline-edit-item.component.d.ts +37 -0
  195. package/features/inline-edit/fields/inline-edit-field.d.ts +12 -0
  196. package/features/inline-edit/fields/inline-edit-number-field.d.ts +9 -0
  197. package/features/inline-edit/fields/inline-edit-text-field.d.ts +7 -0
  198. package/features/inline-edit/fields/inline-edit-textarea-field.d.ts +9 -0
  199. package/features/inline-edit/inline-edit.component.d.ts +13 -0
  200. package/features/interactive-content/interactive-content.directive.d.ts +31 -0
  201. package/features/kanban/components/kanban-column/kanban-column.component.d.ts +22 -0
  202. package/features/kanban/components/kanban-item/kanban-item.component.d.ts +23 -0
  203. package/features/kanban/components/kanban-item-dragging/kanban-item-dragging.component.d.ts +8 -0
  204. package/features/kanban/directives/kanban-template.directive.d.ts +10 -0
  205. package/features/kanban/kanban.component.d.ts +32 -0
  206. package/features/kanban/services/kanban-event.service.d.ts +15 -0
  207. package/features/loading-state/loading-state.component.d.ts +0 -2
  208. package/features/mouse-events/directives/double-click.directive.d.ts +11 -0
  209. package/features/mouse-events/directives/long-press.directive.d.ts +14 -0
  210. package/features/panel/panel.component.d.ts +12 -3
  211. package/features/pin-code-field/pin-code-field.component.d.ts +44 -0
  212. package/features/profile-picture-picker/profile-picture-picker.component.d.ts +77 -0
  213. package/features/rating-scale/rating-scale.component.d.ts +24 -0
  214. package/features/select-button/select-button.component.d.ts +2 -1
  215. package/features/speech-recognition/services/speech-recognition.service.d.ts +29 -0
  216. package/features/speech-recognition/services/text-to-speech.service.d.ts +24 -0
  217. package/features/speech-recognition/speech-recognition.component.d.ts +50 -0
  218. package/features/spotlight/components/spotlight-overlay/spotlight-overlay.component.d.ts +59 -0
  219. package/features/spotlight/directives/spotlight-step.directive.d.ts +13 -0
  220. package/features/spotlight/services/spotlight-tour.service.d.ts +46 -0
  221. package/features/spotlight/spotlight.component.d.ts +59 -0
  222. package/features/star-rating/star-rating.component.d.ts +26 -0
  223. package/features/stepper/stepper.component.d.ts +23 -0
  224. package/features/switch/switch.component.d.ts +2 -1
  225. package/features/tab/tab.component.d.ts +1 -1
  226. package/features/table/components/table-cell-content.component.d.ts +4 -3
  227. package/features/table/table.component.d.ts +40 -5
  228. package/features/table/utils/table-data.util.d.ts +1 -0
  229. package/features/table/utils/table-layout.util.d.ts +1 -0
  230. package/features/tiered-menu/components/tiered-menu/tiered-menu.component.d.ts +49 -0
  231. package/features/tiered-menu/components/tiered-menu-divider/tiered-menu-divider.component.d.ts +5 -0
  232. package/features/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.d.ts +19 -0
  233. package/features/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.d.ts +26 -0
  234. package/features/tiered-menu/directives/tiered-menu.directive.d.ts +44 -0
  235. package/features/tiered-menu/services/tiered-menu.event.service.d.ts +13 -0
  236. package/features/tiered-menu/services/tiered-menu.global.service.d.ts +7 -0
  237. package/features/tiered-menu/services/tiered-menu.service.d.ts +14 -0
  238. package/features/tree/components/tree-node-item/tree-node-item.component.d.ts +37 -0
  239. package/features/tree/tree.component.d.ts +37 -0
  240. package/features/visual-sql-editor/components/visual-sql-editor-field-modal/visual-sql-editor-field-modal.component.d.ts +18 -0
  241. package/features/visual-sql-editor/components/visual-sql-editor-filter-modal/visual-sql-editor-filter-modal.component.d.ts +17 -0
  242. package/features/visual-sql-editor/components/visual-sql-editor-join-modal/visual-sql-editor-join-modal.component.d.ts +13 -0
  243. package/features/visual-sql-editor/components/visual-sql-editor-sort-modal/visual-sql-editor-sort-modal.component.d.ts +13 -0
  244. package/features/visual-sql-editor/components/visual-sql-editor-source-modal/visual-sql-editor-source-modal.component.d.ts +15 -0
  245. package/features/visual-sql-editor/services/visual-sql-editor-flow.service.d.ts +26 -0
  246. package/features/visual-sql-editor/services/visual-sql-editor-state.service.d.ts +72 -0
  247. package/features/visual-sql-editor/types/visual-sql-editor.types.d.ts +182 -0
  248. package/features/visual-sql-editor/utils/visual-sql-editor-sanitize.util.d.ts +14 -0
  249. package/features/visual-sql-editor/utils/visual-sql-editor-sql.util.d.ts +81 -0
  250. package/features/visual-sql-editor/utils/visual-sql-editor-text.util.d.ts +15 -0
  251. package/features/visual-sql-editor/utils/visual-sql-editor.constants.d.ts +36 -0
  252. package/features/visual-sql-editor/visual-sql-editor.component.d.ts +37 -199
  253. package/fesm2022/seniorsistemas-data-seniorx-core.mjs +14883 -6353
  254. package/fesm2022/seniorsistemas-data-seniorx-core.mjs.map +1 -1
  255. package/package.json +8 -8
  256. package/public-api.d.ts +72 -2
  257. package/src/locales/en.json +353 -15
  258. package/src/locales/es-CO.json +352 -14
  259. package/src/locales/pt.json +352 -14
  260. package/styles/sdc-global-variables.scss +1 -1
  261. package/styles.css +1 -1
  262. /package/features/tab/{tab-item.component.d.ts → components/tab-item/tab-item.component.d.ts} +0 -0
@@ -0,0 +1,72 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation, inject } from '@angular/core';
3
+ import { Subject, takeUntil } from 'rxjs';
4
+ import { KanbanEventService } from '../../services/kanban-event.service';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common";
7
+ export class KanbanItemComponent {
8
+ static nextCheckboxId = 0;
9
+ static allocateCheckboxId() {
10
+ const nextId = KanbanItemComponent.nextCheckboxId;
11
+ KanbanItemComponent.nextCheckboxId += 1;
12
+ return `kanban-item-${nextId}-checkbox`;
13
+ }
14
+ item;
15
+ selected = false;
16
+ showCheckbox = true;
17
+ headerTemplate = null;
18
+ bodyTemplate = null;
19
+ footerTemplate = null;
20
+ checkboxId = KanbanItemComponent.allocateCheckboxId();
21
+ showItemMenu = false;
22
+ eventService = inject(KanbanEventService);
23
+ destroy$ = new Subject();
24
+ ngOnInit() {
25
+ this.eventService.selectItem$
26
+ .pipe(takeUntil(this.destroy$))
27
+ .subscribe(item => {
28
+ if (item === this.item) {
29
+ this.selected = true;
30
+ }
31
+ });
32
+ this.eventService.unselectItem$
33
+ .pipe(takeUntil(this.destroy$))
34
+ .subscribe(item => {
35
+ if (item === this.item) {
36
+ this.selected = false;
37
+ }
38
+ });
39
+ }
40
+ ngOnDestroy() {
41
+ this.destroy$.next();
42
+ this.destroy$.complete();
43
+ }
44
+ onMenuToggle(event) {
45
+ event.stopPropagation();
46
+ this.showItemMenu = !this.showItemMenu;
47
+ }
48
+ onOptionClick(event, optionCommand) {
49
+ event.stopPropagation();
50
+ this.showItemMenu = false;
51
+ optionCommand(this.item);
52
+ }
53
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KanbanItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
54
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: KanbanItemComponent, isStandalone: true, selector: "sdc-kanban-item", inputs: { item: "item", selected: "selected", showCheckbox: "showCheckbox", headerTemplate: "headerTemplate", bodyTemplate: "bodyTemplate", footerTemplate: "footerTemplate" }, ngImport: i0, template: "<div\n class=\"sdc-kanban-item\"\n [class.sdc-kanban-item--selected]=\"selected && !item.disabled\"\n [class.sdc-kanban-item--disabled]=\"item.disabled\"\n [class.sdc-kanban-item--frozen]=\"!item.disabled && item.frozen\">\n\n <div class=\"sdc-kanban-item__header\">\n @if (showCheckbox && !item.disabled && !item.frozen) {\n <input\n [id]=\"checkboxId\"\n type=\"checkbox\"\n class=\"sdc-kanban-item__checkbox\"\n aria-label=\"kanban item\"\n [checked]=\"selected\"\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\">\n }\n @if (headerTemplate) {\n <ng-container *ngTemplateOutlet=\"headerTemplate; context: { $implicit: item }\"></ng-container>\n }\n @if (item.options?.length && !item.disabled) {\n <button\n class=\"sdc-kanban-item__menu-btn\"\n type=\"button\"\n (click)=\"onMenuToggle($event)\">\n <i class=\"fas fa-ellipsis-v\"></i>\n </button>\n @if (showItemMenu) {\n <ul class=\"sdc-kanban-item__menu\">\n @for (option of item.options; track option) {\n @if (option.divider) {\n <li class=\"sdc-kanban-item__menu-divider\"></li>\n } @else {\n <li class=\"sdc-kanban-item__menu-item\" [class.sdc-kanban-item__menu-item--disabled]=\"option.disabled\">\n <button\n type=\"button\"\n class=\"sdc-kanban-item__menu-action\"\n [disabled]=\"option.disabled\"\n (click)=\"onOptionClick($event, option.command)\">\n @if (option.iconClass) {\n <i [class]=\"option.iconClass\"></i>\n }\n @if (option.label) {\n <span>{{ option.label }}</span>\n }\n </button>\n </li>\n }\n }\n </ul>\n }\n }\n </div>\n\n @if (bodyTemplate) {\n <div class=\"sdc-kanban-item__body\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: { $implicit: item }\"></ng-container>\n </div>\n }\n\n @if (footerTemplate) {\n <div class=\"sdc-kanban-item__footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate; context: { $implicit: item }\"></ng-container>\n </div>\n }\n</div>\n", styles: [".sdc-kanban-item{--sdc-kanban-item-bg: #fff;--sdc-kanban-item-shadow: 0 1px 5px rgba(0, 0, 0, .25);--sdc-kanban-item-radius: 4px;--sdc-kanban-item-padding: .75rem;--sdc-kanban-item-selected-border: #428bca;--sdc-kanban-item-disabled-opacity: .5;--sdc-kanban-item-frozen-border: #a5a5b2;--sdc-kanban-item-menu-bg: #fff;--sdc-kanban-item-menu-border: #dedce5;--sdc-kanban-item-menu-shadow: 0 2px 8px rgba(0, 0, 0, .15);position:relative;background-color:var(--sdc-kanban-item-bg);border-radius:var(--sdc-kanban-item-radius);box-shadow:var(--sdc-kanban-item-shadow);padding:var(--sdc-kanban-item-padding);margin-bottom:.5rem;border:2px solid transparent;cursor:pointer;transition:box-shadow .15s ease,border-color .15s ease}.sdc-kanban-item:last-child{margin-bottom:0}.sdc-kanban-item--selected{border-color:var(--sdc-kanban-item-selected-border)}.sdc-kanban-item--disabled{opacity:var(--sdc-kanban-item-disabled-opacity);cursor:not-allowed}.sdc-kanban-item--frozen{border-color:var(--sdc-kanban-item-frozen-border);cursor:default}.sdc-kanban-item__header{display:flex;align-items:center;gap:.5rem;min-height:1.5rem}.sdc-kanban-item__checkbox{flex-shrink:0;cursor:pointer}.sdc-kanban-item__menu-btn{margin-left:auto;background:none;border:none;cursor:pointer;padding:.25rem;border-radius:2px;color:#6b6880;line-height:1}.sdc-kanban-item__menu-btn:hover{background-color:#0000000d}.sdc-kanban-item__menu{position:absolute;top:2rem;right:.5rem;z-index:100;background-color:var(--sdc-kanban-item-menu-bg);border:1px solid var(--sdc-kanban-item-menu-border);border-radius:4px;box-shadow:var(--sdc-kanban-item-menu-shadow);list-style:none;margin:0;padding:.25rem 0;min-width:10rem}.sdc-kanban-item__menu-divider{border-top:1px solid var(--sdc-kanban-item-menu-border);margin:.25rem 0}.sdc-kanban-item__menu-action{display:flex;align-items:center;gap:.5rem;width:100%;background:none;border:none;cursor:pointer;padding:.5rem 1rem;font-size:.875rem;text-align:left}.sdc-kanban-item__menu-item--disabled .sdc-kanban-item__menu-action{opacity:.5;cursor:not-allowed}.sdc-kanban-item__menu-action:hover:not(:disabled){background-color:#0000000a}.sdc-kanban-item__body{margin-top:.5rem}.sdc-kanban-item__footer{margin-top:.5rem;border-top:1px solid #f0eef5;padding-top:.5rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
55
+ }
56
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KanbanItemComponent, decorators: [{
57
+ type: Component,
58
+ args: [{ selector: 'sdc-kanban-item', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, template: "<div\n class=\"sdc-kanban-item\"\n [class.sdc-kanban-item--selected]=\"selected && !item.disabled\"\n [class.sdc-kanban-item--disabled]=\"item.disabled\"\n [class.sdc-kanban-item--frozen]=\"!item.disabled && item.frozen\">\n\n <div class=\"sdc-kanban-item__header\">\n @if (showCheckbox && !item.disabled && !item.frozen) {\n <input\n [id]=\"checkboxId\"\n type=\"checkbox\"\n class=\"sdc-kanban-item__checkbox\"\n aria-label=\"kanban item\"\n [checked]=\"selected\"\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\">\n }\n @if (headerTemplate) {\n <ng-container *ngTemplateOutlet=\"headerTemplate; context: { $implicit: item }\"></ng-container>\n }\n @if (item.options?.length && !item.disabled) {\n <button\n class=\"sdc-kanban-item__menu-btn\"\n type=\"button\"\n (click)=\"onMenuToggle($event)\">\n <i class=\"fas fa-ellipsis-v\"></i>\n </button>\n @if (showItemMenu) {\n <ul class=\"sdc-kanban-item__menu\">\n @for (option of item.options; track option) {\n @if (option.divider) {\n <li class=\"sdc-kanban-item__menu-divider\"></li>\n } @else {\n <li class=\"sdc-kanban-item__menu-item\" [class.sdc-kanban-item__menu-item--disabled]=\"option.disabled\">\n <button\n type=\"button\"\n class=\"sdc-kanban-item__menu-action\"\n [disabled]=\"option.disabled\"\n (click)=\"onOptionClick($event, option.command)\">\n @if (option.iconClass) {\n <i [class]=\"option.iconClass\"></i>\n }\n @if (option.label) {\n <span>{{ option.label }}</span>\n }\n </button>\n </li>\n }\n }\n </ul>\n }\n }\n </div>\n\n @if (bodyTemplate) {\n <div class=\"sdc-kanban-item__body\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: { $implicit: item }\"></ng-container>\n </div>\n }\n\n @if (footerTemplate) {\n <div class=\"sdc-kanban-item__footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate; context: { $implicit: item }\"></ng-container>\n </div>\n }\n</div>\n", styles: [".sdc-kanban-item{--sdc-kanban-item-bg: #fff;--sdc-kanban-item-shadow: 0 1px 5px rgba(0, 0, 0, .25);--sdc-kanban-item-radius: 4px;--sdc-kanban-item-padding: .75rem;--sdc-kanban-item-selected-border: #428bca;--sdc-kanban-item-disabled-opacity: .5;--sdc-kanban-item-frozen-border: #a5a5b2;--sdc-kanban-item-menu-bg: #fff;--sdc-kanban-item-menu-border: #dedce5;--sdc-kanban-item-menu-shadow: 0 2px 8px rgba(0, 0, 0, .15);position:relative;background-color:var(--sdc-kanban-item-bg);border-radius:var(--sdc-kanban-item-radius);box-shadow:var(--sdc-kanban-item-shadow);padding:var(--sdc-kanban-item-padding);margin-bottom:.5rem;border:2px solid transparent;cursor:pointer;transition:box-shadow .15s ease,border-color .15s ease}.sdc-kanban-item:last-child{margin-bottom:0}.sdc-kanban-item--selected{border-color:var(--sdc-kanban-item-selected-border)}.sdc-kanban-item--disabled{opacity:var(--sdc-kanban-item-disabled-opacity);cursor:not-allowed}.sdc-kanban-item--frozen{border-color:var(--sdc-kanban-item-frozen-border);cursor:default}.sdc-kanban-item__header{display:flex;align-items:center;gap:.5rem;min-height:1.5rem}.sdc-kanban-item__checkbox{flex-shrink:0;cursor:pointer}.sdc-kanban-item__menu-btn{margin-left:auto;background:none;border:none;cursor:pointer;padding:.25rem;border-radius:2px;color:#6b6880;line-height:1}.sdc-kanban-item__menu-btn:hover{background-color:#0000000d}.sdc-kanban-item__menu{position:absolute;top:2rem;right:.5rem;z-index:100;background-color:var(--sdc-kanban-item-menu-bg);border:1px solid var(--sdc-kanban-item-menu-border);border-radius:4px;box-shadow:var(--sdc-kanban-item-menu-shadow);list-style:none;margin:0;padding:.25rem 0;min-width:10rem}.sdc-kanban-item__menu-divider{border-top:1px solid var(--sdc-kanban-item-menu-border);margin:.25rem 0}.sdc-kanban-item__menu-action{display:flex;align-items:center;gap:.5rem;width:100%;background:none;border:none;cursor:pointer;padding:.5rem 1rem;font-size:.875rem;text-align:left}.sdc-kanban-item__menu-item--disabled .sdc-kanban-item__menu-action{opacity:.5;cursor:not-allowed}.sdc-kanban-item__menu-action:hover:not(:disabled){background-color:#0000000a}.sdc-kanban-item__body{margin-top:.5rem}.sdc-kanban-item__footer{margin-top:.5rem;border-top:1px solid #f0eef5;padding-top:.5rem}\n"] }]
59
+ }], propDecorators: { item: [{
60
+ type: Input
61
+ }], selected: [{
62
+ type: Input
63
+ }], showCheckbox: [{
64
+ type: Input
65
+ }], headerTemplate: [{
66
+ type: Input
67
+ }], bodyTemplate: [{
68
+ type: Input
69
+ }], footerTemplate: [{
70
+ type: Input
71
+ }] } });
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2FuYmFuLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL3NyYy9mZWF0dXJlcy9rYW5iYW4vY29tcG9uZW50cy9rYW5iYW4taXRlbS9rYW5iYW4taXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL2thbmJhbi9jb21wb25lbnRzL2thbmJhbi1pdGVtL2thbmJhbi1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxLQUFLLEVBSUwsaUJBQWlCLEVBQ2pCLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUcxQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7O0FBV3pFLE1BQU0sT0FBTyxtQkFBbUI7SUFDdEIsTUFBTSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUM7SUFFMUIsTUFBTSxDQUFDLGtCQUFrQjtRQUMvQixNQUFNLE1BQU0sR0FBRyxtQkFBbUIsQ0FBQyxjQUFjLENBQUM7UUFDbEQsbUJBQW1CLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQztRQUN4QyxPQUFPLGVBQWUsTUFBTSxXQUFXLENBQUM7SUFDMUMsQ0FBQztJQUVRLElBQUksQ0FBYztJQUNsQixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLFlBQVksR0FBRyxJQUFJLENBQUM7SUFDcEIsY0FBYyxHQUFnQyxJQUFJLENBQUM7SUFDbkQsWUFBWSxHQUFnQyxJQUFJLENBQUM7SUFDakQsY0FBYyxHQUFnQyxJQUFJLENBQUM7SUFDbkQsVUFBVSxHQUFHLG1CQUFtQixDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFFL0QsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUVKLFlBQVksR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUMxQyxRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUVoRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXO2FBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzlCLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNoQixJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3ZCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVMLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYTthQUM1QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDaEIsSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUN4QixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQVk7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBWSxFQUFFLGFBQXlDO1FBQ25FLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUMxQixhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7d0dBdERVLG1CQUFtQjs0RkFBbkIsbUJBQW1CLDJQQ3pCaEMsd3pFQWtFQSwrd0VEL0NZLFlBQVk7OzRGQU1YLG1CQUFtQjtrQkFUL0IsU0FBUzsrQkFDRSxpQkFBaUIsY0FDZixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsbUJBR04sdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsUUFBUTs4QkFXaEMsSUFBSTtzQkFBWixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgaW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB0eXBlIHsgS2FuYmFuSXRlbSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvdHlwZXMva2FuYmFuLnR5cGUnO1xuaW1wb3J0IHsgS2FuYmFuRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMva2FuYmFuLWV2ZW50LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZGMta2FuYmFuLWl0ZW0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2thbmJhbi1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2thbmJhbi1pdGVtLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLkVtdWxhdGVkXG59KVxuZXhwb3J0IGNsYXNzIEthbmJhbkl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgc3RhdGljIG5leHRDaGVja2JveElkID0gMDtcblxuICBwcml2YXRlIHN0YXRpYyBhbGxvY2F0ZUNoZWNrYm94SWQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBuZXh0SWQgPSBLYW5iYW5JdGVtQ29tcG9uZW50Lm5leHRDaGVja2JveElkO1xuICAgIEthbmJhbkl0ZW1Db21wb25lbnQubmV4dENoZWNrYm94SWQgKz0gMTtcbiAgICByZXR1cm4gYGthbmJhbi1pdGVtLSR7bmV4dElkfS1jaGVja2JveGA7XG4gIH1cblxuICBASW5wdXQoKSBpdGVtITogS2FuYmFuSXRlbTtcbiAgQElucHV0KCkgc2VsZWN0ZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd0NoZWNrYm94ID0gdHJ1ZTtcbiAgQElucHV0KCkgaGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIGJvZHlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgZm9vdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgbnVsbCA9IG51bGw7XG4gIHJlYWRvbmx5IGNoZWNrYm94SWQgPSBLYW5iYW5JdGVtQ29tcG9uZW50LmFsbG9jYXRlQ2hlY2tib3hJZCgpO1xuXG4gIHNob3dJdGVtTWVudSA9IGZhbHNlO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZXZlbnRTZXJ2aWNlID0gaW5qZWN0KEthbmJhbkV2ZW50U2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnNlbGVjdEl0ZW0kXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKGl0ZW0gPT4ge1xuICAgICAgICBpZiAoaXRlbSA9PT0gdGhpcy5pdGVtKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy5ldmVudFNlcnZpY2UudW5zZWxlY3RJdGVtJFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZShpdGVtID0+IHtcbiAgICAgICAgaWYgKGl0ZW0gPT09IHRoaXMuaXRlbSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBvbk1lbnVUb2dnbGUoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5zaG93SXRlbU1lbnUgPSAhdGhpcy5zaG93SXRlbU1lbnU7XG4gIH1cblxuICBvbk9wdGlvbkNsaWNrKGV2ZW50OiBFdmVudCwgb3B0aW9uQ29tbWFuZDogKGl0ZW06IEthbmJhbkl0ZW0pID0+IHZvaWQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnNob3dJdGVtTWVudSA9IGZhbHNlO1xuICAgIG9wdGlvbkNvbW1hbmQodGhpcy5pdGVtKTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cInNkYy1rYW5iYW4taXRlbVwiXG4gIFtjbGFzcy5zZGMta2FuYmFuLWl0ZW0tLXNlbGVjdGVkXT1cInNlbGVjdGVkICYmICFpdGVtLmRpc2FibGVkXCJcbiAgW2NsYXNzLnNkYy1rYW5iYW4taXRlbS0tZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG4gIFtjbGFzcy5zZGMta2FuYmFuLWl0ZW0tLWZyb3plbl09XCIhaXRlbS5kaXNhYmxlZCAmJiBpdGVtLmZyb3plblwiPlxuXG4gIDxkaXYgY2xhc3M9XCJzZGMta2FuYmFuLWl0ZW1fX2hlYWRlclwiPlxuICAgIEBpZiAoc2hvd0NoZWNrYm94ICYmICFpdGVtLmRpc2FibGVkICYmICFpdGVtLmZyb3plbikge1xuICAgICAgPGlucHV0XG4gICAgICAgIFtpZF09XCJjaGVja2JveElkXCJcbiAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgY2xhc3M9XCJzZGMta2FuYmFuLWl0ZW1fX2NoZWNrYm94XCJcbiAgICAgICAgYXJpYS1sYWJlbD1cImthbmJhbiBpdGVtXCJcbiAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRcIlxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgKGtleWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgfVxuICAgIEBpZiAoaGVhZGVyVGVtcGxhdGUpIHtcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXJUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0gfVwiPjwvbmctY29udGFpbmVyPlxuICAgIH1cbiAgICBAaWYgKGl0ZW0ub3B0aW9ucz8ubGVuZ3RoICYmICFpdGVtLmRpc2FibGVkKSB7XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwic2RjLWthbmJhbi1pdGVtX19tZW51LWJ0blwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAoY2xpY2spPVwib25NZW51VG9nZ2xlKCRldmVudClcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtZWxsaXBzaXMtdlwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgQGlmIChzaG93SXRlbU1lbnUpIHtcbiAgICAgICAgPHVsIGNsYXNzPVwic2RjLWthbmJhbi1pdGVtX19tZW51XCI+XG4gICAgICAgICAgQGZvciAob3B0aW9uIG9mIGl0ZW0ub3B0aW9uczsgdHJhY2sgb3B0aW9uKSB7XG4gICAgICAgICAgICBAaWYgKG9wdGlvbi5kaXZpZGVyKSB7XG4gICAgICAgICAgICAgIDxsaSBjbGFzcz1cInNkYy1rYW5iYW4taXRlbV9fbWVudS1kaXZpZGVyXCI+PC9saT5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJzZGMta2FuYmFuLWl0ZW1fX21lbnUtaXRlbVwiIFtjbGFzcy5zZGMta2FuYmFuLWl0ZW1fX21lbnUtaXRlbS0tZGlzYWJsZWRdPVwib3B0aW9uLmRpc2FibGVkXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInNkYy1rYW5iYW4taXRlbV9fbWVudS1hY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm9wdGlvbi5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25PcHRpb25DbGljaygkZXZlbnQsIG9wdGlvbi5jb21tYW5kKVwiPlxuICAgICAgICAgICAgICAgICAgQGlmIChvcHRpb24uaWNvbkNsYXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCJvcHRpb24uaWNvbkNsYXNzXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGlmIChvcHRpb24ubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgb3B0aW9uLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgPC91bD5cbiAgICAgIH1cbiAgICB9XG4gIDwvZGl2PlxuXG4gIEBpZiAoYm9keVRlbXBsYXRlKSB7XG4gICAgPGRpdiBjbGFzcz1cInNkYy1rYW5iYW4taXRlbV9fYm9keVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJvZHlUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0gfVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICB9XG5cbiAgQGlmIChmb290ZXJUZW1wbGF0ZSkge1xuICAgIDxkaXYgY2xhc3M9XCJzZGMta2FuYmFuLWl0ZW1fX2Zvb3RlclwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvb3RlclRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogaXRlbSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuIl19
@@ -0,0 +1,19 @@
1
+ import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';
2
+ import { TranslateModule } from '@ngx-translate/core';
3
+ import { KANBAN_DRAGGING_KEY, KANBAN_ITEMS_SELECTED_KEY } from '../../../../core/constants/kanban.const';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@ngx-translate/core";
6
+ export class KanbanItemDraggingComponent {
7
+ quantityItems = 0;
8
+ draggingKey = KANBAN_DRAGGING_KEY;
9
+ itemsSelectedKey = KANBAN_ITEMS_SELECTED_KEY;
10
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KanbanItemDraggingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
11
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: KanbanItemDraggingComponent, isStandalone: true, selector: "sdc-kanban-item-dragging", inputs: { quantityItems: "quantityItems" }, ngImport: i0, template: "<div class=\"sdc-kanban-item-dragging-container\">\n <div\n class=\"sdc-kanban-item-dragging\"\n [class.sdc-kanban-item-dragging--over]=\"quantityItems > 1\">\n <div class=\"sdc-kanban-item-dragging__content\">\n @if (quantityItems > 1) {\n <span>{{ quantityItems }} {{ itemsSelectedKey | translate }}</span>\n } @else {\n <span>{{ draggingKey | translate }}</span>\n }\n </div>\n </div>\n</div>\n", styles: [".sdc-kanban-item-dragging-container{--sdc-kanban-item-dragging-bg: #428bca;--sdc-kanban-item-dragging-color: #fff;--sdc-kanban-item-dragging-radius: 4px;--sdc-kanban-item-dragging-padding: .5rem 1rem;--sdc-kanban-item-dragging-over-bg: #2a6496;display:block}.sdc-kanban-item-dragging{display:flex;align-items:center;justify-content:center;background-color:var(--sdc-kanban-item-dragging-bg);color:var(--sdc-kanban-item-dragging-color);border-radius:var(--sdc-kanban-item-dragging-radius);padding:var(--sdc-kanban-item-dragging-padding);min-width:8rem;font-size:.875rem;font-weight:500;box-shadow:0 4px 12px #0000004d}.sdc-kanban-item-dragging--over{background-color:var(--sdc-kanban-item-dragging-over-bg)}.sdc-kanban-item-dragging__content{display:flex;align-items:center;gap:.25rem}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
12
+ }
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KanbanItemDraggingComponent, decorators: [{
14
+ type: Component,
15
+ args: [{ selector: 'sdc-kanban-item-dragging', standalone: true, imports: [TranslateModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, template: "<div class=\"sdc-kanban-item-dragging-container\">\n <div\n class=\"sdc-kanban-item-dragging\"\n [class.sdc-kanban-item-dragging--over]=\"quantityItems > 1\">\n <div class=\"sdc-kanban-item-dragging__content\">\n @if (quantityItems > 1) {\n <span>{{ quantityItems }} {{ itemsSelectedKey | translate }}</span>\n } @else {\n <span>{{ draggingKey | translate }}</span>\n }\n </div>\n </div>\n</div>\n", styles: [".sdc-kanban-item-dragging-container{--sdc-kanban-item-dragging-bg: #428bca;--sdc-kanban-item-dragging-color: #fff;--sdc-kanban-item-dragging-radius: 4px;--sdc-kanban-item-dragging-padding: .5rem 1rem;--sdc-kanban-item-dragging-over-bg: #2a6496;display:block}.sdc-kanban-item-dragging{display:flex;align-items:center;justify-content:center;background-color:var(--sdc-kanban-item-dragging-bg);color:var(--sdc-kanban-item-dragging-color);border-radius:var(--sdc-kanban-item-dragging-radius);padding:var(--sdc-kanban-item-dragging-padding);min-width:8rem;font-size:.875rem;font-weight:500;box-shadow:0 4px 12px #0000004d}.sdc-kanban-item-dragging--over{background-color:var(--sdc-kanban-item-dragging-over-bg)}.sdc-kanban-item-dragging__content{display:flex;align-items:center;gap:.25rem}\n"] }]
16
+ }], propDecorators: { quantityItems: [{
17
+ type: Input
18
+ }] } });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2FuYmFuLWl0ZW0tZHJhZ2dpbmcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL3NyYy9mZWF0dXJlcy9rYW5iYW4vY29tcG9uZW50cy9rYW5iYW4taXRlbS1kcmFnZ2luZy9rYW5iYW4taXRlbS1kcmFnZ2luZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL2thbmJhbi9jb21wb25lbnRzL2thbmJhbi1pdGVtLWRyYWdnaW5nL2thbmJhbi1pdGVtLWRyYWdnaW5nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7O0FBV3pHLE1BQU0sT0FBTywyQkFBMkI7SUFDN0IsYUFBYSxHQUFHLENBQUMsQ0FBQztJQUVsQixXQUFXLEdBQUcsbUJBQW1CLENBQUM7SUFDbEMsZ0JBQWdCLEdBQUcseUJBQXlCLENBQUM7d0dBSjNDLDJCQUEyQjs0RkFBM0IsMkJBQTJCLGdJQ2R4QywwYkFhQSwyMEJETFksZUFBZTs7NEZBTWQsMkJBQTJCO2tCQVR2QyxTQUFTOytCQUNFLDBCQUEwQixjQUN4QixJQUFJLFdBQ1AsQ0FBQyxlQUFlLENBQUMsbUJBR1QsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsUUFBUTs4QkFHaEMsYUFBYTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbmltcG9ydCB7IEtBTkJBTl9EUkFHR0lOR19LRVksIEtBTkJBTl9JVEVNU19TRUxFQ1RFRF9LRVkgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL2NvbnN0YW50cy9rYW5iYW4uY29uc3QnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZGMta2FuYmFuLWl0ZW0tZHJhZ2dpbmcnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbVHJhbnNsYXRlTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2thbmJhbi1pdGVtLWRyYWdnaW5nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2thbmJhbi1pdGVtLWRyYWdnaW5nLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLkVtdWxhdGVkXG59KVxuZXhwb3J0IGNsYXNzIEthbmJhbkl0ZW1EcmFnZ2luZ0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHF1YW50aXR5SXRlbXMgPSAwO1xuXG4gIHJlYWRvbmx5IGRyYWdnaW5nS2V5ID0gS0FOQkFOX0RSQUdHSU5HX0tFWTtcbiAgcmVhZG9ubHkgaXRlbXNTZWxlY3RlZEtleSA9IEtBTkJBTl9JVEVNU19TRUxFQ1RFRF9LRVk7XG59XG4iLCI8ZGl2IGNsYXNzPVwic2RjLWthbmJhbi1pdGVtLWRyYWdnaW5nLWNvbnRhaW5lclwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJzZGMta2FuYmFuLWl0ZW0tZHJhZ2dpbmdcIlxuICAgIFtjbGFzcy5zZGMta2FuYmFuLWl0ZW0tZHJhZ2dpbmctLW92ZXJdPVwicXVhbnRpdHlJdGVtcyA+IDFcIj5cbiAgICA8ZGl2IGNsYXNzPVwic2RjLWthbmJhbi1pdGVtLWRyYWdnaW5nX19jb250ZW50XCI+XG4gICAgICBAaWYgKHF1YW50aXR5SXRlbXMgPiAxKSB7XG4gICAgICAgIDxzcGFuPnt7IHF1YW50aXR5SXRlbXMgfX0ge3sgaXRlbXNTZWxlY3RlZEtleSB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8c3Bhbj57eyBkcmFnZ2luZ0tleSB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,22 @@
1
+ import { Directive, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class KanbanTemplateDirective {
4
+ template;
5
+ type = 'item-body';
6
+ constructor(template) {
7
+ this.template = template;
8
+ }
9
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KanbanTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
10
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: KanbanTemplateDirective, isStandalone: true, selector: "ng-template[sdcKanbanTemplate]", inputs: { type: ["sdcKanbanTemplate", "type"] }, ngImport: i0 });
11
+ }
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KanbanTemplateDirective, decorators: [{
13
+ type: Directive,
14
+ args: [{
15
+ selector: 'ng-template[sdcKanbanTemplate]',
16
+ standalone: true
17
+ }]
18
+ }], ctorParameters: () => [{ type: i0.TemplateRef }], propDecorators: { type: [{
19
+ type: Input,
20
+ args: ['sdcKanbanTemplate']
21
+ }] } });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2FuYmFuLXRlbXBsYXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9zcmMvZmVhdHVyZXMva2FuYmFuL2RpcmVjdGl2ZXMva2FuYmFuLXRlbXBsYXRlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBZSxNQUFNLGVBQWUsQ0FBQzs7QUFROUQsTUFBTSxPQUFPLHVCQUF1QjtJQUdOO0lBRkEsSUFBSSxHQUF1QixXQUFXLENBQUM7SUFFbkUsWUFBNEIsUUFBOEI7UUFBOUIsYUFBUSxHQUFSLFFBQVEsQ0FBc0I7SUFBRyxDQUFDO3dHQUhuRCx1QkFBdUI7NEZBQXZCLHVCQUF1Qjs7NEZBQXZCLHVCQUF1QjtrQkFKbkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0NBQWdDO29CQUMxQyxVQUFVLEVBQUUsSUFBSTtpQkFDakI7Z0ZBRTZCLElBQUk7c0JBQS9CLEtBQUs7dUJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHR5cGUgeyBLYW5iYW5UZW1wbGF0ZVR5cGUgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3R5cGVzL2thbmJhbi50eXBlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnbmctdGVtcGxhdGVbc2RjS2FuYmFuVGVtcGxhdGVdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBLYW5iYW5UZW1wbGF0ZURpcmVjdGl2ZSB7XG4gIEBJbnB1dCgnc2RjS2FuYmFuVGVtcGxhdGUnKSB0eXBlOiBLYW5iYW5UZW1wbGF0ZVR5cGUgPSAnaXRlbS1ib2R5JztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+KSB7fVxufVxuIl19
@@ -0,0 +1,198 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, EventEmitter, Input, Output, ViewEncapsulation, inject } from '@angular/core';
3
+ import { CdkDrag, CdkDragPreview, CdkDropList, CdkDropListGroup, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';
4
+ import { Subject, takeUntil } from 'rxjs';
5
+ import { KanbanColumnComponent } from './components/kanban-column/kanban-column.component';
6
+ import { KanbanItemComponent } from './components/kanban-item/kanban-item.component';
7
+ import { KanbanItemDraggingComponent } from './components/kanban-item-dragging/kanban-item-dragging.component';
8
+ import { KanbanTemplateDirective } from './directives/kanban-template.directive';
9
+ import { KanbanEventService } from './services/kanban-event.service';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@angular/common";
12
+ export class KanbanComponent {
13
+ data;
14
+ showItemCheckboxes = true;
15
+ showColumnCheckboxes = true;
16
+ itemsMoved = new EventEmitter();
17
+ dataUpdated = new EventEmitter();
18
+ itemsSelected = new EventEmitter();
19
+ templates;
20
+ selectedItems = new Set();
21
+ selectedColumn = null;
22
+ draggingItems = new Set();
23
+ eventService = inject(KanbanEventService);
24
+ cdr = inject(ChangeDetectorRef);
25
+ destroy$ = new Subject();
26
+ ngOnInit() {
27
+ this._normalizeData();
28
+ this._subscribeEvents();
29
+ }
30
+ ngOnDestroy() {
31
+ this.destroy$.next();
32
+ this.destroy$.complete();
33
+ }
34
+ onDrop(event, targetColumn) {
35
+ const previousColumn = this.data.columns.find(c => c.items === event.previousContainer.data);
36
+ if (!previousColumn) {
37
+ return;
38
+ }
39
+ if (event.previousContainer === event.container) {
40
+ moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);
41
+ }
42
+ else {
43
+ const draggedItem = event.item.data;
44
+ const additionalItems = this.selectedItems.has(draggedItem)
45
+ ? [...this.selectedItems].filter(i => i !== draggedItem)
46
+ : [];
47
+ transferArrayItem(event.previousContainer.data, event.container.data, event.previousIndex, event.currentIndex);
48
+ // Move additional selected items that still belong to the source column.
49
+ if (additionalItems.length > 0 && previousColumn) {
50
+ additionalItems
51
+ .filter(item => previousColumn.items.includes(item))
52
+ .forEach(item => {
53
+ const fromIndex = previousColumn.items.indexOf(item);
54
+ if (fromIndex !== -1) {
55
+ transferArrayItem(previousColumn.items, targetColumn.items, fromIndex, targetColumn.items.length);
56
+ }
57
+ });
58
+ }
59
+ const movedItems = [draggedItem, ...additionalItems];
60
+ this.itemsMoved.emit({ items: movedItems, previousColumn, targetColumn });
61
+ }
62
+ this.dataUpdated.emit(this.data);
63
+ this.selectedItems.clear();
64
+ this.draggingItems.clear();
65
+ this.itemsSelected.emit([]);
66
+ this.cdr.markForCheck();
67
+ }
68
+ onItemClick(event, item, column) {
69
+ const pointerEvent = event;
70
+ if (item.disabled || item.frozen) {
71
+ return;
72
+ }
73
+ if (pointerEvent.ctrlKey || pointerEvent.metaKey) {
74
+ if (this.selectedItems.has(item)) {
75
+ this.selectedItems.delete(item);
76
+ this.eventService.emitUnselectItem(item);
77
+ }
78
+ else {
79
+ if (this.selectedColumn !== column) {
80
+ this.selectedItems.forEach(selectedItem => this.eventService.emitUnselectItem(selectedItem));
81
+ this.selectedItems.clear();
82
+ }
83
+ this.selectedItems.add(item);
84
+ this.selectedColumn = column;
85
+ this.eventService.emitSelectItem(item);
86
+ }
87
+ }
88
+ else {
89
+ if (this.selectedItems.has(item) && this.selectedItems.size === 1) {
90
+ return;
91
+ }
92
+ this.selectedItems.forEach(selectedItem => this.eventService.emitUnselectItem(selectedItem));
93
+ this.selectedItems = new Set([item]);
94
+ this.selectedColumn = column;
95
+ this.eventService.emitSelectItem(item);
96
+ }
97
+ this.itemsSelected.emit([...this.selectedItems]);
98
+ this.cdr.markForCheck();
99
+ }
100
+ onDragStarted(item) {
101
+ this.draggingItems = this.selectedItems.has(item)
102
+ ? new Set(this.selectedItems)
103
+ : new Set([item]);
104
+ this.cdr.markForCheck();
105
+ }
106
+ getTemplate(type) {
107
+ return this.templates?.find(template => template.type === type)?.template ?? null;
108
+ }
109
+ getColumnId(index) {
110
+ return `sdc-kanban-col-${index}`;
111
+ }
112
+ getConnectedDropLists(currentIndex) {
113
+ return this.data.columns
114
+ .map((_, index) => `sdc-kanban-col-${index}`)
115
+ .filter((_, index) => index !== currentIndex);
116
+ }
117
+ _normalizeData() {
118
+ if (!this.data) {
119
+ return;
120
+ }
121
+ this.data.columns.forEach((column, index) => {
122
+ if (!column.id) {
123
+ column.id = `kanban-col-${index}`;
124
+ }
125
+ });
126
+ }
127
+ _subscribeEvents() {
128
+ this.eventService.selectAllColumnItems$
129
+ .pipe(takeUntil(this.destroy$))
130
+ .subscribe(column => {
131
+ column.items
132
+ .filter(item => !item.disabled && !item.frozen)
133
+ .forEach(item => this.selectedItems.add(item));
134
+ this.selectedColumn = column;
135
+ this.itemsSelected.emit([...this.selectedItems]);
136
+ this.cdr.markForCheck();
137
+ });
138
+ this.eventService.unselectAllColumnItems$
139
+ .pipe(takeUntil(this.destroy$))
140
+ .subscribe(column => {
141
+ column.items.forEach(item => this.selectedItems.delete(item));
142
+ if (this.selectedItems.size === 0) {
143
+ this.selectedColumn = null;
144
+ }
145
+ this.itemsSelected.emit([...this.selectedItems]);
146
+ this.cdr.markForCheck();
147
+ });
148
+ this.eventService.selectItem$
149
+ .pipe(takeUntil(this.destroy$))
150
+ .subscribe(item => {
151
+ this.selectedItems.add(item);
152
+ this.itemsSelected.emit([...this.selectedItems]);
153
+ this.cdr.markForCheck();
154
+ });
155
+ this.eventService.unselectItem$
156
+ .pipe(takeUntil(this.destroy$))
157
+ .subscribe(item => {
158
+ this.selectedItems.delete(item);
159
+ if (this.selectedItems.size === 0) {
160
+ this.selectedColumn = null;
161
+ }
162
+ this.itemsSelected.emit([...this.selectedItems]);
163
+ this.cdr.markForCheck();
164
+ });
165
+ }
166
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KanbanComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
167
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: KanbanComponent, isStandalone: true, selector: "sdc-kanban", inputs: { data: "data", showItemCheckboxes: "showItemCheckboxes", showColumnCheckboxes: "showColumnCheckboxes" }, outputs: { itemsMoved: "itemsMoved", dataUpdated: "dataUpdated", itemsSelected: "itemsSelected" }, providers: [KanbanEventService], queries: [{ propertyName: "templates", predicate: KanbanTemplateDirective }], ngImport: i0, template: "<div class=\"sdc-kanban\" cdkDropListGroup>\n @for (column of data.columns; track $index; let i = $index) {\n <sdc-kanban-column\n [data]=\"column\"\n [showCheckbox]=\"showColumnCheckboxes\"\n [headerTemplate]=\"getTemplate('column-header')\"\n [emptyMessageTemplate]=\"getTemplate('column-empty-message')\"\n [style.--sdc-kanban-column-accent]=\"column.color ?? null\">\n\n <div\n cdkDropList\n [id]=\"getColumnId(i)\"\n [cdkDropListData]=\"column.items\"\n [cdkDropListConnectedTo]=\"getConnectedDropLists(i)\"\n (cdkDropListDropped)=\"onDrop($event, column)\">\n\n @for (item of column.items; track $index) {\n <sdc-kanban-item\n cdkDrag\n [cdkDragData]=\"item\"\n [cdkDragDisabled]=\"item.disabled ?? false\"\n [item]=\"item\"\n [selected]=\"selectedItems.has(item)\"\n [showCheckbox]=\"showItemCheckboxes\"\n [headerTemplate]=\"getTemplate('item-header')\"\n [bodyTemplate]=\"getTemplate('item-body')\"\n [footerTemplate]=\"getTemplate('item-footer')\"\n (click)=\"onItemClick($event, item, column)\"\n (keydown.enter)=\"onItemClick($event, item, column)\"\n (keydown.space)=\"onItemClick($event, item, column)\"\n (cdkDragStarted)=\"onDragStarted(item)\">\n\n <div *cdkDragPreview>\n <sdc-kanban-item-dragging\n [quantityItems]=\"draggingItems.size\">\n </sdc-kanban-item-dragging>\n </div>\n </sdc-kanban-item>\n }\n\n @if (column.items.length === 0) {\n <div class=\"sdc-kanban__empty\">\n <ng-container *ngTemplateOutlet=\"getTemplate('column-empty-message'); context: { $implicit: column }\">\n </ng-container>\n </div>\n }\n </div>\n </sdc-kanban-column>\n }\n</div>\n", styles: [".sdc-kanban{--sdc-kanban-gap: 1rem;--sdc-kanban-column-bg: #fbfafc;--sdc-kanban-column-border: #dedce5;--sdc-kanban-column-width: 20rem;--sdc-kanban-column-radius: .5rem;--sdc-kanban-item-bg: #fff;--sdc-kanban-item-shadow: 0 1px 5px rgba(0, 0, 0, .25);--sdc-kanban-item-radius: 4px;--sdc-kanban-item-selected-border: #428bca;--sdc-kanban-placeholder-color: #a5a5b2;display:flex;gap:var(--sdc-kanban-gap);overflow:auto;align-items:flex-start}.sdc-kanban .cdk-drag-placeholder{opacity:.4}.sdc-kanban .cdk-drop-list-dragging .sdc-kanban-item,.sdc-kanban .cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.sdc-kanban__empty{padding:1rem;text-align:center;color:var(--sdc-kanban-placeholder-color);font-size:.875rem;min-height:3rem;display:flex;align-items:center;justify-content:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "directive", type: CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: CdkDragPreview, selector: "ng-template[cdkDragPreview]", inputs: ["data", "matchSize"] }, { kind: "component", type: KanbanColumnComponent, selector: "sdc-kanban-column", inputs: ["data", "showCheckbox", "headerTemplate", "emptyMessageTemplate"] }, { kind: "component", type: KanbanItemComponent, selector: "sdc-kanban-item", inputs: ["item", "selected", "showCheckbox", "headerTemplate", "bodyTemplate", "footerTemplate"] }, { kind: "component", type: KanbanItemDraggingComponent, selector: "sdc-kanban-item-dragging", inputs: ["quantityItems"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
168
+ }
169
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KanbanComponent, decorators: [{
170
+ type: Component,
171
+ args: [{ selector: 'sdc-kanban', standalone: true, imports: [
172
+ CommonModule,
173
+ CdkDropListGroup,
174
+ CdkDropList,
175
+ CdkDrag,
176
+ CdkDragPreview,
177
+ KanbanColumnComponent,
178
+ KanbanItemComponent,
179
+ KanbanItemDraggingComponent,
180
+ KanbanTemplateDirective
181
+ ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, providers: [KanbanEventService], template: "<div class=\"sdc-kanban\" cdkDropListGroup>\n @for (column of data.columns; track $index; let i = $index) {\n <sdc-kanban-column\n [data]=\"column\"\n [showCheckbox]=\"showColumnCheckboxes\"\n [headerTemplate]=\"getTemplate('column-header')\"\n [emptyMessageTemplate]=\"getTemplate('column-empty-message')\"\n [style.--sdc-kanban-column-accent]=\"column.color ?? null\">\n\n <div\n cdkDropList\n [id]=\"getColumnId(i)\"\n [cdkDropListData]=\"column.items\"\n [cdkDropListConnectedTo]=\"getConnectedDropLists(i)\"\n (cdkDropListDropped)=\"onDrop($event, column)\">\n\n @for (item of column.items; track $index) {\n <sdc-kanban-item\n cdkDrag\n [cdkDragData]=\"item\"\n [cdkDragDisabled]=\"item.disabled ?? false\"\n [item]=\"item\"\n [selected]=\"selectedItems.has(item)\"\n [showCheckbox]=\"showItemCheckboxes\"\n [headerTemplate]=\"getTemplate('item-header')\"\n [bodyTemplate]=\"getTemplate('item-body')\"\n [footerTemplate]=\"getTemplate('item-footer')\"\n (click)=\"onItemClick($event, item, column)\"\n (keydown.enter)=\"onItemClick($event, item, column)\"\n (keydown.space)=\"onItemClick($event, item, column)\"\n (cdkDragStarted)=\"onDragStarted(item)\">\n\n <div *cdkDragPreview>\n <sdc-kanban-item-dragging\n [quantityItems]=\"draggingItems.size\">\n </sdc-kanban-item-dragging>\n </div>\n </sdc-kanban-item>\n }\n\n @if (column.items.length === 0) {\n <div class=\"sdc-kanban__empty\">\n <ng-container *ngTemplateOutlet=\"getTemplate('column-empty-message'); context: { $implicit: column }\">\n </ng-container>\n </div>\n }\n </div>\n </sdc-kanban-column>\n }\n</div>\n", styles: [".sdc-kanban{--sdc-kanban-gap: 1rem;--sdc-kanban-column-bg: #fbfafc;--sdc-kanban-column-border: #dedce5;--sdc-kanban-column-width: 20rem;--sdc-kanban-column-radius: .5rem;--sdc-kanban-item-bg: #fff;--sdc-kanban-item-shadow: 0 1px 5px rgba(0, 0, 0, .25);--sdc-kanban-item-radius: 4px;--sdc-kanban-item-selected-border: #428bca;--sdc-kanban-placeholder-color: #a5a5b2;display:flex;gap:var(--sdc-kanban-gap);overflow:auto;align-items:flex-start}.sdc-kanban .cdk-drag-placeholder{opacity:.4}.sdc-kanban .cdk-drop-list-dragging .sdc-kanban-item,.sdc-kanban .cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.sdc-kanban__empty{padding:1rem;text-align:center;color:var(--sdc-kanban-placeholder-color);font-size:.875rem;min-height:3rem;display:flex;align-items:center;justify-content:center}\n"] }]
182
+ }], propDecorators: { data: [{
183
+ type: Input
184
+ }], showItemCheckboxes: [{
185
+ type: Input
186
+ }], showColumnCheckboxes: [{
187
+ type: Input
188
+ }], itemsMoved: [{
189
+ type: Output
190
+ }], dataUpdated: [{
191
+ type: Output
192
+ }], itemsSelected: [{
193
+ type: Output
194
+ }], templates: [{
195
+ type: ContentChildren,
196
+ args: [KanbanTemplateDirective]
197
+ }] } });
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2FuYmFuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9zcmMvZmVhdHVyZXMva2FuYmFuL2thbmJhbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL2thbmJhbi9rYW5iYW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBR04saUJBQWlCLEVBQ2pCLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsT0FBTyxFQUVQLGNBQWMsRUFDZCxXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDZixpQkFBaUIsRUFDbEIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUcxQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUMzRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUNyRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQztBQUMvRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNqRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7O0FBc0JyRSxNQUFNLE9BQU8sZUFBZTtJQUNqQixJQUFJLENBQWM7SUFDbEIsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO0lBQzFCLG9CQUFvQixHQUFHLElBQUksQ0FBQztJQUUzQixVQUFVLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7SUFD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QkFDUCxjQUFjO3dCQUNkLHFCQUFxQjt3QkFDckIsbUJBQW1CO3dCQUNuQiwyQkFBMkI7d0JBQzNCLHVCQUF1QjtxQkFDeEIsbUJBR2dCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLFFBQVEsYUFDOUIsQ0FBQyxrQkFBa0IsQ0FBQzs4QkFHdEIsSUFBSTtzQkFBWixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBRUksVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBRW1DLFNBQVM7c0JBQWxELGVBQWU7dUJBQUMsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBpbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDZGtEcmFnLFxuICBDZGtEcmFnRHJvcCxcbiAgQ2RrRHJhZ1ByZXZpZXcsXG4gIENka0Ryb3BMaXN0LFxuICBDZGtEcm9wTGlzdEdyb3VwLFxuICBtb3ZlSXRlbUluQXJyYXksXG4gIHRyYW5zZmVyQXJyYXlJdGVtXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB0eXBlIHsgS2FuYmFuQ29sdW1uLCBLYW5iYW5EYXRhLCBLYW5iYW5JdGVtLCBLYW5iYW5JdGVtTW92ZWREYXRhLCBLYW5iYW5UZW1wbGF0ZVR5cGUgfSBmcm9tICcuLi8uLi9jb3JlL3R5cGVzL2thbmJhbi50eXBlJztcbmltcG9ydCB7IEthbmJhbkNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9rYW5iYW4tY29sdW1uL2thbmJhbi1jb2x1bW4uY29tcG9uZW50JztcbmltcG9ydCB7IEthbmJhbkl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMva2FuYmFuLWl0ZW0va2FuYmFuLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IEthbmJhbkl0ZW1EcmFnZ2luZ0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9rYW5iYW4taXRlbS1kcmFnZ2luZy9rYW5iYW4taXRlbS1kcmFnZ2luZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgS2FuYmFuVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMva2FuYmFuLXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBLYW5iYW5FdmVudFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2thbmJhbi1ldmVudC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2RjLWthbmJhbicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQ2RrRHJvcExpc3RHcm91cCxcbiAgICBDZGtEcm9wTGlzdCxcbiAgICBDZGtEcmFnLFxuICAgIENka0RyYWdQcmV2aWV3LFxuICAgIEthbmJhbkNvbHVtbkNvbXBvbmVudCxcbiAgICBLYW5iYW5JdGVtQ29tcG9uZW50LFxuICAgIEthbmJhbkl0ZW1EcmFnZ2luZ0NvbXBvbmVudCxcbiAgICBLYW5iYW5UZW1wbGF0ZURpcmVjdGl2ZVxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4va2FuYmFuLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2thbmJhbi5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5FbXVsYXRlZCxcbiAgcHJvdmlkZXJzOiBbS2FuYmFuRXZlbnRTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBLYW5iYW5Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGRhdGEhOiBLYW5iYW5EYXRhO1xuICBASW5wdXQoKSBzaG93SXRlbUNoZWNrYm94ZXMgPSB0cnVlO1xuICBASW5wdXQoKSBzaG93Q29sdW1uQ2hlY2tib3hlcyA9IHRydWU7XG5cbiAgQE91dHB1dCgpIGl0ZW1zTW92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEthbmJhbkl0ZW1Nb3ZlZERhdGE+KCk7XG4gIEBPdXRwdXQoKSBkYXRhVXBkYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8S2FuYmFuRGF0YT4oKTtcbiAgQE91dHB1dCgpIGl0ZW1zU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEthbmJhbkl0ZW1bXT4oKTtcblxuICBAQ29udGVudENoaWxkcmVuKEthbmJhblRlbXBsYXRlRGlyZWN0aXZlKSB0ZW1wbGF0ZXMhOiBRdWVyeUxpc3Q8S2FuYmFuVGVtcGxhdGVEaXJlY3RpdmU+O1xuXG4gIHNlbGVjdGVkSXRlbXMgPSBuZXcgU2V0PEthbmJhbkl0ZW0+KCk7XG4gIHNlbGVjdGVkQ29sdW1uOiBLYW5iYW5Db2x1bW4gfCBudWxsID0gbnVsbDtcbiAgZHJhZ2dpbmdJdGVtcyA9IG5ldyBTZXQ8S2FuYmFuSXRlbT4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGV2ZW50U2VydmljZSA9IGluamVjdChLYW5iYW5FdmVudFNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX25vcm1hbGl6ZURhdGEoKTtcbiAgICB0aGlzLl9zdWJzY3JpYmVFdmVudHMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIG9uRHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8S2FuYmFuSXRlbVtdPiwgdGFyZ2V0Q29sdW1uOiBLYW5iYW5Db2x1bW4pOiB2b2lkIHtcbiAgICBjb25zdCBwcmV2aW91c0NvbHVtbiA9IHRoaXMuZGF0YS5jb2x1bW5zLmZpbmQoYyA9PiBjLml0ZW1zID09PSBldmVudC5wcmV2aW91c0NvbnRhaW5lci5kYXRhKTtcblxuICAgIGlmICghcHJldmlvdXNDb2x1bW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQucHJldmlvdXNDb250YWluZXIgPT09IGV2ZW50LmNvbnRhaW5lcikge1xuICAgICAgbW92ZUl0ZW1JbkFycmF5KGV2ZW50LmNvbnRhaW5lci5kYXRhLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBkcmFnZ2VkSXRlbSA9IGV2ZW50Lml0ZW0uZGF0YSBhcyBLYW5iYW5JdGVtO1xuICAgICAgY29uc3QgYWRkaXRpb25hbEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmhhcyhkcmFnZ2VkSXRlbSlcbiAgICAgICAgPyBbLi4udGhpcy5zZWxlY3RlZEl0ZW1zXS5maWx0ZXIoaSA9PiBpICE9PSBkcmFnZ2VkSXRlbSlcbiAgICAgICAgOiBbXTtcblxuICAgICAgdHJhbnNmZXJBcnJheUl0ZW0oXG4gICAgICAgIGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGEsXG4gICAgICAgIGV2ZW50LmNvbnRhaW5lci5kYXRhLFxuICAgICAgICBldmVudC5wcmV2aW91c0luZGV4LFxuICAgICAgICBldmVudC5jdXJyZW50SW5kZXhcbiAgICAgICk7XG5cbiAgICAgIC8vIE1vdmUgYWRkaXRpb25hbCBzZWxlY3RlZCBpdGVtcyB0aGF0IHN0aWxsIGJlbG9uZyB0byB0aGUgc291cmNlIGNvbHVtbi5cbiAgICAgIGlmIChhZGRpdGlvbmFsSXRlbXMubGVuZ3RoID4gMCAmJiBwcmV2aW91c0NvbHVtbikge1xuICAgICAgICBhZGRpdGlvbmFsSXRlbXNcbiAgICAgICAgICAuZmlsdGVyKGl0ZW0gPT4gcHJldmlvdXNDb2x1bW4uaXRlbXMuaW5jbHVkZXMoaXRlbSkpXG4gICAgICAgICAgLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmcm9tSW5kZXggPSBwcmV2aW91c0NvbHVtbi5pdGVtcy5pbmRleE9mKGl0ZW0pO1xuICAgICAgICAgICAgaWYgKGZyb21JbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgdHJhbnNmZXJBcnJheUl0ZW0oXG4gICAgICAgICAgICAgICAgcHJldmlvdXNDb2x1bW4uaXRlbXMsXG4gICAgICAgICAgICAgICAgdGFyZ2V0Q29sdW1uLml0ZW1zLFxuICAgICAgICAgICAgICAgIGZyb21JbmRleCxcbiAgICAgICAgICAgICAgICB0YXJnZXRDb2x1bW4uaXRlbXMubGVuZ3RoXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1vdmVkSXRlbXM6IEthbmJhbkl0ZW1bXSA9IFtkcmFnZ2VkSXRlbSwgLi4uYWRkaXRpb25hbEl0ZW1zXTtcbiAgICAgIHRoaXMuaXRlbXNNb3ZlZC5lbWl0KHsgaXRlbXM6IG1vdmVkSXRlbXMsIHByZXZpb3VzQ29sdW1uLCB0YXJnZXRDb2x1bW4gfSk7XG4gICAgfVxuXG4gICAgdGhpcy5kYXRhVXBkYXRlZC5lbWl0KHRoaXMuZGF0YSk7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmNsZWFyKCk7XG4gICAgdGhpcy5kcmFnZ2luZ0l0ZW1zLmNsZWFyKCk7XG4gICAgdGhpcy5pdGVtc1NlbGVjdGVkLmVtaXQoW10pO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgb25JdGVtQ2xpY2soZXZlbnQ6IEV2ZW50LCBpdGVtOiBLYW5iYW5JdGVtLCBjb2x1bW46IEthbmJhbkNvbHVtbik6IHZvaWQge1xuICAgIGNvbnN0IHBvaW50ZXJFdmVudCA9IGV2ZW50IGFzIE1vdXNlRXZlbnQ7XG5cbiAgICBpZiAoaXRlbS5kaXNhYmxlZCB8fCBpdGVtLmZyb3plbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChwb2ludGVyRXZlbnQuY3RybEtleSB8fCBwb2ludGVyRXZlbnQubWV0YUtleSkge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtcy5oYXMoaXRlbSkpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmRlbGV0ZShpdGVtKTtcbiAgICAgICAgdGhpcy5ldmVudFNlcnZpY2UuZW1pdFVuc2VsZWN0SXRlbShpdGVtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkQ29sdW1uICE9PSBjb2x1bW4pIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZm9yRWFjaChzZWxlY3RlZEl0ZW0gPT4gdGhpcy5ldmVudFNlcnZpY2UuZW1pdFVuc2VsZWN0SXRlbShzZWxlY3RlZEl0ZW0pKTtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuY2xlYXIoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuYWRkKGl0ZW0pO1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ29sdW1uID0gY29sdW1uO1xuICAgICAgICB0aGlzLmV2ZW50U2VydmljZS5lbWl0U2VsZWN0SXRlbShpdGVtKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtcy5oYXMoaXRlbSkgJiYgdGhpcy5zZWxlY3RlZEl0ZW1zLnNpemUgPT09IDEpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmZvckVhY2goc2VsZWN0ZWRJdGVtID0+IHRoaXMuZXZlbnRTZXJ2aWNlLmVtaXRVbnNlbGVjdEl0ZW0oc2VsZWN0ZWRJdGVtKSk7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBuZXcgU2V0KFtpdGVtXSk7XG4gICAgICB0aGlzLnNlbGVjdGVkQ29sdW1uID0gY29sdW1uO1xuICAgICAgdGhpcy5ldmVudFNlcnZpY2UuZW1pdFNlbGVjdEl0ZW0oaXRlbSk7XG4gICAgfVxuXG4gICAgdGhpcy5pdGVtc1NlbGVjdGVkLmVtaXQoWy4uLnRoaXMuc2VsZWN0ZWRJdGVtc10pO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgb25EcmFnU3RhcnRlZChpdGVtOiBLYW5iYW5JdGVtKTogdm9pZCB7XG4gICAgdGhpcy5kcmFnZ2luZ0l0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmhhcyhpdGVtKVxuICAgICAgPyBuZXcgU2V0KHRoaXMuc2VsZWN0ZWRJdGVtcylcbiAgICAgIDogbmV3IFNldChbaXRlbV0pO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgZ2V0VGVtcGxhdGUodHlwZTogS2FuYmFuVGVtcGxhdGVUeXBlKTogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy50ZW1wbGF0ZXM/LmZpbmQodGVtcGxhdGUgPT4gdGVtcGxhdGUudHlwZSA9PT0gdHlwZSk/LnRlbXBsYXRlID8/IG51bGw7XG4gIH1cblxuICBnZXRDb2x1bW5JZChpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYHNkYy1rYW5iYW4tY29sLSR7aW5kZXh9YDtcbiAgfVxuXG4gIGdldENvbm5lY3RlZERyb3BMaXN0cyhjdXJyZW50SW5kZXg6IG51bWJlcik6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLmNvbHVtbnNcbiAgICAgIC5tYXAoKF8sIGluZGV4KSA9PiBgc2RjLWthbmJhbi1jb2wtJHtpbmRleH1gKVxuICAgICAgLmZpbHRlcigoXywgaW5kZXgpID0+IGluZGV4ICE9PSBjdXJyZW50SW5kZXgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfbm9ybWFsaXplRGF0YSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGF0YSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZGF0YS5jb2x1bW5zLmZvckVhY2goKGNvbHVtbiwgaW5kZXgpID0+IHtcbiAgICAgIGlmICghY29sdW1uLmlkKSB7XG4gICAgICAgIGNvbHVtbi5pZCA9IGBrYW5iYW4tY29sLSR7aW5kZXh9YDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3N1YnNjcmliZUV2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50U2VydmljZS5zZWxlY3RBbGxDb2x1bW5JdGVtcyRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoY29sdW1uID0+IHtcbiAgICAgICAgY29sdW1uLml0ZW1zXG4gICAgICAgICAgLmZpbHRlcihpdGVtID0+ICFpdGVtLmRpc2FibGVkICYmICFpdGVtLmZyb3plbilcbiAgICAgICAgICAuZm9yRWFjaChpdGVtID0+IHRoaXMuc2VsZWN0ZWRJdGVtcy5hZGQoaXRlbSkpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ29sdW1uID0gY29sdW1uO1xuICAgICAgICB0aGlzLml0ZW1zU2VsZWN0ZWQuZW1pdChbLi4udGhpcy5zZWxlY3RlZEl0ZW1zXSk7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmV2ZW50U2VydmljZS51bnNlbGVjdEFsbENvbHVtbkl0ZW1zJFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZShjb2x1bW4gPT4ge1xuICAgICAgICBjb2x1bW4uaXRlbXMuZm9yRWFjaChpdGVtID0+IHRoaXMuc2VsZWN0ZWRJdGVtcy5kZWxldGUoaXRlbSkpO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW1zLnNpemUgPT09IDApIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkQ29sdW1uID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLml0ZW1zU2VsZWN0ZWQuZW1pdChbLi4udGhpcy5zZWxlY3RlZEl0ZW1zXSk7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmV2ZW50U2VydmljZS5zZWxlY3RJdGVtJFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZShpdGVtID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmFkZChpdGVtKTtcbiAgICAgICAgdGhpcy5pdGVtc1NlbGVjdGVkLmVtaXQoWy4uLnRoaXMuc2VsZWN0ZWRJdGVtc10pO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5ldmVudFNlcnZpY2UudW5zZWxlY3RJdGVtJFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZShpdGVtID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmRlbGV0ZShpdGVtKTtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtcy5zaXplID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbiA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pdGVtc1NlbGVjdGVkLmVtaXQoWy4uLnRoaXMuc2VsZWN0ZWRJdGVtc10pO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2RjLWthbmJhblwiIGNka0Ryb3BMaXN0R3JvdXA+XG4gIEBmb3IgKGNvbHVtbiBvZiBkYXRhLmNvbHVtbnM7IHRyYWNrICRpbmRleDsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICA8c2RjLWthbmJhbi1jb2x1bW5cbiAgICAgIFtkYXRhXT1cImNvbHVtblwiXG4gICAgICBbc2hvd0NoZWNrYm94XT1cInNob3dDb2x1bW5DaGVja2JveGVzXCJcbiAgICAgIFtoZWFkZXJUZW1wbGF0ZV09XCJnZXRUZW1wbGF0ZSgnY29sdW1uLWhlYWRlcicpXCJcbiAgICAgIFtlbXB0eU1lc3NhZ2VUZW1wbGF0ZV09XCJnZXRUZW1wbGF0ZSgnY29sdW1uLWVtcHR5LW1lc3NhZ2UnKVwiXG4gICAgICBbc3R5bGUuLS1zZGMta2FuYmFuLWNvbHVtbi1hY2NlbnRdPVwiY29sdW1uLmNvbG9yID8/IG51bGxcIj5cblxuICAgICAgPGRpdlxuICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICBbaWRdPVwiZ2V0Q29sdW1uSWQoaSlcIlxuICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cImNvbHVtbi5pdGVtc1wiXG4gICAgICAgIFtjZGtEcm9wTGlzdENvbm5lY3RlZFRvXT1cImdldENvbm5lY3RlZERyb3BMaXN0cyhpKVwiXG4gICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25Ecm9wKCRldmVudCwgY29sdW1uKVwiPlxuXG4gICAgICAgIEBmb3IgKGl0ZW0gb2YgY29sdW1uLml0ZW1zOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICA8c2RjLWthbmJhbi1pdGVtXG4gICAgICAgICAgICBjZGtEcmFnXG4gICAgICAgICAgICBbY2RrRHJhZ0RhdGFdPVwiaXRlbVwiXG4gICAgICAgICAgICBbY2RrRHJhZ0Rpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWQgPz8gZmFsc2VcIlxuICAgICAgICAgICAgW2l0ZW1dPVwiaXRlbVwiXG4gICAgICAgICAgICBbc2VsZWN0ZWRdPVwic2VsZWN0ZWRJdGVtcy5oYXMoaXRlbSlcIlxuICAgICAgICAgICAgW3Nob3dDaGVja2JveF09XCJzaG93SXRlbUNoZWNrYm94ZXNcIlxuICAgICAgICAgICAgW2hlYWRlclRlbXBsYXRlXT1cImdldFRlbXBsYXRlKCdpdGVtLWhlYWRlcicpXCJcbiAgICAgICAgICAgIFtib2R5VGVtcGxhdGVdPVwiZ2V0VGVtcGxhdGUoJ2l0ZW0tYm9keScpXCJcbiAgICAgICAgICAgIFtmb290ZXJUZW1wbGF0ZV09XCJnZXRUZW1wbGF0ZSgnaXRlbS1mb290ZXInKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25JdGVtQ2xpY2soJGV2ZW50LCBpdGVtLCBjb2x1bW4pXCJcbiAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIm9uSXRlbUNsaWNrKCRldmVudCwgaXRlbSwgY29sdW1uKVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5zcGFjZSk9XCJvbkl0ZW1DbGljaygkZXZlbnQsIGl0ZW0sIGNvbHVtbilcIlxuICAgICAgICAgICAgKGNka0RyYWdTdGFydGVkKT1cIm9uRHJhZ1N0YXJ0ZWQoaXRlbSlcIj5cblxuICAgICAgICAgICAgPGRpdiAqY2RrRHJhZ1ByZXZpZXc+XG4gICAgICAgICAgICAgIDxzZGMta2FuYmFuLWl0ZW0tZHJhZ2dpbmdcbiAgICAgICAgICAgICAgICBbcXVhbnRpdHlJdGVtc109XCJkcmFnZ2luZ0l0ZW1zLnNpemVcIj5cbiAgICAgICAgICAgICAgPC9zZGMta2FuYmFuLWl0ZW0tZHJhZ2dpbmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3NkYy1rYW5iYW4taXRlbT5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoY29sdW1uLml0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZGMta2FuYmFuX19lbXB0eVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImdldFRlbXBsYXRlKCdjb2x1bW4tZW1wdHktbWVzc2FnZScpOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogY29sdW1uIH1cIj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L3NkYy1rYW5iYW4tY29sdW1uPlxuICB9XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,27 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export class KanbanEventService {
5
+ selectAllColumnItems$ = new Subject();
6
+ unselectAllColumnItems$ = new Subject();
7
+ selectItem$ = new Subject();
8
+ unselectItem$ = new Subject();
9
+ emitSelectAllColumnItems(col) {
10
+ this.selectAllColumnItems$.next(col);
11
+ }
12
+ emitUnselectAllColumnItems(col) {
13
+ this.unselectAllColumnItems$.next(col);
14
+ }
15
+ emitSelectItem(item) {
16
+ this.selectItem$.next(item);
17
+ }
18
+ emitUnselectItem(item) {
19
+ this.unselectItem$.next(item);
20
+ }
21
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KanbanEventService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
22
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KanbanEventService });
23
+ }
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KanbanEventService, decorators: [{
25
+ type: Injectable
26
+ }] });
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2FuYmFuLWV2ZW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL2thbmJhbi9zZXJ2aWNlcy9rYW5iYW4tZXZlbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBSy9CLE1BQU0sT0FBTyxrQkFBa0I7SUFDcEIscUJBQXFCLEdBQUcsSUFBSSxPQUFPLEVBQWdCLENBQUM7SUFDcEQsdUJBQXVCLEdBQUcsSUFBSSxPQUFPLEVBQWdCLENBQUM7SUFDdEQsV0FBVyxHQUFHLElBQUksT0FBTyxFQUFjLENBQUM7SUFDeEMsYUFBYSxHQUFHLElBQUksT0FBTyxFQUFjLENBQUM7SUFFbkQsd0JBQXdCLENBQUMsR0FBaUI7UUFDeEMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsMEJBQTBCLENBQUMsR0FBaUI7UUFDMUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsY0FBYyxDQUFDLElBQWdCO1FBQzdCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxJQUFnQjtRQUMvQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO3dHQXBCVSxrQkFBa0I7NEdBQWxCLGtCQUFrQjs7NEZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHR5cGUgeyBLYW5iYW5Db2x1bW4sIEthbmJhbkl0ZW0gfSBmcm9tICcuLi8uLi8uLi9jb3JlL3R5cGVzL2thbmJhbi50eXBlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEthbmJhbkV2ZW50U2VydmljZSB7XG4gIHJlYWRvbmx5IHNlbGVjdEFsbENvbHVtbkl0ZW1zJCA9IG5ldyBTdWJqZWN0PEthbmJhbkNvbHVtbj4oKTtcbiAgcmVhZG9ubHkgdW5zZWxlY3RBbGxDb2x1bW5JdGVtcyQgPSBuZXcgU3ViamVjdDxLYW5iYW5Db2x1bW4+KCk7XG4gIHJlYWRvbmx5IHNlbGVjdEl0ZW0kID0gbmV3IFN1YmplY3Q8S2FuYmFuSXRlbT4oKTtcbiAgcmVhZG9ubHkgdW5zZWxlY3RJdGVtJCA9IG5ldyBTdWJqZWN0PEthbmJhbkl0ZW0+KCk7XG5cbiAgZW1pdFNlbGVjdEFsbENvbHVtbkl0ZW1zKGNvbDogS2FuYmFuQ29sdW1uKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RBbGxDb2x1bW5JdGVtcyQubmV4dChjb2wpO1xuICB9XG5cbiAgZW1pdFVuc2VsZWN0QWxsQ29sdW1uSXRlbXMoY29sOiBLYW5iYW5Db2x1bW4pOiB2b2lkIHtcbiAgICB0aGlzLnVuc2VsZWN0QWxsQ29sdW1uSXRlbXMkLm5leHQoY29sKTtcbiAgfVxuXG4gIGVtaXRTZWxlY3RJdGVtKGl0ZW06IEthbmJhbkl0ZW0pOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdEl0ZW0kLm5leHQoaXRlbSk7XG4gIH1cblxuICBlbWl0VW5zZWxlY3RJdGVtKGl0ZW06IEthbmJhbkl0ZW0pOiB2b2lkIHtcbiAgICB0aGlzLnVuc2VsZWN0SXRlbSQubmV4dChpdGVtKTtcbiAgfVxufVxuIl19