ngx-edu-sharing-ui 0.7.0 → 9.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (367) hide show
  1. package/assets/scss/mixins.scss +4 -1
  2. package/assets/scss/variables.scss +3 -0
  3. package/esm2022/lib/actionbar/actionbar.component.mjs +188 -0
  4. package/esm2022/lib/common/edu-sharing-ui-common.module.mjs +134 -0
  5. package/esm2022/lib/directives/border-box-observer.directive.mjs +71 -0
  6. package/esm2022/lib/directives/check-text-overflow.directive.mjs +65 -0
  7. package/esm2022/lib/directives/drag-nodes/drag-nodes.mjs +14 -0
  8. package/esm2022/lib/directives/drag-nodes/nodes-drag-source.directive.mjs +79 -0
  9. package/esm2022/lib/directives/drag-nodes/nodes-drag.directive.mjs +49 -0
  10. package/esm2022/lib/directives/drag-nodes/nodes-drop-target.directive.mjs +105 -0
  11. package/esm2022/lib/directives/focus-state.directive.mjs +44 -0
  12. package/esm2022/lib/directives/icon.directive.mjs +139 -0
  13. package/esm2022/lib/dropdown/dropdown.component.mjs +70 -0
  14. package/esm2022/lib/edu-sharing-ui-configuration.mjs +41 -0
  15. package/esm2022/lib/edu-sharing-ui.module.mjs +78 -0
  16. package/esm2022/lib/list-items/available-widgets.mjs +27 -0
  17. package/esm2022/lib/list-items/format-duration.pipe.mjs +20 -0
  18. package/esm2022/lib/list-items/list-base/list-base.component.mjs +46 -0
  19. package/esm2022/lib/list-items/list-collection-info/list-collection-info.component.mjs +29 -0
  20. package/esm2022/lib/list-items/list-counts/list-counts.component.mjs +54 -0
  21. package/esm2022/lib/list-items/list-items.module.mjs +50 -0
  22. package/esm2022/lib/list-items/list-node-license/list-node-license.component.mjs +41 -0
  23. package/esm2022/lib/list-items/list-node-replication-source/list-node-replication-source.component.mjs +47 -0
  24. package/esm2022/lib/list-items/list-node-workflow/list-node-workflow.component.mjs +24 -0
  25. package/esm2022/lib/list-items/list-text/list-text.component.mjs +106 -0
  26. package/esm2022/lib/list-items/list-widget.mjs +49 -0
  27. package/esm2022/lib/list-items/node-row/node-row.component.mjs +24 -0
  28. package/esm2022/lib/list-items/node-source.pipe.mjs +49 -0
  29. package/esm2022/lib/node-entries/combined-data-source.mjs +41 -0
  30. package/esm2022/lib/node-entries/custom-templates-data-source.mjs +7 -0
  31. package/esm2022/lib/node-entries/drag-preview/drag-preview.component.mjs +21 -0
  32. package/esm2022/lib/node-entries/entries-model.mjs +23 -0
  33. package/esm2022/lib/node-entries/items-cap.mjs +47 -0
  34. package/esm2022/lib/node-entries/list-item-label.pipe.mjs +34 -0
  35. package/esm2022/lib/node-entries/node-cache.mjs +65 -0
  36. package/esm2022/lib/node-entries/node-data-source-remote.mjs +4 -0
  37. package/esm2022/lib/node-entries/node-data-source.mjs +115 -0
  38. package/esm2022/lib/node-entries/node-entries-card/node-entries-card.component.mjs +131 -0
  39. package/esm2022/lib/node-entries/node-entries-card-grid/node-entries-card-grid.component.mjs +307 -0
  40. package/esm2022/lib/node-entries/node-entries-card-small/node-entries-card-small.component.mjs +45 -0
  41. package/esm2022/lib/node-entries/node-entries-global-options/node-entries-global-options.component.mjs +23 -0
  42. package/esm2022/lib/node-entries/node-entries-global.service.mjs +58 -0
  43. package/esm2022/lib/node-entries/node-entries-table/column-chooser/column-chooser.component.mjs +42 -0
  44. package/esm2022/lib/node-entries/node-entries-table/node-entries-table.component.mjs +290 -0
  45. package/esm2022/lib/node-entries/node-entries-templates.service.mjs +11 -0
  46. package/esm2022/lib/node-entries/node-entries-wrapper.component.mjs +324 -0
  47. package/esm2022/lib/node-entries/node-entries.component.mjs +131 -0
  48. package/esm2022/lib/node-entries/node-entries.module.mjs +161 -0
  49. package/esm2022/lib/node-entries/node-rating/node-rating.component.mjs +102 -0
  50. package/esm2022/lib/node-entries/node-stats-badges/node-stats-badges.component.mjs +48 -0
  51. package/esm2022/lib/node-entries/node-type-badge/node-type-badge.component.mjs +36 -0
  52. package/esm2022/lib/node-entries/option-button/option-button.component.mjs +62 -0
  53. package/esm2022/lib/node-entries/preview-image/preview-image.component.mjs +53 -0
  54. package/esm2022/lib/node-entries/sort-select-panel/sort-select-panel.component.mjs +41 -0
  55. package/esm2022/lib/node-url/node-url.component.mjs +128 -0
  56. package/esm2022/lib/pipes/file-size.pipe.mjs +31 -0
  57. package/esm2022/lib/pipes/format-date.pipe.mjs +38 -0
  58. package/esm2022/lib/pipes/node-icon.pipe.mjs +18 -0
  59. package/esm2022/lib/pipes/node-image-size.pipe.mjs +24 -0
  60. package/esm2022/lib/pipes/node-image.pipe.mjs +55 -0
  61. package/esm2022/lib/pipes/node-person-name.pipe.mjs +50 -0
  62. package/esm2022/lib/pipes/node-title.pipe.mjs +19 -0
  63. package/esm2022/lib/pipes/option-tooltip.pipe.mjs +33 -0
  64. package/esm2022/lib/pipes/replace-chars.pipe.mjs +29 -0
  65. package/esm2022/lib/pipes/vcard-name.pipe.mjs +19 -0
  66. package/esm2022/lib/services/abstract/app.service.mjs +3 -0
  67. package/esm2022/lib/services/abstract/keyboard-shortcuts.service.mjs +10 -0
  68. package/esm2022/lib/services/abstract/options-helper.service.mjs +3 -0
  69. package/esm2022/lib/services/abstract/toast.service.mjs +3 -0
  70. package/esm2022/lib/services/accessibility.service.mjs +73 -0
  71. package/esm2022/lib/services/local-events.service.mjs +36 -0
  72. package/esm2022/lib/services/node-entries.service.mjs +137 -0
  73. package/esm2022/lib/services/node-helper.service.mjs +234 -0
  74. package/esm2022/lib/services/nodes-drag-drop.service.mjs +155 -0
  75. package/esm2022/lib/services/options-helper-data.service.mjs +134 -0
  76. package/esm2022/lib/services/repo-url.service.mjs +49 -0
  77. package/esm2022/lib/services/temporary-storage.service.mjs +48 -0
  78. package/esm2022/lib/services/ui.service.mjs +162 -0
  79. package/esm2022/lib/sort-dropdown/sort-dropdown.component.mjs +50 -0
  80. package/esm2022/lib/spinner/spinner.component.mjs +18 -0
  81. package/esm2022/lib/translations/fallback-translation-handler.mjs +6 -0
  82. package/esm2022/lib/translations/languages.mjs +5 -0
  83. package/esm2022/lib/translations/translation-loader.mjs +149 -0
  84. package/esm2022/lib/translations/translation-source.mjs +11 -0
  85. package/esm2022/lib/translations/translations.module.mjs +67 -0
  86. package/esm2022/lib/translations/translations.service.mjs +171 -0
  87. package/esm2022/lib/types/accessibillity.mjs +19 -0
  88. package/esm2022/lib/types/api-models.mjs +2 -0
  89. package/esm2022/lib/types/drag-drop.mjs +2 -0
  90. package/esm2022/lib/types/keyboard-shortcuts.mjs +11 -0
  91. package/esm2022/lib/types/list-item.mjs +41 -0
  92. package/esm2022/lib/types/option-item.mjs +174 -0
  93. package/esm2022/lib/types/workflow.mjs +25 -0
  94. package/esm2022/lib/util/DateHelper.mjs +200 -0
  95. package/esm2022/lib/util/VCard.mjs +278 -0
  96. package/esm2022/lib/util/color-helper.mjs +124 -0
  97. package/esm2022/lib/util/duration-helper.mjs +102 -0
  98. package/esm2022/lib/util/functions.mjs +13 -0
  99. package/esm2022/lib/util/helper.mjs +64 -0
  100. package/esm2022/lib/util/isNumeric.mjs +11 -0
  101. package/esm2022/lib/util/rest-helper.mjs +33 -0
  102. package/esm2022/lib/util/ui-animation.mjs +146 -0
  103. package/esm2022/lib/util/ui-constants.mjs +21 -0
  104. package/esm2022/module.mjs +76 -0
  105. package/esm2022/ngx-edu-sharing-ui.mjs +5 -0
  106. package/fesm2022/ngx-edu-sharing-ui.mjs +6509 -0
  107. package/fesm2022/ngx-edu-sharing-ui.mjs.map +1 -0
  108. package/index.d.ts +5 -0
  109. package/lib/actionbar/actionbar.component.d.ts +74 -0
  110. package/lib/common/edu-sharing-ui-common.module.d.ts +32 -0
  111. package/lib/directives/border-box-observer.directive.d.ts +31 -0
  112. package/lib/directives/check-text-overflow.directive.d.ts +20 -0
  113. package/lib/directives/drag-nodes/drag-nodes.d.ts +16 -0
  114. package/lib/directives/drag-nodes/nodes-drag-source.directive.d.ts +37 -0
  115. package/lib/directives/drag-nodes/nodes-drag.directive.d.ts +17 -0
  116. package/lib/directives/drag-nodes/nodes-drop-target.directive.d.ts +22 -0
  117. package/lib/directives/focus-state.directive.d.ts +14 -0
  118. package/lib/directives/icon.directive.d.ts +46 -0
  119. package/lib/dropdown/dropdown.component.d.ts +40 -0
  120. package/lib/edu-sharing-ui-configuration.d.ts +11 -0
  121. package/lib/edu-sharing-ui.module.d.ts +19 -0
  122. package/lib/list-items/available-widgets.d.ts +13 -0
  123. package/lib/list-items/format-duration.pipe.d.ts +10 -0
  124. package/lib/list-items/list-base/list-base.component.d.ts +18 -0
  125. package/lib/list-items/list-collection-info/list-collection-info.component.d.ts +14 -0
  126. package/lib/list-items/list-counts/list-counts.component.d.ts +13 -0
  127. package/lib/list-items/list-items.module.d.ts +20 -0
  128. package/lib/list-items/list-node-license/list-node-license.component.d.ts +20 -0
  129. package/lib/list-items/list-node-replication-source/list-node-replication-source.component.d.ts +22 -0
  130. package/lib/list-items/list-node-workflow/list-node-workflow.component.d.ts +12 -0
  131. package/lib/list-items/list-text/list-text.component.d.ts +28 -0
  132. package/lib/list-items/list-widget.d.ts +32 -0
  133. package/lib/list-items/node-row/node-row.component.d.ts +12 -0
  134. package/lib/list-items/node-source.pipe.d.ts +16 -0
  135. package/lib/node-entries/combined-data-source.d.ts +19 -0
  136. package/{src/lib/node-entries/custom-templates-data-source.ts → lib/node-entries/custom-templates-data-source.d.ts} +2 -2
  137. package/lib/node-entries/drag-preview/drag-preview.component.d.ts +11 -0
  138. package/{src/lib/node-entries/entries-model.ts → lib/node-entries/entries-model.d.ts} +19 -47
  139. package/lib/node-entries/items-cap.d.ts +17 -0
  140. package/lib/node-entries/list-item-label.pipe.d.ts +14 -0
  141. package/lib/node-entries/node-cache.d.ts +17 -0
  142. package/{src/lib/node-entries/node-data-source-remote.ts → lib/node-entries/node-data-source-remote.d.ts} +2 -12
  143. package/lib/node-entries/node-data-source.d.ts +42 -0
  144. package/lib/node-entries/node-entries-card/node-entries-card.component.d.ts +45 -0
  145. package/lib/node-entries/node-entries-card-grid/node-entries-card-grid.component.d.ts +92 -0
  146. package/lib/node-entries/node-entries-card-small/node-entries-card-small.component.d.ts +23 -0
  147. package/lib/node-entries/node-entries-global-options/node-entries-global-options.component.d.ts +12 -0
  148. package/lib/node-entries/node-entries-global.service.d.ts +50 -0
  149. package/lib/node-entries/node-entries-table/column-chooser/column-chooser.component.d.ts +17 -0
  150. package/lib/node-entries/node-entries-table/node-entries-table.component.d.ts +76 -0
  151. package/{src/lib/node-entries/node-entries-templates.service.ts → lib/node-entries/node-entries-templates.service.d.ts} +6 -9
  152. package/lib/node-entries/node-entries-wrapper.component.d.ts +129 -0
  153. package/lib/node-entries/node-entries.component.d.ts +32 -0
  154. package/lib/node-entries/node-entries.module.d.ts +43 -0
  155. package/lib/node-entries/node-rating/node-rating.component.d.ts +26 -0
  156. package/lib/node-entries/node-stats-badges/node-stats-badges.component.d.ts +17 -0
  157. package/lib/node-entries/node-type-badge/node-type-badge.component.d.ts +21 -0
  158. package/lib/node-entries/option-button/option-button.component.d.ts +11 -0
  159. package/lib/node-entries/preview-image/preview-image.component.d.ts +22 -0
  160. package/lib/node-entries/sort-select-panel/sort-select-panel.component.d.ts +16 -0
  161. package/lib/node-url/node-url.component.d.ts +51 -0
  162. package/lib/pipes/file-size.pipe.d.ts +10 -0
  163. package/lib/pipes/format-date.pipe.d.ts +21 -0
  164. package/lib/pipes/node-icon.pipe.d.ts +11 -0
  165. package/lib/pipes/node-image-size.pipe.d.ts +8 -0
  166. package/lib/pipes/node-image.pipe.d.ts +28 -0
  167. package/lib/pipes/node-person-name.pipe.d.ts +10 -0
  168. package/lib/pipes/node-title.pipe.d.ts +11 -0
  169. package/lib/pipes/option-tooltip.pipe.d.ts +12 -0
  170. package/lib/pipes/replace-chars.pipe.d.ts +10 -0
  171. package/lib/pipes/vcard-name.pipe.d.ts +10 -0
  172. package/{src/lib/services/abstract/app.service.ts → lib/services/abstract/app.service.d.ts} +1 -1
  173. package/lib/services/abstract/keyboard-shortcuts.service.d.ts +11 -0
  174. package/lib/services/abstract/options-helper.service.d.ts +10 -0
  175. package/{src/lib/services/abstract/toast.service.ts → lib/services/abstract/toast.service.d.ts} +1 -2
  176. package/lib/services/accessibility.service.d.ts +18 -0
  177. package/{src/lib/services/local-events.service.ts → lib/services/local-events.service.d.ts} +7 -10
  178. package/lib/services/node-entries.service.d.ts +69 -0
  179. package/lib/services/node-helper.service.d.ts +56 -0
  180. package/lib/services/nodes-drag-drop.service.d.ts +41 -0
  181. package/lib/services/options-helper-data.service.d.ts +75 -0
  182. package/lib/services/repo-url.service.d.ts +25 -0
  183. package/lib/services/temporary-storage.service.d.ts +35 -0
  184. package/lib/services/ui.service.d.ts +41 -0
  185. package/lib/sort-dropdown/sort-dropdown.component.d.ts +15 -0
  186. package/lib/spinner/spinner.component.d.ts +7 -0
  187. package/lib/translations/fallback-translation-handler.d.ts +4 -0
  188. package/lib/translations/languages.d.ts +4 -0
  189. package/lib/translations/translation-loader.d.ts +51 -0
  190. package/{src/lib/translations/translation-source.ts → lib/translations/translation-source.d.ts} +4 -4
  191. package/lib/translations/translations.module.d.ts +15 -0
  192. package/lib/translations/translations.service.d.ts +30 -0
  193. package/lib/types/accessibillity.d.ts +15 -0
  194. package/{src/lib/types/drag-drop.ts → lib/types/drag-drop.d.ts} +0 -3
  195. package/lib/types/keyboard-shortcuts.d.ts +10 -0
  196. package/lib/types/list-item.d.ts +55 -0
  197. package/lib/types/option-item.d.ts +236 -0
  198. package/lib/types/workflow.d.ts +14 -0
  199. package/lib/util/DateHelper.d.ts +44 -0
  200. package/lib/util/VCard.d.ts +66 -0
  201. package/lib/util/color-helper.d.ts +25 -0
  202. package/lib/util/duration-helper.d.ts +14 -0
  203. package/lib/util/functions.d.ts +4 -0
  204. package/lib/util/helper.d.ts +20 -0
  205. package/lib/util/isNumeric.d.ts +5 -0
  206. package/lib/util/rest-helper.d.ts +10 -0
  207. package/lib/util/ui-animation.d.ts +39 -0
  208. package/lib/util/ui-constants.d.ts +18 -0
  209. package/{src/module.ts → module.d.ts} +0 -4
  210. package/package.json +22 -8
  211. package/.browserslistrc +0 -16
  212. package/.eslintrc.json +0 -44
  213. package/karma.conf.js +0 -42
  214. package/ng-package.json +0 -10
  215. package/src/lib/actionbar/actionbar.component.html +0 -59
  216. package/src/lib/actionbar/actionbar.component.scss +0 -123
  217. package/src/lib/actionbar/actionbar.component.ts +0 -174
  218. package/src/lib/common/edu-sharing-ui-common.module.ts +0 -80
  219. package/src/lib/directives/border-box-observer.directive.ts +0 -75
  220. package/src/lib/directives/check-text-overflow.directive.ts +0 -61
  221. package/src/lib/directives/drag-nodes/drag-nodes.ts +0 -32
  222. package/src/lib/directives/drag-nodes/nodes-drag-source.directive.ts +0 -79
  223. package/src/lib/directives/drag-nodes/nodes-drag.directive.ts +0 -43
  224. package/src/lib/directives/drag-nodes/nodes-drop-target.directive.ts +0 -116
  225. package/src/lib/directives/focus-state.directive.ts +0 -34
  226. package/src/lib/directives/icon.directive.ts +0 -142
  227. package/src/lib/directives/nodes-drop-target-legacy.directive.ts +0 -155
  228. package/src/lib/dropdown/dropdown.component.html +0 -32
  229. package/src/lib/dropdown/dropdown.component.scss +0 -67
  230. package/src/lib/dropdown/dropdown.component.ts +0 -71
  231. package/src/lib/edu-sharing-ui-configuration.ts +0 -47
  232. package/src/lib/edu-sharing-ui.module.ts +0 -49
  233. package/src/lib/list-items/available-widgets.ts +0 -30
  234. package/src/lib/list-items/format-duration.pipe.ts +0 -17
  235. package/src/lib/list-items/list-base/list-base.component.html +0 -52
  236. package/src/lib/list-items/list-base/list-base.component.ts +0 -44
  237. package/src/lib/list-items/list-collection-info/list-collection-info.component.html +0 -48
  238. package/src/lib/list-items/list-collection-info/list-collection-info.component.scss +0 -8
  239. package/src/lib/list-items/list-collection-info/list-collection-info.component.ts +0 -24
  240. package/src/lib/list-items/list-counts/list-counts.component.html +0 -1
  241. package/src/lib/list-items/list-counts/list-counts.component.scss +0 -3
  242. package/src/lib/list-items/list-counts/list-counts.component.ts +0 -59
  243. package/src/lib/list-items/list-items.module.ts +0 -33
  244. package/src/lib/list-items/list-node-license/list-node-license.component.html +0 -8
  245. package/src/lib/list-items/list-node-license/list-node-license.component.ts +0 -47
  246. package/src/lib/list-items/list-node-replication-source/list-node-replication-source.component.html +0 -11
  247. package/src/lib/list-items/list-node-replication-source/list-node-replication-source.component.ts +0 -60
  248. package/src/lib/list-items/list-node-workflow/list-node-workflow.component.html +0 -3
  249. package/src/lib/list-items/list-node-workflow/list-node-workflow.component.ts +0 -21
  250. package/src/lib/list-items/list-text/list-text.component.html +0 -176
  251. package/src/lib/list-items/list-text/list-text.component.scss +0 -3
  252. package/src/lib/list-items/list-text/list-text.component.ts +0 -107
  253. package/src/lib/list-items/list-widget.ts +0 -52
  254. package/src/lib/list-items/node-row/node-row.component.html +0 -31
  255. package/src/lib/list-items/node-row/node-row.component.scss +0 -50
  256. package/src/lib/list-items/node-row/node-row.component.ts +0 -16
  257. package/src/lib/list-items/node-source.pipe.ts +0 -48
  258. package/src/lib/node-entries/combined-data-source.ts +0 -51
  259. package/src/lib/node-entries/drag-preview/drag-preview.component.html +0 -6
  260. package/src/lib/node-entries/drag-preview/drag-preview.component.scss +0 -35
  261. package/src/lib/node-entries/drag-preview/drag-preview.component.ts +0 -15
  262. package/src/lib/node-entries/items-cap.ts +0 -54
  263. package/src/lib/node-entries/list-item-label.pipe.ts +0 -28
  264. package/src/lib/node-entries/mixins.scss +0 -23
  265. package/src/lib/node-entries/node-cache.spec.ts +0 -199
  266. package/src/lib/node-entries/node-cache.ts +0 -81
  267. package/src/lib/node-entries/node-data-source.ts +0 -148
  268. package/src/lib/node-entries/node-entries-card/node-entries-card.component.html +0 -167
  269. package/src/lib/node-entries/node-entries-card/node-entries-card.component.scss +0 -28
  270. package/src/lib/node-entries/node-entries-card/node-entries-card.component.ts +0 -132
  271. package/src/lib/node-entries/node-entries-card/node-entries-card.main.scss +0 -261
  272. package/src/lib/node-entries/node-entries-card-grid/node-entries-card-grid.component.html +0 -205
  273. package/src/lib/node-entries/node-entries-card-grid/node-entries-card-grid.component.scss +0 -181
  274. package/src/lib/node-entries/node-entries-card-grid/node-entries-card-grid.component.ts +0 -361
  275. package/src/lib/node-entries/node-entries-card-small/node-entries-card-small.component.html +0 -100
  276. package/src/lib/node-entries/node-entries-card-small/node-entries-card-small.component.scss +0 -46
  277. package/src/lib/node-entries/node-entries-card-small/node-entries-card-small.component.ts +0 -40
  278. package/src/lib/node-entries/node-entries-global-options/node-entries-global-options.component.html +0 -23
  279. package/src/lib/node-entries/node-entries-global-options/node-entries-global-options.component.scss +0 -58
  280. package/src/lib/node-entries/node-entries-global-options/node-entries-global-options.component.ts +0 -16
  281. package/src/lib/node-entries/node-entries-global.service.ts +0 -79
  282. package/src/lib/node-entries/node-entries-table/column-chooser/column-chooser.component.html +0 -25
  283. package/src/lib/node-entries/node-entries-table/column-chooser/column-chooser.component.scss +0 -32
  284. package/src/lib/node-entries/node-entries-table/column-chooser/column-chooser.component.ts +0 -31
  285. package/src/lib/node-entries/node-entries-table/node-entries-table.component.html +0 -270
  286. package/src/lib/node-entries/node-entries-table/node-entries-table.component.scss +0 -169
  287. package/src/lib/node-entries/node-entries-table/node-entries-table.component.ts +0 -333
  288. package/src/lib/node-entries/node-entries-wrapper.component.ts +0 -363
  289. package/src/lib/node-entries/node-entries.component.html +0 -33
  290. package/src/lib/node-entries/node-entries.component.scss +0 -13
  291. package/src/lib/node-entries/node-entries.component.ts +0 -151
  292. package/src/lib/node-entries/node-entries.module.ts +0 -93
  293. package/src/lib/node-entries/node-rating/node-rating.component.html +0 -53
  294. package/src/lib/node-entries/node-rating/node-rating.component.scss +0 -31
  295. package/src/lib/node-entries/node-rating/node-rating.component.ts +0 -105
  296. package/src/lib/node-entries/node-stats-badges/node-stats-badges.component.html +0 -39
  297. package/src/lib/node-entries/node-stats-badges/node-stats-badges.component.scss +0 -44
  298. package/src/lib/node-entries/node-stats-badges/node-stats-badges.component.ts +0 -43
  299. package/src/lib/node-entries/node-type-badge/node-type-badge.component.html +0 -31
  300. package/src/lib/node-entries/node-type-badge/node-type-badge.component.scss +0 -5
  301. package/src/lib/node-entries/node-type-badge/node-type-badge.component.ts +0 -36
  302. package/src/lib/node-entries/option-button/option-button.component.ts +0 -42
  303. package/src/lib/node-entries/preview-image/preview-image.component.html +0 -19
  304. package/src/lib/node-entries/preview-image/preview-image.component.scss +0 -31
  305. package/src/lib/node-entries/preview-image/preview-image.component.ts +0 -47
  306. package/src/lib/node-entries/sort-select-panel/sort-select-panel.component.html +0 -27
  307. package/src/lib/node-entries/sort-select-panel/sort-select-panel.component.scss +0 -9
  308. package/src/lib/node-entries/sort-select-panel/sort-select-panel.component.ts +0 -26
  309. package/src/lib/node-url/node-url.component.html +0 -66
  310. package/src/lib/node-url/node-url.component.scss +0 -32
  311. package/src/lib/node-url/node-url.component.ts +0 -136
  312. package/src/lib/pipes/file-size.pipe.ts +0 -24
  313. package/src/lib/pipes/format-date.pipe.ts +0 -39
  314. package/src/lib/pipes/node-icon.pipe.ts +0 -11
  315. package/src/lib/pipes/node-image-size.pipe.ts +0 -18
  316. package/src/lib/pipes/node-image.pipe.ts +0 -71
  317. package/src/lib/pipes/node-person-name.pipe.ts +0 -41
  318. package/src/lib/pipes/node-title.pipe.ts +0 -12
  319. package/src/lib/pipes/option-tooltip.pipe.ts +0 -32
  320. package/src/lib/pipes/replace-chars.pipe.ts +0 -21
  321. package/src/lib/pipes/vcard-name.pipe.ts +0 -11
  322. package/src/lib/services/abstract/keyboard-shortcuts.service.ts +0 -10
  323. package/src/lib/services/abstract/options-helper.service.ts +0 -29
  324. package/src/lib/services/accessibility.service.ts +0 -101
  325. package/src/lib/services/node-entries.service.ts +0 -172
  326. package/src/lib/services/node-helper.service.ts +0 -239
  327. package/src/lib/services/nodes-drag-drop.service.ts +0 -165
  328. package/src/lib/services/options-helper-data.service.ts +0 -186
  329. package/src/lib/services/repo-url.service.ts +0 -46
  330. package/src/lib/services/temporary-storage.service.ts +0 -58
  331. package/src/lib/services/ui.service.ts +0 -182
  332. package/src/lib/sort-dropdown/sort-dropdown.component.html +0 -22
  333. package/src/lib/sort-dropdown/sort-dropdown.component.scss +0 -47
  334. package/src/lib/sort-dropdown/sort-dropdown.component.ts +0 -42
  335. package/src/lib/spinner/spinner.component.html +0 -14
  336. package/src/lib/spinner/spinner.component.scss +0 -141
  337. package/src/lib/spinner/spinner.component.ts +0 -12
  338. package/src/lib/translations/README.md +0 -44
  339. package/src/lib/translations/fallback-translation-handler.ts +0 -7
  340. package/src/lib/translations/languages.ts +0 -6
  341. package/src/lib/translations/translation-loader.spec.ts +0 -352
  342. package/src/lib/translations/translation-loader.ts +0 -189
  343. package/src/lib/translations/translations.module.ts +0 -49
  344. package/src/lib/translations/translations.service.spec.ts +0 -152
  345. package/src/lib/translations/translations.service.ts +0 -188
  346. package/src/lib/types/accessibillity.ts +0 -15
  347. package/src/lib/types/keyboard-shortcuts.ts +0 -29
  348. package/src/lib/types/list-item.ts +0 -67
  349. package/src/lib/types/option-item.ts +0 -247
  350. package/src/lib/types/workflow.ts +0 -35
  351. package/src/lib/util/DateHelper.spec.ts +0 -112
  352. package/src/lib/util/DateHelper.ts +0 -197
  353. package/src/lib/util/VCard.ts +0 -277
  354. package/src/lib/util/color-helper.ts +0 -125
  355. package/src/lib/util/duration-helper.spec.ts +0 -35
  356. package/src/lib/util/duration-helper.ts +0 -98
  357. package/src/lib/util/functions.ts +0 -15
  358. package/src/lib/util/helper.ts +0 -60
  359. package/src/lib/util/isNumeric.ts +0 -13
  360. package/src/lib/util/rest-helper.ts +0 -28
  361. package/src/lib/util/ui-animation.ts +0 -154
  362. package/src/lib/util/ui-constants.ts +0 -20
  363. package/src/test.ts +0 -28
  364. package/tsconfig.lib.json +0 -15
  365. package/tsconfig.lib.prod.json +0 -10
  366. package/tsconfig.spec.json +0 -17
  367. /package/{src/lib/types/api-models.ts → lib/types/api-models.d.ts} +0 -0
