@flywheel-io/vision 0.6.0 → 0.8.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 (322) hide show
  1. package/assets/fonts/Flywheel-Vision-Icons.svg +255 -1
  2. package/assets/fonts/Flywheel-Vision-Icons.ttf +0 -0
  3. package/assets/fonts/Flywheel-Vision-Icons.woff +0 -0
  4. package/assets/svg/add-circle.svg +5 -0
  5. package/assets/svg/add-new-create.svg +5 -0
  6. package/assets/svg/add-row-above.svg +10 -0
  7. package/assets/svg/add-row-below.svg +10 -0
  8. package/assets/svg/add-server.svg +12 -0
  9. package/assets/svg/add-user.svg +5 -0
  10. package/assets/svg/apple.svg +6 -0
  11. package/assets/svg/apply-copy-duplicate.svg +8 -0
  12. package/assets/svg/arrow-annotate.svg +5 -0
  13. package/assets/svg/arrow-back-collapse.svg +5 -0
  14. package/assets/svg/arrow-back.svg +5 -0
  15. package/assets/svg/arrow-down.svg +6 -0
  16. package/assets/svg/arrow-forward-collapse.svg +5 -0
  17. package/assets/svg/arrow-forward.svg +5 -0
  18. package/assets/svg/arrow-rotate-restore.svg +5 -0
  19. package/assets/svg/arrow-rotate.svg +5 -0
  20. package/assets/svg/arrow-up.svg +6 -0
  21. package/assets/svg/arrow.svg +5 -0
  22. package/assets/svg/barcode-serial.svg +14 -0
  23. package/assets/svg/barcode-stack-scan.svg +5 -0
  24. package/assets/svg/bell-notification.svg +5 -0
  25. package/assets/svg/blocks-code-test-checkmark.svg +5 -0
  26. package/assets/svg/bookmark-plus-add.svg +7 -0
  27. package/assets/svg/bookmark.svg +5 -0
  28. package/assets/svg/brain.svg +10 -0
  29. package/assets/svg/button-form-element.svg +5 -0
  30. package/assets/svg/calendar-schedule.svg +5 -0
  31. package/assets/svg/camera-photo-capture.svg +5 -0
  32. package/assets/svg/cash-banknotes.svg +9 -0
  33. package/assets/svg/chart-square.svg +5 -0
  34. package/assets/svg/chart-trend-square.svg +8 -0
  35. package/assets/svg/chat-messages-bubble.svg +8 -0
  36. package/assets/svg/checklist-tasks-chechmark-square.svg +9 -0
  37. package/assets/svg/checklist.svg +5 -0
  38. package/assets/svg/chevron-back.svg +5 -0
  39. package/assets/svg/chevron-down.svg +5 -0
  40. package/assets/svg/chevron-forward.svg +5 -0
  41. package/assets/svg/chevron-up.svg +5 -0
  42. package/assets/svg/circle-ellipses.svg +6 -0
  43. package/assets/svg/circle.svg +6 -0
  44. package/assets/svg/clap-applause-hands.svg +8 -0
  45. package/assets/svg/clip-attachment.svg +5 -0
  46. package/assets/svg/clock-history.svg +7 -0
  47. package/assets/svg/clock-loading.svg +9 -0
  48. package/assets/svg/close-circled.svg +5 -0
  49. package/assets/svg/close.svg +5 -0
  50. package/assets/svg/cloud-storage-checkmark.svg +6 -0
  51. package/assets/svg/code-text.svg +5 -0
  52. package/assets/svg/color-design-profile.svg +5 -0
  53. package/assets/svg/color-ven-design-profile-central.svg +5 -0
  54. package/assets/svg/computer-chip.svg +5 -0
  55. package/assets/svg/contrast-photo-edit.svg +5 -0
  56. package/assets/svg/copy-item.svg +5 -0
  57. package/assets/svg/creative-commons.svg +5 -0
  58. package/assets/svg/crosshair.svg +9 -0
  59. package/assets/svg/cursor-select.svg +6 -0
  60. package/assets/svg/data-tree.svg +5 -0
  61. package/assets/svg/delivery-shipment-packages.svg +8 -0
  62. package/assets/svg/dna-hospital-medical.svg +10 -0
  63. package/assets/svg/document-file-blank.svg +6 -0
  64. package/assets/svg/document-file-download.svg +9 -0
  65. package/assets/svg/document-file-list-protocol.svg +11 -0
  66. package/assets/svg/document-file-tar.svg +10 -0
  67. package/assets/svg/document-file-zip.svg +12 -0
  68. package/assets/svg/document-status-done-checkmark.svg +5 -0
  69. package/assets/svg/document-visible.svg +8 -0
  70. package/assets/svg/documents-files.svg +6 -0
  71. package/assets/svg/done-check-tracked.svg +5 -0
  72. package/assets/svg/done-check.svg +5 -0
  73. package/assets/svg/download-status.svg +11 -0
  74. package/assets/svg/download.svg +5 -0
  75. package/assets/svg/drag-drop-indicator.svg +5 -0
  76. package/assets/svg/draw-rectangle.svg +6 -0
  77. package/assets/svg/earth-globe-fail.svg +6 -0
  78. package/assets/svg/edit-boxed.svg +5 -0
  79. package/assets/svg/edit.svg +6 -0
  80. package/assets/svg/email-mail-checkmark-group.svg +5 -0
  81. package/assets/svg/email.svg +5 -0
  82. package/assets/svg/embed-circle.svg +5 -0
  83. package/assets/svg/facebook.svg +5 -0
  84. package/assets/svg/file-download.svg +8 -0
  85. package/assets/svg/file-text.svg +9 -0
  86. package/assets/svg/files-library-content.svg +8 -0
  87. package/assets/svg/files-library.svg +5 -0
  88. package/assets/svg/files.svg +5 -0
  89. package/assets/svg/filter.svg +6 -0
  90. package/assets/svg/flag.svg +5 -0
  91. package/assets/svg/flip-horizontal.svg +5 -0
  92. package/assets/svg/flip-vertical.svg +5 -0
  93. package/assets/svg/folder-add.svg +7 -0
  94. package/assets/svg/folder-blank.svg +5 -0
  95. package/assets/svg/folder-checked.svg +6 -0
  96. package/assets/svg/folder-group.svg +6 -0
  97. package/assets/svg/folder-open.svg +5 -0
  98. package/assets/svg/folder-share.svg +7 -0
  99. package/assets/svg/form-metadata-element.svg +5 -0
  100. package/assets/svg/free-rights.svg +5 -0
  101. package/assets/svg/full-screen-zoom.svg +5 -0
  102. package/assets/svg/github-color-login.svg +5 -0
  103. package/assets/svg/gitlab.svg +5 -0
  104. package/assets/svg/graduate-hat.svg +5 -0
  105. package/assets/svg/grid-layout.svg +8 -0
  106. package/assets/svg/hammer-screwdriver.svg +6 -0
  107. package/assets/svg/hand-money-currency.svg +7 -0
  108. package/assets/svg/header-form-element.svg +8 -0
  109. package/assets/svg/home-modern-door.svg +5 -0
  110. package/assets/svg/home-modern-option-lines.svg +5 -0
  111. package/assets/svg/human-artificial-intelligence.svg +5 -0
  112. package/assets/svg/icon-placeholder.svg +5 -0
  113. package/assets/svg/image-photo-copy-left-down.svg +8 -0
  114. package/assets/svg/image-picture-square.svg +6 -0
  115. package/assets/svg/information-circle.svg +7 -0
  116. package/assets/svg/items-group-elements.svg +5 -0
  117. package/assets/svg/key.svg +6 -0
  118. package/assets/svg/keyboard.svg +12 -0
  119. package/assets/svg/keychain.svg +5 -0
  120. package/assets/svg/label-tag.svg +5 -0
  121. package/assets/svg/laptop-health-medical-cross.svg +10 -0
  122. package/assets/svg/layers.svg +5 -0
  123. package/assets/svg/layout-grid.svg +8 -0
  124. package/assets/svg/layout.svg +5 -0
  125. package/assets/svg/line.svg +7 -0
  126. package/assets/svg/link-unlink.svg +5 -0
  127. package/assets/svg/link.svg +5 -0
  128. package/assets/svg/linkedin.svg +7 -0
  129. package/assets/svg/linux.svg +6 -0
  130. package/assets/svg/loading-status-checkmark.svg +9 -0
  131. package/assets/svg/lock-unlock.svg +5 -0
  132. package/assets/svg/lock.svg +8 -0
  133. package/assets/svg/logout.svg +5 -0
  134. package/assets/svg/lung.svg +5 -0
  135. package/assets/svg/lungs.svg +9 -0
  136. package/assets/svg/measure-angle.svg +6 -0
  137. package/assets/svg/media-library-imports-dowload.svg +6 -0
  138. package/assets/svg/menu-burger-handle.svg +5 -0
  139. package/assets/svg/menu-horizontal.svg +7 -0
  140. package/assets/svg/menu-list-form-square.svg +8 -0
  141. package/assets/svg/menu-vertical.svg +7 -0
  142. package/assets/svg/message-chat-info.svg +7 -0
  143. package/assets/svg/message-chat-question-support.svg +9 -0
  144. package/assets/svg/message-question-checkmark.svg +7 -0
  145. package/assets/svg/microphone-mic-rec-circle.svg +5 -0
  146. package/assets/svg/microphone-mic-rec.svg +5 -0
  147. package/assets/svg/microphone-mic-recording-circle.svg +10 -0
  148. package/assets/svg/minus.svg +5 -0
  149. package/assets/svg/modalities.svg +5 -0
  150. package/assets/svg/money-coin.svg +8 -0
  151. package/assets/svg/money-dollar.svg +8 -0
  152. package/assets/svg/money.svg +5 -0
  153. package/assets/svg/mouse-big.svg +6 -0
  154. package/assets/svg/move.svg +5 -0
  155. package/assets/svg/music-play-resume.svg +5 -0
  156. package/assets/svg/music-stop.svg +5 -0
  157. package/assets/svg/mute.svg +5 -0
  158. package/assets/svg/network-storage-alert.svg +7 -0
  159. package/assets/svg/notebook-add-plus.svg +5 -0
  160. package/assets/svg/notebook-open.svg +9 -0
  161. package/assets/svg/notebook-pen-edit.svg +8 -0
  162. package/assets/svg/notebook.svg +5 -0
  163. package/assets/svg/notes-pen.svg +8 -0
  164. package/assets/svg/object-search-zoom-plus.svg +5 -0
  165. package/assets/svg/open.svg +5 -0
  166. package/assets/svg/pencil-edit-create.svg +5 -0
  167. package/assets/svg/photo-edit-brightness-invert.svg +6 -0
  168. package/assets/svg/pie-chart.svg +5 -0
  169. package/assets/svg/pie-graph-chart-sample.svg +8 -0
  170. package/assets/svg/plus-add-rectangle.svg +6 -0
  171. package/assets/svg/polygon.svg +5 -0
  172. package/assets/svg/protection-target.svg +5 -0
  173. package/assets/svg/protective-mask.svg +7 -0
  174. package/assets/svg/question-circle.svg +7 -0
  175. package/assets/svg/radiology-scan-circle.svg +11 -0
  176. package/assets/svg/radiology-scan.svg +11 -0
  177. package/assets/svg/rotate-arrow-manual.svg +10 -0
  178. package/assets/svg/rotate-item-left.svg +6 -0
  179. package/assets/svg/rotate-item-right.svg +6 -0
  180. package/assets/svg/rotate-refresh.svg +7 -0
  181. package/assets/svg/rotate.svg +5 -0
  182. package/assets/svg/ruler-bidirectional.svg +9 -0
  183. package/assets/svg/ruler.svg +5 -0
  184. package/assets/svg/scanner.svg +9 -0
  185. package/assets/svg/search-loop.svg +10 -0
  186. package/assets/svg/search-user-profile-person.svg +5 -0
  187. package/assets/svg/search-zoom-minus.svg +5 -0
  188. package/assets/svg/search-zoom-plus.svg +5 -0
  189. package/assets/svg/search.svg +5 -0
  190. package/assets/svg/section-form-element.svg +5 -0
  191. package/assets/svg/server-checkmark.svg +11 -0
  192. package/assets/svg/server-databases-connect.svg +5 -0
  193. package/assets/svg/server-databases-download.svg +8 -0
  194. package/assets/svg/server-databases-key-protection.svg +12 -0
  195. package/assets/svg/server-databases-minimal-download.svg +6 -0
  196. package/assets/svg/server-databases-sync-import.svg +6 -0
  197. package/assets/svg/server-databases-sync.svg +10 -0
  198. package/assets/svg/server-upload.svg +11 -0
  199. package/assets/svg/server.svg +8 -0
  200. package/assets/svg/servers-database.svg +8 -0
  201. package/assets/svg/setting-gear.svg +6 -0
  202. package/assets/svg/settings-adjust.svg +5 -0
  203. package/assets/svg/settings-gear-square.svg +7 -0
  204. package/assets/svg/settings-gear.svg +7 -0
  205. package/assets/svg/settings-select.svg +5 -0
  206. package/assets/svg/share.svg +5 -0
  207. package/assets/svg/show-visible.svg +5 -0
  208. package/assets/svg/star.svg +5 -0
  209. package/assets/svg/stars-light-sparkle.svg +5 -0
  210. package/assets/svg/stomach.svg +5 -0
  211. package/assets/svg/substract-group.svg +5 -0
  212. package/assets/svg/switch.svg +6 -0
  213. package/assets/svg/target.svg +5 -0
  214. package/assets/svg/tasklist-to-do-checkmark.svg +8 -0
  215. package/assets/svg/text-long.svg +9 -0
  216. package/assets/svg/text-short-form-element.svg +7 -0
  217. package/assets/svg/thumbs-up-like.svg +5 -0
  218. package/assets/svg/timer-clock-style.svg +8 -0
  219. package/assets/svg/trash-delete.svg +5 -0
  220. package/assets/svg/undone-uncheck-untracked.svg +5 -0
  221. package/assets/svg/unlimited-repeat-subscription-circle.svg +7 -0
  222. package/assets/svg/upload.svg +5 -0
  223. package/assets/svg/user-checked.svg +5 -0
  224. package/assets/svg/user-delete-cross.svg +8 -0
  225. package/assets/svg/user-document.svg +5 -0
  226. package/assets/svg/user-group.svg +5 -0
  227. package/assets/svg/user-key.svg +5 -0
  228. package/assets/svg/user-lock.svg +8 -0
  229. package/assets/svg/user-profile-group-discovery.svg +5 -0
  230. package/assets/svg/user-setting-gear.svg +7 -0
  231. package/assets/svg/user.svg +5 -0
  232. package/assets/svg/video-player-controls.svg +5 -0
  233. package/assets/svg/visible-eye-hidden.svg +6 -0
  234. package/assets/svg/volume-full.svg +5 -0
  235. package/assets/svg/warning-circle.svg +7 -0
  236. package/assets/svg/warning.svg +7 -0
  237. package/assets/svg/window-finder-resize-arrow-down.svg +5 -0
  238. package/assets/svg/window-finder-resize-arrow-up.svg +5 -0
  239. package/assets/svg/window-resize-left.svg +5 -0
  240. package/assets/svg/window-resize-right.svg +5 -0
  241. package/assets/svg/window-zoom-plus-loupe.svg +5 -0
  242. package/assets/svg/windows.svg +5 -0
  243. package/assets/svg/workspace-mode.svg +5 -0
  244. package/assets/svg/youtube.svg +6 -0
  245. package/components/avatar/avatar.component.d.ts +16 -0
  246. package/components/avatar/avatar.module.d.ts +9 -0
  247. package/components/button/button.component.d.ts +11 -4
  248. package/components/button/button.module.d.ts +2 -1
  249. package/components/dialog/choice-dialog.component.d.ts +8 -5
  250. package/elements/README.md +20 -0
  251. package/elements/package.json +5 -5
  252. package/esm2020/components/avatar/avatar.component.mjs +53 -0
  253. package/esm2020/components/avatar/avatar.module.mjs +33 -0
  254. package/esm2020/components/button/button.component.mjs +55 -0
  255. package/{esm2015/components/button/button.module.js → esm2020/components/button/button.module.mjs} +10 -6
  256. package/{esm2015/components/button-group/button-group.component.js → esm2020/components/button-group/button-group.component.mjs} +6 -12
  257. package/{esm2015/components/button-group/button-group.module.js → esm2020/components/button-group/button-group.module.mjs} +4 -4
  258. package/esm2020/components/dialog/choice-dialog.component.mjs +90 -0
  259. package/{esm2015/components/dialog/confirm-dialog.component.js → esm2020/components/dialog/confirm-dialog.component.mjs} +4 -4
  260. package/{esm2015/components/dialog/dialog.module.js → esm2020/components/dialog/dialog.module.mjs} +4 -4
  261. package/esm2020/components/dialog/dialog.service.mjs +72 -0
  262. package/{esm2015/components/dialog/error-dialog.component.js → esm2020/components/dialog/error-dialog.component.mjs} +4 -4
  263. package/esm2020/components/dialog/portal-dialog.component.mjs +112 -0
  264. package/{esm2015/components/icon/icon.component.js → esm2020/components/icon/icon.component.mjs} +3 -3
  265. package/{esm2015/components/icon/icon.module.js → esm2020/components/icon/icon.module.mjs} +4 -4
  266. package/esm2020/components/notification/notification/notification.component.mjs +69 -0
  267. package/esm2020/components/notification/notification-container/notification-container.component.mjs +86 -0
  268. package/{esm2015/components/notification/notification.module.js → esm2020/components/notification/notification.module.mjs} +4 -4
  269. package/{esm2015/components/notification/notification.service.js → esm2020/components/notification/notification.service.mjs} +3 -3
  270. package/{esm2015/components/popover/popover-trigger.component.js → esm2020/components/popover/popover-trigger.component.mjs} +3 -3
  271. package/esm2020/components/popover/popover-trigger.directive.mjs +133 -0
  272. package/esm2020/components/popover/popover.component.mjs +29 -0
  273. package/{esm2015/components/popover/popover.module.js → esm2020/components/popover/popover.module.mjs} +4 -4
  274. package/{esm2015/components/shared/pipes/pipes.module.js → esm2020/components/shared/pipes/pipes.module.mjs} +4 -4
  275. package/{esm2015/components/shared/pipes/translate.pipe.js → esm2020/components/shared/pipes/translate.pipe.mjs} +3 -3
  276. package/{esm2015/components/shared/pipes/trusthtml.pipe.js → esm2020/components/shared/pipes/trusthtml.pipe.mjs} +3 -3
  277. package/{esm2015/components/shared/translation.service.js → esm2020/components/shared/translation.service.mjs} +3 -3
  278. package/esm2020/components/table/table.component.mjs +179 -0
  279. package/{esm2015/components/table/table.module.js → esm2020/components/table/table.module.mjs} +4 -4
  280. package/{esm2015/elements/elements.js → esm2020/elements/elements.mjs} +4 -4
  281. package/esm2020/public-api.mjs +27 -0
  282. package/fesm2015/{flywheel-io-vision-elements.js → flywheel-io-vision-elements.mjs} +5 -5
  283. package/fesm2015/flywheel-io-vision-elements.mjs.map +1 -0
  284. package/fesm2015/flywheel-io-vision.mjs +1504 -0
  285. package/fesm2015/flywheel-io-vision.mjs.map +1 -0
  286. package/fesm2020/flywheel-io-vision-elements.mjs +85 -0
  287. package/fesm2020/flywheel-io-vision-elements.mjs.map +1 -0
  288. package/fesm2020/flywheel-io-vision.mjs +1494 -0
  289. package/fesm2020/flywheel-io-vision.mjs.map +1 -0
  290. package/package.json +43 -18
  291. package/public-api.d.ts +2 -0
  292. package/scss/atoms/ghost.scss +30 -0
  293. package/scss/config/colors.scss +45 -55
  294. package/scss/config/config.scss +5 -1
  295. package/scss/config/theme.scss +39 -6
  296. package/scss/icons/_icon-glyphs.scss +537 -158
  297. package/scss/material/overrides.scss +6 -1
  298. package/styles.css +1544 -175
  299. package/styles.scss +16 -10
  300. package/bundles/flywheel-io-vision-elements.umd.js +0 -449
  301. package/bundles/flywheel-io-vision-elements.umd.js.map +0 -1
  302. package/bundles/flywheel-io-vision.umd.js +0 -1800
  303. package/bundles/flywheel-io-vision.umd.js.map +0 -1
  304. package/esm2015/components/button/button.component.js +0 -37
  305. package/esm2015/components/dialog/choice-dialog.component.js +0 -78
  306. package/esm2015/components/dialog/dialog.service.js +0 -69
  307. package/esm2015/components/dialog/portal-dialog.component.js +0 -113
  308. package/esm2015/components/notification/notification/notification.component.js +0 -78
  309. package/esm2015/components/notification/notification-container/notification-container.component.js +0 -93
  310. package/esm2015/components/popover/popover-trigger.directive.js +0 -135
  311. package/esm2015/components/popover/popover.component.js +0 -35
  312. package/esm2015/components/table/table.component.js +0 -184
  313. package/esm2015/public-api.js +0 -25
  314. package/fesm2015/flywheel-io-vision-elements.js.map +0 -1
  315. package/fesm2015/flywheel-io-vision.js +0 -1419
  316. package/fesm2015/flywheel-io-vision.js.map +0 -1
  317. /package/{esm2015/components/notification/notification/notification.model.js → esm2020/components/notification/notification/notification.model.mjs} +0 -0
  318. /package/{esm2015/components/notification/notification-timer.service.js → esm2020/components/notification/notification-timer.service.mjs} +0 -0
  319. /package/{esm2015/elements/flywheel-io-vision-elements.js → esm2020/elements/flywheel-io-vision-elements.mjs} +0 -0
  320. /package/{esm2015/elements/polyfills.js → esm2020/elements/polyfills.mjs} +0 -0
  321. /package/{esm2015/elements/public-api.js → esm2020/elements/public-api.mjs} +0 -0
  322. /package/{esm2015/flywheel-io-vision.js → esm2020/flywheel-io-vision.mjs} +0 -0
