@clr/angular 12.0.11 → 13.0.1

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 (1133) hide show
  1. package/accordion/accordion-content.d.ts +3 -0
  2. package/accordion/accordion-description.d.ts +3 -0
  3. package/accordion/accordion-panel.d.ts +3 -0
  4. package/accordion/accordion-title.d.ts +3 -0
  5. package/accordion/accordion.d.ts +3 -0
  6. package/accordion/accordion.module.d.ts +13 -0
  7. package/accordion/chocolate/accordion-oompa-loompa.d.ts +3 -0
  8. package/accordion/chocolate/accordion-willy-wonka.d.ts +3 -0
  9. package/accordion/providers/accordion.service.d.ts +3 -0
  10. package/accordion/stepper/chocolate/stepper-oompa-loompa.d.ts +3 -0
  11. package/accordion/stepper/chocolate/stepper-willy-wonka.d.ts +3 -0
  12. package/accordion/stepper/providers/stepper.service.d.ts +3 -0
  13. package/accordion/stepper/step-button.d.ts +3 -0
  14. package/accordion/stepper/stepper-panel.d.ts +3 -0
  15. package/accordion/stepper/stepper.d.ts +3 -0
  16. package/accordion/stepper/stepper.module.d.ts +12 -0
  17. package/button/button-group/button-group.d.ts +3 -0
  18. package/button/button-group/button-group.module.d.ts +9 -0
  19. package/button/button-group/button.d.ts +3 -0
  20. package/button/button-loading/loading-button.d.ts +3 -0
  21. package/button/button-loading/loading-button.module.d.ts +6 -0
  22. package/button/button.module.d.ts +6 -0
  23. package/button/providers/button-in-group.service.d.ts +3 -0
  24. package/clr-angular.d.ts +1 -105
  25. package/clr-angular.module.d.ts +23 -0
  26. package/data/data.module.d.ts +7 -0
  27. package/data/datagrid/built-in/filters/datagrid-numeric-filter.d.ts +3 -0
  28. package/data/datagrid/built-in/filters/datagrid-string-filter.d.ts +3 -0
  29. package/data/datagrid/chocolate/actionable-oompa-loompa.d.ts +3 -0
  30. package/data/datagrid/chocolate/datagrid-willy-wonka.d.ts +3 -0
  31. package/data/datagrid/chocolate/expandable-oompa-loompa.d.ts +3 -0
  32. package/data/datagrid/datagrid-action-bar.d.ts +3 -0
  33. package/data/datagrid/datagrid-action-overflow.d.ts +3 -0
  34. package/data/datagrid/datagrid-cell.d.ts +3 -0
  35. package/data/datagrid/datagrid-column-separator.d.ts +3 -0
  36. package/data/datagrid/datagrid-column-toggle-button.d.ts +3 -0
  37. package/data/datagrid/datagrid-column-toggle-title.d.ts +3 -0
  38. package/data/datagrid/datagrid-column-toggle.d.ts +3 -0
  39. package/data/datagrid/datagrid-column.d.ts +3 -0
  40. package/data/datagrid/datagrid-detail-body.d.ts +3 -0
  41. package/data/datagrid/datagrid-detail-header.d.ts +3 -0
  42. package/data/datagrid/datagrid-detail-registerer.d.ts +3 -0
  43. package/data/datagrid/datagrid-detail.d.ts +3 -0
  44. package/data/datagrid/datagrid-filter.d.ts +3 -0
  45. package/data/datagrid/datagrid-footer.d.ts +3 -0
  46. package/data/datagrid/datagrid-hideable-column.d.ts +3 -0
  47. package/data/datagrid/datagrid-if-detail.d.ts +3 -0
  48. package/data/datagrid/datagrid-if-expanded.service.d.ts +3 -0
  49. package/data/datagrid/datagrid-items-trackby.d.ts +3 -0
  50. package/data/datagrid/datagrid-items.d.ts +3 -0
  51. package/data/datagrid/datagrid-page-size.d.ts +3 -0
  52. package/data/datagrid/datagrid-pagination.d.ts +3 -0
  53. package/data/datagrid/datagrid-placeholder.d.ts +3 -0
  54. package/data/datagrid/datagrid-row-detail.d.ts +3 -0
  55. package/data/datagrid/datagrid-row.d.ts +3 -0
  56. package/data/datagrid/datagrid.d.ts +3 -0
  57. package/data/datagrid/datagrid.module.d.ts +53 -0
  58. package/data/datagrid/providers/column-resizer.service.d.ts +3 -0
  59. package/data/datagrid/providers/columns.service.d.ts +3 -0
  60. package/data/datagrid/providers/detail.service.d.ts +3 -0
  61. package/data/datagrid/providers/display-mode.service.d.ts +3 -0
  62. package/data/datagrid/providers/filters.d.ts +3 -0
  63. package/data/datagrid/providers/global-expandable-rows.d.ts +3 -0
  64. package/data/datagrid/providers/items.d.ts +3 -0
  65. package/data/datagrid/providers/page.d.ts +3 -0
  66. package/data/datagrid/providers/row-action-service.d.ts +3 -0
  67. package/data/datagrid/providers/selection.d.ts +3 -0
  68. package/data/datagrid/providers/sort.d.ts +3 -0
  69. package/data/datagrid/providers/state-debouncer.provider.d.ts +3 -0
  70. package/data/datagrid/providers/state.provider.d.ts +3 -0
  71. package/data/datagrid/providers/table-size.service.d.ts +3 -0
  72. package/data/datagrid/render/cell-renderer.d.ts +3 -0
  73. package/data/datagrid/render/header-renderer.d.ts +3 -0
  74. package/data/datagrid/render/main-renderer.d.ts +3 -0
  75. package/data/datagrid/render/noop-dom-adapter.d.ts +4 -1
  76. package/data/datagrid/render/render-organizer.d.ts +3 -0
  77. package/data/datagrid/render/row-renderer.d.ts +3 -0
  78. package/data/datagrid/utils/datagrid-filter-registrar.d.ts +3 -0
  79. package/data/datagrid/wrapped-cell.d.ts +3 -0
  80. package/data/datagrid/wrapped-column.d.ts +3 -0
  81. package/data/datagrid/wrapped-row.d.ts +3 -0
  82. package/data/stack-view/stack-block.d.ts +3 -0
  83. package/data/stack-view/stack-content-input.d.ts +3 -0
  84. package/data/stack-view/stack-header.d.ts +3 -0
  85. package/data/stack-view/stack-input.d.ts +3 -6
  86. package/data/stack-view/stack-select.d.ts +3 -5
  87. package/data/stack-view/stack-view-custom-tags.d.ts +3 -0
  88. package/data/stack-view/stack-view.d.ts +3 -0
  89. package/data/stack-view/stack-view.module.d.ts +15 -0
  90. package/data/tree-view/recursive-children.d.ts +3 -0
  91. package/data/tree-view/recursive-for-of.d.ts +3 -0
  92. package/data/tree-view/tree-features.service.d.ts +3 -0
  93. package/data/tree-view/tree-focus-manager.service.d.ts +3 -0
  94. package/data/tree-view/tree-node-link.d.ts +3 -0
  95. package/data/tree-view/tree-node.d.ts +3 -0
  96. package/data/tree-view/tree-view.module.d.ts +12 -0
  97. package/data/tree-view/tree.d.ts +3 -0
  98. package/emphasis/alert/alert-item.d.ts +3 -0
  99. package/emphasis/alert/alert-text.d.ts +3 -0
  100. package/emphasis/alert/alert.d.ts +4 -0
  101. package/emphasis/alert/alert.module.d.ts +12 -0
  102. package/emphasis/alert/alerts-pager.d.ts +3 -0
  103. package/emphasis/alert/alerts.d.ts +3 -0
  104. package/emphasis/alert/providers/icon-and-types.service.d.ts +3 -0
  105. package/emphasis/alert/providers/multi-alert.service.d.ts +5 -1
  106. package/emphasis/emphasis.module.d.ts +5 -0
  107. package/esm2020/accordion/accordion-content.mjs +20 -0
  108. package/esm2020/accordion/accordion-description.mjs +21 -0
  109. package/esm2020/accordion/accordion-panel.mjs +108 -0
  110. package/esm2020/accordion/accordion-title.mjs +21 -0
  111. package/esm2020/accordion/accordion.mjs +61 -0
  112. package/esm2020/accordion/accordion.module.mjs +55 -0
  113. package/esm2020/accordion/chocolate/accordion-oompa-loompa.mjs +31 -0
  114. package/esm2020/accordion/chocolate/accordion-willy-wonka.mjs +17 -0
  115. package/{esm2015/accordion/enums/accordion-status.enum.js → esm2020/accordion/enums/accordion-status.enum.mjs} +0 -0
  116. package/{esm2015/accordion/enums/accordion-strategy.enum.js → esm2020/accordion/enums/accordion-strategy.enum.mjs} +0 -0
  117. package/{esm2015/accordion/index.js → esm2020/accordion/index.mjs} +0 -0
  118. package/{esm2015/accordion/models/accordion.model.js → esm2020/accordion/models/accordion.model.mjs} +0 -0
  119. package/esm2020/accordion/providers/accordion.service.mjs +47 -0
  120. package/esm2020/accordion/stepper/chocolate/stepper-oompa-loompa.mjs +31 -0
  121. package/esm2020/accordion/stepper/chocolate/stepper-willy-wonka.mjs +17 -0
  122. package/{esm2015/accordion/stepper/index.js → esm2020/accordion/stepper/index.mjs} +0 -0
  123. package/{esm2015/accordion/stepper/models/stepper.model.js → esm2020/accordion/stepper/models/stepper.model.mjs} +0 -0
  124. package/esm2020/accordion/stepper/providers/stepper.service.mjs +55 -0
  125. package/esm2020/accordion/stepper/step-button.mjs +51 -0
  126. package/esm2020/accordion/stepper/stepper-panel.mjs +89 -0
  127. package/esm2020/accordion/stepper/stepper.mjs +93 -0
  128. package/esm2020/accordion/stepper/stepper.module.mjs +30 -0
  129. package/{esm2015/accordion/utils/animation.js → esm2020/accordion/utils/animation.mjs} +0 -0
  130. package/esm2020/button/button-group/button-group.mjs +140 -0
  131. package/esm2020/button/button-group/button-group.module.mjs +27 -0
  132. package/{esm2015/button/button-group/button.js → esm2020/button/button-group/button.mjs} +57 -24
  133. package/{esm2015/button/button-group/index.js → esm2020/button/button-group/index.mjs} +0 -0
  134. package/{esm2015/button/button-loading/index.js → esm2020/button/button-loading/index.mjs} +0 -0
  135. package/esm2020/button/button-loading/loading-button.mjs +153 -0
  136. package/esm2020/button/button-loading/loading-button.module.mjs +24 -0
  137. package/esm2020/button/button.module.mjs +25 -0
  138. package/{esm2015/button/index.js → esm2020/button/index.mjs} +0 -0
  139. package/esm2020/button/providers/button-in-group.service.mjs +25 -0
  140. package/esm2020/clr-angular.mjs +5 -0
  141. package/esm2020/clr-angular.module.mjs +96 -0
  142. package/esm2020/data/data.module.mjs +20 -0
  143. package/{esm2015/data/datagrid/built-in/comparators/datagrid-property-comparator.js → esm2020/data/datagrid/built-in/comparators/datagrid-property-comparator.mjs} +0 -0
  144. package/{esm2015/data/datagrid/built-in/filters/datagrid-numeric-filter-impl.js → esm2020/data/datagrid/built-in/filters/datagrid-numeric-filter-impl.mjs} +0 -0
  145. package/esm2020/data/datagrid/built-in/filters/datagrid-numeric-filter.mjs +200 -0
  146. package/{esm2015/data/datagrid/built-in/filters/datagrid-property-numeric-filter.js → esm2020/data/datagrid/built-in/filters/datagrid-property-numeric-filter.mjs} +0 -0
  147. package/{esm2015/data/datagrid/built-in/filters/datagrid-property-string-filter.js → esm2020/data/datagrid/built-in/filters/datagrid-property-string-filter.mjs} +0 -0
  148. package/{esm2015/data/datagrid/built-in/filters/datagrid-string-filter-impl.js → esm2020/data/datagrid/built-in/filters/datagrid-string-filter-impl.mjs} +0 -0
  149. package/esm2020/data/datagrid/built-in/filters/datagrid-string-filter.mjs +131 -0
  150. package/{esm2015/data/datagrid/built-in/nested-property.js → esm2020/data/datagrid/built-in/nested-property.mjs} +0 -0
  151. package/esm2020/data/datagrid/chocolate/actionable-oompa-loompa.mjs +31 -0
  152. package/esm2020/data/datagrid/chocolate/datagrid-willy-wonka.mjs +17 -0
  153. package/esm2020/data/datagrid/chocolate/expandable-oompa-loompa.mjs +31 -0
  154. package/esm2020/data/datagrid/datagrid-action-bar.mjs +20 -0
  155. package/esm2020/data/datagrid/datagrid-action-overflow.mjs +161 -0
  156. package/esm2020/data/datagrid/datagrid-cell.mjs +39 -0
  157. package/esm2020/data/datagrid/datagrid-column-separator.mjs +172 -0
  158. package/esm2020/data/datagrid/datagrid-column-toggle-button.mjs +63 -0
  159. package/esm2020/data/datagrid/datagrid-column-toggle-title.mjs +20 -0
  160. package/esm2020/data/datagrid/datagrid-column-toggle.mjs +229 -0
  161. package/esm2020/data/datagrid/datagrid-column.mjs +430 -0
  162. package/esm2020/data/datagrid/datagrid-detail-body.mjs +30 -0
  163. package/esm2020/data/datagrid/datagrid-detail-header.mjs +61 -0
  164. package/esm2020/data/datagrid/datagrid-detail-registerer.mjs +34 -0
  165. package/esm2020/data/datagrid/datagrid-detail.mjs +70 -0
  166. package/esm2020/data/datagrid/datagrid-filter.mjs +182 -0
  167. package/esm2020/data/datagrid/datagrid-footer.mjs +79 -0
  168. package/esm2020/data/datagrid/datagrid-hideable-column.mjs +104 -0
  169. package/esm2020/data/datagrid/datagrid-if-detail.mjs +63 -0
  170. package/esm2020/data/datagrid/datagrid-if-expanded.service.mjs +54 -0
  171. package/esm2020/data/datagrid/datagrid-items-trackby.mjs +32 -0
  172. package/esm2020/data/datagrid/datagrid-items.mjs +63 -0
  173. package/esm2020/data/datagrid/datagrid-page-size.mjs +47 -0
  174. package/esm2020/data/datagrid/datagrid-pagination.mjs +362 -0
  175. package/esm2020/data/datagrid/datagrid-placeholder.mjs +41 -0
  176. package/esm2020/data/datagrid/datagrid-row-detail.mjs +90 -0
  177. package/esm2020/data/datagrid/datagrid-row.mjs +241 -0
  178. package/esm2020/data/datagrid/datagrid.mjs +349 -0
  179. package/esm2020/data/datagrid/datagrid.module.mjs +237 -0
  180. package/esm2020/data/datagrid/enums/column-changes.enum.mjs +14 -0
  181. package/{esm2015/data/datagrid/enums/display-mode.enum.js → esm2020/data/datagrid/enums/display-mode.enum.mjs} +0 -0
  182. package/{esm2015/data/datagrid/enums/render-step.enum.js → esm2020/data/datagrid/enums/render-step.enum.mjs} +0 -0
  183. package/{esm2015/data/datagrid/enums/selection-type.js → esm2020/data/datagrid/enums/selection-type.mjs} +0 -0
  184. package/{esm2015/data/datagrid/enums/sort-order.enum.js → esm2020/data/datagrid/enums/sort-order.enum.mjs} +0 -0
  185. package/{esm2015/data/datagrid/index.js → esm2020/data/datagrid/index.mjs} +0 -0
  186. package/{esm2015/data/datagrid/interfaces/column-state.interface.js → esm2020/data/datagrid/interfaces/column-state.interface.mjs} +0 -0
  187. package/{esm2015/data/datagrid/interfaces/comparator.interface.js → esm2020/data/datagrid/interfaces/comparator.interface.mjs} +0 -0
  188. package/{esm2015/data/datagrid/interfaces/filter.interface.js → esm2020/data/datagrid/interfaces/filter.interface.mjs} +0 -0
  189. package/{esm2015/data/datagrid/interfaces/numeric-filter.interface.js → esm2020/data/datagrid/interfaces/numeric-filter.interface.mjs} +0 -0
  190. package/{esm2015/data/datagrid/interfaces/state.interface.js → esm2020/data/datagrid/interfaces/state.interface.mjs} +0 -0
  191. package/{esm2015/data/datagrid/interfaces/string-filter.interface.js → esm2020/data/datagrid/interfaces/string-filter.interface.mjs} +0 -0
  192. package/esm2020/data/datagrid/providers/column-resizer.service.mjs +57 -0
  193. package/{esm2015/data/datagrid/providers/column-state.provider.js → esm2020/data/datagrid/providers/column-state.provider.mjs} +0 -0
  194. package/esm2020/data/datagrid/providers/columns.service.mjs +53 -0
  195. package/{esm2015/data/datagrid/providers/custom-filter.js → esm2020/data/datagrid/providers/custom-filter.mjs} +0 -0
  196. package/esm2020/data/datagrid/providers/detail.service.mjs +61 -0
  197. package/esm2020/data/datagrid/providers/display-mode.service.mjs +35 -0
  198. package/esm2020/data/datagrid/providers/filters.mjs +111 -0
  199. package/esm2020/data/datagrid/providers/global-expandable-rows.mjs +33 -0
  200. package/esm2020/data/datagrid/providers/items.mjs +173 -0
  201. package/esm2020/data/datagrid/providers/page.mjs +155 -0
  202. package/esm2020/data/datagrid/providers/row-action-service.mjs +30 -0
  203. package/esm2020/data/datagrid/providers/selection.mjs +374 -0
  204. package/esm2020/data/datagrid/providers/sort.mjs +85 -0
  205. package/esm2020/data/datagrid/providers/state-debouncer.provider.mjs +42 -0
  206. package/esm2020/data/datagrid/providers/state.provider.mjs +74 -0
  207. package/esm2020/data/datagrid/providers/table-size.service.mjs +44 -0
  208. package/esm2020/data/datagrid/render/cell-renderer.mjs +81 -0
  209. package/{esm2015/data/datagrid/render/constants.js → esm2020/data/datagrid/render/constants.mjs} +0 -0
  210. package/esm2020/data/datagrid/render/header-renderer.mjs +132 -0
  211. package/esm2020/data/datagrid/render/main-renderer.mjs +198 -0
  212. package/esm2020/data/datagrid/render/noop-dom-adapter.mjs +54 -0
  213. package/esm2020/data/datagrid/render/render-organizer.mjs +38 -0
  214. package/esm2020/data/datagrid/render/row-renderer.mjs +58 -0
  215. package/esm2020/data/datagrid/utils/datagrid-filter-registrar.mjs +42 -0
  216. package/esm2020/data/datagrid/wrapped-cell.mjs +39 -0
  217. package/esm2020/data/datagrid/wrapped-column.mjs +40 -0
  218. package/esm2020/data/datagrid/wrapped-row.mjs +40 -0
  219. package/{esm2015/data/index.js → esm2020/data/index.mjs} +0 -0
  220. package/{esm2015/data/stack-view/index.js → esm2020/data/stack-view/index.mjs} +0 -0
  221. package/esm2020/data/stack-view/stack-block.mjs +214 -0
  222. package/esm2020/data/stack-view/stack-content-input.mjs +29 -0
  223. package/{esm2015/data/stack-view/stack-control.js → esm2020/data/stack-view/stack-control.mjs} +0 -0
  224. package/esm2020/data/stack-view/stack-header.mjs +68 -0
  225. package/{esm2015/data/stack-view/stack-input.js → esm2020/data/stack-view/stack-input.mjs} +20 -14
  226. package/esm2020/data/stack-view/stack-select.mjs +48 -0
  227. package/esm2020/data/stack-view/stack-view-custom-tags.mjs +16 -0
  228. package/esm2020/data/stack-view/stack-view.mjs +57 -0
  229. package/esm2020/data/stack-view/stack-view.module.mjs +69 -0
  230. package/{esm2015/data/tree-view/index.js → esm2020/data/tree-view/index.mjs} +0 -0
  231. package/{esm2015/data/tree-view/models/async-array.js → esm2020/data/tree-view/models/async-array.mjs} +0 -0
  232. package/{esm2015/data/tree-view/models/declarative-tree-node.model.js → esm2020/data/tree-view/models/declarative-tree-node.model.mjs} +0 -0
  233. package/{esm2015/data/tree-view/models/recursive-tree-node.model.js → esm2020/data/tree-view/models/recursive-tree-node.model.mjs} +0 -0
  234. package/{esm2015/data/tree-view/models/selected-state.enum.js → esm2020/data/tree-view/models/selected-state.enum.mjs} +0 -0
  235. package/{esm2015/data/tree-view/models/tree-node.model.js → esm2020/data/tree-view/models/tree-node.model.mjs} +0 -0
  236. package/esm2020/data/tree-view/recursive-children.mjs +81 -0
  237. package/esm2020/data/tree-view/recursive-for-of.mjs +54 -0
  238. package/esm2020/data/tree-view/tree-features.service.mjs +37 -0
  239. package/esm2020/data/tree-view/tree-focus-manager.service.mjs +121 -0
  240. package/esm2020/data/tree-view/tree-node-link.mjs +26 -0
  241. package/esm2020/data/tree-view/tree-node.mjs +279 -0
  242. package/esm2020/data/tree-view/tree-view.module.mjs +34 -0
  243. package/esm2020/data/tree-view/tree.mjs +91 -0
  244. package/esm2020/emphasis/alert/alert-item.mjs +43 -0
  245. package/esm2020/emphasis/alert/alert-text.mjs +22 -0
  246. package/esm2020/emphasis/alert/alert.mjs +119 -0
  247. package/esm2020/emphasis/alert/alert.module.mjs +34 -0
  248. package/esm2020/emphasis/alert/alerts-pager.mjs +72 -0
  249. package/esm2020/emphasis/alert/alerts.mjs +100 -0
  250. package/{esm2015/emphasis/alert/index.js → esm2020/emphasis/alert/index.mjs} +0 -0
  251. package/esm2020/emphasis/alert/providers/icon-and-types.service.mjs +74 -0
  252. package/esm2020/emphasis/alert/providers/multi-alert.service.mjs +96 -0
  253. package/{esm2015/emphasis/alert/utils/alert-info-object.js → esm2020/emphasis/alert/utils/alert-info-object.mjs} +0 -0
  254. package/{esm2015/emphasis/alert/utils/alert-types.js → esm2020/emphasis/alert/utils/alert-types.mjs} +0 -0
  255. package/esm2020/emphasis/emphasis.module.mjs +18 -0
  256. package/{esm2015/emphasis/index.js → esm2020/emphasis/index.mjs} +0 -0
  257. package/esm2020/forms/checkbox/checkbox-container.mjs +127 -0
  258. package/esm2020/forms/checkbox/checkbox-wrapper.mjs +68 -0
  259. package/esm2020/forms/checkbox/checkbox.mjs +43 -0
  260. package/esm2020/forms/checkbox/checkbox.module.mjs +33 -0
  261. package/{esm2015/forms/checkbox/index.js → esm2020/forms/checkbox/index.mjs} +0 -0
  262. package/esm2020/forms/combobox/combobox-container.mjs +109 -0
  263. package/esm2020/forms/combobox/combobox.mjs +363 -0
  264. package/esm2020/forms/combobox/combobox.module.mjs +81 -0
  265. package/{esm2015/forms/combobox/index.js → esm2020/forms/combobox/index.mjs} +0 -0
  266. package/{esm2015/forms/combobox/model/combobox.model.js → esm2020/forms/combobox/model/combobox.model.mjs} +0 -0
  267. package/{esm2015/forms/combobox/model/multi-select-combobox.model.js → esm2020/forms/combobox/model/multi-select-combobox.model.mjs} +0 -0
  268. package/{esm2015/forms/combobox/model/pseudo-focus.model.js → esm2020/forms/combobox/model/pseudo-focus.model.mjs} +0 -0
  269. package/{esm2015/forms/combobox/model/single-select-combobox.model.js → esm2020/forms/combobox/model/single-select-combobox.model.mjs} +0 -0
  270. package/esm2020/forms/combobox/option-items.directive.mjs +97 -0
  271. package/esm2020/forms/combobox/option-selected.directive.mjs +22 -0
  272. package/esm2020/forms/combobox/option.mjs +102 -0
  273. package/esm2020/forms/combobox/options.mjs +152 -0
  274. package/esm2020/forms/combobox/providers/combobox-container.service.mjs +18 -0
  275. package/esm2020/forms/combobox/providers/combobox-focus-handler.service.mjs +215 -0
  276. package/esm2020/forms/combobox/providers/option-selection.service.mjs +81 -0
  277. package/esm2020/forms/common/abstract-container.mjs +119 -0
  278. package/esm2020/forms/common/abstract-control.mjs +50 -0
  279. package/esm2020/forms/common/common.module.mjs +78 -0
  280. package/esm2020/forms/common/control-container.mjs +83 -0
  281. package/esm2020/forms/common/control.mjs +27 -0
  282. package/esm2020/forms/common/error.mjs +36 -0
  283. package/esm2020/forms/common/form.mjs +53 -0
  284. package/esm2020/forms/common/helper.mjs +36 -0
  285. package/esm2020/forms/common/if-control-state/abstract-if-state.mjs +44 -0
  286. package/esm2020/forms/common/if-control-state/if-control-state.service.mjs +56 -0
  287. package/esm2020/forms/common/if-control-state/if-error.mjs +68 -0
  288. package/esm2020/forms/common/if-control-state/if-success.mjs +45 -0
  289. package/{esm2015/forms/common/index.js → esm2020/forms/common/index.mjs} +0 -0
  290. package/esm2020/forms/common/label.mjs +67 -0
  291. package/esm2020/forms/common/layout.mjs +31 -0
  292. package/esm2020/forms/common/providers/container-id.service.mjs +33 -0
  293. package/esm2020/forms/common/providers/control-class.service.mjs +52 -0
  294. package/esm2020/forms/common/providers/control-id.service.mjs +31 -0
  295. package/esm2020/forms/common/providers/focus.service.mjs +25 -0
  296. package/esm2020/forms/common/providers/layout.service.mjs +57 -0
  297. package/esm2020/forms/common/providers/mark-control.service.mjs +25 -0
  298. package/esm2020/forms/common/providers/ng-control.service.mjs +33 -0
  299. package/esm2020/forms/common/success.mjs +36 -0
  300. package/esm2020/forms/common/wrapped-control.mjs +156 -0
  301. package/esm2020/forms/datalist/datalist-container.mjs +122 -0
  302. package/esm2020/forms/datalist/datalist-input.mjs +62 -0
  303. package/esm2020/forms/datalist/datalist.mjs +48 -0
  304. package/esm2020/forms/datalist/datalist.module.mjs +31 -0
  305. package/{esm2015/forms/datalist/index.js → esm2020/forms/datalist/index.mjs} +0 -0
  306. package/esm2020/forms/datalist/providers/datalist-id.service.mjs +31 -0
  307. package/esm2020/forms/datepicker/calendar.mjs +118 -0
  308. package/esm2020/forms/datepicker/date-container.mjs +249 -0
  309. package/esm2020/forms/datepicker/date-input.mjs +290 -0
  310. package/esm2020/forms/datepicker/datepicker-view-manager.mjs +46 -0
  311. package/esm2020/forms/datepicker/datepicker.module.mjs +87 -0
  312. package/esm2020/forms/datepicker/day.mjs +86 -0
  313. package/esm2020/forms/datepicker/daypicker.mjs +80 -0
  314. package/{esm2015/forms/datepicker/index.js → esm2020/forms/datepicker/index.mjs} +0 -0
  315. package/{esm2015/forms/datepicker/interfaces/date-range.interface.js → esm2020/forms/datepicker/interfaces/date-range.interface.mjs} +0 -0
  316. package/{esm2015/forms/datepicker/interfaces/day-of-week.interface.js → esm2020/forms/datepicker/interfaces/day-of-week.interface.mjs} +0 -0
  317. package/{esm2015/forms/datepicker/model/calendar-view.model.js → esm2020/forms/datepicker/model/calendar-view.model.mjs} +0 -0
  318. package/{esm2015/forms/datepicker/model/calendar.model.js → esm2020/forms/datepicker/model/calendar.model.mjs} +0 -0
  319. package/{esm2015/forms/datepicker/model/day-view.model.js → esm2020/forms/datepicker/model/day-view.model.mjs} +0 -0
  320. package/{esm2015/forms/datepicker/model/day.model.js → esm2020/forms/datepicker/model/day.model.mjs} +0 -0
  321. package/{esm2015/forms/datepicker/model/year-range.model.js → esm2020/forms/datepicker/model/year-range.model.mjs} +0 -0
  322. package/esm2020/forms/datepicker/monthpicker.mjs +125 -0
  323. package/esm2020/forms/datepicker/providers/date-form-control.service.mjs +36 -0
  324. package/esm2020/forms/datepicker/providers/date-io.service.mjs +176 -0
  325. package/esm2020/forms/datepicker/providers/date-navigation.service.mjs +130 -0
  326. package/esm2020/forms/datepicker/providers/datepicker-enabled.service.mjs +46 -0
  327. package/esm2020/forms/datepicker/providers/datepicker-focus.service.mjs +47 -0
  328. package/esm2020/forms/datepicker/providers/locale-helper.service.mjs +101 -0
  329. package/esm2020/forms/datepicker/providers/view-manager.service.mjs +41 -0
  330. package/{esm2015/forms/datepicker/utils/constants.js → esm2020/forms/datepicker/utils/constants.mjs} +0 -0
  331. package/{esm2015/forms/datepicker/utils/date-utils.js → esm2020/forms/datepicker/utils/date-utils.mjs} +0 -0
  332. package/esm2020/forms/datepicker/yearpicker.mjs +231 -0
  333. package/esm2020/forms/forms.module.mjs +64 -0
  334. package/{esm2015/forms/index.js → esm2020/forms/index.mjs} +0 -0
  335. package/{esm2015/forms/input/index.js → esm2020/forms/input/index.mjs} +0 -0
  336. package/{esm2015/forms/input/input-container.js → esm2020/forms/input/input-container.mjs} +44 -13
  337. package/esm2020/forms/input/input.mjs +27 -0
  338. package/esm2020/forms/input/input.module.mjs +33 -0
  339. package/{esm2015/forms/password/index.js → esm2020/forms/password/index.mjs} +0 -0
  340. package/esm2020/forms/password/password-container.mjs +175 -0
  341. package/esm2020/forms/password/password.mjs +61 -0
  342. package/esm2020/forms/password/password.module.mjs +32 -0
  343. package/{esm2015/forms/radio/index.js → esm2020/forms/radio/index.mjs} +0 -0
  344. package/esm2020/forms/radio/radio-container.mjs +127 -0
  345. package/esm2020/forms/radio/radio-wrapper.mjs +49 -0
  346. package/esm2020/forms/radio/radio.mjs +26 -0
  347. package/esm2020/forms/radio/radio.module.mjs +33 -0
  348. package/{esm2015/forms/range/index.js → esm2020/forms/range/index.mjs} +0 -0
  349. package/esm2020/forms/range/range-container.mjs +124 -0
  350. package/esm2020/forms/range/range.mjs +26 -0
  351. package/esm2020/forms/range/range.module.mjs +32 -0
  352. package/{esm2015/forms/select/index.js → esm2020/forms/select/index.mjs} +0 -0
  353. package/esm2020/forms/select/select-container.mjs +113 -0
  354. package/esm2020/forms/select/select.mjs +27 -0
  355. package/esm2020/forms/select/select.module.mjs +32 -0
  356. package/{esm2015/forms/textarea/index.js → esm2020/forms/textarea/index.mjs} +0 -0
  357. package/esm2020/forms/textarea/textarea-container.mjs +83 -0
  358. package/esm2020/forms/textarea/textarea.mjs +27 -0
  359. package/esm2020/forms/textarea/textarea.module.mjs +32 -0
  360. package/esm2020/icon/icon.mjs +24 -0
  361. package/esm2020/icon/icon.module.mjs +20 -0
  362. package/{esm2015/icon/index.js → esm2020/icon/index.mjs} +0 -0
  363. package/{esm2015/index.js → esm2020/index.mjs} +0 -0
  364. package/{esm2015/layout/index.js → esm2020/layout/index.mjs} +0 -0
  365. package/esm2020/layout/layout.module.mjs +21 -0
  366. package/{esm2015/layout/main-container/index.js → esm2020/layout/main-container/index.mjs} +0 -0
  367. package/esm2020/layout/main-container/main-container.mjs +58 -0
  368. package/esm2020/layout/main-container/main-container.module.mjs +25 -0
  369. package/{esm2015/layout/nav/chocolate/index.js → esm2020/layout/nav/chocolate/index.mjs} +0 -0
  370. package/esm2020/layout/nav/chocolate/main-container-willy-wonka.mjs +17 -0
  371. package/esm2020/layout/nav/chocolate/nav-detection-oompa-loompa.mjs +33 -0
  372. package/esm2020/layout/nav/header.mjs +120 -0
  373. package/{esm2015/layout/nav/index.js → esm2020/layout/nav/index.mjs} +0 -0
  374. package/esm2020/layout/nav/nav-level.mjs +81 -0
  375. package/esm2020/layout/nav/navigation.module.mjs +40 -0
  376. package/{esm2015/layout/nav/providers/responsive-navigation.service.js → esm2020/layout/nav/providers/responsive-navigation.service.mjs} +7 -6
  377. package/{esm2015/layout/nav/responsive-nav-codes.js → esm2020/layout/nav/responsive-nav-codes.mjs} +0 -0
  378. package/{esm2015/layout/nav/responsive-nav-control-message.js → esm2020/layout/nav/responsive-nav-control-message.mjs} +0 -0
  379. package/esm2020/layout/tabs/chocolate/active-oompa-loompa.mjs +36 -0
  380. package/esm2020/layout/tabs/chocolate/tabs-willy-wonka.mjs +17 -0
  381. package/{esm2015/layout/tabs/enums/tabs-layout.enum.js → esm2020/layout/tabs/enums/tabs-layout.enum.mjs} +0 -0
  382. package/{esm2015/layout/tabs/index.js → esm2020/layout/tabs/index.mjs} +0 -0
  383. package/esm2020/layout/tabs/providers/tabs.service.mjs +45 -0
  384. package/esm2020/layout/tabs/tab-content.mjs +96 -0
  385. package/esm2020/layout/tabs/tab-link.directive.mjs +115 -0
  386. package/esm2020/layout/tabs/tab-overflow-content.mjs +22 -0
  387. package/esm2020/layout/tabs/tab.mjs +47 -0
  388. package/{esm2015/layout/tabs/tabs-id.provider.js → esm2020/layout/tabs/tabs-id.provider.mjs} +0 -0
  389. package/esm2020/layout/tabs/tabs.mjs +312 -0
  390. package/esm2020/layout/tabs/tabs.module.mjs +58 -0
  391. package/{esm2015/layout/vertical-nav/index.js → esm2020/layout/vertical-nav/index.mjs} +0 -0
  392. package/esm2020/layout/vertical-nav/providers/vertical-nav-group-registration.service.mjs +24 -0
  393. package/esm2020/layout/vertical-nav/providers/vertical-nav-group.service.mjs +25 -0
  394. package/esm2020/layout/vertical-nav/providers/vertical-nav-icon.service.mjs +27 -0
  395. package/esm2020/layout/vertical-nav/providers/vertical-nav.service.mjs +54 -0
  396. package/esm2020/layout/vertical-nav/vertical-nav-group-children.mjs +19 -0
  397. package/esm2020/layout/vertical-nav/vertical-nav-group.mjs +162 -0
  398. package/esm2020/layout/vertical-nav/vertical-nav-icon.mjs +24 -0
  399. package/esm2020/layout/vertical-nav/vertical-nav-link.mjs +44 -0
  400. package/esm2020/layout/vertical-nav/vertical-nav.mjs +79 -0
  401. package/esm2020/layout/vertical-nav/vertical-nav.module.mjs +49 -0
  402. package/{esm2015/modal/index.js → esm2020/modal/index.mjs} +0 -0
  403. package/esm2020/modal/modal-body.mjs +59 -0
  404. package/esm2020/modal/modal.mjs +145 -0
  405. package/esm2020/modal/modal.module.mjs +32 -0
  406. package/esm2020/popover/common/abstract-popover.mjs +123 -0
  407. package/{esm2015/popover/common/popover-host-anchor.token.js → esm2020/popover/common/popover-host-anchor.token.mjs} +0 -0
  408. package/{esm2015/popover/common/popover-options.interface.js → esm2020/popover/common/popover-options.interface.mjs} +0 -0
  409. package/{esm2015/popover/common/popover.js → esm2020/popover/common/popover.mjs} +0 -0
  410. package/esm2020/popover/dropdown/dropdown-item.mjs +88 -0
  411. package/esm2020/popover/dropdown/dropdown-menu.mjs +114 -0
  412. package/esm2020/popover/dropdown/dropdown-trigger.mjs +48 -0
  413. package/esm2020/popover/dropdown/dropdown.mjs +62 -0
  414. package/esm2020/popover/dropdown/dropdown.module.mjs +29 -0
  415. package/{esm2015/popover/dropdown/index.js → esm2020/popover/dropdown/index.mjs} +0 -0
  416. package/{esm2015/popover/dropdown/menu-positions.js → esm2020/popover/dropdown/menu-positions.mjs} +0 -0
  417. package/esm2020/popover/dropdown/providers/dropdown-focus-handler.service.mjs +186 -0
  418. package/esm2020/popover/dropdown/providers/dropdown.service.mjs +33 -0
  419. package/{esm2015/popover/index.js → esm2020/popover/index.mjs} +0 -0
  420. package/esm2020/popover/popover.module.mjs +20 -0
  421. package/{esm2015/popover/signpost/index.js → esm2020/popover/signpost/index.mjs} +0 -0
  422. package/esm2020/popover/signpost/providers/signpost-focus-manager.service.mjs +23 -0
  423. package/esm2020/popover/signpost/providers/signpost-id.service.mjs +26 -0
  424. package/esm2020/popover/signpost/signpost-content.mjs +177 -0
  425. package/{esm2015/popover/signpost/signpost-positions.js → esm2020/popover/signpost/signpost-positions.mjs} +0 -0
  426. package/esm2020/popover/signpost/signpost-trigger.mjs +96 -0
  427. package/esm2020/popover/signpost/signpost.mjs +89 -0
  428. package/esm2020/popover/signpost/signpost.module.mjs +33 -0
  429. package/{esm2015/popover/tooltip/index.js → esm2020/popover/tooltip/index.mjs} +0 -0
  430. package/esm2020/popover/tooltip/providers/tooltip-id.service.mjs +25 -0
  431. package/esm2020/popover/tooltip/tooltip-content.mjs +132 -0
  432. package/esm2020/popover/tooltip/tooltip-trigger.mjs +54 -0
  433. package/esm2020/popover/tooltip/tooltip.mjs +41 -0
  434. package/esm2020/popover/tooltip/tooltip.module.mjs +28 -0
  435. package/{esm2015/progress/progress-bars/index.js → esm2020/progress/progress-bars/index.mjs} +0 -0
  436. package/{esm2015/progress/progress-bars/progress-bar.js → esm2020/progress/progress-bars/progress-bar.mjs} +75 -30
  437. package/esm2020/progress/progress-bars/progress-bar.module.mjs +24 -0
  438. package/{esm2015/progress/spinner/index.js → esm2020/progress/spinner/index.mjs} +0 -0
  439. package/esm2020/progress/spinner/spinner.mjs +83 -0
  440. package/esm2020/progress/spinner/spinner.module.mjs +24 -0
  441. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  442. package/{esm2015/timeline/enums/timeline-layout.enum.js → esm2020/timeline/enums/timeline-layout.enum.mjs} +0 -0
  443. package/{esm2015/timeline/enums/timeline-step-state.enum.js → esm2020/timeline/enums/timeline-step-state.enum.mjs} +0 -0
  444. package/{esm2015/timeline/index.js → esm2020/timeline/index.mjs} +0 -0
  445. package/{esm2015/timeline/interface/icon-attribute.interface.js → esm2020/timeline/interface/icon-attribute.interface.mjs} +0 -0
  446. package/esm2020/timeline/providers/timeline-icon-attribute.service.mjs +54 -0
  447. package/esm2020/timeline/timeline-step-description.mjs +20 -0
  448. package/esm2020/timeline/timeline-step-header.mjs +20 -0
  449. package/esm2020/timeline/timeline-step-title.mjs +30 -0
  450. package/esm2020/timeline/timeline-step.mjs +101 -0
  451. package/esm2020/timeline/timeline.mjs +35 -0
  452. package/esm2020/timeline/timeline.module.mjs +48 -0
  453. package/esm2020/utils/a11y/aria-live.service.mjs +163 -0
  454. package/{esm2015/utils/a11y/index.js → esm2020/utils/a11y/index.mjs} +0 -0
  455. package/{esm2015/utils/animations/collapse/collapse.js → esm2020/utils/animations/collapse/collapse.mjs} +0 -0
  456. package/{esm2015/utils/animations/collapse/index.js → esm2020/utils/animations/collapse/index.mjs} +0 -0
  457. package/{esm2015/utils/animations/constants.js → esm2020/utils/animations/constants.mjs} +0 -0
  458. package/esm2020/utils/animations/expandable-animation/expandable-animation.mjs +70 -0
  459. package/esm2020/utils/animations/expandable-animation/expandable-animation.module.mjs +24 -0
  460. package/{esm2015/utils/animations/expandable-animation/index.js → esm2020/utils/animations/expandable-animation/index.mjs} +0 -0
  461. package/{esm2015/utils/animations/fade/fade.js → esm2020/utils/animations/fade/fade.mjs} +0 -0
  462. package/{esm2015/utils/animations/fade/index.js → esm2020/utils/animations/fade/index.mjs} +0 -0
  463. package/{esm2015/utils/animations/fade-slide/fade-slide.js → esm2020/utils/animations/fade-slide/fade-slide.mjs} +0 -0
  464. package/{esm2015/utils/animations/fade-slide/index.js → esm2020/utils/animations/fade-slide/index.mjs} +0 -0
  465. package/{esm2015/utils/animations/index.js → esm2020/utils/animations/index.mjs} +0 -0
  466. package/{esm2015/utils/animations/slide/index.js → esm2020/utils/animations/slide/index.mjs} +0 -0
  467. package/{esm2015/utils/animations/slide/slide.js → esm2020/utils/animations/slide/slide.mjs} +0 -0
  468. package/esm2020/utils/aria/aria.service.mjs +16 -0
  469. package/{esm2015/utils/breakpoints/breakpoints.js → esm2020/utils/breakpoints/breakpoints.mjs} +0 -0
  470. package/esm2020/utils/chocolate/oompa-loompa.mjs +32 -0
  471. package/esm2020/utils/chocolate/willy-wonka.mjs +36 -0
  472. package/{esm2015/utils/component/is-boolean-attribute-set.js → esm2020/utils/component/is-boolean-attribute-set.mjs} +0 -0
  473. package/esm2020/utils/conditional/conditional.module.mjs +22 -0
  474. package/esm2020/utils/conditional/if-active.directive.mjs +104 -0
  475. package/esm2020/utils/conditional/if-active.service.mjs +77 -0
  476. package/esm2020/utils/conditional/if-expanded.directive.mjs +92 -0
  477. package/esm2020/utils/conditional/if-expanded.service.mjs +58 -0
  478. package/esm2020/utils/conditional/if-open.directive.mjs +87 -0
  479. package/{esm2015/utils/conditional/index.js → esm2020/utils/conditional/index.mjs} +0 -0
  480. package/esm2020/utils/dom-adapter/dom-adapter.mjs +52 -0
  481. package/esm2020/utils/drag-and-drop/drag-and-drop.module.mjs +43 -0
  482. package/{esm2015/utils/drag-and-drop/drag-event.js → esm2020/utils/drag-and-drop/drag-event.mjs} +0 -0
  483. package/esm2020/utils/drag-and-drop/drag-handle.mjs +32 -0
  484. package/esm2020/utils/drag-and-drop/draggable/draggable.mjs +135 -0
  485. package/esm2020/utils/drag-and-drop/draggable-ghost.mjs +124 -0
  486. package/esm2020/utils/drag-and-drop/droppable/droppable.mjs +222 -0
  487. package/esm2020/utils/drag-and-drop/if-dragged.mjs +45 -0
  488. package/{esm2015/utils/drag-and-drop/index.js → esm2020/utils/drag-and-drop/index.mjs} +0 -0
  489. package/{esm2015/utils/drag-and-drop/interfaces/drag-event.interface.js → esm2020/utils/drag-and-drop/interfaces/drag-event.interface.mjs} +0 -0
  490. package/{esm2015/utils/drag-and-drop/interfaces/drop-tolerance.interface.js → esm2020/utils/drag-and-drop/interfaces/drop-tolerance.interface.mjs} +0 -0
  491. package/{esm2015/utils/drag-and-drop/providers/drag-and-drop-event-bus.service.js → esm2020/utils/drag-and-drop/providers/drag-and-drop-event-bus.service.mjs} +7 -5
  492. package/esm2020/utils/drag-and-drop/providers/drag-event-listener.service.mjs +179 -0
  493. package/esm2020/utils/drag-and-drop/providers/drag-handle-registrar.service.mjs +60 -0
  494. package/esm2020/utils/drag-and-drop/providers/draggable-snapshot.service.mjs +38 -0
  495. package/esm2020/utils/drag-and-drop/providers/global-drag-mode.service.mjs +26 -0
  496. package/{esm2015/utils/enums/key-codes.enum.js → esm2020/utils/enums/key-codes.enum.mjs} +0 -0
  497. package/{esm2015/utils/focus/arrow-key-direction.enum.js → esm2020/utils/focus/arrow-key-direction.enum.mjs} +0 -0
  498. package/esm2020/utils/focus/focus-on-view-init/focus-on-view-init.mjs +84 -0
  499. package/esm2020/utils/focus/focus-on-view-init/focus-on-view-init.module.mjs +26 -0
  500. package/{esm2015/utils/focus/focus-on-view-init/focus-on-view-init.provider.js → esm2020/utils/focus/focus-on-view-init/focus-on-view-init.provider.mjs} +0 -0
  501. package/{esm2015/utils/focus/focus-on-view-init/index.js → esm2020/utils/focus/focus-on-view-init/index.mjs} +0 -0
  502. package/esm2020/utils/focus/focus.service.mjs +94 -0
  503. package/esm2020/utils/focus/focusable-item/basic-focusable-item.service.mjs +58 -0
  504. package/{esm2015/utils/focus/focusable-item/custom-focusable-item-provider.js → esm2020/utils/focus/focusable-item/custom-focusable-item-provider.mjs} +0 -0
  505. package/{esm2015/utils/focus/focusable-item/focusable-item.js → esm2020/utils/focus/focusable-item/focusable-item.mjs} +0 -0
  506. package/{esm2015/utils/focus/focusable-item/linkers.js → esm2020/utils/focus/focusable-item/linkers.mjs} +0 -0
  507. package/{esm2015/utils/focus/key-focus/enums/focus-direction.enum.js → esm2020/utils/focus/key-focus/enums/focus-direction.enum.mjs} +0 -0
  508. package/{esm2015/utils/focus/key-focus/interfaces.js → esm2020/utils/focus/key-focus/interfaces.mjs} +0 -0
  509. package/esm2020/utils/focus/key-focus/key-focus-item.mjs +34 -0
  510. package/esm2020/utils/focus/key-focus/key-focus.mjs +194 -0
  511. package/esm2020/utils/focus/key-focus/key-focus.module.mjs +26 -0
  512. package/esm2020/utils/focus/key-focus/roving-tabindex.mjs +102 -0
  513. package/{esm2015/utils/focus/key-focus/util.js → esm2020/utils/focus/key-focus/util.mjs} +0 -0
  514. package/{esm2015/utils/focus/wrap-observable.js → esm2020/utils/focus/wrap-observable.mjs} +0 -0
  515. package/{esm2015/utils/focus-trap/focus-trap-config.interface.js → esm2020/utils/focus-trap/focus-trap-config.interface.mjs} +0 -0
  516. package/esm2020/utils/focus-trap/focus-trap-tracker.service.mjs +32 -0
  517. package/esm2020/utils/focus-trap/focus-trap.directive.mjs +156 -0
  518. package/esm2020/utils/focus-trap/focus-trap.module.mjs +24 -0
  519. package/{esm2015/utils/focus-trap/index.js → esm2020/utils/focus-trap/index.mjs} +0 -0
  520. package/{esm2015/utils/forms/validation.js → esm2020/utils/forms/validation.mjs} +0 -0
  521. package/{esm2015/utils/host-wrapping/dynamic-wrapper.js → esm2020/utils/host-wrapping/dynamic-wrapper.mjs} +0 -0
  522. package/esm2020/utils/host-wrapping/empty-anchor.mjs +18 -0
  523. package/{esm2015/utils/host-wrapping/host-wrapper.js → esm2020/utils/host-wrapping/host-wrapper.mjs} +0 -0
  524. package/esm2020/utils/host-wrapping/host-wrapping.module.mjs +21 -0
  525. package/{esm2015/utils/i18n/common-strings.default.js → esm2020/utils/i18n/common-strings.default.mjs} +6 -3
  526. package/{esm2015/utils/i18n/common-strings.interface.js → esm2020/utils/i18n/common-strings.interface.mjs} +1 -1
  527. package/esm2020/utils/i18n/common-strings.service.mjs +47 -0
  528. package/{esm2015/utils/i18n/index.js → esm2020/utils/i18n/index.mjs} +0 -0
  529. package/{esm2015/utils/id-generator/id-generator.service.js → esm2020/utils/id-generator/id-generator.service.mjs} +0 -0
  530. package/{esm2015/utils/index.js → esm2020/utils/index.mjs} +0 -0
  531. package/{esm2015/utils/key-codes/key-codes.js → esm2020/utils/key-codes/key-codes.mjs} +0 -0
  532. package/{esm2015/utils/loading/index.js → esm2020/utils/loading/index.mjs} +0 -0
  533. package/{esm2015/utils/loading/loading-listener.js → esm2020/utils/loading/loading-listener.mjs} +0 -0
  534. package/esm2020/utils/loading/loading.mjs +55 -0
  535. package/esm2020/utils/loading/loading.module.mjs +20 -0
  536. package/{esm2015/utils/outside-click/index.js → esm2020/utils/outside-click/index.mjs} +0 -0
  537. package/esm2020/utils/outside-click/outside-click.mjs +46 -0
  538. package/esm2020/utils/outside-click/outside-click.module.mjs +20 -0
  539. package/{esm2015/utils/popover/enums/alignment.enum.js → esm2020/utils/popover/enums/alignment.enum.mjs} +0 -0
  540. package/{esm2015/utils/popover/enums/axis.enum.js → esm2020/utils/popover/enums/axis.enum.mjs} +0 -0
  541. package/{esm2015/utils/popover/enums/positions.enum.js → esm2020/utils/popover/enums/positions.enum.mjs} +0 -0
  542. package/{esm2015/utils/popover/enums/side.enum.js → esm2020/utils/popover/enums/side.enum.mjs} +0 -0
  543. package/{esm2015/utils/popover/enums/viewport-violation.enum.js → esm2020/utils/popover/enums/viewport-violation.enum.mjs} +0 -0
  544. package/{esm2015/utils/popover/index.js → esm2020/utils/popover/index.mjs} +0 -0
  545. package/{esm2015/utils/popover/interfaces/popover-content-offset.interface.js → esm2020/utils/popover/interfaces/popover-content-offset.interface.mjs} +0 -0
  546. package/{esm2015/utils/popover/interfaces/popover-position.interface.js → esm2020/utils/popover/interfaces/popover-position.interface.mjs} +0 -0
  547. package/{esm2015/utils/popover/interfaces/visibility-coords.interface.js → esm2020/utils/popover/interfaces/visibility-coords.interface.mjs} +0 -0
  548. package/esm2020/utils/popover/popover-anchor.mjs +26 -0
  549. package/esm2020/utils/popover/popover-close-button.mjs +52 -0
  550. package/esm2020/utils/popover/popover-content.mjs +150 -0
  551. package/esm2020/utils/popover/popover-open-close-button.mjs +43 -0
  552. package/esm2020/utils/popover/popover.module.mjs +26 -0
  553. package/esm2020/utils/popover/position-operators.mjs +180 -0
  554. package/esm2020/utils/popover/providers/popover-events.service.mjs +160 -0
  555. package/esm2020/utils/popover/providers/popover-position.service.mjs +215 -0
  556. package/esm2020/utils/popover/providers/popover-toggle.service.mjs +70 -0
  557. package/esm2020/utils/scrolling/scrolling-service.mjs +30 -0
  558. package/{esm2015/utils/template-ref/index.js → esm2020/utils/template-ref/index.mjs} +0 -0
  559. package/esm2020/utils/template-ref/template-ref-container.mjs +29 -0
  560. package/esm2020/utils/template-ref/template-ref.module.mjs +25 -0
  561. package/{esm2015/wizard/index.js → esm2020/wizard/index.mjs} +0 -0
  562. package/esm2020/wizard/providers/button-hub.service.mjs +63 -0
  563. package/esm2020/wizard/providers/header-actions.service.mjs +37 -0
  564. package/esm2020/wizard/providers/page-collection.service.mjs +361 -0
  565. package/esm2020/wizard/providers/wizard-navigation.service.mjs +574 -0
  566. package/esm2020/wizard/wizard-button.mjs +187 -0
  567. package/esm2020/wizard/wizard-custom-tags.mjs +16 -0
  568. package/esm2020/wizard/wizard-header-action.mjs +76 -0
  569. package/esm2020/wizard/wizard-page-buttons.mjs +19 -0
  570. package/esm2020/wizard/wizard-page-header-actions.mjs +19 -0
  571. package/esm2020/wizard/wizard-page-navtitle.mjs +19 -0
  572. package/esm2020/wizard/wizard-page-title.mjs +19 -0
  573. package/{esm2015/wizard/wizard-page.js → esm2020/wizard/wizard-page.mjs} +90 -47
  574. package/esm2020/wizard/wizard-stepnav-item.mjs +128 -0
  575. package/esm2020/wizard/wizard-stepnav.mjs +48 -0
  576. package/esm2020/wizard/wizard.mjs +475 -0
  577. package/esm2020/wizard/wizard.module.mjs +72 -0
  578. package/fesm2015/clr-angular.mjs +26654 -0
  579. package/fesm2015/clr-angular.mjs.map +1 -0
  580. package/{fesm2015/clr-angular.js → fesm2020/clr-angular.mjs} +9876 -7404
  581. package/fesm2020/clr-angular.mjs.map +1 -0
  582. package/forms/checkbox/checkbox-container.d.ts +3 -0
  583. package/forms/checkbox/checkbox-wrapper.d.ts +3 -0
  584. package/forms/checkbox/checkbox.d.ts +3 -0
  585. package/forms/checkbox/checkbox.module.d.ts +11 -5
  586. package/forms/combobox/combobox-container.d.ts +3 -0
  587. package/forms/combobox/combobox.d.ts +3 -5
  588. package/forms/combobox/combobox.module.d.ts +18 -5
  589. package/forms/combobox/option-items.directive.d.ts +3 -0
  590. package/forms/combobox/option-selected.directive.d.ts +3 -0
  591. package/forms/combobox/option.d.ts +3 -0
  592. package/forms/combobox/options.d.ts +3 -0
  593. package/forms/combobox/providers/combobox-container.service.d.ts +3 -0
  594. package/forms/combobox/providers/combobox-focus-handler.service.d.ts +4 -1
  595. package/forms/combobox/providers/option-selection.service.d.ts +3 -0
  596. package/forms/common/abstract-container.d.ts +3 -0
  597. package/forms/common/abstract-control.d.ts +3 -5
  598. package/forms/common/common.module.d.ts +16 -5
  599. package/forms/common/control-container.d.ts +3 -5
  600. package/forms/common/control.d.ts +3 -0
  601. package/forms/common/error.d.ts +3 -5
  602. package/forms/common/form.d.ts +3 -0
  603. package/forms/common/helper.d.ts +3 -5
  604. package/forms/common/if-control-state/abstract-if-state.d.ts +3 -0
  605. package/forms/common/if-control-state/if-control-state.service.d.ts +3 -0
  606. package/forms/common/if-control-state/if-error.d.ts +3 -0
  607. package/forms/common/if-control-state/if-success.d.ts +3 -0
  608. package/forms/common/label.d.ts +3 -0
  609. package/forms/common/layout.d.ts +3 -0
  610. package/forms/common/providers/container-id.service.d.ts +3 -0
  611. package/forms/common/providers/control-class.service.d.ts +3 -0
  612. package/forms/common/providers/control-id.service.d.ts +3 -0
  613. package/forms/common/providers/focus.service.d.ts +3 -0
  614. package/forms/common/providers/layout.service.d.ts +3 -0
  615. package/forms/common/providers/mark-control.service.d.ts +3 -0
  616. package/forms/common/providers/ng-control.service.d.ts +3 -0
  617. package/forms/common/success.d.ts +3 -5
  618. package/forms/common/wrapped-control.d.ts +3 -0
  619. package/forms/datalist/datalist-container.d.ts +3 -5
  620. package/forms/datalist/datalist-input.d.ts +3 -0
  621. package/forms/datalist/datalist.d.ts +3 -0
  622. package/forms/datalist/datalist.module.d.ts +10 -0
  623. package/forms/datalist/providers/datalist-id.service.d.ts +3 -0
  624. package/forms/datepicker/calendar.d.ts +3 -0
  625. package/forms/datepicker/date-container.d.ts +3 -0
  626. package/forms/datepicker/date-input.d.ts +3 -0
  627. package/forms/datepicker/datepicker-view-manager.d.ts +3 -0
  628. package/forms/datepicker/datepicker.module.d.ts +19 -0
  629. package/forms/datepicker/day.d.ts +3 -0
  630. package/forms/datepicker/daypicker.d.ts +3 -0
  631. package/forms/datepicker/monthpicker.d.ts +3 -0
  632. package/forms/datepicker/providers/date-form-control.service.d.ts +3 -0
  633. package/forms/datepicker/providers/date-io.service.d.ts +3 -0
  634. package/forms/datepicker/providers/date-navigation.service.d.ts +3 -0
  635. package/forms/datepicker/providers/datepicker-enabled.service.d.ts +3 -0
  636. package/forms/datepicker/providers/datepicker-focus.service.d.ts +3 -0
  637. package/forms/datepicker/providers/locale-helper.service.d.ts +3 -0
  638. package/forms/datepicker/providers/view-manager.service.d.ts +3 -0
  639. package/forms/datepicker/yearpicker.d.ts +3 -0
  640. package/forms/forms.module.d.ts +16 -0
  641. package/forms/input/input-container.d.ts +3 -5
  642. package/forms/input/input.d.ts +3 -0
  643. package/forms/input/input.module.d.ts +10 -5
  644. package/forms/password/password-container.d.ts +3 -0
  645. package/forms/password/password.d.ts +3 -0
  646. package/forms/password/password.module.d.ts +10 -5
  647. package/forms/radio/radio-container.d.ts +3 -0
  648. package/forms/radio/radio-wrapper.d.ts +3 -0
  649. package/forms/radio/radio.d.ts +3 -0
  650. package/forms/radio/radio.module.d.ts +11 -5
  651. package/forms/range/range-container.d.ts +3 -0
  652. package/forms/range/range.d.ts +3 -0
  653. package/forms/range/range.module.d.ts +10 -5
  654. package/forms/select/select-container.d.ts +3 -5
  655. package/forms/select/select.d.ts +3 -0
  656. package/forms/select/select.module.d.ts +10 -5
  657. package/forms/textarea/textarea-container.d.ts +3 -5
  658. package/forms/textarea/textarea.d.ts +3 -0
  659. package/forms/textarea/textarea.module.d.ts +10 -5
  660. package/icon/icon.d.ts +5 -0
  661. package/icon/icon.module.d.ts +6 -0
  662. package/layout/layout.module.d.ts +8 -0
  663. package/layout/main-container/main-container.d.ts +3 -0
  664. package/layout/main-container/main-container.module.d.ts +7 -0
  665. package/layout/nav/chocolate/main-container-willy-wonka.d.ts +3 -0
  666. package/layout/nav/chocolate/nav-detection-oompa-loompa.d.ts +3 -0
  667. package/layout/nav/header.d.ts +3 -0
  668. package/layout/nav/nav-level.d.ts +3 -0
  669. package/layout/nav/navigation.module.d.ts +11 -0
  670. package/layout/nav/providers/responsive-navigation.service.d.ts +3 -0
  671. package/layout/tabs/chocolate/active-oompa-loompa.d.ts +3 -0
  672. package/layout/tabs/chocolate/tabs-willy-wonka.d.ts +3 -0
  673. package/layout/tabs/providers/tabs.service.d.ts +3 -0
  674. package/layout/tabs/tab-content.d.ts +3 -0
  675. package/layout/tabs/tab-link.directive.d.ts +3 -0
  676. package/layout/tabs/tab-overflow-content.d.ts +3 -0
  677. package/layout/tabs/tab.d.ts +3 -0
  678. package/layout/tabs/tabs.d.ts +3 -0
  679. package/layout/tabs/tabs.module.d.ts +16 -0
  680. package/layout/vertical-nav/providers/vertical-nav-group-registration.service.d.ts +3 -0
  681. package/layout/vertical-nav/providers/vertical-nav-group.service.d.ts +3 -0
  682. package/layout/vertical-nav/providers/vertical-nav-icon.service.d.ts +3 -0
  683. package/layout/vertical-nav/providers/vertical-nav.service.d.ts +3 -0
  684. package/layout/vertical-nav/vertical-nav-group-children.d.ts +3 -0
  685. package/layout/vertical-nav/vertical-nav-group.d.ts +3 -0
  686. package/layout/vertical-nav/vertical-nav-icon.d.ts +3 -0
  687. package/layout/vertical-nav/vertical-nav-link.d.ts +3 -0
  688. package/layout/vertical-nav/vertical-nav.d.ts +3 -0
  689. package/layout/vertical-nav/vertical-nav.module.d.ts +13 -0
  690. package/modal/modal-body.d.ts +3 -0
  691. package/modal/modal.d.ts +3 -0
  692. package/modal/modal.module.d.ts +10 -0
  693. package/package.json +24 -12
  694. package/popover/common/abstract-popover.d.ts +4 -6
  695. package/popover/dropdown/dropdown-item.d.ts +3 -0
  696. package/popover/dropdown/dropdown-menu.d.ts +3 -0
  697. package/popover/dropdown/dropdown-trigger.d.ts +3 -0
  698. package/popover/dropdown/dropdown.d.ts +3 -0
  699. package/popover/dropdown/dropdown.module.d.ts +11 -0
  700. package/popover/dropdown/providers/dropdown-focus-handler.service.d.ts +3 -0
  701. package/popover/dropdown/providers/dropdown.service.d.ts +3 -0
  702. package/popover/popover.module.d.ts +7 -0
  703. package/popover/signpost/providers/signpost-focus-manager.service.d.ts +3 -0
  704. package/popover/signpost/providers/signpost-id.service.d.ts +3 -0
  705. package/popover/signpost/signpost-content.d.ts +3 -0
  706. package/popover/signpost/signpost-trigger.d.ts +3 -0
  707. package/popover/signpost/signpost.d.ts +3 -0
  708. package/popover/signpost/signpost.module.d.ts +11 -0
  709. package/popover/tooltip/providers/tooltip-id.service.d.ts +3 -0
  710. package/popover/tooltip/tooltip-content.d.ts +3 -0
  711. package/popover/tooltip/tooltip-trigger.d.ts +3 -0
  712. package/popover/tooltip/tooltip.d.ts +3 -0
  713. package/popover/tooltip/tooltip.module.d.ts +10 -0
  714. package/progress/progress-bars/progress-bar.d.ts +3 -0
  715. package/progress/progress-bars/progress-bar.module.d.ts +6 -0
  716. package/progress/spinner/spinner.d.ts +3 -0
  717. package/progress/spinner/spinner.module.d.ts +6 -0
  718. package/schematics/add/index.js +9 -9
  719. package/schematics/add/index.js.map +1 -1
  720. package/schematics/add/index.spec.js +13 -13
  721. package/schematics/add/index.spec.js.map +1 -1
  722. package/schematics/add/schema.json +1 -1
  723. package/schematics/migration-collection.json +5 -0
  724. package/schematics/update/update-13.0.0.js +37 -0
  725. package/schematics/update/update-13.0.0.js.map +1 -0
  726. package/schematics/update/update-13.0.0.spec.js +71 -0
  727. package/schematics/update/update-13.0.0.spec.js.map +1 -0
  728. package/schematics/update/update-3.0.0.js +1 -1
  729. package/schematics/update/update-3.0.0.js.map +1 -1
  730. package/schematics/update/update-5.0.0.js +1 -1
  731. package/schematics/update/update-5.0.0.js.map +1 -1
  732. package/schematics/update/update-5.0.0.spec.js +4 -4
  733. package/schematics/update/update-5.0.0.spec.js.map +1 -1
  734. package/schematics/utility/add-module-import-to-module.js +2 -2
  735. package/schematics/utility/add-module-import-to-module.js.map +1 -1
  736. package/schematics/utility/find-app-module.js +2 -2
  737. package/schematics/utility/find-app-module.js.map +1 -1
  738. package/schematics/utility/update-json-file.js +1 -1
  739. package/schematics/utility/update-json-file.js.map +1 -1
  740. package/src/utils/popover/README.md +139 -0
  741. package/timeline/providers/timeline-icon-attribute.service.d.ts +3 -0
  742. package/timeline/timeline-step-description.d.ts +3 -0
  743. package/timeline/timeline-step-header.d.ts +3 -0
  744. package/timeline/timeline-step-title.d.ts +3 -0
  745. package/timeline/timeline-step.d.ts +3 -0
  746. package/timeline/timeline.d.ts +3 -0
  747. package/timeline/timeline.module.d.ts +12 -0
  748. package/utils/a11y/aria-live.service.d.ts +3 -0
  749. package/utils/animations/expandable-animation/expandable-animation.d.ts +3 -0
  750. package/utils/animations/expandable-animation/expandable-animation.module.d.ts +6 -0
  751. package/utils/aria/aria.service.d.ts +3 -0
  752. package/utils/chocolate/oompa-loompa.d.ts +3 -0
  753. package/utils/chocolate/willy-wonka.d.ts +3 -0
  754. package/utils/conditional/conditional.module.d.ts +8 -0
  755. package/utils/conditional/if-active.directive.d.ts +3 -0
  756. package/utils/conditional/if-active.service.d.ts +3 -0
  757. package/utils/conditional/if-expanded.directive.d.ts +3 -0
  758. package/utils/conditional/if-expanded.service.d.ts +3 -0
  759. package/utils/conditional/if-open.directive.d.ts +3 -0
  760. package/utils/dom-adapter/dom-adapter.d.ts +4 -1
  761. package/utils/drag-and-drop/drag-and-drop.module.d.ts +10 -0
  762. package/utils/drag-and-drop/drag-handle.d.ts +3 -0
  763. package/utils/drag-and-drop/draggable/draggable.d.ts +3 -0
  764. package/utils/drag-and-drop/draggable-ghost.d.ts +3 -0
  765. package/utils/drag-and-drop/droppable/droppable.d.ts +3 -0
  766. package/utils/drag-and-drop/if-dragged.d.ts +3 -0
  767. package/utils/drag-and-drop/providers/drag-and-drop-event-bus.service.d.ts +3 -0
  768. package/utils/drag-and-drop/providers/drag-event-listener.service.d.ts +3 -0
  769. package/utils/drag-and-drop/providers/drag-handle-registrar.service.d.ts +3 -0
  770. package/utils/drag-and-drop/providers/draggable-snapshot.service.d.ts +3 -0
  771. package/utils/drag-and-drop/providers/global-drag-mode.service.d.ts +3 -0
  772. package/utils/focus/focus-on-view-init/focus-on-view-init.d.ts +3 -0
  773. package/utils/focus/focus-on-view-init/focus-on-view-init.module.d.ts +6 -0
  774. package/utils/focus/focus.service.d.ts +3 -0
  775. package/utils/focus/focusable-item/basic-focusable-item.service.d.ts +3 -0
  776. package/utils/focus/key-focus/key-focus-item.d.ts +3 -0
  777. package/utils/focus/key-focus/key-focus.d.ts +3 -0
  778. package/utils/focus/key-focus/key-focus.module.d.ts +8 -0
  779. package/utils/focus/key-focus/roving-tabindex.d.ts +3 -0
  780. package/utils/focus-trap/focus-trap-tracker.service.d.ts +3 -0
  781. package/utils/focus-trap/focus-trap.directive.d.ts +3 -0
  782. package/utils/focus-trap/focus-trap.module.d.ts +6 -0
  783. package/utils/host-wrapping/empty-anchor.d.ts +3 -5
  784. package/utils/host-wrapping/host-wrapping.module.d.ts +5 -5
  785. package/utils/i18n/common-strings.interface.d.ts +8 -0
  786. package/utils/i18n/common-strings.service.d.ts +3 -0
  787. package/utils/loading/loading.d.ts +3 -0
  788. package/utils/loading/loading.module.d.ts +6 -0
  789. package/utils/outside-click/outside-click.d.ts +3 -0
  790. package/utils/outside-click/outside-click.module.d.ts +6 -0
  791. package/utils/popover/popover-anchor.d.ts +3 -0
  792. package/utils/popover/popover-close-button.d.ts +3 -0
  793. package/utils/popover/popover-content.d.ts +3 -0
  794. package/utils/popover/popover-open-close-button.d.ts +3 -0
  795. package/utils/popover/popover.module.d.ts +8 -0
  796. package/utils/popover/providers/popover-events.service.d.ts +3 -0
  797. package/utils/popover/providers/popover-position.service.d.ts +3 -0
  798. package/utils/popover/providers/popover-toggle.service.d.ts +3 -0
  799. package/utils/scrolling/scrolling-service.d.ts +3 -0
  800. package/utils/template-ref/template-ref-container.d.ts +3 -0
  801. package/utils/template-ref/template-ref.module.d.ts +6 -0
  802. package/wizard/providers/button-hub.service.d.ts +3 -0
  803. package/wizard/providers/header-actions.service.d.ts +3 -0
  804. package/wizard/providers/page-collection.service.d.ts +3 -0
  805. package/wizard/providers/wizard-navigation.service.d.ts +3 -0
  806. package/wizard/wizard-button.d.ts +3 -0
  807. package/wizard/wizard-custom-tags.d.ts +3 -0
  808. package/wizard/wizard-header-action.d.ts +3 -0
  809. package/wizard/wizard-page-buttons.d.ts +3 -0
  810. package/wizard/wizard-page-header-actions.d.ts +3 -0
  811. package/wizard/wizard-page-navtitle.d.ts +3 -0
  812. package/wizard/wizard-page-title.d.ts +3 -0
  813. package/wizard/wizard-page.d.ts +3 -0
  814. package/wizard/wizard-stepnav-item.d.ts +6 -1
  815. package/wizard/wizard-stepnav.d.ts +3 -0
  816. package/wizard/wizard.d.ts +3 -0
  817. package/wizard/wizard.module.d.ts +18 -0
  818. package/bundles/clr-angular.umd.js +0 -26123
  819. package/bundles/clr-angular.umd.js.map +0 -1
  820. package/clr-angular.metadata.json +0 -1
  821. package/esm2015/accordion/accordion-content.js +0 -16
  822. package/esm2015/accordion/accordion-description.js +0 -17
  823. package/esm2015/accordion/accordion-panel.js +0 -105
  824. package/esm2015/accordion/accordion-title.js +0 -17
  825. package/esm2015/accordion/accordion.js +0 -57
  826. package/esm2015/accordion/accordion.module.js +0 -39
  827. package/esm2015/accordion/chocolate/accordion-oompa-loompa.js +0 -30
  828. package/esm2015/accordion/chocolate/accordion-willy-wonka.js +0 -13
  829. package/esm2015/accordion/providers/accordion.service.js +0 -44
  830. package/esm2015/accordion/stepper/chocolate/stepper-oompa-loompa.js +0 -30
  831. package/esm2015/accordion/stepper/chocolate/stepper-willy-wonka.js +0 -13
  832. package/esm2015/accordion/stepper/providers/stepper.service.js +0 -52
  833. package/esm2015/accordion/stepper/step-button.js +0 -47
  834. package/esm2015/accordion/stepper/stepper-panel.js +0 -88
  835. package/esm2015/accordion/stepper/stepper.js +0 -87
  836. package/esm2015/accordion/stepper/stepper.module.js +0 -25
  837. package/esm2015/button/button-group/button-group.js +0 -129
  838. package/esm2015/button/button-group/button-group.module.js +0 -22
  839. package/esm2015/button/button-loading/loading-button.js +0 -109
  840. package/esm2015/button/button-loading/loading-button.module.js +0 -19
  841. package/esm2015/button/button.module.js +0 -21
  842. package/esm2015/button/providers/button-in-group.service.js +0 -22
  843. package/esm2015/clr-angular.js +0 -108
  844. package/esm2015/clr-angular.module.js +0 -55
  845. package/esm2015/data/data.module.js +0 -15
  846. package/esm2015/data/datagrid/built-in/filters/datagrid-numeric-filter.js +0 -169
  847. package/esm2015/data/datagrid/built-in/filters/datagrid-string-filter.js +0 -111
  848. package/esm2015/data/datagrid/chocolate/actionable-oompa-loompa.js +0 -30
  849. package/esm2015/data/datagrid/chocolate/datagrid-willy-wonka.js +0 -13
  850. package/esm2015/data/datagrid/chocolate/expandable-oompa-loompa.js +0 -30
  851. package/esm2015/data/datagrid/datagrid-action-bar.js +0 -16
  852. package/esm2015/data/datagrid/datagrid-action-overflow.js +0 -123
  853. package/esm2015/data/datagrid/datagrid-cell.js +0 -38
  854. package/esm2015/data/datagrid/datagrid-column-separator.js +0 -151
  855. package/esm2015/data/datagrid/datagrid-column-toggle-button.js +0 -53
  856. package/esm2015/data/datagrid/datagrid-column-toggle-title.js +0 -16
  857. package/esm2015/data/datagrid/datagrid-column-toggle.js +0 -149
  858. package/esm2015/data/datagrid/datagrid-column.js +0 -374
  859. package/esm2015/data/datagrid/datagrid-detail-body.js +0 -22
  860. package/esm2015/data/datagrid/datagrid-detail-header.js +0 -45
  861. package/esm2015/data/datagrid/datagrid-detail-registerer.js +0 -31
  862. package/esm2015/data/datagrid/datagrid-detail.js +0 -52
  863. package/esm2015/data/datagrid/datagrid-filter.js +0 -131
  864. package/esm2015/data/datagrid/datagrid-footer.js +0 -58
  865. package/esm2015/data/datagrid/datagrid-hideable-column.js +0 -97
  866. package/esm2015/data/datagrid/datagrid-if-detail.js +0 -62
  867. package/esm2015/data/datagrid/datagrid-if-expanded.service.js +0 -52
  868. package/esm2015/data/datagrid/datagrid-items-trackby.js +0 -29
  869. package/esm2015/data/datagrid/datagrid-items.js +0 -63
  870. package/esm2015/data/datagrid/datagrid-page-size.js +0 -37
  871. package/esm2015/data/datagrid/datagrid-pagination.js +0 -258
  872. package/esm2015/data/datagrid/datagrid-placeholder.js +0 -34
  873. package/esm2015/data/datagrid/datagrid-row-detail.js +0 -81
  874. package/esm2015/data/datagrid/datagrid-row.js +0 -218
  875. package/esm2015/data/datagrid/datagrid.js +0 -295
  876. package/esm2015/data/datagrid/datagrid.module.js +0 -127
  877. package/esm2015/data/datagrid/enums/column-changes.enum.js +0 -16
  878. package/esm2015/data/datagrid/providers/column-resizer.service.js +0 -59
  879. package/esm2015/data/datagrid/providers/columns.service.js +0 -50
  880. package/esm2015/data/datagrid/providers/detail.service.js +0 -58
  881. package/esm2015/data/datagrid/providers/display-mode.service.js +0 -35
  882. package/esm2015/data/datagrid/providers/filters.js +0 -112
  883. package/esm2015/data/datagrid/providers/global-expandable-rows.js +0 -33
  884. package/esm2015/data/datagrid/providers/items.js +0 -175
  885. package/esm2015/data/datagrid/providers/page.js +0 -155
  886. package/esm2015/data/datagrid/providers/row-action-service.js +0 -27
  887. package/esm2015/data/datagrid/providers/selection.js +0 -376
  888. package/esm2015/data/datagrid/providers/sort.js +0 -85
  889. package/esm2015/data/datagrid/providers/state-debouncer.provider.js +0 -39
  890. package/esm2015/data/datagrid/providers/state.provider.js +0 -77
  891. package/esm2015/data/datagrid/providers/table-size.service.js +0 -41
  892. package/esm2015/data/datagrid/render/cell-renderer.js +0 -82
  893. package/esm2015/data/datagrid/render/header-renderer.js +0 -133
  894. package/esm2015/data/datagrid/render/main-renderer.js +0 -199
  895. package/esm2015/data/datagrid/render/noop-dom-adapter.js +0 -51
  896. package/esm2015/data/datagrid/render/render-organizer.js +0 -35
  897. package/esm2015/data/datagrid/render/row-renderer.js +0 -57
  898. package/esm2015/data/datagrid/utils/datagrid-filter-registrar.js +0 -41
  899. package/esm2015/data/datagrid/wrapped-cell.js +0 -31
  900. package/esm2015/data/datagrid/wrapped-column.js +0 -32
  901. package/esm2015/data/datagrid/wrapped-row.js +0 -32
  902. package/esm2015/data/stack-view/stack-block.js +0 -146
  903. package/esm2015/data/stack-view/stack-content-input.js +0 -25
  904. package/esm2015/data/stack-view/stack-header.js +0 -45
  905. package/esm2015/data/stack-view/stack-select.js +0 -38
  906. package/esm2015/data/stack-view/stack-view-custom-tags.js +0 -12
  907. package/esm2015/data/stack-view/stack-view.js +0 -50
  908. package/esm2015/data/stack-view/stack-view.module.js +0 -47
  909. package/esm2015/data/tree-view/recursive-children.js +0 -70
  910. package/esm2015/data/tree-view/recursive-for-of.js +0 -53
  911. package/esm2015/data/tree-view/tree-features.service.js +0 -34
  912. package/esm2015/data/tree-view/tree-focus-manager.service.js +0 -118
  913. package/esm2015/data/tree-view/tree-node-link.js +0 -25
  914. package/esm2015/data/tree-view/tree-node.js +0 -252
  915. package/esm2015/data/tree-view/tree-view.module.js +0 -30
  916. package/esm2015/data/tree-view/tree.js +0 -78
  917. package/esm2015/emphasis/alert/alert-item.js +0 -32
  918. package/esm2015/emphasis/alert/alert-text.js +0 -18
  919. package/esm2015/emphasis/alert/alert.js +0 -96
  920. package/esm2015/emphasis/alert/alert.module.js +0 -30
  921. package/esm2015/emphasis/alert/alerts-pager.js +0 -69
  922. package/esm2015/emphasis/alert/alerts.js +0 -94
  923. package/esm2015/emphasis/alert/providers/icon-and-types.service.js +0 -74
  924. package/esm2015/emphasis/alert/providers/multi-alert.service.js +0 -76
  925. package/esm2015/emphasis/emphasis.module.js +0 -13
  926. package/esm2015/forms/checkbox/checkbox-container.js +0 -95
  927. package/esm2015/forms/checkbox/checkbox-wrapper.js +0 -57
  928. package/esm2015/forms/checkbox/checkbox.js +0 -40
  929. package/esm2015/forms/checkbox/checkbox.module.js +0 -29
  930. package/esm2015/forms/combobox/combobox-container.js +0 -79
  931. package/esm2015/forms/combobox/combobox.js +0 -329
  932. package/esm2015/forms/combobox/combobox.module.js +0 -53
  933. package/esm2015/forms/combobox/option-items.directive.js +0 -96
  934. package/esm2015/forms/combobox/option-selected.directive.js +0 -21
  935. package/esm2015/forms/combobox/option.js +0 -91
  936. package/esm2015/forms/combobox/options.js +0 -125
  937. package/esm2015/forms/combobox/providers/combobox-container.service.js +0 -15
  938. package/esm2015/forms/combobox/providers/combobox-focus-handler.service.js +0 -213
  939. package/esm2015/forms/combobox/providers/option-selection.service.js +0 -78
  940. package/esm2015/forms/common/abstract-container.js +0 -113
  941. package/esm2015/forms/common/abstract-control.js +0 -47
  942. package/esm2015/forms/common/common.module.js +0 -56
  943. package/esm2015/forms/common/control-container.js +0 -51
  944. package/esm2015/forms/common/control.js +0 -26
  945. package/esm2015/forms/common/error.js +0 -32
  946. package/esm2015/forms/common/form.js +0 -47
  947. package/esm2015/forms/common/helper.js +0 -32
  948. package/esm2015/forms/common/if-control-state/abstract-if-state.js +0 -41
  949. package/esm2015/forms/common/if-control-state/if-control-state.service.js +0 -56
  950. package/esm2015/forms/common/if-control-state/if-error.js +0 -65
  951. package/esm2015/forms/common/if-control-state/if-success.js +0 -42
  952. package/esm2015/forms/common/label.js +0 -61
  953. package/esm2015/forms/common/layout.js +0 -30
  954. package/esm2015/forms/common/providers/container-id.service.js +0 -30
  955. package/esm2015/forms/common/providers/control-class.service.js +0 -50
  956. package/esm2015/forms/common/providers/control-id.service.js +0 -28
  957. package/esm2015/forms/common/providers/focus.service.js +0 -22
  958. package/esm2015/forms/common/providers/layout.service.js +0 -54
  959. package/esm2015/forms/common/providers/mark-control.service.js +0 -22
  960. package/esm2015/forms/common/providers/ng-control.service.js +0 -30
  961. package/esm2015/forms/common/success.js +0 -32
  962. package/esm2015/forms/common/wrapped-control.js +0 -158
  963. package/esm2015/forms/datalist/datalist-container.js +0 -79
  964. package/esm2015/forms/datalist/datalist-input.js +0 -59
  965. package/esm2015/forms/datalist/datalist.js +0 -46
  966. package/esm2015/forms/datalist/datalist.module.js +0 -27
  967. package/esm2015/forms/datalist/providers/datalist-id.service.js +0 -28
  968. package/esm2015/forms/datepicker/calendar.js +0 -119
  969. package/esm2015/forms/datepicker/date-container.js +0 -179
  970. package/esm2015/forms/datepicker/date-input.js +0 -256
  971. package/esm2015/forms/datepicker/datepicker-view-manager.js +0 -46
  972. package/esm2015/forms/datepicker/datepicker.module.js +0 -55
  973. package/esm2015/forms/datepicker/day.js +0 -72
  974. package/esm2015/forms/datepicker/daypicker.js +0 -84
  975. package/esm2015/forms/datepicker/monthpicker.js +0 -116
  976. package/esm2015/forms/datepicker/providers/date-form-control.service.js +0 -33
  977. package/esm2015/forms/datepicker/providers/date-io.service.js +0 -176
  978. package/esm2015/forms/datepicker/providers/date-navigation.service.js +0 -127
  979. package/esm2015/forms/datepicker/providers/datepicker-enabled.service.js +0 -43
  980. package/esm2015/forms/datepicker/providers/datepicker-focus.service.js +0 -45
  981. package/esm2015/forms/datepicker/providers/locale-helper.service.js +0 -98
  982. package/esm2015/forms/datepicker/providers/view-manager.service.js +0 -38
  983. package/esm2015/forms/datepicker/yearpicker.js +0 -193
  984. package/esm2015/forms/forms.module.js +0 -39
  985. package/esm2015/forms/input/input.js +0 -26
  986. package/esm2015/forms/input/input.module.js +0 -29
  987. package/esm2015/forms/password/password-container.js +0 -120
  988. package/esm2015/forms/password/password.js +0 -53
  989. package/esm2015/forms/password/password.module.js +0 -28
  990. package/esm2015/forms/radio/radio-container.js +0 -95
  991. package/esm2015/forms/radio/radio-wrapper.js +0 -39
  992. package/esm2015/forms/radio/radio.js +0 -25
  993. package/esm2015/forms/radio/radio.module.js +0 -29
  994. package/esm2015/forms/range/range-container.js +0 -93
  995. package/esm2015/forms/range/range.js +0 -25
  996. package/esm2015/forms/range/range.module.js +0 -28
  997. package/esm2015/forms/select/select-container.js +0 -82
  998. package/esm2015/forms/select/select.js +0 -26
  999. package/esm2015/forms/select/select.module.js +0 -28
  1000. package/esm2015/forms/textarea/textarea-container.js +0 -51
  1001. package/esm2015/forms/textarea/textarea.js +0 -26
  1002. package/esm2015/forms/textarea/textarea.module.js +0 -28
  1003. package/esm2015/icon/icon.js +0 -17
  1004. package/esm2015/icon/icon.module.js +0 -15
  1005. package/esm2015/layout/layout.module.js +0 -16
  1006. package/esm2015/layout/main-container/main-container.js +0 -58
  1007. package/esm2015/layout/main-container/main-container.module.js +0 -20
  1008. package/esm2015/layout/nav/chocolate/main-container-willy-wonka.js +0 -13
  1009. package/esm2015/layout/nav/chocolate/nav-detection-oompa-loompa.js +0 -32
  1010. package/esm2015/layout/nav/header.js +0 -94
  1011. package/esm2015/layout/nav/nav-level.js +0 -79
  1012. package/esm2015/layout/nav/navigation.module.js +0 -29
  1013. package/esm2015/layout/tabs/chocolate/active-oompa-loompa.js +0 -32
  1014. package/esm2015/layout/tabs/chocolate/tabs-willy-wonka.js +0 -13
  1015. package/esm2015/layout/tabs/providers/tabs.service.js +0 -42
  1016. package/esm2015/layout/tabs/tab-content.js +0 -77
  1017. package/esm2015/layout/tabs/tab-link.directive.js +0 -93
  1018. package/esm2015/layout/tabs/tab-overflow-content.js +0 -18
  1019. package/esm2015/layout/tabs/tab.js +0 -42
  1020. package/esm2015/layout/tabs/tabs.js +0 -235
  1021. package/esm2015/layout/tabs/tabs.module.js +0 -42
  1022. package/esm2015/layout/vertical-nav/providers/vertical-nav-group-registration.service.js +0 -21
  1023. package/esm2015/layout/vertical-nav/providers/vertical-nav-group.service.js +0 -22
  1024. package/esm2015/layout/vertical-nav/providers/vertical-nav-icon.service.js +0 -24
  1025. package/esm2015/layout/vertical-nav/providers/vertical-nav.service.js +0 -51
  1026. package/esm2015/layout/vertical-nav/vertical-nav-group-children.js +0 -15
  1027. package/esm2015/layout/vertical-nav/vertical-nav-group.js +0 -158
  1028. package/esm2015/layout/vertical-nav/vertical-nav-icon.js +0 -23
  1029. package/esm2015/layout/vertical-nav/vertical-nav-link.js +0 -36
  1030. package/esm2015/layout/vertical-nav/vertical-nav.js +0 -77
  1031. package/esm2015/layout/vertical-nav/vertical-nav.module.js +0 -37
  1032. package/esm2015/modal/modal-body.js +0 -60
  1033. package/esm2015/modal/modal.js +0 -111
  1034. package/esm2015/modal/modal.module.js +0 -28
  1035. package/esm2015/popover/common/abstract-popover.js +0 -142
  1036. package/esm2015/popover/dropdown/dropdown-item.js +0 -87
  1037. package/esm2015/popover/dropdown/dropdown-menu.js +0 -105
  1038. package/esm2015/popover/dropdown/dropdown-trigger.js +0 -50
  1039. package/esm2015/popover/dropdown/dropdown.js +0 -52
  1040. package/esm2015/popover/dropdown/dropdown.module.js +0 -24
  1041. package/esm2015/popover/dropdown/providers/dropdown-focus-handler.service.js +0 -181
  1042. package/esm2015/popover/dropdown/providers/dropdown.service.js +0 -30
  1043. package/esm2015/popover/popover.module.js +0 -15
  1044. package/esm2015/popover/signpost/providers/signpost-focus-manager.service.js +0 -20
  1045. package/esm2015/popover/signpost/providers/signpost-id.service.js +0 -23
  1046. package/esm2015/popover/signpost/signpost-content.js +0 -150
  1047. package/esm2015/popover/signpost/signpost-trigger.js +0 -95
  1048. package/esm2015/popover/signpost/signpost.js +0 -72
  1049. package/esm2015/popover/signpost/signpost.module.js +0 -29
  1050. package/esm2015/popover/tooltip/providers/tooltip-id.service.js +0 -22
  1051. package/esm2015/popover/tooltip/tooltip-content.js +0 -123
  1052. package/esm2015/popover/tooltip/tooltip-trigger.js +0 -46
  1053. package/esm2015/popover/tooltip/tooltip.js +0 -30
  1054. package/esm2015/popover/tooltip/tooltip.module.js +0 -23
  1055. package/esm2015/progress/progress-bars/progress-bar.module.js +0 -19
  1056. package/esm2015/progress/spinner/spinner.js +0 -63
  1057. package/esm2015/progress/spinner/spinner.module.js +0 -19
  1058. package/esm2015/timeline/providers/timeline-icon-attribute.service.js +0 -54
  1059. package/esm2015/timeline/timeline-step-description.js +0 -16
  1060. package/esm2015/timeline/timeline-step-header.js +0 -16
  1061. package/esm2015/timeline/timeline-step-title.js +0 -26
  1062. package/esm2015/timeline/timeline-step.js +0 -73
  1063. package/esm2015/timeline/timeline.js +0 -29
  1064. package/esm2015/timeline/timeline.module.js +0 -36
  1065. package/esm2015/utils/a11y/aria-live.service.js +0 -161
  1066. package/esm2015/utils/animations/expandable-animation/expandable-animation.js +0 -57
  1067. package/esm2015/utils/animations/expandable-animation/expandable-animation.module.js +0 -18
  1068. package/esm2015/utils/aria/aria.service.js +0 -13
  1069. package/esm2015/utils/chocolate/oompa-loompa.js +0 -33
  1070. package/esm2015/utils/chocolate/willy-wonka.js +0 -33
  1071. package/esm2015/utils/conditional/conditional.module.js +0 -17
  1072. package/esm2015/utils/conditional/if-active.directive.js +0 -100
  1073. package/esm2015/utils/conditional/if-active.service.js +0 -74
  1074. package/esm2015/utils/conditional/if-expanded.directive.js +0 -91
  1075. package/esm2015/utils/conditional/if-expanded.service.js +0 -55
  1076. package/esm2015/utils/conditional/if-open.directive.js +0 -86
  1077. package/esm2015/utils/dom-adapter/dom-adapter.js +0 -49
  1078. package/esm2015/utils/drag-and-drop/drag-and-drop.module.js +0 -30
  1079. package/esm2015/utils/drag-and-drop/drag-handle.js +0 -30
  1080. package/esm2015/utils/drag-and-drop/draggable/draggable.js +0 -119
  1081. package/esm2015/utils/drag-and-drop/draggable-ghost.js +0 -116
  1082. package/esm2015/utils/drag-and-drop/droppable/droppable.js +0 -209
  1083. package/esm2015/utils/drag-and-drop/if-dragged.js +0 -40
  1084. package/esm2015/utils/drag-and-drop/providers/drag-event-listener.service.js +0 -181
  1085. package/esm2015/utils/drag-and-drop/providers/drag-handle-registrar.service.js +0 -61
  1086. package/esm2015/utils/drag-and-drop/providers/draggable-snapshot.service.js +0 -38
  1087. package/esm2015/utils/drag-and-drop/providers/global-drag-mode.service.js +0 -26
  1088. package/esm2015/utils/focus/focus-on-view-init/focus-on-view-init.js +0 -76
  1089. package/esm2015/utils/focus/focus-on-view-init/focus-on-view-init.module.js +0 -21
  1090. package/esm2015/utils/focus/focus.service.js +0 -94
  1091. package/esm2015/utils/focus/focusable-item/basic-focusable-item.service.js +0 -55
  1092. package/esm2015/utils/focus/key-focus/key-focus-item.js +0 -31
  1093. package/esm2015/utils/focus/key-focus/key-focus.js +0 -181
  1094. package/esm2015/utils/focus/key-focus/key-focus.module.js +0 -21
  1095. package/esm2015/utils/focus/key-focus/roving-tabindex.js +0 -100
  1096. package/esm2015/utils/focus-trap/focus-trap-tracker.service.js +0 -30
  1097. package/esm2015/utils/focus-trap/focus-trap.directive.js +0 -154
  1098. package/esm2015/utils/focus-trap/focus-trap.module.js +0 -19
  1099. package/esm2015/utils/host-wrapping/empty-anchor.js +0 -14
  1100. package/esm2015/utils/host-wrapping/host-wrapping.module.js +0 -16
  1101. package/esm2015/utils/i18n/common-strings.service.js +0 -45
  1102. package/esm2015/utils/loading/loading.js +0 -52
  1103. package/esm2015/utils/loading/loading.module.js +0 -15
  1104. package/esm2015/utils/outside-click/outside-click.js +0 -45
  1105. package/esm2015/utils/outside-click/outside-click.module.js +0 -14
  1106. package/esm2015/utils/popover/popover-anchor.js +0 -26
  1107. package/esm2015/utils/popover/popover-close-button.js +0 -51
  1108. package/esm2015/utils/popover/popover-content.js +0 -146
  1109. package/esm2015/utils/popover/popover-open-close-button.js +0 -40
  1110. package/esm2015/utils/popover/popover.module.js +0 -21
  1111. package/esm2015/utils/popover/position-operators.js +0 -171
  1112. package/esm2015/utils/popover/providers/popover-events.service.js +0 -159
  1113. package/esm2015/utils/popover/providers/popover-position.service.js +0 -213
  1114. package/esm2015/utils/popover/providers/popover-toggle.service.js +0 -67
  1115. package/esm2015/utils/scrolling/scrolling-service.js +0 -27
  1116. package/esm2015/utils/template-ref/template-ref-container.js +0 -21
  1117. package/esm2015/utils/template-ref/template-ref.module.js +0 -19
  1118. package/esm2015/wizard/providers/button-hub.service.js +0 -60
  1119. package/esm2015/wizard/providers/header-actions.service.js +0 -37
  1120. package/esm2015/wizard/providers/page-collection.service.js +0 -358
  1121. package/esm2015/wizard/providers/wizard-navigation.service.js +0 -575
  1122. package/esm2015/wizard/wizard-button.js +0 -163
  1123. package/esm2015/wizard/wizard-custom-tags.js +0 -12
  1124. package/esm2015/wizard/wizard-header-action.js +0 -55
  1125. package/esm2015/wizard/wizard-page-buttons.js +0 -18
  1126. package/esm2015/wizard/wizard-page-header-actions.js +0 -18
  1127. package/esm2015/wizard/wizard-page-navtitle.js +0 -18
  1128. package/esm2015/wizard/wizard-page-title.js +0 -18
  1129. package/esm2015/wizard/wizard-stepnav-item.js +0 -100
  1130. package/esm2015/wizard/wizard-stepnav.js +0 -34
  1131. package/esm2015/wizard/wizard.js +0 -438
  1132. package/esm2015/wizard/wizard.module.js +0 -48
  1133. package/fesm2015/clr-angular.js.map +0 -1
