@entake/particle 18.0.5 → 19.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 (207) hide show
  1. package/LICENSE +1 -1
  2. package/app/{modules → shared/components}/accordion/accordion.component.d.ts +3 -3
  3. package/app/{modules/date-picker → shared}/components/calendar/calendar.component.d.ts +7 -12
  4. package/app/{modules → shared/components}/checkbox/checkbox.component.d.ts +5 -7
  5. package/app/{modules → shared/components}/color-picker/color-picker.component.d.ts +3 -9
  6. package/app/{modules → shared/components}/date-picker/date-picker.component.d.ts +20 -26
  7. package/app/{modules/date-picker → shared}/components/date-range-picker/date-range-picker.component.d.ts +10 -11
  8. package/app/{modules → shared/components}/dialog/dialog.component.d.ts +14 -24
  9. package/app/{modules → shared/components}/dropdown/dropdown.component.d.ts +12 -14
  10. package/app/{modules/icons/components → shared/components/icon-select}/icon-select.component.d.ts +14 -17
  11. package/app/{modules → shared/components}/idle-timeout/idle-timeout.component.d.ts +3 -4
  12. package/app/{modules → shared/components}/input-mask/input-mask.component.d.ts +6 -7
  13. package/app/shared/components/layout-full-framing/layout-full-framing.component.d.ts +27 -0
  14. package/app/shared/components/layout-fullwidth-sidebar/layout-fullwidth-sidebar.component.d.ts +23 -0
  15. package/app/{modules/loader/components → shared/components/loader}/loader.component.d.ts +2 -2
  16. package/app/{modules → shared/components}/multi-select/multi-select.component.d.ts +18 -24
  17. package/app/{modules → shared/components}/notification/notification.component.d.ts +5 -13
  18. package/app/{modules → shared/components}/paginator/paginator.component.d.ts +12 -11
  19. package/app/{modules → shared/components}/popover/popover.component.d.ts +10 -15
  20. package/app/{modules → shared/components}/profile-pic/profile-pic.component.d.ts +1 -1
  21. package/app/shared/components/progress-bar/progress-bar.component.d.ts +15 -0
  22. package/app/{modules → shared/components}/rich-text/rich-text.component.d.ts +11 -12
  23. package/app/shared/components/scroll-to-top/scroll-to-top.component.d.ts +18 -0
  24. package/app/shared/components/slideover/slideover.component.d.ts +35 -0
  25. package/app/{modules → shared/components}/slider/slider.component.d.ts +8 -22
  26. package/app/{modules → shared/components}/toggle-switch/toggle-switch.component.d.ts +4 -6
  27. package/app/{modules → shared/components}/week-picker/week-picker.component.d.ts +21 -22
  28. package/app/{modules/accordion → shared}/directives/accordion-content.directive.d.ts +1 -2
  29. package/app/{modules/accordion → shared}/directives/accordion-header.directive.d.ts +1 -2
  30. package/app/{modules/accordion → shared}/directives/accordion-item.directive.d.ts +1 -1
  31. package/app/{modules/background-carousel → shared/directives}/background-carousel.directive.d.ts +4 -4
  32. package/app/{modules/keyfilter → shared/directives}/keyfilter.directive.d.ts +1 -7
  33. package/app/{modules/tooltip → shared/directives}/tooltip.directive.d.ts +3 -9
  34. package/app/shared/models/carousel-options.model.d.ts +21 -0
  35. package/app/shared/models/pagination-event.model.d.ts +8 -0
  36. package/app/shared/models/particle-component-text.model.d.ts +0 -24
  37. package/app/shared/modules/icons/particle-icons.module.d.ts +7 -0
  38. package/app/{modules/ordinal-number-pipe → shared/pipes}/ordinal-number.pipe.d.ts +1 -1
  39. package/app/shared/services/base-data.service.d.ts +2 -2
  40. package/app/shared/services/dialog.service.d.ts +1 -1
  41. package/app/{modules/notification → shared}/services/notification.service.d.ts +0 -4
  42. package/app/{modules/theming → shared}/services/theming.service.d.ts +0 -19
  43. package/fesm2022/entake-particle.mjs +3871 -5573
  44. package/fesm2022/entake-particle.mjs.map +1 -1
  45. package/package.json +16 -25
  46. package/public_api.d.ts +47 -82
  47. package/app/modules/accordion/accordion.module.d.ts +0 -11
  48. package/app/modules/background-carousel/carousel-options.model.d.ts +0 -30
  49. package/app/modules/background-carousel/particle-background-carousel.module.d.ts +0 -8
  50. package/app/modules/checkbox/checkbox.module.d.ts +0 -9
  51. package/app/modules/color-picker/color-picker.module.d.ts +0 -9
  52. package/app/modules/date-picker/date-picker.module.d.ts +0 -15
  53. package/app/modules/dialog/dialog.module.d.ts +0 -9
  54. package/app/modules/dropdown/dropdown.module.d.ts +0 -9
  55. package/app/modules/endpoint-state/components/endpoint-state.component.d.ts +0 -46
  56. package/app/modules/endpoint-state/endpoint-state.module.d.ts +0 -8
  57. package/app/modules/icons/particle-icons.module.d.ts +0 -13
  58. package/app/modules/idle-timeout/particle-idle-timeout.module.d.ts +0 -9
  59. package/app/modules/input-mask/input-mask.module.d.ts +0 -8
  60. package/app/modules/keyfilter/keyfilter.module.d.ts +0 -8
  61. package/app/modules/layout/components/layout-full-framing/layout-full-framing.component.d.ts +0 -27
  62. package/app/modules/layout/components/layout-fullwidth-sidebar/layout-fullwidth-sidebar.component.d.ts +0 -23
  63. package/app/modules/layout/layout.module.d.ts +0 -10
  64. package/app/modules/loader/loader.module.d.ts +0 -8
  65. package/app/modules/multi-select/multi-select.module.d.ts +0 -8
  66. package/app/modules/notification/notification.module.d.ts +0 -8
  67. package/app/modules/ordinal-number-pipe/ordinal-number-pipe.module.d.ts +0 -8
  68. package/app/modules/paginator/pagination-event.model.d.ts +0 -24
  69. package/app/modules/paginator/particle-paginator.module.d.ts +0 -13
  70. package/app/modules/popover/popover.module.d.ts +0 -9
  71. package/app/modules/profile-pic/particle-profile-pic.module.d.ts +0 -9
  72. package/app/modules/progress-bar/progress-bar.component.d.ts +0 -16
  73. package/app/modules/progress-bar/progress-bar.module.d.ts +0 -8
  74. package/app/modules/push-container/particle-push-container.module.d.ts +0 -9
  75. package/app/modules/push-container/push-container-state.model.d.ts +0 -7
  76. package/app/modules/push-container/push-container.component.d.ts +0 -137
  77. package/app/modules/rich-text/particle-rich-text.module.d.ts +0 -15
  78. package/app/modules/rich-text/render-rich-text.component.d.ts +0 -6
  79. package/app/modules/scroll-to-top/particle-scroll-to-top.module.d.ts +0 -8
  80. package/app/modules/scroll-to-top/scroll-to-top.component.d.ts +0 -19
  81. package/app/modules/slideover/particle-slideover.module.d.ts +0 -8
  82. package/app/modules/slideover/slideover.component.d.ts +0 -35
  83. package/app/modules/slider/slider.module.d.ts +0 -9
  84. package/app/modules/theming/components/theming.component.d.ts +0 -43
  85. package/app/modules/theming/theming.module.d.ts +0 -12
  86. package/app/modules/toggle-switch/toggle-switch.module.d.ts +0 -8
  87. package/app/modules/tooltip/tooltip.module.d.ts +0 -8
  88. package/app/modules/week-picker/week-picker.module.d.ts +0 -13
  89. package/app/shared/enums/endpoint-status.enum.d.ts +0 -9
  90. package/esm2022/app/modules/accordion/accordion.component.mjs +0 -101
  91. package/esm2022/app/modules/accordion/accordion.module.mjs +0 -37
  92. package/esm2022/app/modules/accordion/directives/accordion-content.directive.mjs +0 -17
  93. package/esm2022/app/modules/accordion/directives/accordion-header.directive.mjs +0 -17
  94. package/esm2022/app/modules/accordion/directives/accordion-item.directive.mjs +0 -36
  95. package/esm2022/app/modules/background-carousel/background-carousel.directive.mjs +0 -91
  96. package/esm2022/app/modules/background-carousel/carousel-options.model.mjs +0 -36
  97. package/esm2022/app/modules/background-carousel/particle-background-carousel.module.mjs +0 -24
  98. package/esm2022/app/modules/checkbox/checkbox.component.mjs +0 -108
  99. package/esm2022/app/modules/checkbox/checkbox.module.mjs +0 -28
  100. package/esm2022/app/modules/color-picker/color-picker.component.mjs +0 -306
  101. package/esm2022/app/modules/color-picker/color-picker.module.mjs +0 -19
  102. package/esm2022/app/modules/date-picker/components/calendar/calendar.component.mjs +0 -496
  103. package/esm2022/app/modules/date-picker/components/date-range-picker/date-range-picker.component.mjs +0 -250
  104. package/esm2022/app/modules/date-picker/date-picker.component.mjs +0 -538
  105. package/esm2022/app/modules/date-picker/date-picker.module.mjs +0 -56
  106. package/esm2022/app/modules/dialog/dialog.component.mjs +0 -177
  107. package/esm2022/app/modules/dialog/dialog.module.mjs +0 -28
  108. package/esm2022/app/modules/dropdown/dropdown.component.mjs +0 -682
  109. package/esm2022/app/modules/dropdown/dropdown.module.mjs +0 -28
  110. package/esm2022/app/modules/dropdown/models/dropdown-option-group.model.mjs +0 -2
  111. package/esm2022/app/modules/dropdown/models/dropdown-option.model.mjs +0 -2
  112. package/esm2022/app/modules/endpoint-state/components/endpoint-state.component.mjs +0 -75
  113. package/esm2022/app/modules/endpoint-state/endpoint-state.module.mjs +0 -22
  114. package/esm2022/app/modules/icons/components/icon-select.component.mjs +0 -376
  115. package/esm2022/app/modules/icons/models/fontawesome-icons-brands.model.mjs +0 -471
  116. package/esm2022/app/modules/icons/models/fontawesome-icons-regular.model.mjs +0 -166
  117. package/esm2022/app/modules/icons/models/fontawesome-icons-solid.model.mjs +0 -1016
  118. package/esm2022/app/modules/icons/models/particle-icons-brands.model.mjs +0 -24
  119. package/esm2022/app/modules/icons/models/particle-icons-regular.model.mjs +0 -50
  120. package/esm2022/app/modules/icons/models/particle-icons-solid.model.mjs +0 -89
  121. package/esm2022/app/modules/icons/particle-icons.module.mjs +0 -66
  122. package/esm2022/app/modules/icons/services/icons.service.mjs +0 -82
  123. package/esm2022/app/modules/idle-timeout/idle-timeout.component.mjs +0 -85
  124. package/esm2022/app/modules/idle-timeout/idle-timer.mjs +0 -66
  125. package/esm2022/app/modules/idle-timeout/particle-idle-timeout.module.mjs +0 -28
  126. package/esm2022/app/modules/input-mask/input-mask.component.mjs +0 -594
  127. package/esm2022/app/modules/input-mask/input-mask.module.mjs +0 -18
  128. package/esm2022/app/modules/keyfilter/keyfilter.directive.mjs +0 -174
  129. package/esm2022/app/modules/keyfilter/keyfilter.module.mjs +0 -18
  130. package/esm2022/app/modules/layout/components/layout-full-framing/layout-full-framing.component.mjs +0 -81
  131. package/esm2022/app/modules/layout/components/layout-fullwidth-sidebar/layout-fullwidth-sidebar.component.mjs +0 -67
  132. package/esm2022/app/modules/layout/layout.module.mjs +0 -33
  133. package/esm2022/app/modules/loader/components/loader.component.mjs +0 -30
  134. package/esm2022/app/modules/loader/loader.module.mjs +0 -24
  135. package/esm2022/app/modules/multi-select/models/multi-select-option-group.model.mjs +0 -2
  136. package/esm2022/app/modules/multi-select/models/multi-select-option.model.mjs +0 -2
  137. package/esm2022/app/modules/multi-select/multi-select.component.mjs +0 -665
  138. package/esm2022/app/modules/multi-select/multi-select.module.mjs +0 -18
  139. package/esm2022/app/modules/notification/models/notification.model.mjs +0 -2
  140. package/esm2022/app/modules/notification/notification.component.mjs +0 -122
  141. package/esm2022/app/modules/notification/notification.module.mjs +0 -18
  142. package/esm2022/app/modules/notification/services/notification.service.mjs +0 -84
  143. package/esm2022/app/modules/ordinal-number-pipe/ordinal-number-pipe.module.mjs +0 -20
  144. package/esm2022/app/modules/ordinal-number-pipe/ordinal-number.pipe.mjs +0 -49
  145. package/esm2022/app/modules/paginator/pagination-event.model.mjs +0 -29
  146. package/esm2022/app/modules/paginator/paginator.component.mjs +0 -207
  147. package/esm2022/app/modules/paginator/particle-paginator.module.mjs +0 -48
  148. package/esm2022/app/modules/popover/popover.component.mjs +0 -352
  149. package/esm2022/app/modules/popover/popover.module.mjs +0 -24
  150. package/esm2022/app/modules/profile-pic/particle-profile-pic.module.mjs +0 -28
  151. package/esm2022/app/modules/profile-pic/profile-pic.component.mjs +0 -75
  152. package/esm2022/app/modules/progress-bar/progress-bar.component.mjs +0 -43
  153. package/esm2022/app/modules/progress-bar/progress-bar.module.mjs +0 -24
  154. package/esm2022/app/modules/push-container/particle-push-container.module.mjs +0 -26
  155. package/esm2022/app/modules/push-container/push-container-state.model.mjs +0 -2
  156. package/esm2022/app/modules/push-container/push-container.component.mjs +0 -363
  157. package/esm2022/app/modules/rich-text/particle-rich-text.module.mjs +0 -64
  158. package/esm2022/app/modules/rich-text/render-rich-text.component.mjs +0 -18
  159. package/esm2022/app/modules/rich-text/rich-text-capabilities.model.mjs +0 -2
  160. package/esm2022/app/modules/rich-text/rich-text.component.mjs +0 -209
  161. package/esm2022/app/modules/scroll-to-top/particle-scroll-to-top.module.mjs +0 -24
  162. package/esm2022/app/modules/scroll-to-top/scroll-to-top.component.mjs +0 -49
  163. package/esm2022/app/modules/slideover/particle-slideover.module.mjs +0 -24
  164. package/esm2022/app/modules/slideover/slideover.component.mjs +0 -115
  165. package/esm2022/app/modules/slider/slider.component.mjs +0 -243
  166. package/esm2022/app/modules/slider/slider.module.mjs +0 -26
  167. package/esm2022/app/modules/theming/components/theming.component.mjs +0 -86
  168. package/esm2022/app/modules/theming/models/theme.model.mjs +0 -9
  169. package/esm2022/app/modules/theming/services/theme-change-detection.service.mjs +0 -38
  170. package/esm2022/app/modules/theming/services/theming.service.mjs +0 -510
  171. package/esm2022/app/modules/theming/theming.module.mjs +0 -55
  172. package/esm2022/app/modules/toggle-switch/models/toggle-options.model.mjs +0 -2
  173. package/esm2022/app/modules/toggle-switch/toggle-switch.component.mjs +0 -107
  174. package/esm2022/app/modules/toggle-switch/toggle-switch.module.mjs +0 -24
  175. package/esm2022/app/modules/tooltip/tooltip.directive.mjs +0 -381
  176. package/esm2022/app/modules/tooltip/tooltip.module.mjs +0 -18
  177. package/esm2022/app/modules/week-picker/week-picker.component.mjs +0 -511
  178. package/esm2022/app/modules/week-picker/week-picker.module.mjs +0 -40
  179. package/esm2022/app/shared/enums/endpoint-status.enum.mjs +0 -11
  180. package/esm2022/app/shared/interceptors/json.interceptor.mjs +0 -23
  181. package/esm2022/app/shared/models/auditable.model.mjs +0 -2
  182. package/esm2022/app/shared/models/data-list.model.mjs +0 -2
  183. package/esm2022/app/shared/models/id.model.mjs +0 -2
  184. package/esm2022/app/shared/models/observable-container.mjs +0 -15
  185. package/esm2022/app/shared/models/particle-component-text.model.mjs +0 -2
  186. package/esm2022/app/shared/services/base-data.service.mjs +0 -190
  187. package/esm2022/app/shared/services/dialog.service.mjs +0 -50
  188. package/esm2022/app/shared/services/local-storage.service.mjs +0 -60
  189. package/esm2022/entake-particle.mjs +0 -5
  190. package/esm2022/public_api.mjs +0 -98
  191. /package/app/{modules/dropdown → shared}/models/dropdown-option-group.model.d.ts +0 -0
  192. /package/app/{modules/dropdown → shared}/models/dropdown-option.model.d.ts +0 -0
  193. /package/app/{modules/icons → shared}/models/fontawesome-icons-brands.model.d.ts +0 -0
  194. /package/app/{modules/icons → shared}/models/fontawesome-icons-regular.model.d.ts +0 -0
  195. /package/app/{modules/icons → shared}/models/fontawesome-icons-solid.model.d.ts +0 -0
  196. /package/app/{modules/multi-select → shared}/models/multi-select-option-group.model.d.ts +0 -0
  197. /package/app/{modules/multi-select → shared}/models/multi-select-option.model.d.ts +0 -0
  198. /package/app/{modules/notification → shared}/models/notification.model.d.ts +0 -0
  199. /package/app/{modules/icons → shared}/models/particle-icons-brands.model.d.ts +0 -0
  200. /package/app/{modules/icons → shared}/models/particle-icons-regular.model.d.ts +0 -0
  201. /package/app/{modules/icons → shared}/models/particle-icons-solid.model.d.ts +0 -0
  202. /package/app/{modules/rich-text → shared/models}/rich-text-capabilities.model.d.ts +0 -0
  203. /package/app/{modules/theming → shared}/models/theme.model.d.ts +0 -0
  204. /package/app/{modules/toggle-switch → shared}/models/toggle-options.model.d.ts +0 -0
  205. /package/app/{modules/icons → shared}/services/icons.service.d.ts +0 -0
  206. /package/app/{modules/idle-timeout → shared/services}/idle-timer.d.ts +0 -0
  207. /package/app/{modules/theming → shared}/services/theme-change-detection.service.d.ts +0 -0