@@ -0,0 +1,79 @@
1
+ import { Directive, EventEmitter, HostListener, Input, Output, } from '@angular/core';
2
+ import { clearDraggedNodes, dragNodesTransferType, saveDraggedNodes } from './drag-nodes';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * Handle dragging and dropping of node elements.
6
+ *
7
+ * Use in combination with `NodesDropTargetDirective`.
8
+ *
9
+ * When nodes that set this directive are dragged, we save information about
10
+ * these nodes that can be used by `NodesDropTargetDirective`.
11
+ */
12
+ export class NodesDragSourceDirective {
13
+ constructor(elementRef) {
14
+ this.elementRef = elementRef;
15
+ /**
16
+ * Triggered when processing the dragstart event.
17
+ *
18
+ * Changes to `nodes` performed by event handlers of `nodesDragStart` will
19
+ * be taken into account for the drag operation.
20
+ */
21
+ this.nodesDragStart = new EventEmitter(false);
22
+ /**
23
+ * Triggered when processing the dragend event.
24
+ */
25
+ this.nodesDragEnd = new EventEmitter();
26
+ }
27
+ ngOnChanges(changes) {
28
+ // Set the `draggable` attribute when this directive is active.
29
+ if (changes.nodes) {
30
+ if (!!changes.nodes.currentValue !== !!changes.nodes.previousValue) {
31
+ this.elementRef.nativeElement.setAttribute('draggable', (!!this.nodes).toString());
32
+ }
33
+ }
34
+ }
35
+ onDragStart(event) {
36
+ if (!this.nodes) {
37
+ return;
38
+ }
39
+ this.nodesDragStart.emit(event);
40
+ // Use the transfer-data type to identify a node-drag operation.
41
+ event.dataTransfer.setData(dragNodesTransferType, '');
42
+ // Chrome doesn't provide drag transfer data to dragover event listeners
43
+ // for security reasons, so we provide the data via localStorage.
44
+ //
45
+ // Wait for updates by event handlers of `nodesDragStart` to propagate.
46
+ setTimeout(() => {
47
+ saveDraggedNodes(this.nodes);
48
+ });
49
+ }
50
+ onDragEnd(event) {
51
+ if (!this.nodes) {
52
+ return;
53
+ }
54
+ this.nodesDragEnd.emit(event);
55
+ clearDraggedNodes();
56
+ }
57
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: NodesDragSourceDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
58
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.6", type: NodesDragSourceDirective, selector: "[esNodesDragSource]", inputs: { nodes: ["esNodesDragSource", "nodes"] }, outputs: { nodesDragStart: "nodesDragStart", nodesDragEnd: "nodesDragEnd" }, host: { listeners: { "dragstart": "onDragStart($event)", "dragend": "onDragEnd($event)" } }, usesOnChanges: true, ngImport: i0 }); }
59
+ }
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: NodesDragSourceDirective, decorators: [{
61
+ type: Directive,
62
+ args: [{
63
+ selector: '[esNodesDragSource]',
64
+ }]
65
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { nodes: [{
66
+ type: Input,
67
+ args: ['esNodesDragSource']
68
+ }], nodesDragStart: [{
69
+ type: Output
70
+ }], nodesDragEnd: [{
71
+ type: Output
72
+ }], onDragStart: [{
73
+ type: HostListener,
74
+ args: ['dragstart', ['$event']]
75
+ }], onDragEnd: [{
76
+ type: HostListener,
77
+ args: ['dragend', ['$event']]
78
+ }] } });
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZXMtZHJhZy1zb3VyY2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWR1LXNoYXJpbmctdWkvc3JjL2xpYi9kaXJlY3RpdmVzL2RyYWctbm9kZXMvbm9kZXMtZHJhZy1zb3VyY2UuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxHQUlULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxxQkFBcUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFFMUY7Ozs7Ozs7R0FPRztBQUlILE1BQU0sT0FBTyx3QkFBd0I7SUFvQmpDLFlBQW9CLFVBQStCO1FBQS9CLGVBQVUsR0FBVixVQUFVLENBQXFCO1FBWm5EOzs7OztXQUtHO1FBQ08sbUJBQWMsR0FBRyxJQUFJLFlBQVksQ0FBWSxLQUFLLENBQUMsQ0FBQztRQUM5RDs7V0FFRztRQUNPLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQWEsQ0FBQztJQUVELENBQUM7SUFFdkQsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLCtEQUErRDtRQUMvRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDZixJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFlBQVksS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUU7Z0JBQ2hFLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7YUFDdEY7U0FDSjtJQUNMLENBQUM7SUFFc0MsV0FBVyxDQUFDLEtBQWdCO1FBQy9ELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2IsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsZ0VBQWdFO1FBQ2hFLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELHdFQUF3RTtRQUN4RSxpRUFBaUU7UUFDakUsRUFBRTtRQUNGLHVFQUF1RTtRQUN2RSxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVvQyxTQUFTLENBQUMsS0FBZ0I7UUFDM0QsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDYixPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixpQkFBaUIsRUFBRSxDQUFDO0lBQ3hCLENBQUM7OEdBckRRLHdCQUF3QjtrR0FBeEIsd0JBQXdCOzsyRkFBeEIsd0JBQXdCO2tCQUhwQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxxQkFBcUI7aUJBQ2xDO2lHQU8rQixLQUFLO3NCQUFoQyxLQUFLO3VCQUFDLG1CQUFtQjtnQkFRaEIsY0FBYztzQkFBdkIsTUFBTTtnQkFJRyxZQUFZO3NCQUFyQixNQUFNO2dCQWFnQyxXQUFXO3NCQUFqRCxZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFnQkEsU0FBUztzQkFBN0MsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIERpcmVjdGl2ZSxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBFbGVtZW50UmVmLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5vZGUgfSBmcm9tICduZ3gtZWR1LXNoYXJpbmctYXBpJztcbmltcG9ydCB7IGNsZWFyRHJhZ2dlZE5vZGVzLCBkcmFnTm9kZXNUcmFuc2ZlclR5cGUsIHNhdmVEcmFnZ2VkTm9kZXMgfSBmcm9tICcuL2RyYWctbm9kZXMnO1xuXG4vKipcbiAqIEhhbmRsZSBkcmFnZ2luZyBhbmQgZHJvcHBpbmcgb2Ygbm9kZSBlbGVtZW50cy5cbiAqXG4gKiBVc2UgaW4gY29tYmluYXRpb24gd2l0aCBgTm9kZXNEcm9wVGFyZ2V0RGlyZWN0aXZlYC5cbiAqXG4gKiBXaGVuIG5vZGVzIHRoYXQgc2V0IHRoaXMgZGlyZWN0aXZlIGFyZSBkcmFnZ2VkLCB3ZSBzYXZlIGluZm9ybWF0aW9uIGFib3V0XG4gKiB0aGVzZSBub2RlcyB0aGF0IGNhbiBiZSB1c2VkIGJ5IGBOb2Rlc0Ryb3BUYXJnZXREaXJlY3RpdmVgLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tlc05vZGVzRHJhZ1NvdXJjZV0nLFxufSlcbmV4cG9ydCBjbGFzcyBOb2Rlc0RyYWdTb3VyY2VEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAgIC8qKlxuICAgICAqIFRoZSBub2RlcyB0byBiZSBkcmFnZ2VkLlxuICAgICAqXG4gICAgICogV2hlbiBub3Qgc2V0LCB0aGlzIGRpcmVjdGl2ZSBpcyBlZmZlY3RpdmVseSBkaXNhYmxlZC5cbiAgICAgKi9cbiAgICBASW5wdXQoJ2VzTm9kZXNEcmFnU291cmNlJykgbm9kZXM/OiBOb2RlW107XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VyZWQgd2hlbiBwcm9jZXNzaW5nIHRoZSBkcmFnc3RhcnQgZXZlbnQuXG4gICAgICpcbiAgICAgKiBDaGFuZ2VzIHRvIGBub2Rlc2AgcGVyZm9ybWVkIGJ5IGV2ZW50IGhhbmRsZXJzIG9mIGBub2Rlc0RyYWdTdGFydGAgd2lsbFxuICAgICAqIGJlIHRha2VuIGludG8gYWNjb3VudCBmb3IgdGhlIGRyYWcgb3BlcmF0aW9uLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBub2Rlc0RyYWdTdGFydCA9IG5ldyBFdmVudEVtaXR0ZXI8RHJhZ0V2ZW50PihmYWxzZSk7XG4gICAgLyoqXG4gICAgICogVHJpZ2dlcmVkIHdoZW4gcHJvY2Vzc2luZyB0aGUgZHJhZ2VuZCBldmVudC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgbm9kZXNEcmFnRW5kID0gbmV3IEV2ZW50RW1pdHRlcjxEcmFnRXZlbnQ+KCk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8RWxlbWVudD4pIHt9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIC8vIFNldCB0aGUgYGRyYWdnYWJsZWAgYXR0cmlidXRlIHdoZW4gdGhpcyBkaXJlY3RpdmUgaXMgYWN0aXZlLlxuICAgICAgICBpZiAoY2hhbmdlcy5ub2Rlcykge1xuICAgICAgICAgICAgaWYgKCEhY2hhbmdlcy5ub2Rlcy5jdXJyZW50VmFsdWUgIT09ICEhY2hhbmdlcy5ub2Rlcy5wcmV2aW91c1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdkcmFnZ2FibGUnLCAoISF0aGlzLm5vZGVzKS50b1N0cmluZygpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2RyYWdzdGFydCcsIFsnJGV2ZW50J10pIG9uRHJhZ1N0YXJ0KGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLm5vZGVzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ub2Rlc0RyYWdTdGFydC5lbWl0KGV2ZW50KTtcbiAgICAgICAgLy8gVXNlIHRoZSB0cmFuc2Zlci1kYXRhIHR5cGUgdG8gaWRlbnRpZnkgYSBub2RlLWRyYWcgb3BlcmF0aW9uLlxuICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuc2V0RGF0YShkcmFnTm9kZXNUcmFuc2ZlclR5cGUsICcnKTtcbiAgICAgICAgLy8gQ2hyb21lIGRvZXNuJ3QgcHJvdmlkZSBkcmFnIHRyYW5zZmVyIGRhdGEgdG8gZHJhZ292ZXIgZXZlbnQgbGlzdGVuZXJzXG4gICAgICAgIC8vIGZvciBzZWN1cml0eSByZWFzb25zLCBzbyB3ZSBwcm92aWRlIHRoZSBkYXRhIHZpYSBsb2NhbFN0b3JhZ2UuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIFdhaXQgZm9yIHVwZGF0ZXMgYnkgZXZlbnQgaGFuZGxlcnMgb2YgYG5vZGVzRHJhZ1N0YXJ0YCB0byBwcm9wYWdhdGUuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgc2F2ZURyYWdnZWROb2Rlcyh0aGlzLm5vZGVzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZHJhZ2VuZCcsIFsnJGV2ZW50J10pIG9uRHJhZ0VuZChldmVudDogRHJhZ0V2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5ub2Rlcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubm9kZXNEcmFnRW5kLmVtaXQoZXZlbnQpO1xuICAgICAgICBjbGVhckRyYWdnZWROb2RlcygpO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,49 @@
1
+ import { Directive } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/cdk/drag-drop";
4
+ import * as i2 from "../../services/nodes-drag-drop.service";
5
+ /**
6
+ * A draggable node.
7
+ *
8
+ * Use in combination with `cdkDrag`, setting `cdkDragData` to the array of nodes to be dragged.
9
+ */
10
+ export class NodesDragDirective {
11
+ constructor(cdkDrag, nodesDragDrop) {
12
+ this.cdkDrag = cdkDrag;
13
+ this.nodesDragDrop = nodesDragDrop;
14
+ this.cdkDrag.started.subscribe((event) => {
15
+ this.nodesDragDrop.draggedNodes = event.source.data;
16
+ // Position the preview element (the one being dragged around) next to the cursor to
17
+ // avoid covering possible drop targets with the preview.
18
+ event.source._dragRef['_pickupPositionInElement'] = { x: 0, y: 0 };
19
+ });
20
+ this.cdkDrag.released.subscribe(() => {
21
+ if (this.nodesDragDrop.canDrop?.accept) {
22
+ this.inhibitPreviewAnimation();
23
+ }
24
+ });
25
+ this.cdkDrag.dropped.subscribe(() => {
26
+ this.nodesDragDrop.onDropped(this.cdkDrag.data);
27
+ this.nodesDragDrop.draggedNodes = null;
28
+ });
29
+ }
30
+ inhibitPreviewAnimation() {
31
+ const style = document.createElement('style');
32
+ document.body.appendChild(style);
33
+ style.innerHTML = `.cdk-drag-preview { transition: none !important; }`;
34
+ // Don't need to go outside ng zone because `cdkDrag.released` already runs outside the
35
+ // zone.
36
+ setTimeout(() => {
37
+ document.body.removeChild(style);
38
+ });
39
+ }
40
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: NodesDragDirective, deps: [{ token: i1.CdkDrag }, { token: i2.NodesDragDropService }], target: i0.ɵɵFactoryTarget.Directive }); }
41
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.6", type: NodesDragDirective, selector: "[esNodesDrag]", ngImport: i0 }); }
42
+ }
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: NodesDragDirective, decorators: [{
44
+ type: Directive,
45
+ args: [{
46
+ selector: '[esNodesDrag]',
47
+ }]
48
+ }], ctorParameters: function () { return [{ type: i1.CdkDrag }, { type: i2.NodesDragDropService }]; } });
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZXMtZHJhZy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL2RpcmVjdGl2ZXMvZHJhZy1ub2Rlcy9ub2Rlcy1kcmFnLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBSTFDOzs7O0dBSUc7QUFJSCxNQUFNLE9BQU8sa0JBQWtCO0lBQzNCLFlBQW9CLE9BQXdCLEVBQVUsYUFBbUM7UUFBckUsWUFBTyxHQUFQLE9BQU8sQ0FBaUI7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FBc0I7UUFDckYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDckMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDcEQsb0ZBQW9GO1lBQ3BGLHlEQUF5RDtZQUN6RCxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQywwQkFBMEIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDdkUsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2pDLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFO2dCQUNwQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQzthQUNsQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNoQyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2hELElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyx1QkFBdUI7UUFDM0IsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxLQUFLLENBQUMsU0FBUyxHQUFHLG9EQUFvRCxDQUFDO1FBQ3ZFLHVGQUF1RjtRQUN2RixRQUFRO1FBQ1IsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs4R0E1QlEsa0JBQWtCO2tHQUFsQixrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBSDlCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGVBQWU7aUJBQzVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrRHJhZyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOb2RlIH0gZnJvbSAnbmd4LWVkdS1zaGFyaW5nLWFwaSc7XG5pbXBvcnQgeyBOb2Rlc0RyYWdEcm9wU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vZGVzLWRyYWctZHJvcC5zZXJ2aWNlJztcblxuLyoqXG4gKiBBIGRyYWdnYWJsZSBub2RlLlxuICpcbiAqIFVzZSBpbiBjb21iaW5hdGlvbiB3aXRoIGBjZGtEcmFnYCwgc2V0dGluZyBgY2RrRHJhZ0RhdGFgIHRvIHRoZSBhcnJheSBvZiBub2RlcyB0byBiZSBkcmFnZ2VkLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tlc05vZGVzRHJhZ10nLFxufSlcbmV4cG9ydCBjbGFzcyBOb2Rlc0RyYWdEaXJlY3RpdmUge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RrRHJhZzogQ2RrRHJhZzxOb2RlW10+LCBwcml2YXRlIG5vZGVzRHJhZ0Ryb3A6IE5vZGVzRHJhZ0Ryb3BTZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMuY2RrRHJhZy5zdGFydGVkLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMubm9kZXNEcmFnRHJvcC5kcmFnZ2VkTm9kZXMgPSBldmVudC5zb3VyY2UuZGF0YTtcbiAgICAgICAgICAgIC8vIFBvc2l0aW9uIHRoZSBwcmV2aWV3IGVsZW1lbnQgKHRoZSBvbmUgYmVpbmcgZHJhZ2dlZCBhcm91bmQpIG5leHQgdG8gdGhlIGN1cnNvciB0b1xuICAgICAgICAgICAgLy8gYXZvaWQgY292ZXJpbmcgcG9zc2libGUgZHJvcCB0YXJnZXRzIHdpdGggdGhlIHByZXZpZXcuXG4gICAgICAgICAgICBldmVudC5zb3VyY2UuX2RyYWdSZWZbJ19waWNrdXBQb3NpdGlvbkluRWxlbWVudCddID0geyB4OiAwLCB5OiAwIH07XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNka0RyYWcucmVsZWFzZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLm5vZGVzRHJhZ0Ryb3AuY2FuRHJvcD8uYWNjZXB0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbmhpYml0UHJldmlld0FuaW1hdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jZGtEcmFnLmRyb3BwZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubm9kZXNEcmFnRHJvcC5vbkRyb3BwZWQodGhpcy5jZGtEcmFnLmRhdGEpO1xuICAgICAgICAgICAgdGhpcy5ub2Rlc0RyYWdEcm9wLmRyYWdnZWROb2RlcyA9IG51bGw7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5oaWJpdFByZXZpZXdBbmltYXRpb24oKSB7XG4gICAgICAgIGNvbnN0IHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzdHlsZSk7XG4gICAgICAgIHN0eWxlLmlubmVySFRNTCA9IGAuY2RrLWRyYWctcHJldmlldyB7IHRyYW5zaXRpb246IG5vbmUgIWltcG9ydGFudDsgfWA7XG4gICAgICAgIC8vIERvbid0IG5lZWQgdG8gZ28gb3V0c2lkZSBuZyB6b25lIGJlY2F1c2UgYGNka0RyYWcucmVsZWFzZWRgIGFscmVhZHkgcnVucyBvdXRzaWRlIHRoZVxuICAgICAgICAvLyB6b25lLlxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoc3R5bGUpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,105 @@
1
+ import { Directive, EventEmitter, Input, Output, } from '@angular/core';
2
+ import { BehaviorSubject, Observable, Subject } from 'rxjs';
3
+ import { takeUntil } from 'rxjs/operators';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../../services/nodes-drag-drop.service";
6
+ const ACTIVE_DROP_TARGET_ACCEPT_CLASS = 'es-nodes-active-drop-target-accept';
7
+ const ACTIVE_DROP_TARGET_DENY_CLASS = 'es-nodes-active-drop-target-deny';
8
+ export class NodesDropTargetDirective {
9
+ get active() {
10
+ return this.activeDropTargetSubject.value;
11
+ }
12
+ constructor(ngZone, elementRef, nodesDragDrop) {
13
+ this.ngZone = ngZone;
14
+ this.elementRef = elementRef;
15
+ this.nodesDragDrop = nodesDragDrop;
16
+ this.nodeDropped = new EventEmitter();
17
+ this.activeDropTargetSubject = new BehaviorSubject(null);
18
+ this.destroyed = new Subject();
19
+ this.registerMouseEnterLeave();
20
+ this.registerActiveDropTarget();
21
+ }
22
+ ngOnDestroy() {
23
+ this.destroyed.next();
24
+ this.destroyed.complete();
25
+ }
26
+ _setActiveDropTarget(value) {
27
+ this.activeDropTargetSubject.next(value);
28
+ }
29
+ registerMouseEnterLeave() {
30
+ this.ngZone.runOutsideAngular(() => {
31
+ this.elementRef.nativeElement.addEventListener('mouseenter', () => this.nodesDragDrop.onMouseEnter(this));
32
+ this.elementRef.nativeElement.addEventListener('mouseleave', () => this.nodesDragDrop.onMouseLeave(this));
33
+ // Firefox does not fire a mouseleave event when the element is removed from the DOM
34
+ // while being hovered. When an element is dragged, it will be replaced with a
35
+ // placeholder. If the element was also a drop target, we would think that we are still
36
+ // hovering the element.
37
+ observeRemovedFromParent(this.elementRef.nativeElement)
38
+ .pipe(takeUntil(this.destroyed))
39
+ .subscribe(() => this.nodesDragDrop.onMouseLeave(this));
40
+ });
41
+ }
42
+ registerActiveDropTarget() {
43
+ this.activeDropTargetSubject
44
+ .pipe(takeUntil(this.destroyed))
45
+ .subscribe((dropTargetState) => {
46
+ const canDrop = dropTargetState?.canDrop;
47
+ const classList = this.elementRef.nativeElement.classList;
48
+ classList.remove(ACTIVE_DROP_TARGET_ACCEPT_CLASS, ACTIVE_DROP_TARGET_DENY_CLASS);
49
+ if (canDrop?.accept) {
50
+ classList.add(ACTIVE_DROP_TARGET_ACCEPT_CLASS);
51
+ }
52
+ else if (canDrop?.denyExplicit) {
53
+ classList.add(ACTIVE_DROP_TARGET_DENY_CLASS);
54
+ }
55
+ });
56
+ }
57
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: NodesDropTargetDirective, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i1.NodesDragDropService }], target: i0.ɵɵFactoryTarget.Directive }); }
58
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.6", type: NodesDropTargetDirective, selector: "[esNodesDropTarget]", inputs: { target: ["esNodesDropTarget", "target"], canDropNodes: "canDropNodes" }, outputs: { nodeDropped: "nodeDropped" }, exportAs: ["esNodesDropTarget"], ngImport: i0 }); }
59
+ }
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: NodesDropTargetDirective, decorators: [{
61
+ type: Directive,
62
+ args: [{
63
+ selector: '[esNodesDropTarget]',
64
+ exportAs: 'esNodesDropTarget',
65
+ }]
66
+ }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i1.NodesDragDropService }]; }, propDecorators: { target: [{
67
+ type: Input,
68
+ args: ['esNodesDropTarget']
69
+ }], canDropNodes: [{
70
+ type: Input
71
+ }], nodeDropped: [{
72
+ type: Output
73
+ }] } });
74
+ function observeRemovedFromParent(element) {
75
+ return new Observable((subscriber) => {
76
+ const observer = new MutationObserver((event) => {
77
+ for (const mutation of event) {
78
+ // @ts-ignore
79
+ if ([...mutation.removedNodes].includes(element)) {
80
+ subscriber.next();
81
+ }
82
+ }
83
+ });
84
+ // Wait for `element` to be attached to the DOM.
85
+ let timeout = setTimeout(() => {
86
+ timeout = null;
87
+ observer.observe(element.parentNode, { childList: true, subtree: false });
88
+ });
89
+ return () => {
90
+ // In case the element was destroyed before we attached the mutation observer, we cancel
91
+ // the observable returned by this function and don't attach the mutation observer.
92
+ if (timeout !== null) {
93
+ // TODO: Investigate elements that trigger the following warning.
94
+ //
95
+ // console.warn(
96
+ // 'Possible performance leak: the element got destroyed before it could be added to the DOM.',
97
+ // element,
98
+ // );
99
+ clearTimeout(timeout);
100
+ }
101
+ observer.disconnect();
102
+ };
103
+ });
104
+ }
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZXMtZHJvcC10YXJnZXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWR1LXNoYXJpbmctdWkvc3JjL2xpYi9kaXJlY3RpdmVzL2RyYWctbm9kZXMvbm9kZXMtZHJvcC10YXJnZXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBSTNDLE1BQU0sK0JBQStCLEdBQUcsb0NBQW9DLENBQUM7QUFDN0UsTUFBTSw2QkFBNkIsR0FBRyxrQ0FBa0MsQ0FBQztBQU16RSxNQUFNLE9BQU8sd0JBQXdCO0lBS2pDLElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQztJQUM5QyxDQUFDO0lBS0QsWUFDWSxNQUFjLEVBQ2QsVUFBbUMsRUFDbkMsYUFBbUM7UUFGbkMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBQ25DLGtCQUFhLEdBQWIsYUFBYSxDQUFzQjtRQVpyQyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFlLENBQUM7UUFNaEQsNEJBQXVCLEdBQUcsSUFBSSxlQUFlLENBQXlCLElBQUksQ0FBQyxDQUFDO1FBQzVFLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBT3BDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJ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USxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUM5RSxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sR0FBRyxFQUFFO1lBQ1Isd0ZBQXdGO1lBQ3hGLG1GQUFtRjtZQUNuRixJQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUU7Z0JBQ2xCLGlFQUFpRTtnQkFDakUsRUFBRTtnQkFDRixnQkFBZ0I7Z0JBQ2hCLG1HQUFtRztnQkFDbkcsZUFBZTtnQkFDZixLQUFLO2dCQUNMLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUN6QjtZQUNELFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUM7SUFDTixDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25EZXN0cm95LFxuICAgIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENhbkRyb3AsIERyYWdEYXRhLCBEcm9wVGFyZ2V0U3RhdGUgfSBmcm9tICcuLi8uLi90eXBlcy9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgTm9kZXNEcmFnRHJvcFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ub2Rlcy1kcmFnLWRyb3Auc2VydmljZSc7XG5cbmNvbnN0IEFDVElWRV9EUk9QX1RBUkdFVF9BQ0NFUFRfQ0xBU1MgPSAnZXMtbm9kZXMtYWN0aXZlLWRyb3AtdGFyZ2V0LWFjY2VwdCc7XG5jb25zdCBBQ1RJVkVfRFJPUF9UQVJHRVRfREVOWV9DTEFTUyA9ICdlcy1ub2Rlcy1hY3RpdmUtZHJvcC10YXJnZXQtZGVueSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2VzTm9kZXNEcm9wVGFyZ2V0XScsXG4gICAgZXhwb3J0QXM6ICdlc05vZGVzRHJvcFRhcmdldCcsXG59KVxuZXhwb3J0IGNsYXNzIE5vZGVzRHJvcFRhcmdldERpcmVjdGl2ZTxUID0gdW5rbm93bj4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgnZXNOb2Rlc0Ryb3BUYXJnZXQnKSB0YXJnZXQ6IFQ7XG4gICAgQElucHV0KCkgY2FuRHJvcE5vZGVzOiAoZHJhZ0RhdGE6IERyYWdEYXRhPFQ+KSA9PiBDYW5Ecm9wO1xuICAgIEBPdXRwdXQoKSBub2RlRHJvcHBlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RHJhZ0RhdGE8VD4+KCk7XG5cbiAgICBnZXQgYWN0aXZlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVEcm9wVGFyZ2V0U3ViamVjdC52YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFjdGl2ZURyb3BUYXJnZXRTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEcm9wVGFyZ2V0U3RhdGUgfCBudWxsPihudWxsKTtcbiAgICBwcml2YXRlIGRlc3Ryb3llZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgcHJpdmF0ZSBub2Rlc0RyYWdEcm9wOiBOb2Rlc0RyYWdEcm9wU2VydmljZSxcbiAgICApIHtcbiAgICAgICAgdGhpcy5yZWdpc3Rlck1vdXNlRW50ZXJMZWF2ZSgpO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyQWN0aXZlRHJvcFRhcmdldCgpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3llZC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveWVkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgX3NldEFjdGl2ZURyb3BUYXJnZXQodmFsdWU6IERyb3BUYXJnZXRTdGF0ZSB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVEcm9wVGFyZ2V0U3ViamVjdC5uZXh0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlZ2lzdGVyTW91c2VFbnRlckxlYXZlKCkge1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgKCkgPT5cbiAgICAgICAgICAgICAgICB0aGlzLm5vZGVzRHJhZ0Ryb3Aub25Nb3VzZUVudGVyKHRoaXMpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCAoKSA9PlxuICAgICAgICAgICAgICAgIHRoaXMubm9kZXNEcmFnRHJvcC5vbk1vdXNlTGVhdmUodGhpcyksXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgLy8gRmlyZWZveCBkb2VzIG5vdCBmaXJlIGEgbW91c2VsZWF2ZSBldmVudCB3aGVuIHRoZSBlbGVtZW50IGlzIHJlbW92ZWQgZnJvbSB0aGUgRE9NXG4gICAgICAgICAgICAvLyB3aGlsZSBiZWluZyBob3ZlcmVkLiBXaGVuIGFuIGVsZW1lbnQgaXMgZHJhZ2dlZCwgaXQgd2lsbCBiZSByZXBsYWNlZCB3aXRoIGFcbiAgICAgICAgICAgIC8vIHBsYWNlaG9sZGVyLiBJZiB0aGUgZWxlbWVudCB3YXMgYWxzbyBhIGRyb3AgdGFyZ2V0LCB3ZSB3b3VsZCB0aGluayB0aGF0IHdlIGFyZSBzdGlsbFxuICAgICAgICAgICAgLy8gaG92ZXJpbmcgdGhlIGVsZW1lbnQuXG4gICAgICAgICAgICBvYnNlcnZlUmVtb3ZlZEZyb21QYXJlbnQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMubm9kZXNEcmFnRHJvcC5vbk1vdXNlTGVhdmUodGhpcykpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlZ2lzdGVyQWN0aXZlRHJvcFRhcmdldCgpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVEcm9wVGFyZ2V0U3ViamVjdFxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGRyb3BUYXJnZXRTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNhbkRyb3AgPSBkcm9wVGFyZ2V0U3RhdGU/LmNhbkRyb3A7XG4gICAgICAgICAgICAgICAgY29uc3QgY2xhc3NMaXN0ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0O1xuICAgICAgICAgICAgICAgIGNsYXNzTGlzdC5yZW1vdmUoQUNUSVZFX0RST1BfVEFSR0VUX0FDQ0VQVF9DTEFTUywgQUNUSVZFX0RST1BfVEFSR0VUX0RFTllfQ0xBU1MpO1xuICAgICAgICAgICAgICAgIGlmIChjYW5Ecm9wPy5hY2NlcHQpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NMaXN0LmFkZChBQ1RJVkVfRFJPUF9UQVJHRVRfQUNDRVBUX0NMQVNTKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNhbkRyb3A/LmRlbnlFeHBsaWNpdCkge1xuICAgICAgICAgICAgICAgICAgICBjbGFzc0xpc3QuYWRkKEFDVElWRV9EUk9QX1RBUkdFVF9ERU5ZX0NMQVNTKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIG9ic2VydmVSZW1vdmVkRnJvbVBhcmVudChlbGVtZW50OiBIVE1MRWxlbWVudCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgoc3Vic2NyaWJlcikgPT4ge1xuICAgICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKChldmVudCkgPT4ge1xuICAgICAgICAgICAgZm9yIChjb25zdCBtdXRhdGlvbiBvZiBldmVudCkge1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICBpZiAoWy4uLm11dGF0aW9uLnJlbW92ZWROb2Rlc10uaW5jbHVkZXMoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlci5uZXh0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgLy8gV2FpdCBmb3IgYGVsZW1lbnRgIHRvIGJlIGF0dGFjaGVkIHRvIHRoZSBET00uXG4gICAgICAgIGxldCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aW1lb3V0ID0gbnVsbDtcbiAgICAgICAgICAgIG9ic2VydmVyLm9ic2VydmUoZWxlbWVudC5wYXJlbnROb2RlLCB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogZmFsc2UgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgLy8gSW4gY2FzZSB0aGUgZWxlbWVudCB3YXMgZGVzdHJveWVkIGJlZm9yZSB3ZSBhdHRhY2hlZCB0aGUgbXV0YXRpb24gb2JzZXJ2ZXIsIHdlIGNhbmNlbFxuICAgICAgICAgICAgLy8gdGhlIG9ic2VydmFibGUgcmV0dXJuZWQgYnkgdGhpcyBmdW5jdGlvbiBhbmQgZG9uJ3QgYXR0YWNoIHRoZSBtdXRhdGlvbiBvYnNlcnZlci5cbiAgICAgICAgICAgIGlmICh0aW1lb3V0ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgLy8gVE9ETzogSW52ZXN0aWdhdGUgZWxlbWVudHMgdGhhdCB0cmlnZ2VyIHRoZSBmb2xsb3dpbmcgd2FybmluZy5cbiAgICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICAvLyAgICAgJ1Bvc3NpYmxlIHBlcmZvcm1hbmNlIGxlYWs6IHRoZSBlbGVtZW50IGdvdCBkZXN0cm95ZWQgYmVmb3JlIGl0IGNvdWxkIGJlIGFkZGVkIHRvIHRoZSBET00uJyxcbiAgICAgICAgICAgICAgICAvLyAgICAgZWxlbWVudCxcbiAgICAgICAgICAgICAgICAvLyApO1xuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgfTtcbiAgICB9KTtcbn1cbiJdfQ==
@@ -0,0 +1,44 @@
1
+ import { Directive, HostListener } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class FocusStateDirective {
4
+ constructor() {
5
+ /** Either the element or one of its descendants has focus. */
6
+ this.hasFocus = false;
7
+ /** The element is being hovered with the cursor. */
8
+ this.hovering = false;
9
+ }
10
+ onFocusIn() {
11
+ this.hasFocus = true;
12
+ }
13
+ onFocusOut() {
14
+ this.hasFocus = false;
15
+ }
16
+ onMouseOver() {
17
+ this.hovering = true;
18
+ }
19
+ onMouseOut() {
20
+ this.hovering = false;
21
+ }
22
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: FocusStateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
23
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.6", type: FocusStateDirective, selector: "[esFocusState]", host: { listeners: { "focusin": "onFocusIn()", "focusout": "onFocusOut()", "mouseenter": "onMouseOver()", "mouseleave": "onMouseOut()" } }, exportAs: ["esFocusState"], ngImport: i0 }); }
24
+ }
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: FocusStateDirective, decorators: [{
26
+ type: Directive,
27
+ args: [{
28
+ selector: '[esFocusState]',
29
+ exportAs: 'esFocusState',
30
+ }]
31
+ }], ctorParameters: function () { return []; }, propDecorators: { onFocusIn: [{
32
+ type: HostListener,
33
+ args: ['focusin']
34
+ }], onFocusOut: [{
35
+ type: HostListener,
36
+ args: ['focusout']
37
+ }], onMouseOver: [{
38
+ type: HostListener,
39
+ args: ['mouseenter']
40
+ }], onMouseOut: [{
41
+ type: HostListener,
42
+ args: ['mouseleave']
43
+ }] } });
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtc3RhdGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWR1LXNoYXJpbmctdWkvc3JjL2xpYi9kaXJlY3RpdmVzL2ZvY3VzLXN0YXRlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNeEQsTUFBTSxPQUFPLG1CQUFtQjtJQU01QjtRQUxBLDhEQUE4RDtRQUM5RCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLG9EQUFvRDtRQUNwRCxhQUFRLEdBQUcsS0FBSyxDQUFDO0lBRUYsQ0FBQztJQUdoQixTQUFTO1FBQ0wsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDekIsQ0FBQztJQUdELFVBQVU7UUFDTixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBR0QsV0FBVztRQUNQLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQ3pCLENBQUM7SUFHRCxVQUFVO1FBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDMUIsQ0FBQzs4R0ExQlEsbUJBQW1CO2tHQUFuQixtQkFBbUI7OzJGQUFuQixtQkFBbUI7a0JBSi9CLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsUUFBUSxFQUFFLGNBQWM7aUJBQzNCOzBFQVVHLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxTQUFTO2dCQU12QixVQUFVO3NCQURULFlBQVk7dUJBQUMsVUFBVTtnQkFNeEIsV0FBVztzQkFEVixZQUFZO3VCQUFDLFlBQVk7Z0JBTTFCLFVBQVU7c0JBRFQsWUFBWTt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZXNGb2N1c1N0YXRlXScsXG4gICAgZXhwb3J0QXM6ICdlc0ZvY3VzU3RhdGUnLFxufSlcbmV4cG9ydCBjbGFzcyBGb2N1c1N0YXRlRGlyZWN0aXZlIHtcbiAgICAvKiogRWl0aGVyIHRoZSBlbGVtZW50IG9yIG9uZSBvZiBpdHMgZGVzY2VuZGFudHMgaGFzIGZvY3VzLiAqL1xuICAgIGhhc0ZvY3VzID0gZmFsc2U7XG4gICAgLyoqIFRoZSBlbGVtZW50IGlzIGJlaW5nIGhvdmVyZWQgd2l0aCB0aGUgY3Vyc29yLiAqL1xuICAgIGhvdmVyaW5nID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgICBASG9zdExpc3RlbmVyKCdmb2N1c2luJylcbiAgICBvbkZvY3VzSW4oKSB7XG4gICAgICAgIHRoaXMuaGFzRm9jdXMgPSB0cnVlO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2ZvY3Vzb3V0JylcbiAgICBvbkZvY3VzT3V0KCkge1xuICAgICAgICB0aGlzLmhhc0ZvY3VzID0gZmFsc2U7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicpXG4gICAgb25Nb3VzZU92ZXIoKSB7XG4gICAgICAgIHRoaXMuaG92ZXJpbmcgPSB0cnVlO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnKVxuICAgIG9uTW91c2VPdXQoKSB7XG4gICAgICAgIHRoaXMuaG92ZXJpbmcgPSBmYWxzZTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,139 @@
1
+ /**
2
+ * Created by Torsten on 13.01.2017.
3
+ */
4
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
5
+ import { Directive, Input, Optional } from '@angular/core';
6
+ import { take } from 'rxjs/operators';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@ngx-translate/core";
9
+ import * as i2 from "ngx-edu-sharing-api";
10
+ /**
11
+ * Replaces the element's content with an icon.
12
+ *
13
+ * Example: `<i esIcon="save"></i>`
14
+ *
15
+ * Optionally, a translated `aria-label` can be attached by setting `aria` to a truthy value: `<i
16
+ * esIcon="save" aria="true"></i>`. Otherwise, `aria-hidden` will be set.
17
+ *
18
+ * For backwards compatibility, the directive is also activated on elements that set
19
+ * `class="material-icons"`. This is mainly to set the `aria-hidden` attribute. Occurrences should
20
+ * be updated to the syntax above.
21
+ */
22
+ export class IconDirective {
23
+ /**
24
+ * An alt text to show to screen readers.
25
+ *
26
+ * If omitted, the icon will be invisible to screen readers.
27
+ *
28
+ * @see https://material.angular.io/components/icon/overview#indicator-icons
29
+ */
30
+ set altText(altText) {
31
+ this.setAltText(altText);
32
+ }
33
+ /** If true, an alt text (see above) will be set based on the icon. */
34
+ set aria(aria) {
35
+ aria = coerceBooleanProperty(aria);
36
+ if (aria !== this._aria) {
37
+ this._aria = aria;
38
+ if (this.isReady) {
39
+ this.updateAria();
40
+ }
41
+ }
42
+ }
43
+ set esIcon(id) {
44
+ this.setIcon(id);
45
+ }
46
+ constructor(element, translate, config) {
47
+ this.element = element;
48
+ this.translate = translate;
49
+ this.config = config;
50
+ this.isReady = false;
51
+ }
52
+ async ngOnInit() {
53
+ this.isReady = true;
54
+ this.element.nativeElement.setAttribute('aria-hidden', 'true');
55
+ this.updateAria();
56
+ // FIXME: This might resolve after `setIcon` was called and mappings might be ignored.
57
+ await this.config.observeConfig().pipe(take(1)).toPromise();
58
+ this.iconsConfig = this.config.instant('icons', null);
59
+ }
60
+ ngOnDestroy() {
61
+ if (this.altTextSpan) {
62
+ this.altTextSpan.remove();
63
+ }
64
+ }
65
+ setIcon(id) {
66
+ if (this._id) {
67
+ this.element.nativeElement.classList.remove('edu-icons', 'custom-icons', 'material-icons');
68
+ }
69
+ let customClass = null;
70
+ const mapping = this.iconsConfig?.filter((i) => i.original === id);
71
+ if (mapping?.length === 1) {
72
+ id = mapping[0].replace || '';
73
+ customClass = mapping[0].cssClass;
74
+ }
75
+ this._id = id;
76
+ if (this._aria) {
77
+ this.updateAria();
78
+ }
79
+ let cssClass;
80
+ if (id?.startsWith('edu-') && !customClass) {
81
+ cssClass = 'edu-icons';
82
+ id = id.substr(4);
83
+ }
84
+ else if (id?.startsWith('custom-') || customClass) {
85
+ cssClass = 'custom-icons';
86
+ id = id.substr(7);
87
+ }
88
+ else {
89
+ cssClass = 'material-icons';
90
+ }
91
+ this.element.nativeElement.classList.add(cssClass);
92
+ if (customClass) {
93
+ this.element.nativeElement.classList.add(customClass);
94
+ }
95
+ this.element.nativeElement.innerText = id;
96
+ }
97
+ updateAria() {
98
+ if (this._aria !== undefined) {
99
+ if (this._aria && this._id) {
100
+ this.translate.get('ICON_LABELS.' + this._id).subscribe((lang) => {
101
+ this.setAltText(lang);
102
+ });
103
+ }
104
+ else {
105
+ this.setAltText(null);
106
+ }
107
+ }
108
+ }
109
+ setAltText(altText) {
110
+ if (altText && !this.altTextSpan) {
111
+ this.insertAltTextSpan();
112
+ }
113
+ if (this.altTextSpan) {
114
+ this.altTextSpan.innerText = altText;
115
+ }
116
+ }
117
+ insertAltTextSpan() {
118
+ this.altTextSpan = document.createElement('span');
119
+ this.altTextSpan.classList.add('cdk-visually-hidden');
120
+ this.element.nativeElement.insertAdjacentElement('afterend', this.altTextSpan);
121
+ }
122
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: IconDirective, deps: [{ token: i0.ElementRef }, { token: i1.TranslateService }, { token: i2.ConfigService, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
123
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.6", type: IconDirective, selector: "i[esIcon], i.material-icons", inputs: { altText: "altText", aria: "aria", esIcon: "esIcon" }, ngImport: i0 }); }
124
+ }
125
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: IconDirective, decorators: [{
126
+ type: Directive,
127
+ args: [{
128
+ selector: 'i[esIcon], i.material-icons',
129
+ }]
130
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.TranslateService }, { type: i2.ConfigService, decorators: [{
131
+ type: Optional
132
+ }] }]; }, propDecorators: { altText: [{
133
+ type: Input
134
+ }], aria: [{
135
+ type: Input
136
+ }], esIcon: [{
137
+ type: Input
138
+ }] } });
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL2RpcmVjdGl2ZXMvaWNvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBcUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzFGLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUV0Qzs7Ozs7Ozs7Ozs7R0FXRztBQUlILE1BQU0sT0FBTyxhQUFhO0lBT3RCOzs7Ozs7T0FNRztJQUNILElBQWEsT0FBTyxDQUFDLE9BQWU7UUFDaEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsc0VBQXNFO0lBQ3RFLElBQWEsSUFBSSxDQUFDLElBQWE7UUFDM0IsSUFBSSxHQUFHLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLElBQUksSUFBSSxLQUFLLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDbEIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNkLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUNyQjtTQUNKO0lBQ0wsQ0FBQztJQUVELElBQWEsTUFBTSxDQUFDLEVBQVU7UUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsWUFDWSxPQUFnQyxFQUNoQyxTQUEyQixFQUNmLE1BQXFCO1FBRmpDLFlBQU8sR0FBUCxPQUFPLENBQXlCO1FBQ2hDLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQ2YsV0FBTSxHQUFOLE1BQU0sQ0FB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QUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtvQkFDN0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDMUIsQ0FBQyxDQUFDLENBQUM7YUFDTjtpQkFBTTtnQkFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3pCO1NBQ0o7SUFDTCxDQUFDO0lBRU8sVUFBVSxDQUFDLE9BQWU7UUFDOUIsSUFBSSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQzlCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1NBQzVCO1FBQ0QsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQztTQUN4QztJQUNMLENBQUM7SUFFTyxpQkFBaUI7UUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLHFCQUFxQixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbkYsQ0FBQzs4R0FuSFEsYUFBYTtrR0FBYixhQUFhOzsyRkFBYixhQUFhO2tCQUh6QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSw2QkFBNkI7aUJBQzFDOzswQkFxQ1EsUUFBUTs0Q0F0QkEsT0FBTztzQkFBbkIsS0FBSztnQkFLTyxJQUFJO3NCQUFoQixLQUFLO2dCQVVPLE1BQU07c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENyZWF0ZWQgYnkgVG9yc3RlbiBvbiAxMy4wMS4yMDE3LlxuICovXG5cbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBPbkluaXQsIE9uRGVzdHJveSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICduZ3gtZWR1LXNoYXJpbmctYXBpJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbi8qKlxuICogUmVwbGFjZXMgdGhlIGVsZW1lbnQncyBjb250ZW50IHdpdGggYW4gaWNvbi5cbiAqXG4gKiBFeGFtcGxlOiBgPGkgZXNJY29uPVwic2F2ZVwiPjwvaT5gXG4gKlxuICogT3B0aW9uYWxseSwgYSB0cmFuc2xhdGVkIGBhcmlhLWxhYmVsYCBjYW4gYmUgYXR0YWNoZWQgYnkgc2V0dGluZyBgYXJpYWAgdG8gYSB0cnV0aHkgdmFsdWU6IGA8aVxuICogZXNJY29uPVwic2F2ZVwiIGFyaWE9XCJ0cnVlXCI+PC9pPmAuIE90aGVyd2lzZSwgYGFyaWEtaGlkZGVuYCB3aWxsIGJlIHNldC5cbiAqXG4gKiBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIHRoZSBkaXJlY3RpdmUgaXMgYWxzbyBhY3RpdmF0ZWQgb24gZWxlbWVudHMgdGhhdCBzZXRcbiAqIGBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCJgLiBUaGlzIGlzIG1haW5seSB0byBzZXQgdGhlIGBhcmlhLWhpZGRlbmAgYXR0cmlidXRlLiBPY2N1cnJlbmNlcyBzaG91bGRcbiAqIGJlIHVwZGF0ZWQgdG8gdGhlIHN5bnRheCBhYm92ZS5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdpW2VzSWNvbl0sIGkubWF0ZXJpYWwtaWNvbnMnLFxufSlcbmV4cG9ydCBjbGFzcyBJY29uRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIHByaXZhdGUgX2lkOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfYXJpYTogYm9vbGVhbjtcbiAgICBwcml2YXRlIGljb25zQ29uZmlnOiBBcnJheTx7IG9yaWdpbmFsOiBzdHJpbmc7IHJlcGxhY2U/OiBzdHJpbmc7IGNzc0NsYXNzPzogc3RyaW5nIH0+O1xuICAgIHByaXZhdGUgYWx0VGV4dFNwYW46IEhUTUxFbGVtZW50O1xuICAgIHByaXZhdGUgaXNSZWFkeSA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQW4gYWx0IHRleHQgdG8gc2hvdyB0byBzY3JlZW4gcmVhZGVycy5cbiAgICAgKlxuICAgICAqIElmIG9taXR0ZWQsIHRoZSBpY29uIHdpbGwgYmUgaW52aXNpYmxlIHRvIHNjcmVlbiByZWFkZXJzLlxuICAgICAqXG4gICAgICogQHNlZSBodHRwczovL21hdGVyaWFsLmFuZ3VsYXIuaW8vY29tcG9uZW50cy9pY29uL292ZXJ2aWV3I2luZGljYXRvci1pY29uc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHNldCBhbHRUZXh0KGFsdFRleHQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLnNldEFsdFRleHQoYWx0VGV4dCk7XG4gICAgfVxuXG4gICAgLyoqIElmIHRydWUsIGFuIGFsdCB0ZXh0IChzZWUgYWJvdmUpIHdpbGwgYmUgc2V0IGJhc2VkIG9uIHRoZSBpY29uLiAqL1xuICAgIEBJbnB1dCgpIHNldCBhcmlhKGFyaWE6IGJvb2xlYW4pIHtcbiAgICAgICAgYXJpYSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShhcmlhKTtcbiAgICAgICAgaWYgKGFyaWEgIT09IHRoaXMuX2FyaWEpIHtcbiAgICAgICAgICAgIHRoaXMuX2FyaWEgPSBhcmlhO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNSZWFkeSkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQXJpYSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGVzSWNvbihpZDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2V0SWNvbihpZCk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbmZpZzogQ29uZmlnU2VydmljZSxcbiAgICApIHt9XG5cbiAgICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5pc1JlYWR5ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsICd0cnVlJyk7XG4gICAgICAgIHRoaXMudXBkYXRlQXJpYSgpO1xuXG4gICAgICAgIC8vIEZJWE1FOiBUaGlzIG1pZ2h0IHJlc29sdmUgYWZ0ZXIgYHNldEljb25gIHdhcyBjYWxsZWQgYW5kIG1hcHBpbmdzIG1pZ2h0IGJlIGlnbm9yZWQuXG4gICAgICAgIGF3YWl0IHRoaXMuY29uZmlnLm9ic2VydmVDb25maWcoKS5waXBlKHRha2UoMSkpLnRvUHJvbWlzZSgpO1xuICAgICAgICB0aGlzLmljb25zQ29uZmlnID0gdGhpcy5jb25maWcuaW5zdGFudCgnaWNvbnMnLCBudWxsKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYWx0VGV4dFNwYW4pIHtcbiAgICAgICAgICAgIHRoaXMuYWx0VGV4dFNwYW4ucmVtb3ZlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEljb24oaWQ6IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5faWQpIHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoXG4gICAgICAgICAgICAgICAgJ2VkdS1pY29ucycsXG4gICAgICAgICAgICAgICAgJ2N1c3RvbS1pY29ucycsXG4gICAgICAgICAgICAgICAgJ21hdGVyaWFsLWljb25zJyxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGN1c3RvbUNsYXNzOiBzdHJpbmcgPSBudWxsO1xuICAgICAgICBjb25zdCBtYXBwaW5nID0gdGhpcy5pY29uc0NvbmZpZz8uZmlsdGVyKChpKSA9PiBpLm9yaWdpbmFsID09PSBpZCk7XG4gICAgICAgIGlmIChtYXBwaW5nPy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGlkID0gbWFwcGluZ1swXS5yZXBsYWNlIHx8ICcnO1xuICAgICAgICAgICAgY3VzdG9tQ2xhc3MgPSBtYXBwaW5nWzBdLmNzc0NsYXNzO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2lkID0gaWQ7XG4gICAgICAgIGlmICh0aGlzLl9hcmlhKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUFyaWEoKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgY3NzQ2xhc3M6IHN0cmluZztcbiAgICAgICAgaWYgKGlkPy5zdGFydHNXaXRoKCdlZHUtJykgJiYgIWN1c3RvbUNsYXNzKSB7XG4gICAgICAgICAgICBjc3NDbGFzcyA9ICdlZHUtaWNvbnMnO1xuICAgICAgICAgICAgaWQgPSBpZC5zdWJzdHIoNCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaWQ/LnN0YXJ0c1dpdGgoJ2N1c3RvbS0nKSB8fCBjdXN0b21DbGFzcykge1xuICAgICAgICAgICAgY3NzQ2xhc3MgPSAnY3VzdG9tLWljb25zJztcbiAgICAgICAgICAgIGlkID0gaWQuc3Vic3RyKDcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY3NzQ2xhc3MgPSAnbWF0ZXJpYWwtaWNvbnMnO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoY3NzQ2xhc3MpO1xuICAgICAgICBpZiAoY3VzdG9tQ2xhc3MpIHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoY3VzdG9tQ2xhc3MpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmlubmVyVGV4dCA9IGlkO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlQXJpYSgpIHtcbiAgICAgICAgaWYgKHRoaXMuX2FyaWEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2FyaWEgJiYgdGhpcy5faWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5nZXQoJ0lDT05fTEFCRUxTLicgKyB0aGlzLl9pZCkuc3Vic2NyaWJlKChsYW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0QWx0VGV4dChsYW5nKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRBbHRUZXh0KG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRBbHRUZXh0KGFsdFRleHQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoYWx0VGV4dCAmJiAhdGhpcy5hbHRUZXh0U3Bhbikge1xuICAgICAgICAgICAgdGhpcy5pbnNlcnRBbHRUZXh0U3BhbigpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmFsdFRleHRTcGFuKSB7XG4gICAgICAgICAgICB0aGlzLmFsdFRleHRTcGFuLmlubmVyVGV4dCA9IGFsdFRleHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGluc2VydEFsdFRleHRTcGFuKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmFsdFRleHRTcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICB0aGlzLmFsdFRleHRTcGFuLmNsYXNzTGlzdC5hZGQoJ2Nkay12aXN1YWxseS1oaWRkZW4nKTtcbiAgICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuaW5zZXJ0QWRqYWNlbnRFbGVtZW50KCdhZnRlcmVuZCcsIHRoaXMuYWx0VGV4dFNwYW4pO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,70 @@
1
+ import { Component, Input, ViewChild } from '@angular/core';
2
+ import { Helper } from '../util/helper';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../services/ui.service";
5
+ import * as i2 from "@angular/common";
6
+ import * as i3 from "@angular/material/menu";
7
+ import * as i4 from "@angular/material/tooltip";
8
+ import * as i5 from "../directives/icon.directive";
9
+ import * as i6 from "@ngx-translate/core";
10
+ import * as i7 from "../pipes/replace-chars.pipe";
11
+ import * as i8 from "../pipes/option-tooltip.pipe";
12
+ /**
13
+ * The dropdown is one base component of the action bar (showing more actions),
14
+ * but can also be used standalone.
15
+ */
16
+ export class DropdownComponent {
17
+ set options(options) {
18
+ this._options = this.ui.filterValidOptions(Helper.deepCopyArray(options));
19
+ }
20
+ constructor(ui) {
21
+ this.ui = ui;
22
+ this.position = 'left';
23
+ /**
24
+ * Should disabled ("greyed out") options be shown or hidden?
25
+ */
26
+ this.showDisabled = true;
27
+ }
28
+ click(option) {
29
+ if (!option.isEnabled) {
30
+ return;
31
+ }
32
+ setTimeout(() => option.callback(this.callbackObject));
33
+ }
34
+ isNewGroup(i) {
35
+ if (i > 0) {
36
+ return this._options[i].group !== this._options[i - 1].group;
37
+ }
38
+ return false;
39
+ }
40
+ /** Whether there are any enabled options so we can open the menu. */
41
+ canShowDropdown() {
42
+ // We can only open the dropdown menu, when there is at least one enabled option. Even when
43
+ // there are options with `showDisabled: true`, showing a menu with no selectable option
44
+ // causes a11y issues.
45
+ return this._options?.some((o) => o.isEnabled);
46
+ }
47
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: DropdownComponent, deps: [{ token: i1.UIService }], target: i0.ɵɵFactoryTarget.Component }); }
48
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.6", type: DropdownComponent, selector: "es-dropdown", inputs: { position: "position", options: "options", callbackObject: "callbackObject", showDisabled: "showDisabled", menuClass: "menuClass" }, viewQueries: [{ propertyName: "menu", first: true, predicate: ["dropdown"], descendants: true, static: true }, { propertyName: "menuTrigger", first: true, predicate: ["menuTrigger"], descendants: true }], ngImport: i0, template: "<mat-menu\n #dropdown=\"matMenu\"\n class=\"mat-dropdown-menu\"\n [class]=\"menuClass\"\n backdropClass=\"mat-dropdown-menu\"\n [xPosition]=\"position === 'right' ? 'after' : 'before'\"\n>\n <!-- MatMenu has role=\"menu\", so the only meaningful role of descendants is \"menuitem\" -->\n <ul role=\"none\">\n <ng-container *ngFor=\"let option of _options; let i = index\">\n <li *ngIf=\"option.isEnabled || showDisabled\" role=\"none\">\n <button\n mat-menu-item\n class=\"mat-menu-item collection-item-{{\n option.name | replaceChars : { search: '.', replace: '-' }\n }}\"\n matTooltip=\"{{ option | optionTooltip }}\"\n matTooltipPosition=\"right\"\n matTooltipTouchGestures=\"off\"\n [class.mat-menu-item-separate]=\"option.isSeparate || isNewGroup(i)\"\n [class.mat-menu-item-selected]=\"option.isSelected\"\n [disabled]=\"!option.isEnabled\"\n (click)=\"click(option)\"\n attr.data-test=\"menu-item-{{ option.name }}\"\n >\n <i [esIcon]=\"option.icon\"></i> {{ option.name | translate }}\n </button>\n </li>\n </ng-container>\n </ul>\n</mat-menu>\n<div #menuTrigger=\"matMenuTrigger\" [matMenuTriggerFor]=\"menu\" class=\"display-none\"></div>\n", styles: ["::ng-deep .mat-dropdown-menu .mat-mdc-menu-content{min-width:200px}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button{display:flex;align-items:center}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button:not(:disabled)>span{color:var(--primary)}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button>i{width:35px}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content:not(:empty){padding:0!important}::ng-deep .mat-dropdown-menu ul{margin:0;list-style:none;padding-left:0}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item .mat-mdc-menu-item-text{display:flex;align-items:center}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item .mat-mdc-menu-item-text i{margin-right:10px}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item:hover:not([disabled]),::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item.cdk-focused{color:var(--itemSelectedTextColor);background-color:var(--listItemSelectedBackground)}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item.cdk-keyboard-focused{outline:none;border:var(--focusWidth) solid var(--palette-primary-300)}::ng-deep .mat-dropdown-menu ul li .mat-menu-item-separate{border-top:1px solid #ccc}@media screen and (max-width: calc(var(--mobileWidth) - var(--mobileStage) * 1)){::ng-deep .mat-dropdown-menu ul li.cdk-overlay-backdrop{background:rgba(0,0,0,.8)}::ng-deep .mat-dropdown-menu ul li.mat-menu-panel{position:fixed;bottom:0;left:0;max-width:100%;width:100%;border-radius:0}}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i3.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i3.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i5.IconDirective, selector: "i[esIcon], i.material-icons", inputs: ["altText", "aria", "esIcon"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }, { kind: "pipe", type: i7.ReplaceCharsPipe, name: "replaceChars" }, { kind: "pipe", type: i8.OptionTooltipPipe, name: "optionTooltip" }] }); }
49
+ }
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: DropdownComponent, decorators: [{
51
+ type: Component,
52
+ args: [{ selector: 'es-dropdown', template: "<mat-menu\n #dropdown=\"matMenu\"\n class=\"mat-dropdown-menu\"\n [class]=\"menuClass\"\n backdropClass=\"mat-dropdown-menu\"\n [xPosition]=\"position === 'right' ? 'after' : 'before'\"\n>\n <!-- MatMenu has role=\"menu\", so the only meaningful role of descendants is \"menuitem\" -->\n <ul role=\"none\">\n <ng-container *ngFor=\"let option of _options; let i = index\">\n <li *ngIf=\"option.isEnabled || showDisabled\" role=\"none\">\n <button\n mat-menu-item\n class=\"mat-menu-item collection-item-{{\n option.name | replaceChars : { search: '.', replace: '-' }\n }}\"\n matTooltip=\"{{ option | optionTooltip }}\"\n matTooltipPosition=\"right\"\n matTooltipTouchGestures=\"off\"\n [class.mat-menu-item-separate]=\"option.isSeparate || isNewGroup(i)\"\n [class.mat-menu-item-selected]=\"option.isSelected\"\n [disabled]=\"!option.isEnabled\"\n (click)=\"click(option)\"\n attr.data-test=\"menu-item-{{ option.name }}\"\n >\n <i [esIcon]=\"option.icon\"></i> {{ option.name | translate }}\n </button>\n </li>\n </ng-container>\n </ul>\n</mat-menu>\n<div #menuTrigger=\"matMenuTrigger\" [matMenuTriggerFor]=\"menu\" class=\"display-none\"></div>\n", styles: ["::ng-deep .mat-dropdown-menu .mat-mdc-menu-content{min-width:200px}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button{display:flex;align-items:center}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button:not(:disabled)>span{color:var(--primary)}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button>i{width:35px}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content:not(:empty){padding:0!important}::ng-deep .mat-dropdown-menu ul{margin:0;list-style:none;padding-left:0}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item .mat-mdc-menu-item-text{display:flex;align-items:center}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item .mat-mdc-menu-item-text i{margin-right:10px}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item:hover:not([disabled]),::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item.cdk-focused{color:var(--itemSelectedTextColor);background-color:var(--listItemSelectedBackground)}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item.cdk-keyboard-focused{outline:none;border:var(--focusWidth) solid var(--palette-primary-300)}::ng-deep .mat-dropdown-menu ul li .mat-menu-item-separate{border-top:1px solid #ccc}@media screen and (max-width: calc(var(--mobileWidth) - var(--mobileStage) * 1)){::ng-deep .mat-dropdown-menu ul li.cdk-overlay-backdrop{background:rgba(0,0,0,.8)}::ng-deep .mat-dropdown-menu ul li.mat-menu-panel{position:fixed;bottom:0;left:0;max-width:100%;width:100%;border-radius:0}}\n"] }]
53
+ }], ctorParameters: function () { return [{ type: i1.UIService }]; }, propDecorators: { menu: [{
54
+ type: ViewChild,
55
+ args: ['dropdown', { static: true }]
56
+ }], menuTrigger: [{
57
+ type: ViewChild,
58
+ args: ['menuTrigger']
59
+ }], position: [{
60
+ type: Input
61
+ }], options: [{
62
+ type: Input
63
+ }], callbackObject: [{
64
+ type: Input
65
+ }], showDisabled: [{
66
+ type: Input
67
+ }], menuClass: [{
68
+ type: Input
69
+ }] } });
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWR1LXNoYXJpbmctdWkvc3JjL2xpYi9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUc1RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7QUFHeEM7OztHQUdHO0FBTUgsTUFBTSxPQUFPLGlCQUFpQjtJQU0xQixJQUFhLE9BQU8sQ0FBQyxPQUFxQjtRQUN0QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUF3QkQsWUFBb0IsRUFBYTtRQUFiLE9BQUUsR0FBRixFQUFFLENBQVc7UUE1QnhCLGFBQVEsR0FBcUIsTUFBTSxDQUFDO1FBYTdDOztXQUVHO1FBQ00saUJBQVksR0FBRyxJQUFJLENBQUM7SUFZTyxDQUFDO0lBRXJDLEtBQUssQ0FBQyxNQUFrQjtRQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRTtZQUNuQixPQUFPO1NBQ1Y7UUFDRCxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsVUFBVSxDQUFDLENBQVM7UUFDaEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7U0FDaEU7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQscUVBQXFFO0lBQ3JFLGVBQWU7UUFDWCwyRkFBMkY7UUFDM0Ysd0ZBQXdGO1FBQ3hGLHNCQUFzQjtRQUN0QixPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkQsQ0FBQzs4R0F0RFEsaUJBQWlCO2tHQUFqQixpQkFBaUIsOFlDZjlCLG95Q0FnQ0E7OzJGRGpCYSxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0ksYUFBYTtnR0FLa0IsSUFBSTtzQkFBNUMsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNiLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFFZixRQUFRO3NCQUFoQixLQUFLO2dCQUVPLE9BQU87c0JBQW5CLEtBQUs7Z0JBU0csY0FBYztzQkFBdEIsS0FBSztnQkFLRyxZQUFZO3NCQUFwQixLQUFLO2dCQVFHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdE1lbnUsIE1hdE1lbnVDb250ZW50LCBNYXRNZW51VHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgT3B0aW9uSXRlbSB9IGZyb20gJy4uL3R5cGVzL29wdGlvbi1pdGVtJztcbmltcG9ydCB7IEhlbHBlciB9IGZyb20gJy4uL3V0aWwvaGVscGVyJztcbmltcG9ydCB7IFVJU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3VpLnNlcnZpY2UnO1xuXG4vKipcbiAqIFRoZSBkcm9wZG93biBpcyBvbmUgYmFzZSBjb21wb25lbnQgb2YgdGhlIGFjdGlvbiBiYXIgKHNob3dpbmcgbW9yZSBhY3Rpb25zKSxcbiAqIGJ1dCBjYW4gYWxzbyBiZSB1c2VkIHN0YW5kYWxvbmUuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZXMtZHJvcGRvd24nLFxuICAgIHRlbXBsYXRlVXJsOiAnZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWydkcm9wZG93bi5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBEcm9wZG93bkNvbXBvbmVudCB7XG4gICAgQFZpZXdDaGlsZCgnZHJvcGRvd24nLCB7IHN0YXRpYzogdHJ1ZSB9KSBtZW51OiBNYXRNZW51O1xuICAgIEBWaWV3Q2hpbGQoJ21lbnVUcmlnZ2VyJykgbWVudVRyaWdnZXI6IE1hdE1lbnVUcmlnZ2VyO1xuXG4gICAgQElucHV0KCkgcG9zaXRpb246ICdsZWZ0JyB8ICdyaWdodCcgPSAnbGVmdCc7XG5cbiAgICBASW5wdXQoKSBzZXQgb3B0aW9ucyhvcHRpb25zOiBPcHRpb25JdGVtW10pIHtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMudWkuZmlsdGVyVmFsaWRPcHRpb25zKEhlbHBlci5kZWVwQ29weUFycmF5KG9wdGlvbnMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgb2JqZWN0IHRoYXQgc2hvdWxkIGJlIHJldHVybmVkIHZpYSB0aGUgb3B0aW9uJ3MgY2FsbGJhY2suXG4gICAgICpcbiAgICAgKiBDYW4gYmUgbnVsbFxuICAgICAqL1xuICAgIEBJbnB1dCgpIGNhbGxiYWNrT2JqZWN0OiBhbnk7XG5cbiAgICAvKipcbiAgICAgKiBTaG91bGQgZGlzYWJsZWQgKFwiZ3JleWVkIG91dFwiKSBvcHRpb25zIGJlIHNob3duIG9yIGhpZGRlbj9cbiAgICAgKi9cbiAgICBASW5wdXQoKSBzaG93RGlzYWJsZWQgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQW4gYWRkaXRpb25hbCBjbGFzcyB0byBhZGQgdG8gdGhlIGBtYXQtbWVudWAgaW5zdGFuY2UuXG4gICAgICpcbiAgICAgKiBUaGlzIGlzIG5lZWRlZCB0byBjdXN0b21pemUgdGhlIG1lbnUgc3R5bGluZyBzaW5jZSB0aGUgbWVudSBjb250ZW50cyBhcmVcbiAgICAgKiB0YWtlbiBvdXQgb2YgdGhlIGhvc3QgY29udGFpbmVyIGJ5IGFuZ3VsYXIuXG4gICAgICovXG4gICAgQElucHV0KCkgbWVudUNsYXNzOiBzdHJpbmc7XG5cbiAgICBfb3B0aW9uczogT3B0aW9uSXRlbVtdO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB1aTogVUlTZXJ2aWNlKSB7fVxuXG4gICAgY2xpY2sob3B0aW9uOiBPcHRpb25JdGVtKSB7XG4gICAgICAgIGlmICghb3B0aW9uLmlzRW5hYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gb3B0aW9uLmNhbGxiYWNrKHRoaXMuY2FsbGJhY2tPYmplY3QpKTtcbiAgICB9XG5cbiAgICBpc05ld0dyb3VwKGk6IG51bWJlcikge1xuICAgICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9vcHRpb25zW2ldLmdyb3VwICE9PSB0aGlzLl9vcHRpb25zW2kgLSAxXS5ncm91cDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqIFdoZXRoZXIgdGhlcmUgYXJlIGFueSBlbmFibGVkIG9wdGlvbnMgc28gd2UgY2FuIG9wZW4gdGhlIG1lbnUuICovXG4gICAgY2FuU2hvd0Ryb3Bkb3duKCk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBXZSBjYW4gb25seSBvcGVuIHRoZSBkcm9wZG93biBtZW51LCB3aGVuIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBlbmFibGVkIG9wdGlvbi4gRXZlbiB3aGVuXG4gICAgICAgIC8vIHRoZXJlIGFyZSBvcHRpb25zIHdpdGggYHNob3dEaXNhYmxlZDogdHJ1ZWAsIHNob3dpbmcgYSBtZW51IHdpdGggbm8gc2VsZWN0YWJsZSBvcHRpb25cbiAgICAgICAgLy8gY2F1c2VzIGExMXkgaXNzdWVzLlxuICAgICAgICByZXR1cm4gdGhpcy5fb3B0aW9ucz8uc29tZSgobykgPT4gby5pc0VuYWJsZWQpO1xuICAgIH1cbn1cbiIsIjxtYXQtbWVudVxuICAjZHJvcGRvd249XCJtYXRNZW51XCJcbiAgY2xhc3M9XCJtYXQtZHJvcGRvd24tbWVudVwiXG4gIFtjbGFzc109XCJtZW51Q2xhc3NcIlxuICBiYWNrZHJvcENsYXNzPVwibWF0LWRyb3Bkb3duLW1lbnVcIlxuICBbeFBvc2l0aW9uXT1cInBvc2l0aW9uID09PSAncmlnaHQnID8gJ2FmdGVyJyA6ICdiZWZvcmUnXCJcbj5cbiAgPCEtLSBNYXRNZW51IGhhcyByb2xlPVwibWVudVwiLCBzbyB0aGUgb25seSBtZWFuaW5nZnVsIHJvbGUgb2YgZGVzY2VuZGFudHMgaXMgXCJtZW51aXRlbVwiIC0tPlxuICA8dWwgcm9sZT1cIm5vbmVcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgX29wdGlvbnM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgIDxsaSAqbmdJZj1cIm9wdGlvbi5pc0VuYWJsZWQgfHwgc2hvd0Rpc2FibGVkXCIgcm9sZT1cIm5vbmVcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICBjbGFzcz1cIm1hdC1tZW51LWl0ZW0gY29sbGVjdGlvbi1pdGVtLXt7XG4gICAgICAgICAgICBvcHRpb24ubmFtZSB8IHJlcGxhY2VDaGFycyA6IHsgc2VhcmNoOiAnLicsIHJlcGxhY2U6ICctJyB9XG4gICAgICAgICAgfX1cIlxuICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7eyBvcHRpb24gfCBvcHRpb25Ub29sdGlwIH19XCJcbiAgICAgICAgICBtYXRUb29sdGlwUG9zaXRpb249XCJyaWdodFwiXG4gICAgICAgICAgbWF0VG9vbHRpcFRvdWNoR2VzdHVyZXM9XCJvZmZcIlxuICAgICAgICAgIFtjbGFzcy5tYXQtbWVudS1pdGVtLXNlcGFyYXRlXT1cIm9wdGlvbi5pc1NlcGFyYXRlIHx8IGlzTmV3R3JvdXAoaSlcIlxuICAgICAgICAgIFtjbGFzcy5tYXQtbWVudS1pdGVtLXNlbGVjdGVkXT1cIm9wdGlvbi5pc1NlbGVjdGVkXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIW9wdGlvbi5pc0VuYWJsZWRcIlxuICAgICAgICAgIChjbGljayk9XCJjbGljayhvcHRpb24pXCJcbiAgICAgICAgICBhdHRyLmRhdGEtdGVzdD1cIm1lbnUtaXRlbS17eyBvcHRpb24ubmFtZSB9fVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aSBbZXNJY29uXT1cIm9wdGlvbi5pY29uXCI+PC9pPiB7eyBvcHRpb24ubmFtZSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbGk+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvdWw+XG48L21hdC1tZW51PlxuPGRpdiAjbWVudVRyaWdnZXI9XCJtYXRNZW51VHJpZ2dlclwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCIgY2xhc3M9XCJkaXNwbGF5LW5vbmVcIj48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,41 @@
1
+ import { Injectable, InjectionToken } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export const EDU_SHARING_UI_CONFIG = new InjectionToken('EDU_SHARING_API_CONFIG');
4
+ export class EduSharingUiConfiguration {
5
+ static create(params = {}) {
6
+ return { ...new EduSharingUiConfiguration(), ...params };
7
+ }
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: EduSharingUiConfiguration, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
9
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: EduSharingUiConfiguration, providedIn: 'root' }); }
10
+ }
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: EduSharingUiConfiguration, decorators: [{
12
+ type: Injectable,
13
+ args: [{
14
+ providedIn: 'root',
15
+ }]
16
+ }] });
17
+ export function getConfigProvider(params) {
18
+ return [
19
+ // Provide the params given to `forRoot()`. These can be overridden by the application by
20
+ // providing `EDU_SHARING_API_CONFIG` itself.
21
+ {
22
+ provide: EDU_SHARING_UI_CONFIG,
23
+ useValue: params,
24
+ },
25
+ // Inject `configuration` as both, `ApiConfiguration` and `EduSharingApiConfiguration`, to pass
26
+ // `rootUrl` on to `ApiModule` while also adding our custom configuration.
27
+ {
28
+ provide: EduSharingUiConfiguration,
29
+ deps: [EDU_SHARING_UI_CONFIG],
30
+ // deps: [[new Optional(), EDU_SHARING_API_CONFIG]],
31
+ useFactory: (configParams) => EduSharingUiConfiguration.create(configParams),
32
+ },
33
+ {
34
+ provide: EduSharingUiConfiguration,
35
+ deps: [EDU_SHARING_UI_CONFIG],
36
+ // deps: [[new Optional(), EDU_SHARING_API_CONFIG]],
37
+ useFactory: (configParams) => EduSharingUiConfiguration.create(configParams),
38
+ },
39
+ ];
40
+ }
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWR1LXNoYXJpbmctdWktY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2VkdS1zaGFyaW5nLXVpL3NyYy9saWIvZWR1LXNoYXJpbmctdWktY29uZmlndXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBWSxNQUFNLGVBQWUsQ0FBQzs7QUFLckUsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxjQUFjLENBQ25ELHdCQUF3QixDQUMzQixDQUFDO0FBS0YsTUFBTSxPQUFPLHlCQUF5QjtJQUVsQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQTBDLEVBQUU7UUFDdEQsT0FBTyxFQUFFLEdBQUcsSUFBSSx5QkFBeUIsRUFBRSxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUM7SUFDN0QsQ0FBQzs4R0FKUSx5QkFBeUI7a0hBQXpCLHlCQUF5QixjQUZ0QixNQUFNOzsyRkFFVCx5QkFBeUI7a0JBSHJDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOztBQVVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxNQUF3QztJQUN0RSxPQUFPO1FBQ0gseUZBQXlGO1FBQ3pGLDZDQUE2QztRQUM3QztZQUNJLE9BQU8sRUFBRSxxQkFBcUI7WUFDOUIsUUFBUSxFQUFFLE1BQU07U0FDbkI7UUFDRCwrRkFBK0Y7UUFDL0YsMEVBQTBFO1FBQzFFO1lBQ0ksT0FBTyxFQUFFLHlCQUF5QjtZQUNsQyxJQUFJLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztZQUM3QixvREFBb0Q7WUFDcEQsVUFBVSxFQUFFLENBQUMsWUFBNkMsRUFBRSxFQUFFLENBQzFELHlCQUF5QixDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7U0FDckQ7UUFDRDtZQUNJLE9BQU8sRUFBRSx5QkFBeUI7WUFDbEMsSUFBSSxFQUFFLENBQUMscUJBQXFCLENBQUM7WUFDN0Isb0RBQW9EO1lBQ3BELFVBQVUsRUFBRSxDQUFDLFlBQTZDLEVBQUUsRUFBRSxDQUMxRCx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO1NBQ3JEO0tBQ0osQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFjY2Vzc2liaWxpdHlTZXR0aW5ncyB9IGZyb20gJy4vdHlwZXMvYWNjZXNzaWJpbGxpdHknO1xuaW1wb3J0IHsgS2V5Ym9hcmRTaG9ydGN1dCB9IGZyb20gJy4vdHlwZXMva2V5Ym9hcmQtc2hvcnRjdXRzJztcblxuZXhwb3J0IGNvbnN0IEVEVV9TSEFSSU5HX1VJX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxFZHVTaGFyaW5nVWlDb25maWd1cmF0aW9uUGFyYW1zPihcbiAgICAnRURVX1NIQVJJTkdfQVBJX0NPTkZJRycsXG4pO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBFZHVTaGFyaW5nVWlDb25maWd1cmF0aW9uIHtcbiAgICBwcm9kdWN0aW9uOiBib29sZWFuO1xuICAgIHN0YXRpYyBjcmVhdGUocGFyYW1zOiBFZHVTaGFyaW5nVWlDb25maWd1cmF0aW9uUGFyYW1zID0ge30pOiBFZHVTaGFyaW5nVWlDb25maWd1cmF0aW9uIHtcbiAgICAgICAgcmV0dXJuIHsgLi4ubmV3IEVkdVNoYXJpbmdVaUNvbmZpZ3VyYXRpb24oKSwgLi4ucGFyYW1zIH07XG4gICAgfVxufVxuXG5leHBvcnQgdHlwZSBFZHVTaGFyaW5nVWlDb25maWd1cmF0aW9uUGFyYW1zID0gUGFydGlhbDxFZHVTaGFyaW5nVWlDb25maWd1cmF0aW9uPjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbmZpZ1Byb3ZpZGVyKHBhcmFtcz86IEVkdVNoYXJpbmdVaUNvbmZpZ3VyYXRpb25QYXJhbXMpOiBQcm92aWRlcltdIHtcbiAgICByZXR1cm4gW1xuICAgICAgICAvLyBQcm92aWRlIHRoZSBwYXJhbXMgZ2l2ZW4gdG8gYGZvclJvb3QoKWAuIFRoZXNlIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSBhcHBsaWNhdGlvbiBieVxuICAgICAgICAvLyBwcm92aWRpbmcgYEVEVV9TSEFSSU5HX0FQSV9DT05GSUdgIGl0c2VsZi5cbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRURVX1NIQVJJTkdfVUlfQ09ORklHLFxuICAgICAgICAgICAgdXNlVmFsdWU6IHBhcmFtcyxcbiAgICAgICAgfSxcbiAgICAgICAgLy8gSW5qZWN0IGBjb25maWd1cmF0aW9uYCBhcyBib3RoLCBgQXBpQ29uZmlndXJhdGlvbmAgYW5kIGBFZHVTaGFyaW5nQXBpQ29uZmlndXJhdGlvbmAsIHRvIHBhc3NcbiAgICAgICAgLy8gYHJvb3RVcmxgIG9uIHRvIGBBcGlNb2R1bGVgIHdoaWxlIGFsc28gYWRkaW5nIG91ciBjdXN0b20gY29uZmlndXJhdGlvbi5cbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRWR1U2hhcmluZ1VpQ29uZmlndXJhdGlvbixcbiAgICAgICAgICAgIGRlcHM6IFtFRFVfU0hBUklOR19VSV9DT05GSUddLFxuICAgICAgICAgICAgLy8gZGVwczogW1tuZXcgT3B0aW9uYWwoKSwgRURVX1NIQVJJTkdfQVBJX0NPTkZJR11dLFxuICAgICAgICAgICAgdXNlRmFjdG9yeTogKGNvbmZpZ1BhcmFtczogRWR1U2hhcmluZ1VpQ29uZmlndXJhdGlvblBhcmFtcykgPT5cbiAgICAgICAgICAgICAgICBFZHVTaGFyaW5nVWlDb25maWd1cmF0aW9uLmNyZWF0ZShjb25maWdQYXJhbXMpLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBFZHVTaGFyaW5nVWlDb25maWd1cmF0aW9uLFxuICAgICAgICAgICAgZGVwczogW0VEVV9TSEFSSU5HX1VJX0NPTkZJR10sXG4gICAgICAgICAgICAvLyBkZXBzOiBbW25ldyBPcHRpb25hbCgpLCBFRFVfU0hBUklOR19BUElfQ09ORklHXV0sXG4gICAgICAgICAgICB1c2VGYWN0b3J5OiAoY29uZmlnUGFyYW1zOiBFZHVTaGFyaW5nVWlDb25maWd1cmF0aW9uUGFyYW1zKSA9PlxuICAgICAgICAgICAgICAgIEVkdVNoYXJpbmdVaUNvbmZpZ3VyYXRpb24uY3JlYXRlKGNvbmZpZ1BhcmFtcyksXG4gICAgICAgIH0sXG4gICAgXTtcbn1cbiJdfQ==