@@ -1,184 +0,0 @@
1
- import { Component, Input, ViewChild } from '@angular/core';
2
- import { FormControl, FormGroup } from '@angular/forms';
3
- import { MatPaginator } from '@angular/material/paginator';
4
- import { MatSort } from '@angular/material/sort';
5
- import { MatTableDataSource } from '@angular/material/table';
6
- import { debounceTime } from 'rxjs/operators';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/material/table";
9
- import * as i2 from "@angular/material/form-field";
10
- import * as i3 from "@angular/material/select";
11
- import * as i4 from "@angular/material/core";
12
- import * as i5 from "@angular/material/sort";
13
- import * as i6 from "@angular/material/paginator";
14
- import * as i7 from "@angular/common";
15
- import * as i8 from "@angular/material/input";
16
- import * as i9 from "@angular/forms";
17
- export class FwTableComponent {
18
- constructor(changeDetectorRef) {
19
- this.changeDetectorRef = changeDetectorRef;
20
- this.columns = [];
21
- this.dataSource = [];
22
- this.layout = 'basic';
23
- this.pageSize = null;
24
- this.webCompPageSize = null;
25
- this.sort = null;
26
- this.sortColumn = '';
27
- this.sortOrder = 'asc';
28
- this.displayedColumns = [];
29
- this.filters = new FormGroup({});
30
- // to support updating column header labels
31
- this.trackByIndex = i => i;
32
- }
33
- ngOnInit() {
34
- this.setDataSource();
35
- this.setColumns();
36
- this.addFilterControls();
37
- this.setFilter();
38
- this.matDataSource.filterPredicate = (row, filter) => {
39
- const filters = JSON.parse(filter);
40
- for (const filter in filters) {
41
- const filterValue = filters[filter];
42
- const rowValue = row[filter];
43
- // multi-select
44
- if (Array.isArray(filterValue) && filterValue.length > 0 && !filterValue.includes(rowValue)) {
45
- return false;
46
- }
47
- // input or select
48
- if (!Array.isArray(filterValue) && !String(rowValue).toLowerCase().includes(String(filterValue !== null && filterValue !== void 0 ? filterValue : '').toLowerCase())) {
49
- return false;
50
- }
51
- }
52
- return true;
53
- };
54
- this.filters.valueChanges.pipe(debounceTime(200)).subscribe(() => this.setFilter());
55
- }
56
- ngAfterViewInit() {
57
- this.setSort();
58
- this.setPaginator();
59
- }
60
- ngOnChanges(changes) {
61
- if (changes.columns) {
62
- this.setColumns();
63
- }
64
- if (changes.dataSource) {
65
- this.setDataSource();
66
- }
67
- if (changes.sort || changes.dataSource) {
68
- this.setSort();
69
- }
70
- if (changes.pageSize || changes['page-size']) {
71
- this.setPaginator();
72
- }
73
- }
74
- get isCompact() {
75
- return this.layout === 'compact';
76
- }
77
- get paginationSize() {
78
- return this.pageSize || this.webCompPageSize || 0;
79
- }
80
- get isSortEnabled() {
81
- return this.sort !== null;
82
- }
83
- addFilterControls() {
84
- for (const column of this.columns) {
85
- this.filters.addControl(column.key, new FormControl());
86
- }
87
- }
88
- setDataSource() {
89
- this.matDataSource = new MatTableDataSource(this.dataSource);
90
- }
91
- setColumns() {
92
- this.displayedColumns = this.columns.map(column => column.key);
93
- }
94
- setFilter() {
95
- this.matDataSource.filter = JSON.stringify(this.filters.value);
96
- }
97
- setSort() {
98
- if (!this.matSort || this.sort === null) {
99
- return;
100
- }
101
- const sortSplit = this.sort.split(' ');
102
- this.sortColumn = sortSplit[0];
103
- if (['asc', 'desc'].includes(sortSplit[1])) {
104
- this.sortOrder = sortSplit[1];
105
- }
106
- else {
107
- console.warn(`Sort order '${sortSplit[1]}' is not 'asc' or 'desc', defaulting to 'asc'`);
108
- }
109
- if (this.sortColumn) {
110
- this.matSort.sort({ id: this.sortColumn, start: this.sortOrder, disableClear: false });
111
- const sortHeader = this.matSort.sortables.get(this.sortColumn);
112
- if (sortHeader) {
113
- sortHeader._setAnimationTransitionState({ toState: 'active' });
114
- }
115
- else {
116
- console.warn(`Unable to find sort column '${this.sortColumn}'. Initial sort failed.`);
117
- }
118
- }
119
- this.matDataSource.sort = this.matSort;
120
- }
121
- setPaginator() {
122
- // ensures ui updates correctly when paginator options change
123
- this.changeDetectorRef.detectChanges();
124
- this.matDataSource.paginator = this.matPaginator;
125
- }
126
- // necessary for web component to trigger this.filter.valueChanges
127
- onInputFilter(event, column) {
128
- // defer setting filter control as event.target.value is not set yet
129
- setTimeout(() => this.filters.get(column.key).setValue(event.target.value));
130
- }
131
- // necessary for web component to trigger this.filter.valueChanges
132
- onSelectFilter(event, column) {
133
- const innerText = event.target.innerText;
134
- this.filters.get(column.key).setValue(innerText === '- none -' ? null : innerText);
135
- }
136
- // necessary for web component to trigger this.filter.valueChanges
137
- onMultiSelectFilter(event, column) {
138
- let value = this.filters.controls[column.key].value || [];
139
- const innerText = event.target.parentElement.innerText;
140
- if (value.includes(innerText)) {
141
- value = value.filter(v => v !== innerText);
142
- }
143
- else {
144
- value.push(innerText);
145
- }
146
- this.filters.get(column.key).setValue(value.length === 1 && innerText === ''
147
- ? null // when all checboxes have been deselected
148
- : value);
149
- }
150
- }
151
- FwTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FwTableComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
152
- FwTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FwTableComponent, selector: "fw-table", inputs: { columns: "columns", dataSource: "dataSource", layout: "layout", pageSize: "pageSize", webCompPageSize: ["page-size", "webCompPageSize"], sort: "sort" }, host: { properties: { "class.compact": "isCompact" }, classAttribute: "fw-table" }, viewQueries: [{ propertyName: "matPaginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "matSort", first: true, predicate: MatSort, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<table mat-table [dataSource]=\"matDataSource\" matSort>\n <ng-container *ngFor=\"let column of columns; trackBy: trackByIndex\">\n <ng-container [matColumnDef]=\"column.key\">\n\n <ng-template #tableHeaders>\n <ng-container [ngSwitch]=\"column.filter?.control\">\n <ng-container *ngSwitchCase=\"'input'\">\n <mat-form-field *ngIf=\"filters.get(column.key) as control\" appearance=\"outline\" (click)=\"$event.stopPropagation()\">\n <mat-label *ngIf=\"!isCompact\">{{ column.label }}</mat-label>\n <input matInput [formControl]=\"control\" [placeholder]=\"column.filter.placeholder\" (keydown)=\"$event.stopPropagation(); onInputFilter($event, column);\">\n </mat-form-field>\n </ng-container>\n <ng-container *ngSwitchCase=\"'select'\">\n <mat-form-field *ngIf=\"filters.get(column.key) as control\" appearance=\"outline\" (click)=\"$event.stopPropagation()\">\n <mat-label *ngIf=\"!isCompact\">{{ column.label }}</mat-label>\n <mat-select [formControl]=\"control\" [placeholder]=\"column.filter.placeholder\">\n <mat-option (click)=\"onSelectFilter($event, column);\">- none -</mat-option>\n <mat-option *ngFor=\"let option of column.filter.options\" [value]=\"option\" (click)=\"onSelectFilter($event, column);\">{{ option }}</mat-option>\n </mat-select>\n </mat-form-field>\n </ng-container>\n <ng-container *ngSwitchCase=\"'multi-select'\">\n <mat-form-field *ngIf=\"filters.get(column.key) as control\" appearance=\"outline\" (click)=\"$event.stopPropagation()\">\n <mat-label *ngIf=\"!isCompact\">{{ column.label }}</mat-label>\n <mat-select [formControl]=\"control\" [placeholder]=\"column.filter.placeholder\" multiple=\"true\">\n <mat-option *ngFor=\"let option of column.filter.options\" [value]=\"option\" (click)=\"onMultiSelectFilter($event, column);\">{{ option }}</mat-option>\n </mat-select>\n </mat-form-field>\n </ng-container>\n <ng-container *ngSwitchDefault>{{ column.label }}</ng-container>\n </ng-container>\n </ng-template>\n\n <ng-container *ngIf=\"isSortEnabled\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>\n <ng-container [ngTemplateOutlet]=\"tableHeaders\"></ng-container>\n </th>\n </ng-container>\n\n <ng-container *ngIf=\"!isSortEnabled\">\n <th mat-header-cell *matHeaderCellDef>\n <ng-container [ngTemplateOutlet]=\"tableHeaders\"></ng-container>\n </th>\n </ng-container>\n\n <td mat-cell *matCellDef=\"let element\"> {{ element[column.key] }} </td>\n </ng-container>\n </ng-container>\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n</table>\n<mat-paginator *ngIf=\"paginationSize > 0\" [pageSize]=\"paginationSize\"></mat-paginator>\n\n\n\n", styles: [":host{display:block;width:100%}:host:not(.compact) table.mat-table tr.mat-header-row,:host:not(.compact) table.mat-table tr.mat-row{height:56px}:host.compact table.mat-table tr.mat-header-row,:host.compact table.mat-table tr.mat-row{height:32px}:host.compact mat-paginator.mat-paginator{align-items:center;display:flex;height:32px;justify-content:flex-end}table.mat-table{width:100%}table.mat-table th,table.mat-table td{vertical-align:middle}table.mat-table th.mat-header-cell,table.mat-table th.mat-cell,table.mat-table td.mat-header-cell,table.mat-table td.mat-cell{border-bottom-color:var(--color-gray)}\n"], components: [{ type: i1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i2.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i3.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i4.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i5.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "arrowPosition", "sortActionDescription", "disableClear", "mat-sort-header", "start"], exportAs: ["matSortHeader"] }, { type: i1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i6.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }], directives: [{ type: i5.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortActive"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i7.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i7.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.MatLabel, selector: "mat-label" }, { type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i9.FormControlDirective, selector: "[formControl]", inputs: ["disabled", "formControl", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i7.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.MatCellDef, selector: "[matCellDef]" }, { type: i1.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }] });
153
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FwTableComponent, decorators: [{
154
- type: Component,
155
- args: [{
156
- host: {
157
- 'class': 'fw-table',
158
- '[class.compact]': 'isCompact',
159
- },
160
- selector: 'fw-table',
161
- styleUrls: ['./table.component.scss'],
162
- templateUrl: './table.component.html',
163
- }]
164
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { columns: [{
165
- type: Input
166
- }], dataSource: [{
167
- type: Input
168
- }], layout: [{
169
- type: Input
170
- }], pageSize: [{
171
- type: Input
172
- }], webCompPageSize: [{
173
- type: Input,
174
- args: ['page-size']
175
- }], sort: [{
176
- type: Input
177
- }], matPaginator: [{
178
- type: ViewChild,
179
- args: [MatPaginator]
180
- }], matSort: [{
181
- type: ViewChild,
182
- args: [MatSort]
183
- }] } });
184
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdGFibGUvdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdGFibGUvdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsS0FBSyxFQUFvQyxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakgsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLE9BQU8sRUFBaUIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7O0FBeUI5QyxNQUFNLE9BQU8sZ0JBQWdCO0lBcUIzQixZQUNVLGlCQUFvQztRQUFwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBckJyQyxZQUFPLEdBQWEsRUFBRSxDQUFBO1FBQ3RCLGVBQVUsR0FBVSxFQUFFLENBQUE7UUFDdEIsV0FBTSxHQUF5QixPQUFPLENBQUE7UUFDdEMsYUFBUSxHQUFHLElBQUksQ0FBQTtRQUNKLG9CQUFlLEdBQUcsSUFBSSxDQUFBO1FBQ2pDLFNBQUksR0FBRyxJQUFJLENBQUE7UUFFWixlQUFVLEdBQUcsRUFBRSxDQUFBO1FBQ2YsY0FBUyxHQUFjLEtBQUssQ0FBQTtRQUVwQyxxQkFBZ0IsR0FBYSxFQUFFLENBQUE7UUFDL0IsWUFBTyxHQUFjLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBR3RDLDJDQUEyQztRQUMzQyxpQkFBWSxHQUFRLENBQUMs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QUFRO3NCQUFoQixLQUFLO2dCQUNjLGVBQWU7c0JBQWxDLEtBQUs7dUJBQUMsV0FBVztnQkFDVCxJQUFJO3NCQUFaLEtBQUs7Z0JBWW1CLFlBQVk7c0JBQXBDLFNBQVM7dUJBQUMsWUFBWTtnQkFDSCxPQUFPO3NCQUExQixTQUFTO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdFBhZ2luYXRvciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQgeyBNYXRTb3J0LCBNYXRTb3J0SGVhZGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQgeyBNYXRUYWJsZURhdGFTb3VyY2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbnR5cGUgU29ydE9yZGVyID0gJ2FzYycgfCAnZGVzYydcblxuaW50ZXJmYWNlIENvbHVtbkZpbHRlciB7XG4gIGNvbnRyb2w6ICdpbnB1dCcgfCAnc2VsZWN0JyB8ICdtdWx0aS1zZWxlY3QnLFxuICBvcHRpb25zPzogc3RyaW5nW10sXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nLFxufVxuXG5pbnRlcmZhY2UgQ29sdW1uIHtcbiAgbGFiZWw6IHN0cmluZyxcbiAga2V5OiBzdHJpbmcsXG4gIGZpbHRlcj86IENvbHVtbkZpbHRlcixcbn1cblxuQENvbXBvbmVudCh7XG4gIGhvc3Q6IHtcbiAgICAnY2xhc3MnOiAnZnctdGFibGUnLFxuICAgICdbY2xhc3MuY29tcGFjdF0nOiAnaXNDb21wYWN0JyxcbiAgfSxcbiAgc2VsZWN0b3I6ICdmdy10YWJsZScsXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLmNvbXBvbmVudC5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIEZ3VGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGNvbHVtbnM6IENvbHVtbltdID0gW11cbiAgQElucHV0KCkgZGF0YVNvdXJjZTogYW55W10gPSBbXVxuICBASW5wdXQoKSBsYXlvdXQ/OiAnYmFzaWMnIHwgJ2NvbXBhY3QnID0gJ2Jhc2ljJ1xuICBASW5wdXQoKSBwYWdlU2l6ZSA9IG51bGxcbiAgQElucHV0KCdwYWdlLXNpemUnKSB3ZWJDb21wUGFnZVNpemUgPSBudWxsXG4gIEBJbnB1dCgpIHNvcnQgPSBudWxsXG5cbiAgcHJpdmF0ZSBzb3J0Q29sdW1uID0gJydcbiAgcHJpdmF0ZSBzb3J0T3JkZXI6IFNvcnRPcmRlciA9ICdhc2MnXG5cbiAgZGlzcGxheWVkQ29sdW1uczogc3RyaW5nW10gPSBbXVxuICBmaWx0ZXJzOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KVxuICBtYXREYXRhU291cmNlOiBNYXRUYWJsZURhdGFTb3VyY2U8YW55PlxuXG4gIC8vIHRvIHN1cHBvcnQgdXBkYXRpbmcgY29sdW1uIGhlYWRlciBsYWJlbHNcbiAgdHJhY2tCeUluZGV4OiBhbnkgPSBpID0+IGlcblxuICBAVmlld0NoaWxkKE1hdFBhZ2luYXRvcikgbWF0UGFnaW5hdG9yOiBNYXRQYWdpbmF0b3JcbiAgQFZpZXdDaGlsZChNYXRTb3J0KSBtYXRTb3J0OiBNYXRTb3J0XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXREYXRhU291cmNlKCk7XG4gICAgdGhpcy5zZXRDb2x1bW5zKCk7XG4gICAgdGhpcy5hZGRGaWx0ZXJDb250cm9scygpO1xuICAgIHRoaXMuc2V0RmlsdGVyKCk7XG4gICAgdGhpcy5tYXREYXRhU291cmNlLmZpbHRlclByZWRpY2F0ZSA9IChyb3csIGZpbHRlcikgPT4ge1xuICAgICAgY29uc3QgZmlsdGVycyA9IEpTT04ucGFyc2UoZmlsdGVyKTtcbiAgICAgIGZvciAoY29uc3QgZmlsdGVyIGluIGZpbHRlcnMpIHtcbiAgICAgICAgY29uc3QgZmlsdGVyVmFsdWUgPSBmaWx0ZXJzW2ZpbHRlcl07XG4gICAgICAgIGNvbnN0IHJvd1ZhbHVlID0gcm93W2ZpbHRlcl07XG4gICAgICAgIC8vIG11bHRpLXNlbGVjdFxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmaWx0ZXJWYWx1ZSkgJiYgZmlsdGVyVmFsdWUubGVuZ3RoID4gMCAmJiAhZmlsdGVyVmFsdWUuaW5jbHVkZXMocm93VmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIGlucHV0IG9yIHNlbGVjdFxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZmlsdGVyVmFsdWUpICYmICFTdHJpbmcocm93VmFsdWUpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoU3RyaW5nKGZpbHRlclZhbHVlID8/ICcnKS50b0xvd2VyQ2FzZSgpKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcbiAgICB0aGlzLmZpbHRlcnMudmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDIwMCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLnNldEZpbHRlcigpKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldFNvcnQoKTtcbiAgICB0aGlzLnNldFBhZ2luYXRvcigpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmNvbHVtbnMpIHtcbiAgICAgIHRoaXMuc2V0Q29sdW1ucygpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5kYXRhU291cmNlKSB7XG4gICAgICB0aGlzLnNldERhdGFTb3VyY2UoKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMuc29ydCB8fCBjaGFuZ2VzLmRhdGFTb3VyY2UpIHtcbiAgICAgIHRoaXMuc2V0U29ydCgpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5wYWdlU2l6ZSB8fCBjaGFuZ2VzWydwYWdlLXNpemUnXSkge1xuICAgICAgdGhpcy5zZXRQYWdpbmF0b3IoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgaXNDb21wYWN0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxheW91dCA9PT0gJ2NvbXBhY3QnO1xuICB9XG5cbiAgZ2V0IHBhZ2luYXRpb25TaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucGFnZVNpemUgfHwgdGhpcy53ZWJDb21wUGFnZVNpemUgfHwgMDtcbiAgfVxuXG4gIGdldCBpc1NvcnRFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNvcnQgIT09IG51bGw7XG4gIH1cblxuICBhZGRGaWx0ZXJDb250cm9scygpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiB0aGlzLmNvbHVtbnMpIHtcbiAgICAgIHRoaXMuZmlsdGVycy5hZGRDb250cm9sKGNvbHVtbi5rZXksIG5ldyBGb3JtQ29udHJvbCgpKTtcbiAgICB9XG4gIH1cblxuICBzZXREYXRhU291cmNlKCk6IHZvaWQge1xuICAgIHRoaXMubWF0RGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2UodGhpcy5kYXRhU291cmNlKTtcbiAgfVxuXG4gIHNldENvbHVtbnMoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gdGhpcy5jb2x1bW5zLm1hcChjb2x1bW4gPT4gY29sdW1uLmtleSk7XG4gIH1cblxuICBzZXRGaWx0ZXIoKTogdm9pZCB7XG4gICAgdGhpcy5tYXREYXRhU291cmNlLmZpbHRlciA9IEpTT04uc3RyaW5naWZ5KHRoaXMuZmlsdGVycy52YWx1ZSk7XG4gIH1cblxuICBzZXRTb3J0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5tYXRTb3J0IHx8IHRoaXMuc29ydCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzb3J0U3BsaXQgPSB0aGlzLnNvcnQuc3BsaXQoJyAnKTtcbiAgICB0aGlzLnNvcnRDb2x1bW4gPSBzb3J0U3BsaXRbMF07XG4gICAgaWYgKFsnYXNjJywgJ2Rlc2MnXS5pbmNsdWRlcyhzb3J0U3BsaXRbMV0pKSB7XG4gICAgICB0aGlzLnNvcnRPcmRlciA9IHNvcnRTcGxpdFsxXSBhcyBTb3J0T3JkZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybihgU29ydCBvcmRlciAnJHtzb3J0U3BsaXRbMV19JyBpcyBub3QgJ2FzYycgb3IgJ2Rlc2MnLCBkZWZhdWx0aW5nIHRvICdhc2MnYCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnNvcnRDb2x1bW4pIHtcbiAgICAgIHRoaXMubWF0U29ydC5zb3J0KHsgaWQ6IHRoaXMuc29ydENvbHVtbiwgc3RhcnQ6IHRoaXMuc29ydE9yZGVyLCBkaXNhYmxlQ2xlYXI6IGZhbHNlIH0pO1xuICAgICAgY29uc3Qgc29ydEhlYWRlciA9IHRoaXMubWF0U29ydC5zb3J0YWJsZXMuZ2V0KHRoaXMuc29ydENvbHVtbikgYXMgTWF0U29ydEhlYWRlcjtcbiAgICAgIGlmIChzb3J0SGVhZGVyKSB7XG4gICAgICAgIHNvcnRIZWFkZXIuX3NldEFuaW1hdGlvblRyYW5zaXRpb25TdGF0ZSh7IHRvU3RhdGU6ICdhY3RpdmUnIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBVbmFibGUgdG8gZmluZCBzb3J0IGNvbHVtbiAnJHt0aGlzLnNvcnRDb2x1bW59Jy4gSW5pdGlhbCBzb3J0IGZhaWxlZC5gKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5tYXREYXRhU291cmNlLnNvcnQgPSB0aGlzLm1hdFNvcnQ7XG4gIH1cblxuICBzZXRQYWdpbmF0b3IoKTogdm9pZCB7XG4gICAgLy8gZW5zdXJlcyB1aSB1cGRhdGVzIGNvcnJlY3RseSB3aGVuIHBhZ2luYXRvciBvcHRpb25zIGNoYW5nZVxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMubWF0RGF0YVNvdXJjZS5wYWdpbmF0b3IgPSB0aGlzLm1hdFBhZ2luYXRvcjtcbiAgfVxuXG4gIC8vIG5lY2Vzc2FyeSBmb3Igd2ViIGNvbXBvbmVudCB0byB0cmlnZ2VyIHRoaXMuZmlsdGVyLnZhbHVlQ2hhbmdlc1xuICBvbklucHV0RmlsdGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBjb2x1bW46IENvbHVtbik6IHZvaWQge1xuICAgIC8vIGRlZmVyIHNldHRpbmcgZmlsdGVyIGNvbnRyb2wgYXMgZXZlbnQudGFyZ2V0LnZhbHVlIGlzIG5vdCBzZXQgeWV0XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmZpbHRlcnMuZ2V0KGNvbHVtbi5rZXkpLnNldFZhbHVlKChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUpKTtcbiAgfVxuXG4gIC8vIG5lY2Vzc2FyeSBmb3Igd2ViIGNvbXBvbmVudCB0byB0cmlnZ2VyIHRoaXMuZmlsdGVyLnZhbHVlQ2hhbmdlc1xuICBvblNlbGVjdEZpbHRlcihldmVudDogTW91c2VFdmVudCwgY29sdW1uOiBDb2x1bW4pOiB2b2lkIHtcbiAgICBjb25zdCBpbm5lclRleHQgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmlubmVyVGV4dDtcbiAgICB0aGlzLmZpbHRlcnMuZ2V0KGNvbHVtbi5rZXkpLnNldFZhbHVlKGlubmVyVGV4dCA9PT0gJy0gbm9uZSAtJyA/IG51bGwgOiBpbm5lclRleHQpO1xuICB9XG5cbiAgLy8gbmVjZXNzYXJ5IGZvciB3ZWIgY29tcG9uZW50IHRvIHRyaWdnZXIgdGhpcy5maWx0ZXIudmFsdWVDaGFuZ2VzXG4gIG9uTXVsdGlTZWxlY3RGaWx0ZXIoZXZlbnQ6IE1vdXNlRXZlbnQsIGNvbHVtbjogQ29sdW1uKTogdm9pZCB7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5maWx0ZXJzLmNvbnRyb2xzW2NvbHVtbi5rZXldLnZhbHVlIHx8IFtdO1xuICAgIGNvbnN0IGlubmVyVGV4dCA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkucGFyZW50RWxlbWVudC5pbm5lclRleHQ7XG4gICAgaWYgKHZhbHVlLmluY2x1ZGVzKGlubmVyVGV4dCkpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUuZmlsdGVyKHYgPT4gdiAhPT0gaW5uZXJUZXh0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUucHVzaChpbm5lclRleHQpO1xuICAgIH1cbiAgICB0aGlzLmZpbHRlcnMuZ2V0KGNvbHVtbi5rZXkpLnNldFZhbHVlKFxuICAgICAgdmFsdWUubGVuZ3RoID09PSAxICYmIGlubmVyVGV4dCA9PT0gJydcbiAgICAgICAgPyBudWxsIC8vIHdoZW4gYWxsIGNoZWNib3hlcyBoYXZlIGJlZW4gZGVzZWxlY3RlZFxuICAgICAgICA6IHZhbHVlXG4gICAgKTtcbiAgfVxufVxuIiwiPHRhYmxlIG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJtYXREYXRhU291cmNlXCIgbWF0U29ydD5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnM7IHRyYWNrQnk6IHRyYWNrQnlJbmRleFwiPlxuICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2x1bW4ua2V5XCI+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjdGFibGVIZWFkZXJzPlxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJjb2x1bW4uZmlsdGVyPy5jb250cm9sXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2lucHV0J1wiPlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwiZmlsdGVycy5nZXQoY29sdW1uLmtleSkgYXMgY29udHJvbFwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgICAgICAgICA8bWF0LWxhYmVsICpuZ0lmPVwiIWlzQ29tcGFjdFwiPnt7IGNvbHVtbi5sYWJlbCB9fTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIiBbcGxhY2Vob2xkZXJdPVwiY29sdW1uLmZpbHRlci5wbGFjZWhvbGRlclwiIChrZXlkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgb25JbnB1dEZpbHRlcigkZXZlbnQsIGNvbHVtbik7XCI+XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidzZWxlY3QnXCI+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJmaWx0ZXJzLmdldChjb2x1bW4ua2V5KSBhcyBjb250cm9sXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgICAgICAgIDxtYXQtbGFiZWwgKm5nSWY9XCIhaXNDb21wYWN0XCI+e3sgY29sdW1uLmxhYmVsIH19PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgIDxtYXQtc2VsZWN0IFtmb3JtQ29udHJvbF09XCJjb250cm9sXCIgW3BsYWNlaG9sZGVyXT1cImNvbHVtbi5maWx0ZXIucGxhY2Vob2xkZXJcIj5cbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAoY2xpY2spPVwib25TZWxlY3RGaWx0ZXIoJGV2ZW50LCBjb2x1bW4pO1wiPi0gbm9uZSAtPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgY29sdW1uLmZpbHRlci5vcHRpb25zXCIgW3ZhbHVlXT1cIm9wdGlvblwiIChjbGljayk9XCJvblNlbGVjdEZpbHRlcigkZXZlbnQsIGNvbHVtbik7XCI+e3sgb3B0aW9uIH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidtdWx0aS1zZWxlY3QnXCI+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJmaWx0ZXJzLmdldChjb2x1bW4ua2V5KSBhcyBjb250cm9sXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgICAgICAgIDxtYXQtbGFiZWwgKm5nSWY9XCIhaXNDb21wYWN0XCI+e3sgY29sdW1uLmxhYmVsIH19PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgIDxtYXQtc2VsZWN0IFtmb3JtQ29udHJvbF09XCJjb250cm9sXCIgW3BsYWNlaG9sZGVyXT1cImNvbHVtbi5maWx0ZXIucGxhY2Vob2xkZXJcIiBtdWx0aXBsZT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGNvbHVtbi5maWx0ZXIub3B0aW9uc1wiIFt2YWx1ZV09XCJvcHRpb25cIiAoY2xpY2spPVwib25NdWx0aVNlbGVjdEZpbHRlcigkZXZlbnQsIGNvbHVtbik7XCI+e3sgb3B0aW9uIH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD57eyBjb2x1bW4ubGFiZWwgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNTb3J0RW5hYmxlZFwiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRhYmxlSGVhZGVyc1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3RoPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNTb3J0RW5hYmxlZFwiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFibGVIZWFkZXJzXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvdGg+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj4ge3sgZWxlbWVudFtjb2x1bW4ua2V5XSB9fSA8L3RkPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zXCI+PC90cj5cbiAgPHRyIG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnM7XCI+PC90cj5cbjwvdGFibGU+XG48bWF0LXBhZ2luYXRvciAqbmdJZj1cInBhZ2luYXRpb25TaXplID4gMFwiIFtwYWdlU2l6ZV09XCJwYWdpbmF0aW9uU2l6ZVwiPjwvbWF0LXBhZ2luYXRvcj5cblxuXG5cbiJdfQ==
@@ -1,25 +0,0 @@
1
- export * from './components/button-group/button-group.component';
2
- export * from './components/button-group/button-group.module';
3
- export * from './components/button/button.component';
4
- export * from './components/button/button.module';
5
- export * from './components/dialog/choice-dialog.component';
6
- export * from './components/dialog/confirm-dialog.component';
7
- export * from './components/dialog/dialog.module';
8
- export * from './components/dialog/dialog.service';
9
- export * from './components/dialog/error-dialog.component';
10
- export * from './components/dialog/portal-dialog.component';
11
- export * from './components/icon/icon.component';
12
- export * from './components/icon/icon.module';
13
- export * from './components/notification/notification-container/notification-container.component';
14
- export * from './components/notification/notification.module';
15
- export * from './components/notification/notification.service';
16
- export * from './components/notification/notification/notification.component';
17
- export * from './components/notification/notification/notification.model';
18
- export * from './components/popover/popover-trigger.component';
19
- export * from './components/popover/popover-trigger.directive';
20
- export * from './components/popover/popover.component';
21
- export * from './components/popover/popover.module';
22
- export * from './components/table/table.component';
23
- export * from './components/table/table.module';
24
- export * from './components/shared/translation.service';
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsbUZBQW1GLENBQUM7QUFDbEcsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsK0RBQStELENBQUM7QUFDOUUsY0FBYywyREFBMkQsQ0FBQztBQUMxRSxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLHlDQUF5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2J1dHRvbi1ncm91cC9idXR0b24tZ3JvdXAuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9idXR0b24tZ3JvdXAvYnV0dG9uLWdyb3VwLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2J1dHRvbi9idXR0b24ubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9kaWFsb2cvY2hvaWNlLWRpYWxvZy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2RpYWxvZy9jb25maXJtLWRpYWxvZy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2RpYWxvZy9kaWFsb2cubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9kaWFsb2cvZGlhbG9nLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2RpYWxvZy9lcnJvci1kaWFsb2cuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9kaWFsb2cvcG9ydGFsLWRpYWxvZy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2ljb24vaWNvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2ljb24vaWNvbi5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24tY29udGFpbmVyL25vdGlmaWNhdGlvbi1jb250YWluZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9wb3BvdmVyL3BvcG92ZXItdHJpZ2dlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL3BvcG92ZXIvcG9wb3Zlci10cmlnZ2VyLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvcG9wb3Zlci9wb3BvdmVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvcG9wb3Zlci9wb3BvdmVyLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUvdGFibGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy90YWJsZS90YWJsZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL3NoYXJlZC90cmFuc2xhdGlvbi5zZXJ2aWNlJztcbiJdfQ==
@@ -1 +0,0 @@
1
- {"version":3,"file":"flywheel-io-vision-elements.js","sources":["../../../elements/src/polyfills.ts","../../../elements/src/elements.ts","../../../elements/src/flywheel-io-vision-elements.ts"],"sourcesContent":["/**\n * This file includes polyfills needed by Angular and is loaded before the app.\n * You can add your own extra polyfills to this file.\n *\n * This file is divided into 2 sections:\n * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.\n * 2. Application imports. Files imported after ZoneJS that should be loaded before your main\n * file.\n *\n * The current setup is for so-called \"evergreen\" browsers; the last versions of browsers that\n * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),\n * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.\n *\n * Learn more in https://angular.io/guide/browser-support\n */\n\n/***************************************************************************************************\n * BROWSER POLYFILLS\n */\n\n/**\n * IE11 requires the following for NgClass support on SVG elements\n */\n// import 'classlist.js'; // Run `npm install --save classlist.js`.\n\n/**\n * Web Animations `@angular/platform-browser/animations`\n * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari.\n * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0).\n */\n// import 'web-animations-js'; // Run `npm install --save web-animations-js`.\n\n/**\n * By default, zone.js will patch all possible macroTask and DomEvents\n * user can disable parts of macroTask/DomEvents patch by setting following flags\n * because those flags need to be set before `zone.js` being loaded, and webpack\n * will put import in the top of bundle, so user need to create a separate file\n * in this directory (for example: zone-flags.ts), and put the following flags\n * into that file, and then add the following code before importing zone.js.\n * import './zone-flags';\n *\n * The flags allowed in zone-flags.ts are listed here.\n *\n * The following flags will work for all browsers.\n *\n * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame\n * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick\n * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames\n *\n * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js\n * with the following flag, it will bypass `zone.js` patch for IE/Edge\n *\n * (window as any).__Zone_enable_cross_context_check = true;\n *\n */\n\n/***************************************************************************************************\n * Zone JS is required by default for Angular itself.\n */\nimport 'zone.js/dist/zone'; // Included with Angular CLI.\n\n\n/***************************************************************************************************\n * APPLICATION IMPORTS\n */\nimport 'document-register-element';\n","import './polyfills';\nimport { Compiler, DoBootstrap, enableProdMode, Injector, NgModule, Type } from '@angular/core';\nimport { createCustomElement } from '@angular/elements';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nlet elementAppModule: ElementAppModule;\n\n@NgModule({\n imports: [\n BrowserAnimationsModule,\n BrowserModule,\n ],\n})\nclass ElementAppModule implements DoBootstrap {\n constructor(\n public compiler: Compiler,\n public injector: Injector,\n ) {\n elementAppModule = this;\n }\n\n ngDoBootstrap(): void {}\n}\n\nfunction initializeApp(): Promise<void> {\n enableProdMode();\n return platformBrowserDynamic().bootstrapModule(ElementAppModule)\n .catch(error => {\n console.error(error);\n throw error;\n }).then(() => void 0);\n}\n\nlet initPromise: Promise<void>;\n\n// https://github.com/angular/angular/blob/a92a89b0eb127a59d7e071502b5850e57618ec2d/aio/src/app/custom-elements/elements-loader.ts#L70\nexport function registerElements(...modules: Type<unknown>[]): Promise<string[]> {\n if (!initPromise) {\n initPromise = initializeApp();\n }\n const elementSelectors = [];\n return initPromise.then(() => Promise.all(modules.map(module => {\n return elementAppModule.compiler.compileModuleAndAllComponentsAsync(module).then(compiledModule => {\n const moduleRef = compiledModule.ngModuleFactory.create(elementAppModule.injector);\n for (const { selector, componentType } of compiledModule.componentFactories) {\n if (selector.startsWith('fw-')) {\n const element = createCustomElement(componentType, { injector: moduleRef.injector });\n customElements.define(selector, element);\n elementSelectors.push(selector);\n }\n }\n });\n }))).then(() => elementSelectors);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}