@@ -1,352 +0,0 @@
1
- import { animate, style, transition, trigger } from '@angular/animations';
2
- import { Component, EventEmitter, HostListener, Input, Output } from '@angular/core';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- import * as i2 from "@angular/cdk/a11y";
6
- /**
7
- * Component to display a popover with custom content
8
- */
9
- export class PopoverComponent {
10
- renderer;
11
- window = window;
12
- /**
13
- * The offset of the popover from its target (in pixels)
14
- */
15
- offset = 5;
16
- /**
17
- * Set the width of the popover in pixels (defaults to auto)
18
- */
19
- set width(width) {
20
- this._width = !width ? 'auto' : `${width}px`;
21
- }
22
- get width() {
23
- return this._width;
24
- }
25
- /**
26
- * Set the height of the popover in pixels (defaults to auto)
27
- */
28
- set height(height) {
29
- this._height = !height ? 'auto' : `${height}px`;
30
- }
31
- get height() {
32
- return this._height;
33
- }
34
- /**
35
- * A class-list to apply to the popover content
36
- */
37
- classList = 'content_color particle_popover_shadow';
38
- targetOverride = null;
39
- openDirection = 'above';
40
- alignment = 'left';
41
- scaleForMobile = '1';
42
- /**
43
- * Event emitted on popover open
44
- */
45
- opened = new EventEmitter();
46
- /**
47
- * Event emitted on popover close
48
- */
49
- closed = new EventEmitter();
50
- /**
51
- * Whether the popover should render
52
- */
53
- render = false;
54
- /**
55
- * Whether the popover is visible
56
- */
57
- visible = false;
58
- /**
59
- * The width of the popover
60
- */
61
- _width = 'auto';
62
- /**
63
- * The height of the popover
64
- */
65
- _height = 'auto';
66
- /**
67
- * The element to target
68
- * @private
69
- */
70
- target = null;
71
- /**
72
- * The popover content container
73
- * @private
74
- */
75
- container = null;
76
- /**
77
- * Array of escape keyup unlisten functions
78
- * @private
79
- */
80
- escapeKeyUpUnlisteners = [];
81
- /**
82
- * Dependency injection site
83
- * @param renderer the Angular renderer
84
- */
85
- constructor(renderer) {
86
- this.renderer = renderer;
87
- }
88
- /**
89
- * Destroy component, clean up event listeners
90
- */
91
- ngOnDestroy() {
92
- this.removeEventListeners();
93
- }
94
- /**
95
- * Close popover on click
96
- * @param event the click MouseEvent
97
- */
98
- onClick(event) {
99
- if (this.visible) {
100
- const { pageX, pageY } = event;
101
- if (pageX > 0 && pageY > 0) {
102
- const { left, right, top, bottom } = this.container.getBoundingClientRect();
103
- const xPositionValid = pageX >= left && pageX <= right;
104
- const yPositionValid = pageY >= top && pageY <= bottom;
105
- const shouldClose = !(xPositionValid && yPositionValid);
106
- if (shouldClose) {
107
- this.close();
108
- }
109
- }
110
- }
111
- }
112
- /**
113
- * Re-position popover on window resize
114
- */
115
- onWindowResize() {
116
- if (this.visible) {
117
- this.positionPopover();
118
- }
119
- }
120
- /**
121
- * Toggle the popover from open to closed or closed to open
122
- * @param event the event whose target element will act as
123
- * the popover target. If an event is not provided,
124
- * the popover will close
125
- */
126
- toggle(event) {
127
- if (this.targetOverride) {
128
- this.target = this.targetOverride;
129
- }
130
- else {
131
- if (event) {
132
- this.target = event.currentTarget ?? event.target;
133
- event.stopImmediatePropagation();
134
- }
135
- else {
136
- this.target = null;
137
- }
138
- }
139
- if (!this.visible && this.target) {
140
- this.open();
141
- }
142
- else {
143
- this.close();
144
- }
145
- }
146
- /**
147
- * Handle animation start
148
- * @param event the AnimationEvent
149
- */
150
- onAnimationStart(event) {
151
- if (event.toState === 'open') {
152
- this.container = event.element;
153
- this.addEventListeners();
154
- this.positionPopover();
155
- this.opened.emit();
156
- }
157
- }
158
- /**
159
- * Handle animation end
160
- * @param event the AnimationEvent
161
- */
162
- onAnimationDone(event) {
163
- if (event.toState === 'close') {
164
- this.render = false;
165
- this.removeEventListeners();
166
- this.closed.emit();
167
- }
168
- }
169
- /**
170
- * Open the popover
171
- * @private
172
- */
173
- open() {
174
- this.render = true;
175
- this.visible = true;
176
- }
177
- /**
178
- * Close the popover
179
- */
180
- close() {
181
- this.visible = false;
182
- }
183
- /**
184
- * Position the popover
185
- * @private
186
- */
187
- positionPopover() {
188
- const { left, top, bottom, width } = this.target.getBoundingClientRect();
189
- const { offsetHeight, offsetWidth } = this.container;
190
- const popoverBottomLeftAnchor = bottom;
191
- const availableBottomSpace = window.innerHeight - popoverBottomLeftAnchor;
192
- const availableTopSpace = top;
193
- const offsetListHeight = offsetHeight + this.offset;
194
- let transformOrigin = null;
195
- let positionTop = null;
196
- const canOpenAbove = availableTopSpace > offsetListHeight;
197
- const canOpenBelow = availableBottomSpace > offsetListHeight;
198
- if (canOpenAbove && this.openDirection === 'above') {
199
- transformOrigin = 'bottom left';
200
- positionTop = `${top - offsetListHeight}px`;
201
- }
202
- if (canOpenBelow && this.openDirection === 'below') {
203
- transformOrigin = 'top left';
204
- positionTop = `${popoverBottomLeftAnchor + this.offset}px`;
205
- }
206
- if (!transformOrigin) {
207
- if (availableTopSpace > offsetListHeight) {
208
- transformOrigin = 'bottom left';
209
- positionTop = `${top - offsetListHeight}px`;
210
- }
211
- else if (availableBottomSpace > offsetListHeight) {
212
- transformOrigin = 'top left';
213
- positionTop = `${popoverBottomLeftAnchor + this.offset}px`;
214
- }
215
- else {
216
- if (offsetHeight > window.innerHeight) {
217
- positionTop = '0px';
218
- }
219
- else {
220
- const availableSpace = window.innerHeight - offsetHeight;
221
- positionTop = `${String(availableSpace / 2)}px`;
222
- }
223
- transformOrigin = 'top left';
224
- }
225
- }
226
- let leftPosition = left;
227
- if (this.alignment === 'center') {
228
- leftPosition = (leftPosition - (offsetWidth / 2)) + (width / 2);
229
- }
230
- if ((left + offsetWidth) > window.innerWidth) {
231
- leftPosition = left - ((left + offsetWidth) - window.innerWidth) - 10;
232
- }
233
- if (leftPosition < 0) {
234
- leftPosition = 0;
235
- }
236
- this.renderer.setStyle(this.container, 'transform-origin', transformOrigin);
237
- this.renderer.setStyle(this.container, 'left', `${leftPosition}px`);
238
- this.renderer.setStyle(this.container, 'top', positionTop);
239
- }
240
- /**
241
- * Add escape keyup listeners to all focusable elements to close
242
- * the popover
243
- * @private
244
- */
245
- addEventListeners() {
246
- const focusableElements = this.getFocusableElements(this.container);
247
- for (const element of focusableElements) {
248
- this.renderer.setAttribute(element, 'data-dialog-close-override', 'true');
249
- this.escapeKeyUpUnlisteners.push(this.renderer.listen(element, 'keyup', (event) => {
250
- if (this.visible) {
251
- event.stopImmediatePropagation();
252
- const { key } = event;
253
- if (key === 'Esc' || key === 'Escape') {
254
- this.close();
255
- }
256
- }
257
- }));
258
- }
259
- }
260
- /**
261
- * Get all focusable child elements of the input node
262
- * @param node the node to query for focusable children
263
- * @param elements the found focusable elements
264
- * @private
265
- */
266
- getFocusableElements(node, elements = []) {
267
- if (node.hasChildNodes()) {
268
- node.childNodes.forEach(child => elements.concat(this.getFocusableElements(child, elements)));
269
- if ('tabIndex' in node) {
270
- const { tabIndex } = node;
271
- if (tabIndex >= 0) {
272
- elements.push(node);
273
- }
274
- }
275
- return elements;
276
- }
277
- else {
278
- if ('tabIndex' in node) {
279
- const { tabIndex } = node;
280
- if (tabIndex >= 0) {
281
- elements.push(node);
282
- }
283
- }
284
- return elements;
285
- }
286
- }
287
- /**
288
- * Invoke escape keyup unlisten functions
289
- * @private
290
- */
291
- removeEventListeners() {
292
- for (const unlistener of this.escapeKeyUpUnlisteners) {
293
- unlistener();
294
- }
295
- this.escapeKeyUpUnlisteners = [];
296
- }
297
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: PopoverComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
298
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: PopoverComponent, selector: "particle-popover", inputs: { offset: "offset", width: "width", height: "height", classList: "classList", targetOverride: "targetOverride", openDirection: "openDirection", alignment: "alignment", scaleForMobile: "scaleForMobile" }, outputs: { opened: "opened", closed: "closed" }, host: { listeners: { "window:click": "onClick($event)", "window:resize": "onWindowResize()" } }, ngImport: i0, template: "<div *ngIf=\"render\" class=\"particle_popover_overlay\" [style.scale]=\"window.innerWidth > 768 ? 1 : scaleForMobile\">\n <div [cdkTrapFocus]=\"render && visible\"\n [cdkTrapFocusAutoCapture]=\"true\"\n [@openClose]=\"visible ? 'open' : 'close'\"\n [ngStyle]=\"{ 'width': width, 'height': height }\"\n [ngClass]=\"classList\"\n (@openClose.start)=\"onAnimationStart($event)\"\n (@openClose.done)=\"onAnimationDone($event)\"\n class=\"position_absolute particle_popover\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".particle_popover_overlay{position:fixed;inset:0;z-index:var(--z-notification)}.particle_popover{border-radius:3px;overflow-x:hidden;overflow-y:auto;font-size:12px;font-weight:400;z-index:var(--z-notification);width:auto;min-width:10px;height:auto;min-height:10px}.particle_popover_shadow{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }], animations: [
299
- trigger('openClose', [
300
- transition('void => open', [
301
- style({ transform: 'scaleY(0.5)', opacity: 0 }),
302
- animate('200ms ease', style({ transform: 'scaleY(1)', opacity: 1 }))
303
- ]),
304
- transition('open => close', [
305
- style({ transform: 'scaleY(1)', opacity: 1 }),
306
- animate('200ms ease', style({ transform: 'scaleY(0.5)', opacity: 0 }))
307
- ]),
308
- ])
309
- ] });
310
- }
311
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: PopoverComponent, decorators: [{
312
- type: Component,
313
- args: [{ selector: 'particle-popover', animations: [
314
- trigger('openClose', [
315
- transition('void => open', [
316
- style({ transform: 'scaleY(0.5)', opacity: 0 }),
317
- animate('200ms ease', style({ transform: 'scaleY(1)', opacity: 1 }))
318
- ]),
319
- transition('open => close', [
320
- style({ transform: 'scaleY(1)', opacity: 1 }),
321
- animate('200ms ease', style({ transform: 'scaleY(0.5)', opacity: 0 }))
322
- ]),
323
- ])
324
- ], template: "<div *ngIf=\"render\" class=\"particle_popover_overlay\" [style.scale]=\"window.innerWidth > 768 ? 1 : scaleForMobile\">\n <div [cdkTrapFocus]=\"render && visible\"\n [cdkTrapFocusAutoCapture]=\"true\"\n [@openClose]=\"visible ? 'open' : 'close'\"\n [ngStyle]=\"{ 'width': width, 'height': height }\"\n [ngClass]=\"classList\"\n (@openClose.start)=\"onAnimationStart($event)\"\n (@openClose.done)=\"onAnimationDone($event)\"\n class=\"position_absolute particle_popover\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".particle_popover_overlay{position:fixed;inset:0;z-index:var(--z-notification)}.particle_popover{border-radius:3px;overflow-x:hidden;overflow-y:auto;font-size:12px;font-weight:400;z-index:var(--z-notification);width:auto;min-width:10px;height:auto;min-height:10px}.particle_popover_shadow{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}\n"] }]
325
- }], ctorParameters: () => [{ type: i0.Renderer2 }], propDecorators: { offset: [{
326
- type: Input
327
- }], width: [{
328
- type: Input
329
- }], height: [{
330
- type: Input
331
- }], classList: [{
332
- type: Input
333
- }], targetOverride: [{
334
- type: Input
335
- }], openDirection: [{
336
- type: Input
337
- }], alignment: [{
338
- type: Input
339
- }], scaleForMobile: [{
340
- type: Input
341
- }], opened: [{
342
- type: Output
343
- }], closed: [{
344
- type: Output
345
- }], onClick: [{
346
- type: HostListener,
347
- args: ['window:click', ['$event']]
348
- }], onWindowResize: [{
349
- type: HostListener,
350
- args: ['window:resize']
351
- }] } });
352
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvcG9wb3Zlci9wb3BvdmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9wb3BvdmVyL3BvcG92ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBa0IsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRixPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBYSxNQUFNLGVBQWUsQ0FBQzs7OztBQUUzRzs7R0FFRztBQW9CSCxNQUFNLE9BQU8sZ0JBQWdCO0lBMEdQO0lBeEdELE1BQU0sR0FBRyxNQUFNLENBQUM7SUFFbkM7O09BRUc7SUFFSCxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBRVg7O09BRUc7SUFDSCxJQUNJLEtBQUssQ0FBQyxLQUFhO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQztJQUMvQyxDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQ0ksTUFBTSxDQUFDLE1BQWM7UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sSUFBSSxDQUFDO0lBQ2xELENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVEOztPQUVHO0lBRUgsU0FBUyxHQUFHLHVDQUF1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dGUsIEFuaW1hdGlvbkV2ZW50LCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25EZXN0cm95LCBPdXRwdXQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuLyoqXHJcbiAqIENvbXBvbmVudCB0byBkaXNwbGF5IGEgcG9wb3ZlciB3aXRoIGN1c3RvbSBjb250ZW50XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3BhcnRpY2xlLXBvcG92ZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wb3BvdmVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9wb3BvdmVyLmNvbXBvbmVudC5jc3MnXSxcclxuICBhbmltYXRpb25zOiBbXHJcbiAgICB0cmlnZ2VyKCdvcGVuQ2xvc2UnLCBbXHJcbiAgICAgIHRyYW5zaXRpb24oJ3ZvaWQgPT4gb3BlbicsIFtcclxuICAgICAgICBzdHlsZSh7IHRyYW5zZm9ybTogJ3NjYWxlWSgwLjUpJywgb3BhY2l0eTogMCB9KSxcclxuICAgICAgICBhbmltYXRlKCcyMDBtcyBlYXNlJyxcclxuICAgICAgICAgIHN0eWxlKHsgdHJhbnNmb3JtOiAnc2NhbGVZKDEpJywgb3BhY2l0eTogMSB9KSlcclxuICAgICAgXSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ29wZW4gPT4gY2xvc2UnLCBbXHJcbiAgICAgICAgc3R5bGUoeyB0cmFuc2Zvcm06ICdzY2FsZVkoMSknLCBvcGFjaXR5OiAxIH0pLFxyXG4gICAgICAgIGFuaW1hdGUoJzIwMG1zIGVhc2UnLFxyXG4gICAgICAgICAgc3R5bGUoeyB0cmFuc2Zvcm06ICdzY2FsZVkoMC41KScsIG9wYWNpdHk6IDAgfSkpXHJcbiAgICAgIF0pLFxyXG4gICAgXSlcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQb3BvdmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHdpbmRvdyA9IHdpbmRvdztcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIG9mZnNldCBvZiB0aGUgcG9wb3ZlciBmcm9tIGl0cyB0YXJnZXQgKGluIHBpeGVscylcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIG9mZnNldCA9IDU7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCB0aGUgd2lkdGggb2YgdGhlIHBvcG92ZXIgaW4gcGl4ZWxzIChkZWZhdWx0cyB0byBhdXRvKVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHdpZHRoKHdpZHRoOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3dpZHRoID0gIXdpZHRoID8gJ2F1dG8nIDogYCR7d2lkdGh9cHhgO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHdpZHRoKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fd2lkdGg7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXQgdGhlIGhlaWdodCBvZiB0aGUgcG9wb3ZlciBpbiBwaXhlbHMgKGRlZmF1bHRzIHRvIGF1dG8pXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgaGVpZ2h0KGhlaWdodDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9oZWlnaHQgPSAhaGVpZ2h0ID8gJ2F1dG8nIDogYCR7aGVpZ2h0fXB4YDtcclxuICB9XHJcblxyXG4gIGdldCBoZWlnaHQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9oZWlnaHQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBIGNsYXNzLWxpc3QgdG8gYXBwbHkgdG8gdGhlIHBvcG92ZXIgY29udGVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgY2xhc3NMaXN0ID0gJ2NvbnRlbnRfY29sb3IgcGFydGljbGVfcG9wb3Zlcl9zaGFkb3cnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHRhcmdldE92ZXJyaWRlOiBFdmVudFRhcmdldCA9IG51bGwgYXMgYW55O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIG9wZW5EaXJlY3Rpb246ICdhYm92ZScgfCAnYmVsb3cnID0gJ2Fib3ZlJztcclxuXHJcbiAgQElucHV0KClcclxuICBhbGlnbm1lbnQ6ICdsZWZ0JyB8ICdjZW50ZXInID0gJ2xlZnQnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNjYWxlRm9yTW9iaWxlID0gJzEnO1xyXG5cclxuICAvKipcclxuICAgKiBFdmVudCBlbWl0dGVkIG9uIHBvcG92ZXIgb3BlblxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKVxyXG4gIG9wZW5lZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogRXZlbnQgZW1pdHRlZCBvbiBwb3BvdmVyIGNsb3NlXHJcbiAgICovXHJcbiAgQE91dHB1dCgpXHJcbiAgY2xvc2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIHRoZSBwb3BvdmVyIHNob3VsZCByZW5kZXJcclxuICAgKi9cclxuICByZW5kZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogV2hldGhlciB0aGUgcG9wb3ZlciBpcyB2aXNpYmxlXHJcbiAgICovXHJcbiAgdmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgd2lkdGggb2YgdGhlIHBvcG92ZXJcclxuICAgKi9cclxuICBwcml2YXRlIF93aWR0aCA9ICdhdXRvJztcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIGhlaWdodCBvZiB0aGUgcG9wb3ZlclxyXG4gICAqL1xyXG4gIHByaXZhdGUgX2hlaWdodCA9ICdhdXRvJztcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIGVsZW1lbnQgdG8gdGFyZ2V0XHJcbiAgICogQHByaXZhdGVcclxuICAgKi9cclxuICBwcml2YXRlIHRhcmdldDogRXZlbnRUYXJnZXQgPSBudWxsIGFzIGFueTtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIHBvcG92ZXIgY29udGVudCBjb250YWluZXJcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgY29udGFpbmVyOiBIVE1MRGl2RWxlbWVudCA9IG51bGwgYXMgYW55O1xyXG5cclxuICAvKipcclxuICAgKiBBcnJheSBvZiBlc2NhcGUga2V5dXAgdW5saXN0ZW4gZnVuY3Rpb25zXHJcbiAgICogQHByaXZhdGVcclxuICAgKi9cclxuICBwcml2YXRlIGVzY2FwZUtleVVwVW5saXN0ZW5lcnM6IEFycmF5PCgpID0+IHZvaWQ+ID0gW107XHJcblxyXG4gIC8qKlxyXG4gICAqIERlcGVuZGVuY3kgaW5qZWN0aW9uIHNpdGVcclxuICAgKiBAcGFyYW0gcmVuZGVyZXIgdGhlIEFuZ3VsYXIgcmVuZGVyZXJcclxuICAgKi9cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHsgfVxyXG5cclxuICAvKipcclxuICAgKiBEZXN0cm95IGNvbXBvbmVudCwgY2xlYW4gdXAgZXZlbnQgbGlzdGVuZXJzXHJcbiAgICovXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXJzKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbG9zZSBwb3BvdmVyIG9uIGNsaWNrXHJcbiAgICogQHBhcmFtIGV2ZW50IHRoZSBjbGljayBNb3VzZUV2ZW50XHJcbiAgICovXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy52aXNpYmxlKSB7XHJcbiAgICAgIGNvbnN0IHtwYWdlWCwgcGFnZVl9ID0gZXZlbnQ7XHJcblxyXG4gICAgICBpZiAocGFnZVggPiAwICYmIHBhZ2VZID4gMCkge1xyXG4gICAgICAgIGNvbnN0IHsgbGVmdCwgcmlnaHQsIHRvcCwgYm90dG9tIH0gPSB0aGlzLmNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgICBjb25zdCB4UG9zaXRpb25WYWxpZCA9IHBhZ2VYID49IGxlZnQgJiYgcGFnZVggPD0gcmlnaHQ7XHJcbiAgICAgICAgY29uc3QgeVBvc2l0aW9uVmFsaWQgPSBwYWdlWSA+PSB0b3AgJiYgcGFnZVkgPD0gYm90dG9tO1xyXG4gICAgICAgIGNvbnN0IHNob3VsZENsb3NlID0gISh4UG9zaXRpb25WYWxpZCAmJiB5UG9zaXRpb25WYWxpZCk7XHJcblxyXG4gICAgICAgIGlmIChzaG91bGRDbG9zZSkge1xyXG4gICAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmUtcG9zaXRpb24gcG9wb3ZlciBvbiB3aW5kb3cgcmVzaXplXHJcbiAgICovXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpXHJcbiAgb25XaW5kb3dSZXNpemUoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy52aXNpYmxlKSB7XHJcbiAgICAgIHRoaXMucG9zaXRpb25Qb3BvdmVyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUb2dnbGUgdGhlIHBvcG92ZXIgZnJvbSBvcGVuIHRvIGNsb3NlZCBvciBjbG9zZWQgdG8gb3BlblxyXG4gICAqIEBwYXJhbSBldmVudCB0aGUgZXZlbnQgd2hvc2UgdGFyZ2V0IGVsZW1lbnQgd2lsbCBhY3QgYXNcclxuICAgKiAgICAgICAgICAgICAgdGhlIHBvcG92ZXIgdGFyZ2V0LiBJZiBhbiBldmVudCBpcyBub3QgcHJvdmlkZWQsXHJcbiAgICogICAgICAgICAgICAgIHRoZSBwb3BvdmVyIHdpbGwgY2xvc2VcclxuICAgKi9cclxuICB0b2dnbGUoZXZlbnQ/OiBFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudGFyZ2V0T3ZlcnJpZGUpIHtcclxuICAgICAgdGhpcy50YXJnZXQgPSB0aGlzLnRhcmdldE92ZXJyaWRlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGV2ZW50KSB7XHJcbiAgICAgICAgdGhpcy50YXJnZXQgPSBldmVudC5jdXJyZW50VGFyZ2V0ID8/IGV2ZW50LnRhcmdldCBhcyBFdmVudFRhcmdldDtcclxuICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnRhcmdldCA9IG51bGwgYXMgYW55O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLnZpc2libGUgJiYgdGhpcy50YXJnZXQpIHtcclxuICAgICAgdGhpcy5vcGVuKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGUgYW5pbWF0aW9uIHN0YXJ0XHJcbiAgICogQHBhcmFtIGV2ZW50IHRoZSBBbmltYXRpb25FdmVudFxyXG4gICAqL1xyXG4gIG9uQW5pbWF0aW9uU3RhcnQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAoZXZlbnQudG9TdGF0ZSA9PT0gJ29wZW4nKSB7XHJcbiAgICAgIHRoaXMuY29udGFpbmVyID0gZXZlbnQuZWxlbWVudDtcclxuICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVycygpO1xyXG4gICAgICB0aGlzLnBvc2l0aW9uUG9wb3ZlcigpO1xyXG4gICAgICB0aGlzLm9wZW5lZC5lbWl0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGUgYW5pbWF0aW9uIGVuZFxyXG4gICAqIEBwYXJhbSBldmVudCB0aGUgQW5pbWF0aW9uRXZlbnRcclxuICAgKi9cclxuICBvbkFuaW1hdGlvbkRvbmUoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAoZXZlbnQudG9TdGF0ZSA9PT0gJ2Nsb3NlJykge1xyXG4gICAgICB0aGlzLnJlbmRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXJzKCk7XHJcbiAgICAgIHRoaXMuY2xvc2VkLmVtaXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9wZW4gdGhlIHBvcG92ZXJcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgb3BlbigpOiB2b2lkIHtcclxuICAgIHRoaXMucmVuZGVyID0gdHJ1ZTtcclxuICAgIHRoaXMudmlzaWJsZSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbG9zZSB0aGUgcG9wb3ZlclxyXG4gICAqL1xyXG4gIHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcclxuICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUG9zaXRpb24gdGhlIHBvcG92ZXJcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgcG9zaXRpb25Qb3BvdmVyKCk6IHZvaWQge1xyXG4gICAgY29uc3Qge2xlZnQsIHRvcCwgYm90dG9tLCB3aWR0aH0gPSAodGhpcy50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgY29uc3Qge29mZnNldEhlaWdodCwgb2Zmc2V0V2lkdGh9ID0gdGhpcy5jb250YWluZXI7XHJcbiAgICBjb25zdCBwb3BvdmVyQm90dG9tTGVmdEFuY2hvciA9IGJvdHRvbTtcclxuICAgIGNvbnN0IGF2YWlsYWJsZUJvdHRvbVNwYWNlID0gd2luZG93LmlubmVySGVpZ2h0IC0gcG9wb3ZlckJvdHRvbUxlZnRBbmNob3I7XHJcbiAgICBjb25zdCBhdmFpbGFibGVUb3BTcGFjZSA9IHRvcDtcclxuICAgIGNvbnN0IG9mZnNldExpc3RIZWlnaHQgPSBvZmZzZXRIZWlnaHQgKyB0aGlzLm9mZnNldDtcclxuICAgIGxldCB0cmFuc2Zvcm1PcmlnaW46IHN0cmluZyA9IG51bGwgYXMgYW55O1xyXG4gICAgbGV0IHBvc2l0aW9uVG9wOiBzdHJpbmcgPSBudWxsIGFzIGFueTtcclxuXHJcbiAgICBjb25zdCBjYW5PcGVuQWJvdmUgPSBhdmFpbGFibGVUb3BTcGFjZSA+IG9mZnNldExpc3RIZWlnaHQ7XHJcbiAgICBjb25zdCBjYW5PcGVuQmVsb3cgPSBhdmFpbGFibGVCb3R0b21TcGFjZSA+IG9mZnNldExpc3RIZWlnaHQ7XHJcblxyXG4gICAgaWYgKGNhbk9wZW5BYm92ZSAmJiB0aGlzLm9wZW5EaXJlY3Rpb24gPT09ICdhYm92ZScpIHtcclxuICAgICAgdHJhbnNmb3JtT3JpZ2luID0gJ2JvdHRvbSBsZWZ0JztcclxuICAgICAgcG9zaXRpb25Ub3AgPSBgJHt0b3AgLSBvZmZzZXRMaXN0SGVpZ2h0fXB4YDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2FuT3BlbkJlbG93ICYmIHRoaXMub3BlbkRpcmVjdGlvbiA9PT0gJ2JlbG93Jykge1xyXG4gICAgICB0cmFuc2Zvcm1PcmlnaW4gPSAndG9wIGxlZnQnO1xyXG4gICAgICBwb3NpdGlvblRvcCA9IGAke3BvcG92ZXJCb3R0b21MZWZ0QW5jaG9yICsgdGhpcy5vZmZzZXR9cHhgO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdHJhbnNmb3JtT3JpZ2luKSB7XHJcbiAgICAgIGlmIChhdmFpbGFibGVUb3BTcGFjZSA+IG9mZnNldExpc3RIZWlnaHQpIHtcclxuICAgICAgICB0cmFuc2Zvcm1PcmlnaW4gPSAnYm90dG9tIGxlZnQnO1xyXG4gICAgICAgIHBvc2l0aW9uVG9wID0gYCR7dG9wIC0gb2Zmc2V0TGlzdEhlaWdodH1weGA7XHJcbiAgICAgIH0gZWxzZSBpZiAoYXZhaWxhYmxlQm90dG9tU3BhY2UgPiBvZmZzZXRMaXN0SGVpZ2h0KSB7XHJcbiAgICAgICAgdHJhbnNmb3JtT3JpZ2luID0gJ3RvcCBsZWZ0JztcclxuICAgICAgICBwb3NpdGlvblRvcCA9IGAke3BvcG92ZXJCb3R0b21MZWZ0QW5jaG9yICsgdGhpcy5vZmZzZXR9cHhgO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChvZmZzZXRIZWlnaHQgPiB3aW5kb3cuaW5uZXJIZWlnaHQpIHtcclxuICAgICAgICAgIHBvc2l0aW9uVG9wID0gJzBweCc7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IGF2YWlsYWJsZVNwYWNlID0gd2luZG93LmlubmVySGVpZ2h0IC0gb2Zmc2V0SGVpZ2h0O1xyXG4gICAgICAgICAgcG9zaXRpb25Ub3AgPSBgJHtTdHJpbmcoYXZhaWxhYmxlU3BhY2UgLyAyKX1weGA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0cmFuc2Zvcm1PcmlnaW4gPSAndG9wIGxlZnQnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGxlZnRQb3NpdGlvbiA9IGxlZnQ7XHJcblxyXG4gICAgaWYgKHRoaXMuYWxpZ25tZW50ID09PSAnY2VudGVyJykge1xyXG4gICAgICBsZWZ0UG9zaXRpb24gPSAobGVmdFBvc2l0aW9uIC0gKG9mZnNldFdpZHRoLzIpKSArICh3aWR0aC8yKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoKGxlZnQgKyBvZmZzZXRXaWR0aCkgPiB3aW5kb3cuaW5uZXJXaWR0aCkge1xyXG4gICAgICBsZWZ0UG9zaXRpb24gPSBsZWZ0IC0gKChsZWZ0ICsgb2Zmc2V0V2lkdGgpIC0gd2luZG93LmlubmVyV2lkdGgpIC0gMTA7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGxlZnRQb3NpdGlvbiA8IDApIHtcclxuICAgICAgbGVmdFBvc2l0aW9uID0gMDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuY29udGFpbmVyLCAndHJhbnNmb3JtLW9yaWdpbicsIHRyYW5zZm9ybU9yaWdpbik7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuY29udGFpbmVyLCAnbGVmdCcsIGAke2xlZnRQb3NpdGlvbn1weGApO1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmNvbnRhaW5lciwgJ3RvcCcsIHBvc2l0aW9uVG9wKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZCBlc2NhcGUga2V5dXAgbGlzdGVuZXJzIHRvIGFsbCBmb2N1c2FibGUgZWxlbWVudHMgdG8gY2xvc2VcclxuICAgKiB0aGUgcG9wb3ZlclxyXG4gICAqIEBwcml2YXRlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhZGRFdmVudExpc3RlbmVycygpOiB2b2lkIHtcclxuICAgIGNvbnN0IGZvY3VzYWJsZUVsZW1lbnRzID0gdGhpcy5nZXRGb2N1c2FibGVFbGVtZW50cyh0aGlzLmNvbnRhaW5lcik7XHJcblxyXG4gICAgZm9yIChjb25zdCBlbGVtZW50IG9mIGZvY3VzYWJsZUVsZW1lbnRzKSB7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGVsZW1lbnQsICdkYXRhLWRpYWxvZy1jbG9zZS1vdmVycmlkZScsICd0cnVlJyk7XHJcbiAgICAgIHRoaXMuZXNjYXBlS2V5VXBVbmxpc3RlbmVycy5wdXNoKFxyXG4gICAgICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKGVsZW1lbnQsICdrZXl1cCcsIChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMudmlzaWJsZSkge1xyXG4gICAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHsga2V5IH0gPSBldmVudDtcclxuXHJcbiAgICAgICAgICAgIGlmIChrZXkgPT09ICdFc2MnIHx8IGtleSA9PT0gJ0VzY2FwZScpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGFsbCBmb2N1c2FibGUgY2hpbGQgZWxlbWVudHMgb2YgdGhlIGlucHV0IG5vZGVcclxuICAgKiBAcGFyYW0gbm9kZSB0aGUgbm9kZSB0byBxdWVyeSBmb3IgZm9jdXNhYmxlIGNoaWxkcmVuXHJcbiAgICogQHBhcmFtIGVsZW1lbnRzIHRoZSBmb3VuZCBmb2N1c2FibGUgZWxlbWVudHNcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0Rm9jdXNhYmxlRWxlbWVudHMobm9kZTogTm9kZSwgZWxlbWVudHM6IEFycmF5PEVsZW1lbnQ+ID0gW10pOiBBcnJheTxhbnk+IHtcclxuICAgIGlmIChub2RlLmhhc0NoaWxkTm9kZXMoKSkge1xyXG4gICAgICBub2RlLmNoaWxkTm9kZXMuZm9yRWFjaChjaGlsZCA9PiBlbGVtZW50cy5jb25jYXQodGhpcy5nZXRGb2N1c2FibGVFbGVtZW50cyhjaGlsZCwgZWxlbWVudHMpKSk7XHJcblxyXG4gICAgICBpZiAoJ3RhYkluZGV4JyBpbiBub2RlKSB7XHJcbiAgICAgICAgY29uc3QgeyB0YWJJbmRleCB9ID0gbm9kZSBhcyB1bmtub3duIGFzIEhUTUxPclNWR0VsZW1lbnQ7XHJcblxyXG4gICAgICAgIGlmICh0YWJJbmRleCA+PSAwKSB7XHJcbiAgICAgICAgICBlbGVtZW50cy5wdXNoKG5vZGUgYXMgYW55KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBlbGVtZW50cztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICgndGFiSW5kZXgnIGluIG5vZGUpIHtcclxuICAgICAgICBjb25zdCB7IHRhYkluZGV4IH0gPSBub2RlIGFzIHVua25vd24gYXMgSFRNTE9yU1ZHRWxlbWVudDtcclxuXHJcbiAgICAgICAgaWYgKHRhYkluZGV4ID49IDApIHtcclxuICAgICAgICAgIGVsZW1lbnRzLnB1c2gobm9kZSBhcyBhbnkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIGVsZW1lbnRzO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW52b2tlIGVzY2FwZSBrZXl1cCB1bmxpc3RlbiBmdW5jdGlvbnNcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKTogdm9pZCB7XHJcbiAgICBmb3IgKGNvbnN0IHVubGlzdGVuZXIgb2YgdGhpcy5lc2NhcGVLZXlVcFVubGlzdGVuZXJzKSB7XHJcbiAgICAgIHVubGlzdGVuZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmVzY2FwZUtleVVwVW5saXN0ZW5lcnMgPSBbXTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgKm5nSWY9XCJyZW5kZXJcIiBjbGFzcz1cInBhcnRpY2xlX3BvcG92ZXJfb3ZlcmxheVwiIFtzdHlsZS5zY2FsZV09XCJ3aW5kb3cuaW5uZXJXaWR0aCA+IDc2OCA/IDEgOiBzY2FsZUZvck1vYmlsZVwiPlxuICA8ZGl2IFtjZGtUcmFwRm9jdXNdPVwicmVuZGVyICYmIHZpc2libGVcIlxuICAgICAgIFtjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZV09XCJ0cnVlXCJcbiAgICAgICBbQG9wZW5DbG9zZV09XCJ2aXNpYmxlID8gJ29wZW4nIDogJ2Nsb3NlJ1wiXG4gICAgICAgW25nU3R5bGVdPVwieyAnd2lkdGgnOiB3aWR0aCwgJ2hlaWdodCc6IGhlaWdodCB9XCJcbiAgICAgICBbbmdDbGFzc109XCJjbGFzc0xpc3RcIlxuICAgICAgIChAb3BlbkNsb3NlLnN0YXJ0KT1cIm9uQW5pbWF0aW9uU3RhcnQoJGV2ZW50KVwiXG4gICAgICAgKEBvcGVuQ2xvc2UuZG9uZSk9XCJvbkFuaW1hdGlvbkRvbmUoJGV2ZW50KVwiXG4gICAgICAgY2xhc3M9XCJwb3NpdGlvbl9hYnNvbHV0ZSBwYXJ0aWNsZV9wb3BvdmVyXCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -1,24 +0,0 @@
1
- import { A11yModule } from '@angular/cdk/a11y';
2
- import { NgModule } from '@angular/core';
3
- import { CommonModule } from '@angular/common';
4
- import { PopoverComponent } from './popover.component';
5
- import * as i0 from "@angular/core";
6
- export class ParticlePopoverModule {
7
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ParticlePopoverModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.1", ngImport: i0, type: ParticlePopoverModule, declarations: [PopoverComponent], imports: [CommonModule,
9
- A11yModule], exports: [PopoverComponent] });
10
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ParticlePopoverModule, imports: [CommonModule,
11
- A11yModule] });
12
- }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ParticlePopoverModule, decorators: [{
14
- type: NgModule,
15
- args: [{
16
- declarations: [PopoverComponent],
17
- imports: [
18
- CommonModule,
19
- A11yModule
20
- ],
21
- exports: [PopoverComponent]
22
- }]
23
- }] });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvcG9wb3Zlci9wb3BvdmVyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7O0FBVXRELE1BQU0sT0FBTyxxQkFBcUI7dUdBQXJCLHFCQUFxQjt3R0FBckIscUJBQXFCLGlCQVBqQixnQkFBZ0IsYUFFekIsWUFBWTtZQUNaLFVBQVUsYUFFTixnQkFBZ0I7d0dBRWYscUJBQXFCLFlBTDFCLFlBQVk7WUFDWixVQUFVOzsyRkFJTCxxQkFBcUI7a0JBUmpDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsZ0JBQWdCLENBQUM7b0JBQzlCLE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLFVBQVU7cUJBQ2I7b0JBQ0gsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7aUJBQzVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQTExeU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUG9wb3ZlckNvbXBvbmVudH0gZnJvbSAnLi9wb3BvdmVyLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1BvcG92ZXJDb21wb25lbnRdLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBBMTF5TW9kdWxlXG4gICAgXSxcbiAgZXhwb3J0czogW1BvcG92ZXJDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIFBhcnRpY2xlUG9wb3Zlck1vZHVsZSB7IH1cbiJdfQ==
@@ -1,28 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { ProfilePicComponent } from './profile-pic.component';
4
- import { ParticleTooltipModule } from '../tooltip/tooltip.module';
5
- import * as i0 from "@angular/core";
6
- export class ParticleProfilePicModule {
7
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ParticleProfilePicModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.1", ngImport: i0, type: ParticleProfilePicModule, declarations: [ProfilePicComponent], imports: [CommonModule,
9
- ParticleTooltipModule], exports: [ProfilePicComponent] });
10
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ParticleProfilePicModule, imports: [CommonModule,
11
- ParticleTooltipModule] });
12
- }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ParticleProfilePicModule, decorators: [{
14
- type: NgModule,
15
- args: [{
16
- declarations: [
17
- ProfilePicComponent
18
- ],
19
- imports: [
20
- CommonModule,
21
- ParticleTooltipModule
22
- ],
23
- exports: [
24
- ProfilePicComponent
25
- ]
26
- }]
27
- }] });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFydGljbGUtcHJvZmlsZS1waWMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL3Byb2ZpbGUtcGljL3BhcnRpY2xlLXByb2ZpbGUtcGljLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQzs7QUFjaEUsTUFBTSxPQUFPLHdCQUF3Qjt1R0FBeEIsd0JBQXdCO3dHQUF4Qix3QkFBd0IsaUJBVmpDLG1CQUFtQixhQUdmLFlBQVk7WUFDWixxQkFBcUIsYUFHekIsbUJBQW1CO3dHQUdWLHdCQUF3QixZQVA3QixZQUFZO1lBQ1oscUJBQXFCOzsyRkFNaEIsd0JBQXdCO2tCQVpwQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixtQkFBbUI7cUJBQ3BCO29CQUNDLE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLHFCQUFxQjtxQkFDeEI7b0JBQ0gsT0FBTyxFQUFFO3dCQUNQLG1CQUFtQjtxQkFDcEI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7UHJvZmlsZVBpY0NvbXBvbmVudH0gZnJvbSAnLi9wcm9maWxlLXBpYy5jb21wb25lbnQnO1xyXG5pbXBvcnQge1BhcnRpY2xlVG9vbHRpcE1vZHVsZX0gZnJvbSAnLi4vdG9vbHRpcC90b29sdGlwLm1vZHVsZSc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgUHJvZmlsZVBpY0NvbXBvbmVudFxyXG4gIF0sXHJcbiAgICBpbXBvcnRzOiBbXHJcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgICAgIFBhcnRpY2xlVG9vbHRpcE1vZHVsZVxyXG4gICAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBQcm9maWxlUGljQ29tcG9uZW50XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGFydGljbGVQcm9maWxlUGljTW9kdWxlIHtcclxufVxyXG4iXX0=