@@ -0,0 +1,32 @@
1
+ /*
2
+ * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.
3
+ * This software is released under MIT license.
4
+ * The full license information can be found in LICENSE in the root directory of this project.
5
+ */
6
+ import { Directive, Optional } from '@angular/core';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "./providers/drag-handle-registrar.service";
9
+ export class ClrDragHandle {
10
+ constructor(el, dragHandleRegistrar) {
11
+ this.el = el;
12
+ this.dragHandleRegistrar = dragHandleRegistrar;
13
+ if (!this.dragHandleRegistrar) {
14
+ // ClrDragHandleRegistrar is provided in ClrDraggable so we expect it to be present here
15
+ // as clrDragHandle is required to be used only inside of a clrDraggable directive.
16
+ throw new Error('The clrDragHandle directive can only be used inside of a clrDraggable directive.');
17
+ }
18
+ this.dragHandleRegistrar.registerCustomHandle(this.el.nativeElement);
19
+ }
20
+ ngOnDestroy() {
21
+ this.dragHandleRegistrar.unregisterCustomHandle();
22
+ }
23
+ }
24
+ ClrDragHandle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ClrDragHandle, deps: [{ token: i0.ElementRef }, { token: i1.DragHandleRegistrarService, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
25
+ ClrDragHandle.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: ClrDragHandle, selector: "[clrDragHandle]", host: { properties: { "class.drag-handle": "true" } }, ngImport: i0 });
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ClrDragHandle, decorators: [{
27
+ type: Directive,
28
+ args: [{ selector: '[clrDragHandle]', host: { '[class.drag-handle]': 'true' } }]
29
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.DragHandleRegistrarService, decorators: [{
30
+ type: Optional
31
+ }] }]; } });
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1oYW5kbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy91dGlscy9kcmFnLWFuZC1kcm9wL2RyYWctaGFuZGxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUF5QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUkzRSxNQUFNLE9BQU8sYUFBYTtJQUN4QixZQUFvQixFQUFjLEVBQXNCLG1CQUFrRDtRQUF0RixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQXNCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBK0I7UUFDeEcsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtZQUM3Qix3RkFBd0Y7WUFDeEYsbUZBQW1GO1lBQ25GLE1BQU0sSUFBSSxLQUFLLENBQUMsa0ZBQWtGLENBQUMsQ0FBQztTQUNyRztRQUNELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDcEQsQ0FBQzs7MEdBWlUsYUFBYTs4RkFBYixhQUFhOzJGQUFiLGFBQWE7a0JBRHpCLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxFQUFFLEVBQUU7OzBCQUU1QyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxNi0yMDIxIFZNd2FyZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZS5cbiAqIFRoZSBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIExJQ0VOU0UgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvamVjdC5cbiAqL1xuXG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERyYWdIYW5kbGVSZWdpc3RyYXJTZXJ2aWNlIH0gZnJvbSAnLi9wcm92aWRlcnMvZHJhZy1oYW5kbGUtcmVnaXN0cmFyLnNlcnZpY2UnO1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbY2xyRHJhZ0hhbmRsZV0nLCBob3N0OiB7ICdbY2xhc3MuZHJhZy1oYW5kbGVdJzogJ3RydWUnIH0gfSlcbmV4cG9ydCBjbGFzcyBDbHJEcmFnSGFuZGxlPFQ+IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZiwgQE9wdGlvbmFsKCkgcHJpdmF0ZSBkcmFnSGFuZGxlUmVnaXN0cmFyOiBEcmFnSGFuZGxlUmVnaXN0cmFyU2VydmljZTxUPikge1xuICAgIGlmICghdGhpcy5kcmFnSGFuZGxlUmVnaXN0cmFyKSB7XG4gICAgICAvLyBDbHJEcmFnSGFuZGxlUmVnaXN0cmFyIGlzIHByb3ZpZGVkIGluIENsckRyYWdnYWJsZSBzbyB3ZSBleHBlY3QgaXQgdG8gYmUgcHJlc2VudCBoZXJlXG4gICAgICAvLyBhcyBjbHJEcmFnSGFuZGxlIGlzIHJlcXVpcmVkIHRvIGJlIHVzZWQgb25seSBpbnNpZGUgb2YgYSBjbHJEcmFnZ2FibGUgZGlyZWN0aXZlLlxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgY2xyRHJhZ0hhbmRsZSBkaXJlY3RpdmUgY2FuIG9ubHkgYmUgdXNlZCBpbnNpZGUgb2YgYSBjbHJEcmFnZ2FibGUgZGlyZWN0aXZlLicpO1xuICAgIH1cbiAgICB0aGlzLmRyYWdIYW5kbGVSZWdpc3RyYXIucmVnaXN0ZXJDdXN0b21IYW5kbGUodGhpcy5lbC5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZHJhZ0hhbmRsZVJlZ2lzdHJhci51bnJlZ2lzdGVyQ3VzdG9tSGFuZGxlKCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,135 @@
1
+ /*
2
+ * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.
3
+ * This software is released under MIT license.
4
+ * The full license information can be found in LICENSE in the root directory of this project.
5
+ */
6
+ import { ContentChild, Directive, EventEmitter, Output, } from '@angular/core';
7
+ import { Input } from '@angular/core';
8
+ import { DomAdapter } from '../../dom-adapter/dom-adapter';
9
+ import { ClrDragEvent } from '../drag-event';
10
+ import { ClrDraggableGhost } from '../draggable-ghost';
11
+ import { ClrIfDragged } from '../if-dragged';
12
+ import { DragEventListenerService } from '../providers/drag-event-listener.service';
13
+ import { DragHandleRegistrarService } from '../providers/drag-handle-registrar.service';
14
+ import { DraggableSnapshotService } from '../providers/draggable-snapshot.service';
15
+ import { GlobalDragModeService } from '../providers/global-drag-mode.service';
16
+ import * as i0 from "@angular/core";
17
+ import * as i1 from "../providers/drag-event-listener.service";
18
+ import * as i2 from "../providers/drag-handle-registrar.service";
19
+ import * as i3 from "../providers/draggable-snapshot.service";
20
+ import * as i4 from "../providers/global-drag-mode.service";
21
+ export class ClrDraggable {
22
+ constructor(el, dragEventListener, dragHandleRegistrar, viewContainerRef, cfr, injector, draggableSnapshot, globalDragMode) {
23
+ this.el = el;
24
+ this.dragEventListener = dragEventListener;
25
+ this.dragHandleRegistrar = dragHandleRegistrar;
26
+ this.viewContainerRef = viewContainerRef;
27
+ this.cfr = cfr;
28
+ this.injector = injector;
29
+ this.draggableSnapshot = draggableSnapshot;
30
+ this.globalDragMode = globalDragMode;
31
+ this.subscriptions = [];
32
+ this.dragOn = false;
33
+ this.dragStartEmitter = new EventEmitter();
34
+ this.dragMoveEmitter = new EventEmitter();
35
+ this.dragEndEmitter = new EventEmitter();
36
+ this.draggableEl = this.el.nativeElement;
37
+ this.componentFactory = this.cfr.resolveComponentFactory(ClrDraggableGhost);
38
+ }
39
+ set dataTransfer(value) {
40
+ this.dragEventListener.dragDataTransfer = value;
41
+ }
42
+ set group(value) {
43
+ this.dragEventListener.group = value;
44
+ }
45
+ set dragStartDelay(value) {
46
+ if (typeof value === 'number') {
47
+ this.dragEventListener.dragStartDelay = value;
48
+ }
49
+ else if (typeof value === 'string') {
50
+ this.dragEventListener.dragStartDelay = parseInt(value, 10) || 0;
51
+ }
52
+ }
53
+ createDefaultGhost(event) {
54
+ this.draggableSnapshot.capture(this.draggableEl, event);
55
+ // NOTE: The default ghost element will appear
56
+ // next to the clrDraggable in the DOM as a sibling element.
57
+ this.viewContainerRef.createComponent(this.componentFactory, 0, this.injector, [
58
+ [this.draggableEl.cloneNode(true)],
59
+ ]);
60
+ }
61
+ destroyDefaultGhost() {
62
+ this.viewContainerRef.clear();
63
+ this.draggableSnapshot.discard();
64
+ }
65
+ ngAfterContentInit() {
66
+ this.dragHandleRegistrar.defaultHandleEl = this.draggableEl;
67
+ this.subscriptions.push(this.dragEventListener.dragStarted.subscribe((event) => {
68
+ this.globalDragMode.enter();
69
+ this.dragOn = true;
70
+ if (!this.customGhost) {
71
+ this.createDefaultGhost(event);
72
+ }
73
+ this.dragStartEmitter.emit(new ClrDragEvent(event));
74
+ }));
75
+ this.subscriptions.push(this.dragEventListener.dragMoved.subscribe((event) => {
76
+ this.dragMoveEmitter.emit(new ClrDragEvent(event));
77
+ }));
78
+ this.subscriptions.push(this.dragEventListener.dragEnded.subscribe((event) => {
79
+ this.globalDragMode.exit();
80
+ this.dragOn = false;
81
+ if (!this.customGhost) {
82
+ this.destroyDefaultGhost();
83
+ }
84
+ this.dragEndEmitter.emit(new ClrDragEvent(event));
85
+ }));
86
+ }
87
+ ngOnDestroy() {
88
+ this.subscriptions.forEach((sub) => sub.unsubscribe());
89
+ this.dragEventListener.detachDragListeners();
90
+ }
91
+ }
92
+ ClrDraggable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ClrDraggable, deps: [{ token: i0.ElementRef }, { token: i1.DragEventListenerService }, { token: i2.DragHandleRegistrarService }, { token: i0.ViewContainerRef }, { token: i0.ComponentFactoryResolver }, { token: i0.Injector }, { token: i3.DraggableSnapshotService }, { token: i4.GlobalDragModeService }], target: i0.ɵɵFactoryTarget.Directive });
93
+ ClrDraggable.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: ClrDraggable, selector: "[clrDraggable]", inputs: { dataTransfer: ["clrDraggable", "dataTransfer"], group: ["clrGroup", "group"], dragStartDelay: ["clrDragStartDelay", "dragStartDelay"] }, outputs: { dragStartEmitter: "clrDragStart", dragMoveEmitter: "clrDragMove", dragEndEmitter: "clrDragEnd" }, host: { properties: { "class.draggable": "true", "class.being-dragged": "dragOn" } }, providers: [
94
+ DragEventListenerService,
95
+ DragHandleRegistrarService,
96
+ DraggableSnapshotService,
97
+ GlobalDragModeService,
98
+ DomAdapter,
99
+ ], queries: [{ propertyName: "customGhost", first: true, predicate: ClrIfDragged, descendants: true }], ngImport: i0 });
100
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ClrDraggable, decorators: [{
101
+ type: Directive,
102
+ args: [{
103
+ selector: '[clrDraggable]',
104
+ providers: [
105
+ DragEventListenerService,
106
+ DragHandleRegistrarService,
107
+ DraggableSnapshotService,
108
+ GlobalDragModeService,
109
+ DomAdapter,
110
+ ],
111
+ host: { '[class.draggable]': 'true', '[class.being-dragged]': 'dragOn' },
112
+ }]
113
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.DragEventListenerService }, { type: i2.DragHandleRegistrarService }, { type: i0.ViewContainerRef }, { type: i0.ComponentFactoryResolver }, { type: i0.Injector }, { type: i3.DraggableSnapshotService }, { type: i4.GlobalDragModeService }]; }, propDecorators: { customGhost: [{
114
+ type: ContentChild,
115
+ args: [ClrIfDragged]
116
+ }], dataTransfer: [{
117
+ type: Input,
118
+ args: ['clrDraggable']
119
+ }], group: [{
120
+ type: Input,
121
+ args: ['clrGroup']
122
+ }], dragStartDelay: [{
123
+ type: Input,
124
+ args: ['clrDragStartDelay']
125
+ }], dragStartEmitter: [{
126
+ type: Output,
127
+ args: ['clrDragStart']
128
+ }], dragMoveEmitter: [{
129
+ type: Output,
130
+ args: ['clrDragMove']
131
+ }], dragEndEmitter: [{
132
+ type: Output,
133
+ args: ['clrDragEnd']
134
+ }] } });
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZ2dhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvdXRpbHMvZHJhZy1hbmQtZHJvcC9kcmFnZ2FibGUvZHJhZ2dhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFDSCxPQUFPLEVBSUwsWUFBWSxFQUNaLFNBQVMsRUFFVCxZQUFZLEVBR1osTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNwRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN4RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNuRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7O0FBYTlFLE1BQU0sT0FBTyxZQUFZO0lBTXZCLFlBQ1UsRUFBYyxFQUNkLGlCQUE4QyxFQUM5QyxtQkFBa0QsRUFDbEQsZ0JBQWtDLEVBQ2xDLEdBQTZCLEVBQzdCLFFBQWtCLEVBQ2xCLGlCQUE4QyxFQUM5QyxjQUFxQztRQVByQyxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2Qsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUE2QjtRQUM5Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQStCO1FBQ2xELHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMs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QUFFO2lCQUN6RTt5VkFxQjZCLFdBQVc7c0JBQXRDLFlBQVk7dUJBQUMsWUFBWTtnQkFHdEIsWUFBWTtzQkFEZixLQUFLO3VCQUFDLGNBQWM7Z0JBTWpCLEtBQUs7c0JBRFIsS0FBSzt1QkFBQyxVQUFVO2dCQU1iLGNBQWM7c0JBRGpCLEtBQUs7dUJBQUMsbUJBQW1CO2dCQXVCRixnQkFBZ0I7c0JBQXZDLE1BQU07dUJBQUMsY0FBYztnQkFDQyxlQUFlO3NCQUFyQyxNQUFNO3VCQUFDLGFBQWE7Z0JBQ0MsY0FBYztzQkFBbkMsTUFBTTt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxNi0yMDIxIFZNd2FyZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZS5cbiAqIFRoZSBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIExJQ0VOU0UgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvamVjdC5cbiAqL1xuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ29tcG9uZW50RmFjdG9yeSxcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICBDb250ZW50Q2hpbGQsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3RvcixcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBEb21BZGFwdGVyIH0gZnJvbSAnLi4vLi4vZG9tLWFkYXB0ZXIvZG9tLWFkYXB0ZXInO1xuaW1wb3J0IHsgQ2xyRHJhZ0V2ZW50IH0gZnJvbSAnLi4vZHJhZy1ldmVudCc7XG5pbXBvcnQgeyBDbHJEcmFnZ2FibGVHaG9zdCB9IGZyb20gJy4uL2RyYWdnYWJsZS1naG9zdCc7XG5pbXBvcnQgeyBDbHJJZkRyYWdnZWQgfSBmcm9tICcuLi9pZi1kcmFnZ2VkJztcbmltcG9ydCB7IERyYWdFdmVudEludGVyZmFjZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvZHJhZy1ldmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRHJhZ0V2ZW50TGlzdGVuZXJTZXJ2aWNlIH0gZnJvbSAnLi4vcHJvdmlkZXJzL2RyYWctZXZlbnQtbGlzdGVuZXIuc2VydmljZSc7XG5pbXBvcnQgeyBEcmFnSGFuZGxlUmVnaXN0cmFyU2VydmljZSB9IGZyb20gJy4uL3Byb3ZpZGVycy9kcmFnLWhhbmRsZS1yZWdpc3RyYXIuc2VydmljZSc7XG5pbXBvcnQgeyBEcmFnZ2FibGVTbmFwc2hvdFNlcnZpY2UgfSBmcm9tICcuLi9wcm92aWRlcnMvZHJhZ2dhYmxlLXNuYXBzaG90LnNlcnZpY2UnO1xuaW1wb3J0IHsgR2xvYmFsRHJhZ01vZGVTZXJ2aWNlIH0gZnJvbSAnLi4vcHJvdmlkZXJzL2dsb2JhbC1kcmFnLW1vZGUuc2VydmljZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tjbHJEcmFnZ2FibGVdJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAgRHJhZ0V2ZW50TGlzdGVuZXJTZXJ2aWNlLFxuICAgIERyYWdIYW5kbGVSZWdpc3RyYXJTZXJ2aWNlLFxuICAgIERyYWdnYWJsZVNuYXBzaG90U2VydmljZSxcbiAgICBHbG9iYWxEcmFnTW9kZVNlcnZpY2UsXG4gICAgRG9tQWRhcHRlcixcbiAgXSxcbiAgaG9zdDogeyAnW2NsYXNzLmRyYWdnYWJsZV0nOiAndHJ1ZScsICdbY2xhc3MuYmVpbmctZHJhZ2dlZF0nOiAnZHJhZ09uJyB9LFxufSlcbmV4cG9ydCBjbGFzcyBDbHJEcmFnZ2FibGU8VD4gaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIGRyYWdnYWJsZUVsOiBhbnk7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgcHJpdmF0ZSBjb21wb25lbnRGYWN0b3J5OiBDb21wb25lbnRGYWN0b3J5PENsckRyYWdnYWJsZUdob3N0PFQ+PjtcbiAgcHVibGljIGRyYWdPbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBkcmFnRXZlbnRMaXN0ZW5lcjogRHJhZ0V2ZW50TGlzdGVuZXJTZXJ2aWNlPFQ+LFxuICAgIHByaXZhdGUgZHJhZ0hhbmRsZVJlZ2lzdHJhcjogRHJhZ0hhbmRsZVJlZ2lzdHJhclNlcnZpY2U8VD4sXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHByaXZhdGUgY2ZyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBkcmFnZ2FibGVTbmFwc2hvdDogRHJhZ2dhYmxlU25hcHNob3RTZXJ2aWNlPFQ+LFxuICAgIHByaXZhdGUgZ2xvYmFsRHJhZ01vZGU6IEdsb2JhbERyYWdNb2RlU2VydmljZVxuICApIHtcbiAgICB0aGlzLmRyYWdnYWJsZUVsID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xuICAgIHRoaXMuY29tcG9uZW50RmFjdG9yeSA9IHRoaXMuY2ZyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5PENsckRyYWdnYWJsZUdob3N0PFQ+PihDbHJEcmFnZ2FibGVHaG9zdCk7XG4gIH1cblxuICBAQ29udGVudENoaWxkKENscklmRHJhZ2dlZCkgY3VzdG9tR2hvc3Q6IENscklmRHJhZ2dlZDxUPjtcblxuICBASW5wdXQoJ2NsckRyYWdnYWJsZScpXG4gIHNldCBkYXRhVHJhbnNmZXIodmFsdWU6IFQpIHtcbiAgICB0aGlzLmRyYWdFdmVudExpc3RlbmVyLmRyYWdEYXRhVHJhbnNmZXIgPSB2YWx1ZTtcbiAgfVxuXG4gIEBJbnB1dCgnY2xyR3JvdXAnKVxuICBzZXQgZ3JvdXAodmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5kcmFnRXZlbnRMaXN0ZW5lci5ncm91cCA9IHZhbHVlO1xuICB9XG5cbiAgQElucHV0KCdjbHJEcmFnU3RhcnREZWxheScpXG4gIHNldCBkcmFnU3RhcnREZWxheSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHRoaXMuZHJhZ0V2ZW50TGlzdGVuZXIuZHJhZ1N0YXJ0RGVsYXkgPSB2YWx1ZTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMuZHJhZ0V2ZW50TGlzdGVuZXIuZHJhZ1N0YXJ0RGVsYXkgPSBwYXJzZUludCh2YWx1ZSwgMTApIHx8IDA7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVEZWZhdWx0R2hvc3QoZXZlbnQ6IERyYWdFdmVudEludGVyZmFjZTxUPikge1xuICAgIHRoaXMuZHJhZ2dhYmxlU25hcHNob3QuY2FwdHVyZSh0aGlzLmRyYWdnYWJsZUVsLCBldmVudCk7XG4gICAgLy8gTk9URTogVGhlIGRlZmF1bHQgZ2hvc3QgZWxlbWVudCB3aWxsIGFwcGVhclxuICAgIC8vIG5leHQgdG8gdGhlIGNsckRyYWdnYWJsZSBpbiB0aGUgRE9NIGFzIGEgc2libGluZyBlbGVtZW50LlxuICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQodGhpcy5jb21wb25lbnRGYWN0b3J5LCAwLCB0aGlzLmluamVjdG9yLCBbXG4gICAgICBbdGhpcy5kcmFnZ2FibGVFbC5jbG9uZU5vZGUodHJ1ZSldLFxuICAgIF0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95RGVmYXVsdEdob3N0KCkge1xuICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xuICAgIHRoaXMuZHJhZ2dhYmxlU25hcHNob3QuZGlzY2FyZCgpO1xuICB9XG5cbiAgQE91dHB1dCgnY2xyRHJhZ1N0YXJ0JykgZHJhZ1N0YXJ0RW1pdHRlcjogRXZlbnRFbWl0dGVyPENsckRyYWdFdmVudDxUPj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoJ2NsckRyYWdNb3ZlJykgZHJhZ01vdmVFbWl0dGVyOiBFdmVudEVtaXR0ZXI8Q2xyRHJhZ0V2ZW50PFQ+PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgnY2xyRHJhZ0VuZCcpIGRyYWdFbmRFbWl0dGVyOiBFdmVudEVtaXR0ZXI8Q2xyRHJhZ0V2ZW50PFQ+PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgdGhpcy5kcmFnSGFuZGxlUmVnaXN0cmFyLmRlZmF1bHRIYW5kbGVFbCA9IHRoaXMuZHJhZ2dhYmxlRWw7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuZHJhZ0V2ZW50TGlzdGVuZXIuZHJhZ1N0YXJ0ZWQuc3Vic2NyaWJlKChldmVudDogRHJhZ0V2ZW50SW50ZXJmYWNlPFQ+KSA9PiB7XG4gICAgICAgIHRoaXMuZ2xvYmFsRHJhZ01vZGUuZW50ZXIoKTtcbiAgICAgICAgdGhpcy5kcmFnT24gPSB0cnVlO1xuICAgICAgICBpZiAoIXRoaXMuY3VzdG9tR2hvc3QpIHtcbiAgICAgICAgICB0aGlzLmNyZWF0ZURlZmF1bHRHaG9zdChldmVudCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRyYWdTdGFydEVtaXR0ZXIuZW1pdChuZXcgQ2xyRHJhZ0V2ZW50KGV2ZW50KSk7XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmRyYWdFdmVudExpc3RlbmVyLmRyYWdNb3ZlZC5zdWJzY3JpYmUoKGV2ZW50OiBEcmFnRXZlbnRJbnRlcmZhY2U8VD4pID0+IHtcbiAgICAgICAgdGhpcy5kcmFnTW92ZUVtaXR0ZXIuZW1pdChuZXcgQ2xyRHJhZ0V2ZW50KGV2ZW50KSk7XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmRyYWdFdmVudExpc3RlbmVyLmRyYWdFbmRlZC5zdWJzY3JpYmUoKGV2ZW50OiBEcmFnRXZlbnRJbnRlcmZhY2U8VD4pID0+IHtcbiAgICAgICAgdGhpcy5nbG9iYWxEcmFnTW9kZS5leGl0KCk7XG4gICAgICAgIHRoaXMuZHJhZ09uID0gZmFsc2U7XG4gICAgICAgIGlmICghdGhpcy5jdXN0b21HaG9zdCkge1xuICAgICAgICAgIHRoaXMuZGVzdHJveURlZmF1bHRHaG9zdCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZHJhZ0VuZEVtaXR0ZXIuZW1pdChuZXcgQ2xyRHJhZ0V2ZW50KGV2ZW50KSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCgoc3ViOiBTdWJzY3JpcHRpb24pID0+IHN1Yi51bnN1YnNjcmliZSgpKTtcbiAgICB0aGlzLmRyYWdFdmVudExpc3RlbmVyLmRldGFjaERyYWdMaXN0ZW5lcnMoKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,124 @@
1
+ /*
2
+ * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.
3
+ * This software is released under MIT license.
4
+ * The full license information can be found in LICENSE in the root directory of this project.
5
+ */
6
+ import { animate, style, transition, trigger } from '@angular/animations';
7
+ import { Component, HostBinding, Optional } from '@angular/core';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "./providers/drag-event-listener.service";
10
+ import * as i2 from "./providers/draggable-snapshot.service";
11
+ export class ClrDraggableGhost {
12
+ constructor(el, dragEventListener, draggableSnapshot, renderer, ngZone) {
13
+ this.el = el;
14
+ this.dragEventListener = dragEventListener;
15
+ this.draggableSnapshot = draggableSnapshot;
16
+ this.renderer = renderer;
17
+ this.ngZone = ngZone;
18
+ this.subscriptions = [];
19
+ this.leaveAnimConfig = { value: 0, params: { top: '0px', left: '0px' } };
20
+ if (!this.dragEventListener || !this.draggableSnapshot) {
21
+ throw new Error('The clr-draggable-ghost component can only be used inside of a clrDraggable directive.');
22
+ }
23
+ this.draggableGhostEl = this.el.nativeElement;
24
+ // Need to use Renderer2 as it runs outside of NgZone
25
+ this.renderer.addClass(this.draggableGhostEl, 'draggable-ghost');
26
+ // Register the ghost element in DragEventListener to pass in a ClrDragEvent.
27
+ this.dragEventListener.ghostElement = this.draggableGhostEl;
28
+ // Default ghost size gets the size of ClrDraggable element.
29
+ this.setDefaultGhostSize(this.draggableGhostEl);
30
+ const offset = {
31
+ top: this.draggableSnapshot.hasDraggableState
32
+ ? this.draggableSnapshot.dragEvent.dragPosition.pageY - this.draggableSnapshot.clientRect.top
33
+ : 0,
34
+ left: this.draggableSnapshot.hasDraggableState
35
+ ? this.draggableSnapshot.dragEvent.dragPosition.pageX - this.draggableSnapshot.clientRect.left
36
+ : 0,
37
+ };
38
+ let isAnimationConfigured = false;
39
+ this.subscriptions.push(this.dragEventListener.dragMoved.subscribe((event) => {
40
+ // On the first drag move event, we configure the animation as it's dependent on the first drag event.
41
+ if (!isAnimationConfigured) {
42
+ if (this.draggableSnapshot.hasDraggableState) {
43
+ this.animateToOnLeave(`${this.draggableSnapshot.clientRect.top}px`, `${this.draggableSnapshot.clientRect.left}px`);
44
+ }
45
+ else {
46
+ this.animateToOnLeave(`${this.dragEventListener.dragStartPosition.pageY}px`, `${this.dragEventListener.dragStartPosition.pageY}px`);
47
+ }
48
+ isAnimationConfigured = true;
49
+ }
50
+ // Position the draggable ghost.
51
+ const topLeftPosition = this.findTopLeftPosition(event.dragPosition, offset);
52
+ this.setPositionStyle(this.draggableGhostEl, topLeftPosition.pageX, topLeftPosition.pageY);
53
+ this.dragEventListener.dropPointPosition = this.findDropPointPosition(topLeftPosition);
54
+ }));
55
+ }
56
+ setDefaultGhostSize(el) {
57
+ if (this.draggableSnapshot.hasDraggableState) {
58
+ this.setSizeStyle(el, this.draggableSnapshot.clientRect.width, this.draggableSnapshot.clientRect.height);
59
+ }
60
+ }
61
+ animateToOnLeave(top, left) {
62
+ this.ngZone.run(() => {
63
+ this.leaveAnimConfig = { value: 0, params: { top: top, left: left } };
64
+ });
65
+ }
66
+ findTopLeftPosition(dragPosition, offset) {
67
+ return { pageX: dragPosition.pageX - offset.left, pageY: dragPosition.pageY - offset.top };
68
+ }
69
+ findDropPointPosition(topLeftPosition) {
70
+ if (this.draggableSnapshot.hasDraggableState) {
71
+ return {
72
+ pageX: topLeftPosition.pageX + this.draggableSnapshot.clientRect.width / 2,
73
+ pageY: topLeftPosition.pageY + this.draggableSnapshot.clientRect.height / 2,
74
+ };
75
+ }
76
+ else {
77
+ return topLeftPosition;
78
+ }
79
+ }
80
+ setSizeStyle(el, width, height) {
81
+ this.renderer.setStyle(el, 'width', `${width}px`);
82
+ this.renderer.setStyle(el, 'height', `${height}px`);
83
+ }
84
+ setPositionStyle(el, left, top) {
85
+ this.renderer.setStyle(el, 'left', `${left}px`);
86
+ this.renderer.setStyle(el, 'top', `${top}px`);
87
+ this.renderer.setStyle(el, 'visibility', 'visible');
88
+ }
89
+ ngOnDestroy() {
90
+ this.subscriptions.forEach((sub) => sub.unsubscribe());
91
+ }
92
+ }
93
+ ClrDraggableGhost.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ClrDraggableGhost, deps: [{ token: i0.ElementRef }, { token: i1.DragEventListenerService, optional: true }, { token: i2.DraggableSnapshotService, optional: true }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
94
+ ClrDraggableGhost.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: ClrDraggableGhost, selector: "clr-draggable-ghost", host: { properties: { "@leaveAnimation": "this.leaveAnimConfig" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, animations: [
95
+ trigger('leaveAnimation', [
96
+ transition(':leave', [
97
+ style({ left: '*', top: '*' }),
98
+ animate('0.2s ease-in-out', style({ top: '{{top}}', left: '{{left}}' })),
99
+ ]),
100
+ ]),
101
+ ] });
102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ClrDraggableGhost, decorators: [{
103
+ type: Component,
104
+ args: [{
105
+ selector: 'clr-draggable-ghost',
106
+ template: `<ng-content></ng-content>`,
107
+ animations: [
108
+ trigger('leaveAnimation', [
109
+ transition(':leave', [
110
+ style({ left: '*', top: '*' }),
111
+ animate('0.2s ease-in-out', style({ top: '{{top}}', left: '{{left}}' })),
112
+ ]),
113
+ ]),
114
+ ],
115
+ }]
116
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.DragEventListenerService, decorators: [{
117
+ type: Optional
118
+ }] }, { type: i2.DraggableSnapshotService, decorators: [{
119
+ type: Optional
120
+ }] }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { leaveAnimConfig: [{
121
+ type: HostBinding,
122
+ args: ['@leaveAnimation']
123
+ }] } });
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZ2dhYmxlLWdob3N0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvdXRpbHMvZHJhZy1hbmQtZHJvcC9kcmFnZ2FibGUtZ2hvc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUNILE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFjLFdBQVcsRUFBcUIsUUFBUSxFQUFhLE1BQU0sZUFBZSxDQUFDOzs7O0FBNEIzRyxNQUFNLE9BQU8saUJBQWlCO0lBTzVCLFlBQ1UsRUFBYyxFQUNGLGlCQUE4QyxFQUM5QyxpQkFBOEMsRUFDMUQsUUFBbUIsRUFDbkIsTUFBYztRQUpkLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDRixzQkFBaUIsR0FBakIsaUJBQWlCLENBQTZCO1FBQzlDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBNkI7UUFDMUQsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBVGhCLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUVYLG9CQUFlLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7UUFTbEcsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUN0RCxNQUFNLElBQUksS0FBSyxDQUFDLHdGQUF3RixDQUFDLENBQUM7U0FDM0c7UUFFRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUM7UUFFOUMscURBQXFEO1FBQ3JELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFD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QUE5QyxXQUFXO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMSBWTXdhcmUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UuXG4gKiBUaGUgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiBMSUNFTlNFIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHByb2plY3QuXG4gKi9cbmltcG9ydCB7IGFuaW1hdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBOZ1pvbmUsIE9uRGVzdHJveSwgT3B0aW9uYWwsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IERyYWdFdmVudEludGVyZmFjZSB9IGZyb20gJy4vaW50ZXJmYWNlcy9kcmFnLWV2ZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBEcmFnRXZlbnRMaXN0ZW5lclNlcnZpY2UgfSBmcm9tICcuL3Byb3ZpZGVycy9kcmFnLWV2ZW50LWxpc3RlbmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRHJhZ2dhYmxlU25hcHNob3RTZXJ2aWNlIH0gZnJvbSAnLi9wcm92aWRlcnMvZHJhZ2dhYmxlLXNuYXBzaG90LnNlcnZpY2UnO1xuXG50eXBlIFBhZ2VQb3NpdGlvbiA9IHtcbiAgcGFnZVg6IG51bWJlcjtcbiAgcGFnZVk6IG51bWJlcjtcbn07XG50eXBlIE9mZnNldFBvc2l0aW9uID0ge1xuICB0b3A6IG51bWJlcjtcbiAgbGVmdDogbnVtYmVyO1xufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2xyLWRyYWdnYWJsZS1naG9zdCcsXG4gIHRlbXBsYXRlOiBgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PmAsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdsZWF2ZUFuaW1hdGlvbicsIFtcbiAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcbiAgICAgICAgc3R5bGUoeyBsZWZ0OiAnKicsIHRvcDogJyonIH0pLFxuICAgICAgICBhbmltYXRlKCcwLjJzIGVhc2UtaW4tb3V0Jywgc3R5bGUoeyB0b3A6ICd7e3RvcH19JywgbGVmdDogJ3t7bGVmdH19JyB9KSksXG4gICAgICBdKSxcbiAgICBdKSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2xyRHJhZ2dhYmxlR2hvc3Q8VD4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIGRyYWdnYWJsZUdob3N0RWw6IGFueTtcblxuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgQEhvc3RCaW5kaW5nKCdAbGVhdmVBbmltYXRpb24nKSBsZWF2ZUFuaW1Db25maWcgPSB7IHZhbHVlOiAwLCBwYXJhbXM6IHsgdG9wOiAnMHB4JywgbGVmdDogJzBweCcgfSB9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBkcmFnRXZlbnRMaXN0ZW5lcjogRHJhZ0V2ZW50TGlzdGVuZXJTZXJ2aWNlPFQ+LFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgZHJhZ2dhYmxlU25hcHNob3Q6IERyYWdnYWJsZVNuYXBzaG90U2VydmljZTxUPixcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZVxuICApIHtcbiAgICBpZiAoIXRoaXMuZHJhZ0V2ZW50TGlzdGVuZXIgfHwgIXRoaXMuZHJhZ2dhYmxlU25hcHNob3QpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGNsci1kcmFnZ2FibGUtZ2hvc3QgY29tcG9uZW50IGNhbiBvbmx5IGJlIHVzZWQgaW5zaWRlIG9mIGEgY2xyRHJhZ2dhYmxlIGRpcmVjdGl2ZS4nKTtcbiAgICB9XG5cbiAgICB0aGlzLmRyYWdnYWJsZUdob3N0RWwgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAvLyBOZWVkIHRvIHVzZSBSZW5kZXJlcjIgYXMgaXQgcnVucyBvdXRzaWRlIG9mIE5nWm9uZVxuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5kcmFnZ2FibGVHaG9zdEVsLCAnZHJhZ2dhYmxlLWdob3N0Jyk7XG5cbiAgICAvLyBSZWdpc3RlciB0aGUgZ2hvc3QgZWxlbWVudCBpbiBEcmFnRXZlbnRMaXN0ZW5lciB0byBwYXNzIGluIGEgQ2xyRHJhZ0V2ZW50LlxuICAgIHRoaXMuZHJhZ0V2ZW50TGlzdGVuZXIuZ2hvc3RFbGVtZW50ID0gdGhpcy5kcmFnZ2FibGVHaG9zdEVsO1xuXG4gICAgLy8gRGVmYXVsdCBnaG9zdCBzaXplIGdldHMgdGhlIHNpemUgb2YgQ2xyRHJhZ2dhYmxlIGVsZW1lbnQuXG4gICAgdGhpcy5zZXREZWZhdWx0R2hvc3RTaXplKHRoaXMuZHJhZ2dhYmxlR2hvc3RFbCk7XG5cbiAgICBjb25zdCBvZmZzZXQ6IE9mZnNldFBvc2l0aW9uID0ge1xuICAgICAgdG9wOiB0aGlzLmRyYWdnYWJsZVNuYXBzaG90Lmhhc0RyYWdnYWJsZVN0YXRlXG4gICAgICAgID8gdGhpcy5kcmFnZ2FibGVTbmFwc2hvdC5kcmFnRXZlbnQuZHJhZ1Bvc2l0aW9uLnBhZ2VZIC0gdGhpcy5kcmFnZ2FibGVTbmFwc2hvdC5jbGllbnRSZWN0LnRvcFxuICAgICAgICA6IDAsXG4gICAgICBsZWZ0OiB0aGlzLmRyYWdnYWJsZVNuYXBzaG90Lmhhc0RyYWdnYWJsZVN0YXRlXG4gICAgICAgID8gdGhpcy5kcmFnZ2FibGVTbmFwc2hvdC5kcmFnRXZlbnQuZHJhZ1Bvc2l0aW9uLnBhZ2VYIC0gdGhpcy5kcmFnZ2FibGVTbmFwc2hvdC5jbGllbnRSZWN0LmxlZnRcbiAgICAgICAgOiAwLFxuICAgIH07XG5cbiAgICBsZXQgaXNBbmltYXRpb25Db25maWd1cmVkID0gZmFsc2U7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuZHJhZ0V2ZW50TGlzdGVuZXIuZHJhZ01vdmVkLnN1YnNjcmliZSgoZXZlbnQ6IERyYWdFdmVudEludGVyZmFjZTxUPikgPT4ge1xuICAgICAgICAvLyBPbiB0aGUgZmlyc3QgZHJhZyBtb3ZlIGV2ZW50LCB3ZSBjb25maWd1cmUgdGhlIGFuaW1hdGlvbiBhcyBpdCdzIGRlcGVuZGVudCBvbiB0aGUgZmlyc3QgZHJhZyBldmVudC5cbiAgICAgICAgaWYgKCFpc0FuaW1hdGlvbkNvbmZpZ3VyZWQpIHtcbiAgICAgICAgICBpZiAodGhpcy5kcmFnZ2FibGVTbmFwc2hvdC5oYXNEcmFnZ2FibGVTdGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5hbmltYXRlVG9PbkxlYXZlKFxuICAgICAgICAgICAgICBgJHt0aGlzLmRyYWdnYWJsZVNuYXBzaG90LmNsaWVudFJlY3QudG9wfXB4YCxcbiAgICAgICAgICAgICAgYCR7dGhpcy5kcmFnZ2FibGVTbmFwc2hvdC5jbGllbnRSZWN0LmxlZnR9cHhgXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmFuaW1hdGVUb09uTGVhdmUoXG4gICAgICAgICAgICAgIGAke3RoaXMuZHJhZ0V2ZW50TGlzdGVuZXIuZHJhZ1N0YXJ0UG9zaXRpb24ucGFnZVl9cHhgLFxuICAgICAgICAgICAgICBgJHt0aGlzLmRyYWdFdmVudExpc3RlbmVyLmRyYWdTdGFydFBvc2l0aW9uLnBhZ2VZfXB4YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaXNBbmltYXRpb25Db25maWd1cmVkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFBvc2l0aW9uIHRoZSBkcmFnZ2FibGUgZ2hvc3QuXG4gICAgICAgIGNvbnN0IHRvcExlZnRQb3NpdGlvbjogUGFnZVBvc2l0aW9uID0gdGhpcy5maW5kVG9wTGVmdFBvc2l0aW9uKGV2ZW50LmRyYWdQb3NpdGlvbiwgb2Zmc2V0KTtcbiAgICAgICAgdGhpcy5zZXRQb3NpdGlvblN0eWxlKHRoaXMuZHJhZ2dhYmxlR2hvc3RFbCwgdG9wTGVmdFBvc2l0aW9uLnBhZ2VYLCB0b3BMZWZ0UG9zaXRpb24ucGFnZVkpO1xuICAgICAgICB0aGlzLmRyYWdFdmVudExpc3RlbmVyLmRyb3BQb2ludFBvc2l0aW9uID0gdGhpcy5maW5kRHJvcFBvaW50UG9zaXRpb24odG9wTGVmdFBvc2l0aW9uKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0RGVmYXVsdEdob3N0U2l6ZShlbDogTm9kZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRyYWdnYWJsZVNuYXBzaG90Lmhhc0RyYWdnYWJsZVN0YXRlKSB7XG4gICAgICB0aGlzLnNldFNpemVTdHlsZShlbCwgdGhpcy5kcmFnZ2FibGVTbmFwc2hvdC5jbGllbnRSZWN0LndpZHRoLCB0aGlzLmRyYWdnYWJsZVNuYXBzaG90LmNsaWVudFJlY3QuaGVpZ2h0KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFuaW1hdGVUb09uTGVhdmUodG9wOiBzdHJpbmcsIGxlZnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICB0aGlzLmxlYXZlQW5pbUNvbmZpZyA9IHsgdmFsdWU6IDAsIHBhcmFtczogeyB0b3A6IHRvcCwgbGVmdDogbGVmdCB9IH07XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGZpbmRUb3BMZWZ0UG9zaXRpb24oZHJhZ1Bvc2l0aW9uOiBQYWdlUG9zaXRpb24sIG9mZnNldDogT2Zmc2V0UG9zaXRpb24pOiBQYWdlUG9zaXRpb24ge1xuICAgIHJldHVybiB7IHBhZ2VYOiBkcmFnUG9zaXRpb24ucGFnZVggLSBvZmZzZXQubGVmdCwgcGFnZVk6IGRyYWdQb3NpdGlvbi5wYWdlWSAtIG9mZnNldC50b3AgfTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZERyb3BQb2ludFBvc2l0aW9uKHRvcExlZnRQb3NpdGlvbjogUGFnZVBvc2l0aW9uKTogUGFnZVBvc2l0aW9uIHtcbiAgICBpZiAodGhpcy5kcmFnZ2FibGVTbmFwc2hvdC5oYXNEcmFnZ2FibGVTdGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGFnZVg6IHRvcExlZnRQb3NpdGlvbi5wYWdlWCArIHRoaXMuZHJhZ2dhYmxlU25hcHNob3QuY2xpZW50UmVjdC53aWR0aCAvIDIsXG4gICAgICAgIHBhZ2VZOiB0b3BMZWZ0UG9zaXRpb24ucGFnZVkgKyB0aGlzLmRyYWdnYWJsZVNuYXBzaG90LmNsaWVudFJlY3QuaGVpZ2h0IC8gMixcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0b3BMZWZ0UG9zaXRpb247XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRTaXplU3R5bGUoZWw6IE5vZGUsIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShlbCwgJ3dpZHRoJywgYCR7d2lkdGh9cHhgKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsLCAnaGVpZ2h0JywgYCR7aGVpZ2h0fXB4YCk7XG4gIH1cblxuICBwcml2YXRlIHNldFBvc2l0aW9uU3R5bGUoZWw6IE5vZGUsIGxlZnQ6IG51bWJlciwgdG9wOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsLCAnbGVmdCcsIGAke2xlZnR9cHhgKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsLCAndG9wJywgYCR7dG9wfXB4YCk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShlbCwgJ3Zpc2liaWxpdHknLCAndmlzaWJsZScpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goKHN1YjogU3Vic2NyaXB0aW9uKSA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,222 @@
1
+ /*
2
+ * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.
3
+ * This software is released under MIT license.
4
+ * The full license information can be found in LICENSE in the root directory of this project.
5
+ */
6
+ import { Directive, EventEmitter, Input, Output } from '@angular/core';
7
+ import { DomAdapter } from '../../dom-adapter/dom-adapter';
8
+ import { ClrDragEvent } from '../drag-event';
9
+ import { DragEventType } from '../interfaces/drag-event.interface';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "../providers/drag-and-drop-event-bus.service";
12
+ import * as i2 from "../../dom-adapter/dom-adapter";
13
+ export class ClrDroppable {
14
+ constructor(el, eventBus, domAdapter, renderer) {
15
+ this.el = el;
16
+ this.eventBus = eventBus;
17
+ this.domAdapter = domAdapter;
18
+ this.renderer = renderer;
19
+ this.isDraggableMatch = false;
20
+ this._isDraggableOver = false;
21
+ this._dropTolerance = { top: 0, right: 0, bottom: 0, left: 0 };
22
+ this.dragStartEmitter = new EventEmitter();
23
+ this.dragMoveEmitter = new EventEmitter();
24
+ this.dragEndEmitter = new EventEmitter();
25
+ this.dragLeaveEmitter = new EventEmitter();
26
+ this.dragEnterEmitter = new EventEmitter();
27
+ this.dropEmitter = new EventEmitter();
28
+ this.droppableEl = this.el.nativeElement;
29
+ }
30
+ set isDraggableOver(value) {
31
+ // We need to add/remove this draggable-over class via Renderer2
32
+ // because isDraggableOver is set outside of NgZone.
33
+ if (value) {
34
+ this.renderer.addClass(this.droppableEl, 'draggable-over');
35
+ }
36
+ else {
37
+ this.renderer.removeClass(this.droppableEl, 'draggable-over');
38
+ }
39
+ this._isDraggableOver = value;
40
+ }
41
+ set group(value) {
42
+ this._group = value;
43
+ }
44
+ dropToleranceGenerator(top = 0, right = top, bottom = top, left = right) {
45
+ return { top, right, bottom, left };
46
+ }
47
+ set dropTolerance(value) {
48
+ // If user provides an object here and wants to manipulate/update properties individually,
49
+ // the object must be immutable as we generate new object based user's given object.
50
+ if (typeof value === 'number') {
51
+ this._dropTolerance = this.dropToleranceGenerator(value);
52
+ }
53
+ else if (typeof value === 'string') {
54
+ const toleranceValues = value
55
+ .trim()
56
+ .split(/\s+/)
57
+ .map(tolerance => parseInt(tolerance, 10));
58
+ this._dropTolerance = this.dropToleranceGenerator(...toleranceValues);
59
+ }
60
+ else if (value) {
61
+ // The value could be passed in as {left: 20, top: 30 }
62
+ // In this case, the rest of the direction properties should be 0.
63
+ // That's why we initialize properties with 0 first, then override with user's given value.
64
+ this._dropTolerance = { ...this.dropToleranceGenerator(0), ...value };
65
+ }
66
+ }
67
+ unsubscribeFrom(subscription) {
68
+ if (subscription) {
69
+ subscription.unsubscribe();
70
+ }
71
+ }
72
+ checkGroupMatch(draggableGroup) {
73
+ // Both Draggable and Droppable have clrGroup input.
74
+ // The clrGroup input can be both a string key or array of string keys in Draggable and Droppable.
75
+ // It's not match if Draggable has no defined value assigned to clrGroup, but Droppable has a defined clrGroup.
76
+ if (!draggableGroup && this._group) {
77
+ return false;
78
+ }
79
+ // The same is true the other way round.
80
+ if (!this._group && draggableGroup) {
81
+ return false;
82
+ }
83
+ // It's match if both Draggable and Droppable have no assigned value for clrGroup.
84
+ if (!this._group && !draggableGroup) {
85
+ return true;
86
+ }
87
+ // It's match if both Draggable and Droppable have simple string keys that are matching.
88
+ // It's match if Draggable's simple clrGroup key is matching with one of the clrGroup keys of Droppable. The
89
+ // same is true the other way round.
90
+ // it's match if one of the clrGroup keys of Droppable is matching with one of the clrGroup keys of Draggable.
91
+ if (typeof draggableGroup === 'string') {
92
+ if (typeof this._group === 'string') {
93
+ return this._group === draggableGroup;
94
+ }
95
+ else {
96
+ return this._group.indexOf(draggableGroup) > -1;
97
+ }
98
+ }
99
+ else {
100
+ if (typeof this._group === 'string') {
101
+ return draggableGroup.indexOf(this._group) > -1;
102
+ }
103
+ else {
104
+ return this._group.some(groupKey => draggableGroup.indexOf(groupKey) > -1);
105
+ }
106
+ }
107
+ }
108
+ isInDropArea(point) {
109
+ if (!point) {
110
+ return false;
111
+ }
112
+ if (!this.clientRect) {
113
+ this.clientRect = this.domAdapter.clientRect(this.droppableEl);
114
+ }
115
+ if (point.pageX >= this.clientRect.left - this._dropTolerance.left &&
116
+ point.pageX <= this.clientRect.right + this._dropTolerance.right &&
117
+ point.pageY >= this.clientRect.top - this._dropTolerance.top &&
118
+ point.pageY <= this.clientRect.bottom + this._dropTolerance.bottom) {
119
+ return true;
120
+ }
121
+ else {
122
+ return false;
123
+ }
124
+ }
125
+ onDragStart(dragStartEvent) {
126
+ // Check draggable and droppable have a matching group key.
127
+ this.isDraggableMatch = this.checkGroupMatch(dragStartEvent.group);
128
+ // Subscribe to dragMoved and dragEnded only if draggable and droppable have a matching group key.
129
+ if (this.isDraggableMatch) {
130
+ this.dragStartEmitter.emit(new ClrDragEvent(dragStartEvent));
131
+ this.dragMoveSubscription = this.eventBus.dragMoved.subscribe((dragMoveEvent) => {
132
+ this.onDragMove(dragMoveEvent);
133
+ });
134
+ this.dragEndSubscription = this.eventBus.dragEnded.subscribe((dragEndEvent) => {
135
+ this.onDragEnd(dragEndEvent);
136
+ });
137
+ }
138
+ }
139
+ onDragMove(dragMoveEvent) {
140
+ const isInDropArea = this.isInDropArea(dragMoveEvent.dropPointPosition);
141
+ if (!this._isDraggableOver && isInDropArea) {
142
+ this.isDraggableOver = true;
143
+ const dragEnterEvent = { ...dragMoveEvent, type: DragEventType.DRAG_ENTER };
144
+ this.eventBus.broadcast(dragEnterEvent);
145
+ this.dragEnterEmitter.emit(new ClrDragEvent(dragEnterEvent));
146
+ }
147
+ else if (this._isDraggableOver && !isInDropArea) {
148
+ this.isDraggableOver = false;
149
+ const dragLeaveEvent = { ...dragMoveEvent, type: DragEventType.DRAG_LEAVE };
150
+ this.eventBus.broadcast(dragLeaveEvent);
151
+ this.dragLeaveEmitter.emit(new ClrDragEvent(dragLeaveEvent));
152
+ }
153
+ this.dragMoveEmitter.emit(new ClrDragEvent(dragMoveEvent));
154
+ }
155
+ onDragEnd(dragEndEvent) {
156
+ if (this._isDraggableOver) {
157
+ if (dragEndEvent.ghostElement) {
158
+ // By this point, the draggable ghost component is destroyed,
159
+ // but the element would be active until its animation completes.
160
+ // As such, once the ghost is dropped over, we will give it "dropped" class.
161
+ // This process cannot be done in the ghost component
162
+ // because any subscription to the drop event is ineffective or invalid
163
+ // as the component had been already destroyed.
164
+ this.renderer.addClass(dragEndEvent.ghostElement, 'dropped');
165
+ }
166
+ const dropEvent = { ...dragEndEvent, type: DragEventType.DROP };
167
+ this.eventBus.broadcast(dropEvent);
168
+ this.dropEmitter.emit(new ClrDragEvent(dropEvent));
169
+ this.isDraggableOver = false;
170
+ }
171
+ this.dragEndEmitter.emit(new ClrDragEvent(dragEndEvent));
172
+ this.unsubscribeFrom(this.dragMoveSubscription);
173
+ this.unsubscribeFrom(this.dragEndSubscription);
174
+ this.isDraggableMatch = false;
175
+ delete this.clientRect;
176
+ }
177
+ ngOnInit() {
178
+ this.dragStartSubscription = this.eventBus.dragStarted.subscribe((dragStartEvent) => {
179
+ this.onDragStart(dragStartEvent);
180
+ });
181
+ }
182
+ ngOnDestroy() {
183
+ this.unsubscribeFrom(this.dragStartSubscription);
184
+ this.unsubscribeFrom(this.dragMoveSubscription);
185
+ this.unsubscribeFrom(this.dragEndSubscription);
186
+ }
187
+ }
188
+ ClrDroppable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ClrDroppable, deps: [{ token: i0.ElementRef }, { token: i1.DragAndDropEventBusService }, { token: i2.DomAdapter }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
189
+ ClrDroppable.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: ClrDroppable, selector: "[clrDroppable]", inputs: { group: ["clrGroup", "group"], dropTolerance: ["clrDropTolerance", "dropTolerance"] }, outputs: { dragStartEmitter: "clrDragStart", dragMoveEmitter: "clrDragMove", dragEndEmitter: "clrDragEnd", dragLeaveEmitter: "clrDragLeave", dragEnterEmitter: "clrDragEnter", dropEmitter: "clrDrop" }, host: { properties: { "class.droppable": "true", "class.draggable-match": "isDraggableMatch" } }, providers: [DomAdapter], ngImport: i0 });
190
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ClrDroppable, decorators: [{
191
+ type: Directive,
192
+ args: [{
193
+ selector: '[clrDroppable]',
194
+ providers: [DomAdapter],
195
+ host: { '[class.droppable]': 'true', '[class.draggable-match]': 'isDraggableMatch' },
196
+ }]
197
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.DragAndDropEventBusService }, { type: i2.DomAdapter }, { type: i0.Renderer2 }]; }, propDecorators: { group: [{
198
+ type: Input,
199
+ args: ['clrGroup']
200
+ }], dropTolerance: [{
201
+ type: Input,
202
+ args: ['clrDropTolerance']
203
+ }], dragStartEmitter: [{
204
+ type: Output,
205
+ args: ['clrDragStart']
206
+ }], dragMoveEmitter: [{
207
+ type: Output,
208
+ args: ['clrDragMove']
209
+ }], dragEndEmitter: [{
210
+ type: Output,
211
+ args: ['clrDragEnd']
212
+ }], dragLeaveEmitter: [{
213
+ type: Output,
214
+ args: ['clrDragLeave']
215
+ }], dragEnterEmitter: [{
216
+ type: Output,
217
+ args: ['clrDragEnter']
218
+ }], dropEmitter: [{
219
+ type: Output,
220
+ args: ['clrDrop']
221
+ }] } });
222
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcHBhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvdXRpbHMvZHJhZy1hbmQtZHJvcC9kcm9wcGFibGUvZHJvcHBhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUdqSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3QyxPQUFPLEVBQXNCLGFBQWEsRUFBcUIsTUFBTSxvQ0FBb0MsQ0FBQzs7OztBQVMxRyxNQUFNLE9BQU8sWUFBWTtJQVF2QixZQUNVLEVBQWMsRUFDZCxRQUF1QyxFQUN2QyxVQUFzQixFQUN0QixRQUFtQjtRQUhuQixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBK0I7UUFDdkMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBSzdCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUNqQixxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFvQnpCLG1CQUFjLEdBQThCLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBMEJyRSxxQkFBZ0IsR0FBa0MsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN0RSxvQkFBZSxHQUFrQyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3JFLG1CQUFjLEdBQWtDLElBQUksWUFBWSxFQUFFLENBQUM7UUFDakUscUJBQWdCLEdBQWtDLElBQUksWUFBWSxFQUFFLENBQUM7UUFDckUscUJBQWdCLEdBQWtD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QUMsa0JBQWtCO2dCQW9CRCxnQkFBZ0I7c0JBQXZDLE1BQU07dUJBQUMsY0FBYztnQkFDQyxlQUFlO3NCQUFyQyxNQUFNO3VCQUFDLGFBQWE7Z0JBQ0MsY0FBYztzQkFBbkMsTUFBTTt1QkFBQyxZQUFZO2dCQUNJLGdCQUFnQjtzQkFBdkMsTUFBTTt1QkFBQyxjQUFjO2dCQUNFLGdCQUFnQjtzQkFBdkMsTUFBTTt1QkFBQyxjQUFjO2dCQUNILFdBQVc7c0JBQTdCLE1BQU07dUJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMSBWTXdhcmUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UuXG4gKiBUaGUgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiBMSUNFTlNFIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHByb2plY3QuXG4gKi9cbmltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRG9tQWRhcHRlciB9IGZyb20gJy4uLy4uL2RvbS1hZGFwdGVyL2RvbS1hZGFwdGVyJztcbmltcG9ydCB7IENsckRyYWdFdmVudCB9IGZyb20gJy4uL2RyYWctZXZlbnQnO1xuaW1wb3J0IHsgRHJhZ0V2ZW50SW50ZXJmYWNlLCBEcmFnRXZlbnRUeXBlLCBEcmFnUG9pbnRQb3NpdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvZHJhZy1ldmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ2xyRHJvcFRvbGVyYW5jZUludGVyZmFjZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvZHJvcC10b2xlcmFuY2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IERyYWdBbmREcm9wRXZlbnRCdXNTZXJ2aWNlIH0gZnJvbSAnLi4vcHJvdmlkZXJzL2RyYWctYW5kLWRyb3AtZXZlbnQtYnVzLnNlcnZpY2UnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbY2xyRHJvcHBhYmxlXScsXG4gIHByb3ZpZGVyczogW0RvbUFkYXB0ZXJdLFxuICBob3N0OiB7ICdbY2xhc3MuZHJvcHBhYmxlXSc6ICd0cnVlJywgJ1tjbGFzcy5kcmFnZ2FibGUtbWF0Y2hdJzogJ2lzRHJhZ2dhYmxlTWF0Y2gnIH0sXG59KVxuZXhwb3J0IGNsYXNzIENsckRyb3BwYWJsZTxUPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBkcmFnU3RhcnRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBkcmFnTW92ZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIGRyYWdFbmRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBwcml2YXRlIGRyb3BwYWJsZUVsOiBhbnk7XG4gIHByaXZhdGUgY2xpZW50UmVjdDogQ2xpZW50UmVjdDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgZXZlbnRCdXM6IERyYWdBbmREcm9wRXZlbnRCdXNTZXJ2aWNlPFQ+LFxuICAgIHByaXZhdGUgZG9tQWRhcHRlcjogRG9tQWRhcHRlcixcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjJcbiAgKSB7XG4gICAgdGhpcy5kcm9wcGFibGVFbCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIGlzRHJhZ2dhYmxlTWF0Y2ggPSBmYWxzZTtcbiAgcHJpdmF0ZSBfaXNEcmFnZ2FibGVPdmVyID0gZmFsc2U7XG5cbiAgc2V0IGlzRHJhZ2dhYmxlT3Zlcih2YWx1ZTogYm9vbGVhbikge1xuICAgIC8vIFdlIG5lZWQgdG8gYWRkL3JlbW92ZSB0aGlzIGRyYWdnYWJsZS1vdmVyIGNsYXNzIHZpYSBSZW5kZXJlcjJcbiAgICAvLyBiZWNhdXNlIGlzRHJhZ2dhYmxlT3ZlciBpcyBzZXQgb3V0c2lkZSBvZiBOZ1pvbmUuXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZHJvcHBhYmxlRWwsICdkcmFnZ2FibGUtb3ZlcicpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZHJvcHBhYmxlRWwsICdkcmFnZ2FibGUtb3ZlcicpO1xuICAgIH1cbiAgICB0aGlzLl9pc0RyYWdnYWJsZU92ZXIgPSB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgX2dyb3VwOiBzdHJpbmcgfCBzdHJpbmdbXTtcblxuICBASW5wdXQoJ2Nsckdyb3VwJylcbiAgc2V0IGdyb3VwKHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSkge1xuICAgIHRoaXMuX2dyb3VwID0gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIF9kcm9wVG9sZXJhbmNlOiBDbHJEcm9wVG9sZXJhbmNlSW50ZXJmYWNlID0geyB0b3A6IDAsIHJpZ2h0OiAwLCBib3R0b206IDAsIGxlZnQ6IDAgfTtcblxuICBwcml2YXRlIGRyb3BUb2xlcmFuY2VHZW5lcmF0b3IodG9wID0gMCwgcmlnaHQgPSB0b3AsIGJvdHRvbSA9IHRvcCwgbGVmdCA9IHJpZ2h0KTogQ2xyRHJvcFRvbGVyYW5jZUludGVyZmFjZSB7XG4gICAgcmV0dXJuIHsgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0IH07XG4gIH1cblxuICBASW5wdXQoJ2NsckRyb3BUb2xlcmFuY2UnKVxuICBzZXQgZHJvcFRvbGVyYW5jZSh2YWx1ZTogbnVtYmVyIHwgc3RyaW5nIHwgQ2xyRHJvcFRvbGVyYW5jZUludGVyZmFjZSkge1xuICAgIC8vIElmIHVzZXIgcHJvdmlkZXMgYW4gb2JqZWN0IGhlcmUgYW5kIHdhbnRzIHRvIG1hbmlwdWxhdGUvdXBkYXRlIHByb3BlcnRpZXMgaW5kaXZpZHVhbGx5LFxuICAgIC8vIHRoZSBvYmplY3QgbXVzdCBiZSBpbW11dGFibGUgYXMgd2UgZ2VuZXJhdGUgbmV3IG9iamVjdCBiYXNlZCB1c2VyJ3MgZ2l2ZW4gb2JqZWN0LlxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICB0aGlzLl9kcm9wVG9sZXJhbmNlID0gdGhpcy5kcm9wVG9sZXJhbmNlR2VuZXJhdG9yKHZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IHRvbGVyYW5jZVZhbHVlcyA9IHZhbHVlXG4gICAgICAgIC50cmltKClcbiAgICAgICAgLnNwbGl0KC9cXHMrLylcbiAgICAgICAgLm1hcCh0b2xlcmFuY2UgPT4gcGFyc2VJbnQodG9sZXJhbmNlLCAxMCkpO1xuICAgICAgdGhpcy5fZHJvcFRvbGVyYW5jZSA9IHRoaXMuZHJvcFRvbGVyYW5jZUdlbmVyYXRvciguLi50b2xlcmFuY2VWYWx1ZXMpO1xuICAgIH0gZWxzZSBpZiAodmFsdWUpIHtcbiAgICAgIC8vIFRoZSB2YWx1ZSBjb3VsZCBiZSBwYXNzZWQgaW4gYXMge2xlZnQ6IDIwLCB0b3A6IDMwIH1cbiAgICAgIC8vIEluIHRoaXMgY2FzZSwgdGhlIHJlc3Qgb2YgdGhlIGRpcmVjdGlvbiBwcm9wZXJ0aWVzIHNob3VsZCBiZSAwLlxuICAgICAgLy8gVGhhdCdzIHdoeSB3ZSBpbml0aWFsaXplIHByb3BlcnRpZXMgd2l0aCAwIGZpcnN0LCB0aGVuIG92ZXJyaWRlIHdpdGggdXNlcidzIGdpdmVuIHZhbHVlLlxuICAgICAgdGhpcy5fZHJvcFRvbGVyYW5jZSA9IHsgLi4udGhpcy5kcm9wVG9sZXJhbmNlR2VuZXJhdG9yKDApLCAuLi52YWx1ZSB9O1xuICAgIH1cbiAgfVxuXG4gIEBPdXRwdXQoJ2NsckRyYWdTdGFydCcpIGRyYWdTdGFydEVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxDbHJEcmFnRXZlbnQ8VD4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCdjbHJEcmFnTW92ZScpIGRyYWdNb3ZlRW1pdHRlcjogRXZlbnRFbWl0dGVyPENsckRyYWdFdmVudDxUPj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoJ2NsckRyYWdFbmQnKSBkcmFnRW5kRW1pdHRlcjogRXZlbnRFbWl0dGVyPENsckRyYWdFdmVudDxUPj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoJ2NsckRyYWdMZWF2ZScpIGRyYWdMZWF2ZUVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxDbHJEcmFnRXZlbnQ8VD4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCdjbHJEcmFnRW50ZXInKSBkcmFnRW50ZXJFbWl0dGVyOiBFdmVudEVtaXR0ZXI8Q2xyRHJhZ0V2ZW50PFQ+PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgnY2xyRHJvcCcpIGRyb3BFbWl0dGVyOiBFdmVudEVtaXR0ZXI8Q2xyRHJhZ0V2ZW50PFQ+PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwcml2YXRlIHVuc3Vic2NyaWJlRnJvbShzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbik6IHZvaWQge1xuICAgIGlmIChzdWJzY3JpcHRpb24pIHtcbiAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tHcm91cE1hdGNoKGRyYWdnYWJsZUdyb3VwOiBzdHJpbmcgfCBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICAgIC8vIEJvdGggRHJhZ2dhYmxlIGFuZCBEcm9wcGFibGUgaGF2ZSBjbHJHcm91cCBpbnB1dC5cbiAgICAvLyBUaGUgY2xyR3JvdXAgaW5wdXQgY2FuIGJlIGJvdGggYSBzdHJpbmcga2V5IG9yIGFycmF5IG9mIHN0cmluZyBrZXlzIGluIERyYWdnYWJsZSBhbmQgRHJvcHBhYmxlLlxuXG4gICAgLy8gSXQncyBub3QgbWF0Y2ggaWYgRHJhZ2dhYmxlIGhhcyBubyBkZWZpbmVkIHZhbHVlIGFzc2lnbmVkIHRvIGNsckdyb3VwLCBidXQgRHJvcHBhYmxlIGhhcyBhIGRlZmluZWQgY2xyR3JvdXAuXG4gICAgaWYgKCFkcmFnZ2FibGVHcm91cCAmJiB0aGlzLl9ncm91cCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyBUaGUgc2FtZSBpcyB0cnVlIHRoZSBvdGhlciB3YXkgcm91bmQuXG4gICAgaWYgKCF0aGlzLl9ncm91cCAmJiBkcmFnZ2FibGVHcm91cCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIEl0J3MgbWF0Y2ggaWYgYm90aCBEcmFnZ2FibGUgYW5kIERyb3BwYWJsZSBoYXZlIG5vIGFzc2lnbmVkIHZhbHVlIGZvciBjbHJHcm91cC5cbiAgICBpZiAoIXRoaXMuX2dyb3VwICYmICFkcmFnZ2FibGVHcm91cCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gSXQncyBtYXRjaCBpZiBib3RoIERyYWdnYWJsZSBhbmQgRHJvcHBhYmxlIGhhdmUgc2ltcGxlIHN0cmluZyBrZXlzIHRoYXQgYXJlIG1hdGNoaW5nLlxuICAgIC8vIEl0J3MgbWF0Y2ggaWYgRHJhZ2dhYmxlJ3Mgc2ltcGxlIGNsckdyb3VwIGtleSBpcyBtYXRjaGluZyB3aXRoIG9uZSBvZiB0aGUgY2xyR3JvdXAga2V5cyBvZiBEcm9wcGFibGUuIFRoZVxuICAgIC8vIHNhbWUgaXMgdHJ1ZSB0aGUgb3RoZXIgd2F5IHJvdW5kLlxuICAgIC8vIGl0J3MgbWF0Y2ggaWYgb25lIG9mIHRoZSBjbHJHcm91cCBrZXlzIG9mIERyb3BwYWJsZSBpcyBtYXRjaGluZyB3aXRoIG9uZSBvZiB0aGUgY2xyR3JvdXAga2V5cyBvZiBEcmFnZ2FibGUuXG4gICAgaWYgKHR5cGVvZiBkcmFnZ2FibGVHcm91cCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5fZ3JvdXAgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ncm91cCA9PT0gZHJhZ2dhYmxlR3JvdXA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ3JvdXAuaW5kZXhPZihkcmFnZ2FibGVHcm91cCkgPiAtMTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLl9ncm91cCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIGRyYWdnYWJsZUdyb3VwLmluZGV4T2YodGhpcy5fZ3JvdXApID4gLTE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gKHRoaXMuX2dyb3VwIGFzIHN0cmluZ1tdKS5zb21lKGdyb3VwS2V5ID0+IGRyYWdnYWJsZUdyb3VwLmluZGV4T2YoZ3JvdXBLZXkpID4gLTEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNJbkRyb3BBcmVhKHBvaW50OiBEcmFnUG9pbnRQb3NpdGlvbik6IGJvb2xlYW4ge1xuICAgIGlmICghcG9pbnQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY2xpZW50UmVjdCkge1xuICAgICAgdGhpcy5jbGllbnRSZWN0ID0gdGhpcy5kb21BZGFwdGVyLmNsaWVudFJlY3QodGhpcy5kcm9wcGFibGVFbCk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgcG9pbnQucGFnZVggPj0gdGhpcy5jbGllbnRSZWN0LmxlZnQgLSB0aGlzLl9kcm9wVG9sZXJhbmNlLmxlZnQgJiZcbiAgICAgIHBvaW50LnBhZ2VYIDw9IHRoaXMuY2xpZW50UmVjdC5yaWdodCArIHRoaXMuX2Ryb3BUb2xlcmFuY2UucmlnaHQgJiZcbiAgICAgIHBvaW50LnBhZ2VZID49IHRoaXMuY2xpZW50UmVjdC50b3AgLSB0aGlzLl9kcm9wVG9sZXJhbmNlLnRvcCAmJlxuICAgICAgcG9pbnQucGFnZVkgPD0gdGhpcy5jbGllbnRSZWN0LmJvdHRvbSArIHRoaXMuX2Ryb3BUb2xlcmFuY2UuYm90dG9tXG4gICAgKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb25EcmFnU3RhcnQoZHJhZ1N0YXJ0RXZlbnQ6IERyYWdFdmVudEludGVyZmFjZTxUPik6IHZvaWQge1xuICAgIC8vIENoZWNrIGRyYWdnYWJsZSBhbmQgZHJvcHBhYmxlIGhhdmUgYSBtYXRjaGluZyBncm91cCBrZXkuXG4gICAgdGhpcy5pc0RyYWdnYWJsZU1hdGNoID0gdGhpcy5jaGVja0dyb3VwTWF0Y2goZHJhZ1N0YXJ0RXZlbnQuZ3JvdXApO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIGRyYWdNb3ZlZCBhbmQgZHJhZ0VuZGVkIG9ubHkgaWYgZHJhZ2dhYmxlIGFuZCBkcm9wcGFibGUgaGF2ZSBhIG1hdGNoaW5nIGdyb3VwIGtleS5cbiAgICBpZiAodGhpcy5pc0RyYWdnYWJsZU1hdGNoKSB7XG4gICAgICB0aGlzLmRyYWdTdGFydEVtaXR0ZXIuZW1pdChuZXcgQ2xyRHJhZ0V2ZW50KGRyYWdTdGFydEV2ZW50KSk7XG4gICAgICB0aGlzLmRyYWdNb3ZlU3Vic2NyaXB0aW9uID0gdGhpcy5ldmVudEJ1cy5kcmFnTW92ZWQuc3Vic2NyaWJlKChkcmFnTW92ZUV2ZW50OiBEcmFnRXZlbnRJbnRlcmZhY2U8VD4pID0+IHtcbiAgICAgICAgdGhpcy5vbkRyYWdNb3ZlKGRyYWdNb3ZlRXZlbnQpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmRyYWdFbmRTdWJzY3JpcHRpb24gPSB0aGlzLmV2ZW50QnVzLmRyYWdFbmRlZC5zdWJzY3JpYmUoKGRyYWdFbmRFdmVudDogRHJhZ0V2ZW50SW50ZXJmYWNlPFQ+KSA9PiB7XG4gICAgICAgIHRoaXMub25EcmFnRW5kKGRyYWdFbmRFdmVudCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG9uRHJhZ01vdmUoZHJhZ01vdmVFdmVudDogRHJhZ0V2ZW50SW50ZXJmYWNlPFQ+KTogdm9pZCB7XG4gICAgY29uc3QgaXNJbkRyb3BBcmVhID0gdGhpcy5pc0luRHJvcEFyZWEoZHJhZ01vdmVFdmVudC5kcm9wUG9pbnRQb3NpdGlvbik7XG4gICAgaWYgKCF0aGlzLl9pc0RyYWdnYWJsZU92ZXIgJiYgaXNJbkRyb3BBcmVhKSB7XG4gICAgICB0aGlzLmlzRHJhZ2dhYmxlT3ZlciA9IHRydWU7XG4gICAgICBjb25zdCBkcmFnRW50ZXJFdmVudCA9IHsgLi4uZHJhZ01vdmVFdmVudCwgdHlwZTogRHJhZ0V2ZW50VHlwZS5EUkFHX0VOVEVSIH07XG4gICAgICB0aGlzLmV2ZW50QnVzLmJyb2FkY2FzdChkcmFnRW50ZXJFdmVudCk7XG4gICAgICB0aGlzLmRyYWdFbnRlckVtaXR0ZXIuZW1pdChuZXcgQ2xyRHJhZ0V2ZW50KGRyYWdFbnRlckV2ZW50KSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9pc0RyYWdnYWJsZU92ZXIgJiYgIWlzSW5Ecm9wQXJlYSkge1xuICAgICAgdGhpcy5pc0RyYWdnYWJsZU92ZXIgPSBmYWxzZTtcbiAgICAgIGNvbnN0IGRyYWdMZWF2ZUV2ZW50ID0geyAuLi5kcmFnTW92ZUV2ZW50LCB0eXBlOiBEcmFnRXZlbnRUeXBlLkRSQUdfTEVBVkUgfTtcbiAgICAgIHRoaXMuZXZlbnRCdXMuYnJvYWRjYXN0KGRyYWdMZWF2ZUV2ZW50KTtcbiAgICAgIHRoaXMuZHJhZ0xlYXZlRW1pdHRlci5lbWl0KG5ldyBDbHJEcmFnRXZlbnQoZHJhZ0xlYXZlRXZlbnQpKTtcbiAgICB9XG5cbiAgICB0aGlzLmRyYWdNb3ZlRW1pdHRlci5lbWl0KG5ldyBDbHJEcmFnRXZlbnQoZHJhZ01vdmVFdmVudCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkRyYWdFbmQoZHJhZ0VuZEV2ZW50OiBEcmFnRXZlbnRJbnRlcmZhY2U8VD4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faXNEcmFnZ2FibGVPdmVyKSB7XG4gICAgICBpZiAoZHJhZ0VuZEV2ZW50Lmdob3N0RWxlbWVudCkge1xuICAgICAgICAvLyBCeSB0aGlzIHBvaW50LCB0aGUgZHJhZ2dhYmxlIGdob3N0IGNvbXBvbmVudCBpcyBkZXN0cm95ZWQsXG4gICAgICAgIC8vIGJ1dCB0aGUgZWxlbWVudCB3b3VsZCBiZSBhY3RpdmUgdW50aWwgaXRzIGFuaW1hdGlvbiBjb21wbGV0ZXMuXG4gICAgICAgIC8vIEFzIHN1Y2gsIG9uY2UgdGhlIGdob3N0IGlzIGRyb3BwZWQgb3Zlciwgd2Ugd2lsbCBnaXZlIGl0IFwiZHJvcHBlZFwiIGNsYXNzLlxuXG4gICAgICAgIC8vIFRoaXMgcHJvY2VzcyBjYW5ub3QgYmUgZG9uZSBpbiB0aGUgZ2hvc3QgY29tcG9uZW50XG4gICAgICAgIC8vIGJlY2F1c2UgYW55IHN1YnNjcmlwdGlvbiB0byB0aGUgZHJvcCBldmVudCBpcyBpbmVmZmVjdGl2ZSBvciBpbnZhbGlkXG4gICAgICAgIC8vIGFzIHRoZSBjb21wb25lbnQgaGFkIGJlZW4gYWxyZWFkeSBkZXN0cm95ZWQuXG4gICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoZHJhZ0VuZEV2ZW50Lmdob3N0RWxlbWVudCwgJ2Ryb3BwZWQnKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZHJvcEV2ZW50ID0geyAuLi5kcmFnRW5kRXZlbnQsIHR5cGU6IERyYWdFdmVudFR5cGUuRFJPUCB9O1xuICAgICAgdGhpcy5ldmVudEJ1cy5icm9hZGNhc3QoZHJvcEV2ZW50KTtcbiAgICAgIHRoaXMuZHJvcEVtaXR0ZXIuZW1pdChuZXcgQ2xyRHJhZ0V2ZW50KGRyb3BFdmVudCkpO1xuICAgICAgdGhpcy5pc0RyYWdnYWJsZU92ZXIgPSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5kcmFnRW5kRW1pdHRlci5lbWl0KG5ldyBDbHJEcmFnRXZlbnQoZHJhZ0VuZEV2ZW50KSk7XG4gICAgdGhpcy51bnN1YnNjcmliZUZyb20odGhpcy5kcmFnTW92ZVN1YnNjcmlwdGlvbik7XG4gICAgdGhpcy51bnN1YnNjcmliZUZyb20odGhpcy5kcmFnRW5kU3Vic2NyaXB0aW9uKTtcbiAgICB0aGlzLmlzRHJhZ2dhYmxlTWF0Y2ggPSBmYWxzZTtcbiAgICBkZWxldGUgdGhpcy5jbGllbnRSZWN0O1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5kcmFnU3RhcnRTdWJzY3JpcHRpb24gPSB0aGlzLmV2ZW50QnVzLmRyYWdTdGFydGVkLnN1YnNjcmliZSgoZHJhZ1N0YXJ0RXZlbnQ6IERyYWdFdmVudEludGVyZmFjZTxUPikgPT4ge1xuICAgICAgdGhpcy5vbkRyYWdTdGFydChkcmFnU3RhcnRFdmVudCk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlRnJvbSh0aGlzLmRyYWdTdGFydFN1YnNjcmlwdGlvbik7XG4gICAgdGhpcy51bnN1YnNjcmliZUZyb20odGhpcy5kcmFnTW92ZVN1YnNjcmlwdGlvbik7XG4gICAgdGhpcy51bnN1YnNjcmliZUZyb20odGhpcy5kcmFnRW5kU3Vic2NyaXB0aW9uKTtcbiAgfVxufVxuIl19