@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,306 +0,0 @@
1
- import { Component, EventEmitter, forwardRef, Input, Output, ViewChild } from '@angular/core';
2
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- import * as i2 from "@angular/forms";
6
- /**
7
- * Component that wraps the native HTML5 color picker for supported browsers
8
- */
9
- export class ColorPickerComponent {
10
- renderer;
11
- changeDetectorRef;
12
- /**
13
- * Regex to match a hexadecimal string (000000)
14
- * @private
15
- */
16
- static FULL_HEX_REGEX = new RegExp('^[0-9A-Fa-f]{6}$');
17
- /**
18
- * Regex to match a short hexadecimal string (000)
19
- * @private
20
- */
21
- static SHORT_HEX_REGEX = new RegExp('^[0-9A-Fa-f]{3}$');
22
- /**
23
- * Regex to match a valid hex character (A-F, a-f, 0-9)
24
- * @private
25
- */
26
- static HEX_CHARACTER_REGEX = new RegExp('^[0-9A-Fa-f]$');
27
- /**
28
- * Navigation keys
29
- * @private
30
- */
31
- static NAVIGATION_KEYS = [
32
- 'Enter', 'Esc', 'Escape', 'Tab', 'Shift',
33
- 'ArrowLeft', 'ArrowUp', 'ArrowRight', 'ArrowDown',
34
- 'Backspace', 'Delete'
35
- ];
36
- /**
37
- * Set the value of the color picker
38
- * @param value the value to set
39
- */
40
- set value(value) {
41
- let hexString = value ?? '';
42
- if (hexString) {
43
- ColorPickerComponent.FULL_HEX_REGEX.lastIndex = 0;
44
- ColorPickerComponent.SHORT_HEX_REGEX.lastIndex = 0;
45
- hexString = hexString.replace('#', '').toLowerCase();
46
- if (ColorPickerComponent.SHORT_HEX_REGEX.test(hexString)) {
47
- hexString = ColorPickerComponent.expandShortHexString(hexString);
48
- }
49
- if (!ColorPickerComponent.FULL_HEX_REGEX.test(hexString)) {
50
- hexString = '';
51
- }
52
- }
53
- this._value = hexString;
54
- if (this.colorInput) {
55
- this.colorInput.nativeElement.value = this._value;
56
- }
57
- }
58
- /**
59
- * Set disabled
60
- * @param disabled whether or not the control should be disabled
61
- */
62
- set disabled(disabled) {
63
- this._disabled = disabled;
64
- }
65
- /**
66
- * Class list to apply to the hex string input
67
- */
68
- classList = null;
69
- text = {
70
- chooseColor: 'Choose a Color',
71
- enterHexCode: 'Enter a Hex Code'
72
- };
73
- /**
74
- * Event emitted on hex string input event. Emits the current value of the input
75
- */
76
- // eslint-disable-next-line @angular-eslint/no-output-native
77
- input = new EventEmitter();
78
- /**
79
- * Event emitted on color selection from color picker (color picker widget dismissed)
80
- * or valid hex string typed in input. Emits the current value of the input
81
- */
82
- colorSelected = new EventEmitter();
83
- /**
84
- * ViewChild of the color input element
85
- */
86
- colorInput = null;
87
- /**
88
- * Whether to render the component
89
- */
90
- render = false;
91
- /**
92
- * Whether the native HTML5 color picker is supported
93
- */
94
- colorPickerSupported = false;
95
- /**
96
- * The value of the color picker
97
- */
98
- _value = '';
99
- /**
100
- * Whether the color picker is disabled
101
- * @private
102
- */
103
- _disabled = false;
104
- /**
105
- * Expand a short hex string (#abc) into its full form (#aabbcc)
106
- * @param hexString the short hex string to expand
107
- * @private
108
- */
109
- static expandShortHexString(hexString) {
110
- let fullHexString = '';
111
- for (let i = 0; i <= 2; i++) {
112
- fullHexString += `${hexString[i]}${hexString[i]}`;
113
- }
114
- return fullHexString;
115
- }
116
- /**
117
- * Function to call on change
118
- */
119
- onChange = () => { };
120
- /**
121
- * Function to call on touch
122
- */
123
- onTouched = () => { };
124
- /**
125
- * Dependency injection site
126
- * @param renderer the Angular renderer
127
- * @param changeDetectorRef the Angular ChangeDetectorRef
128
- */
129
- constructor(renderer, changeDetectorRef) {
130
- this.renderer = renderer;
131
- this.changeDetectorRef = changeDetectorRef;
132
- }
133
- /**
134
- * Init component, check for color picker browser support
135
- */
136
- ngOnInit() {
137
- this.colorPickerSupported = this.isColorPickerSupported();
138
- this.render = true;
139
- }
140
- /**
141
- * Write value
142
- * @param value the value to write
143
- */
144
- writeValue(value) {
145
- this.value = value;
146
- this.changeDetectorRef.markForCheck();
147
- }
148
- /**
149
- * Register on change function
150
- * @param fn the function to register
151
- */
152
- registerOnChange(fn) {
153
- this.onChange = fn;
154
- }
155
- /**
156
- * Register on touched function
157
- * @param fn the function to register
158
- */
159
- registerOnTouched(fn) {
160
- this.onTouched = fn;
161
- }
162
- /**
163
- * Set whether the control should be disabled
164
- * @param isDisabled disabled or not
165
- */
166
- setDisabledState(isDisabled) {
167
- this.disabled = isDisabled;
168
- this.changeDetectorRef.markForCheck();
169
- }
170
- /**
171
- * Prevent illegal input
172
- * @param event the keydown KeyboardEvent
173
- */
174
- handleKeyDown(event) {
175
- const { key } = event;
176
- const { selectionStart, selectionEnd, value } = event.target;
177
- if (!ColorPickerComponent.NAVIGATION_KEYS.includes(key) && !event.ctrlKey) {
178
- ColorPickerComponent.HEX_CHARACTER_REGEX.lastIndex = 0;
179
- const preventDefault = !ColorPickerComponent.HEX_CHARACTER_REGEX.test(key) ||
180
- (value.length >= 6 && (selectionStart === selectionEnd));
181
- if (preventDefault) {
182
- event.preventDefault();
183
- }
184
- }
185
- }
186
- /**
187
- * Update model
188
- * @param value the new value of the model
189
- * @param emitColorSelected whether or not emit the color selected event
190
- * @private
191
- */
192
- updateModel(value, emitColorSelected = false) {
193
- ColorPickerComponent.FULL_HEX_REGEX.lastIndex = 0;
194
- let updateValue = value;
195
- if (updateValue) {
196
- updateValue = updateValue.replace('#', '');
197
- }
198
- if (!this._disabled && ColorPickerComponent.FULL_HEX_REGEX.test(updateValue)) {
199
- const valueBeforeUpdate = this._value;
200
- this.value = updateValue;
201
- if (valueBeforeUpdate !== this._value) {
202
- this.onChange(`#${updateValue}`);
203
- if (emitColorSelected) {
204
- this.colorSelected.emit(`#${updateValue}`);
205
- }
206
- }
207
- }
208
- else if (!value) {
209
- this.value = null;
210
- this.onChange(null);
211
- }
212
- }
213
- /**
214
- * Null out value on blur if not valid hex string, otherwise update model
215
- * @param value the value to check
216
- */
217
- handleBlur(value) {
218
- ColorPickerComponent.SHORT_HEX_REGEX.lastIndex = 0;
219
- ColorPickerComponent.FULL_HEX_REGEX.lastIndex = 0;
220
- if (ColorPickerComponent.SHORT_HEX_REGEX.test(value)) {
221
- this.updateModel(ColorPickerComponent.expandShortHexString(value), true);
222
- }
223
- else if (ColorPickerComponent.FULL_HEX_REGEX.test(value)) {
224
- this.updateModel(value, true);
225
- }
226
- else {
227
- this.value = null;
228
- this.onChange(null);
229
- }
230
- }
231
- /**
232
- * Prevent pasting a non-hex string
233
- * @param event the paste ClipboardEvent
234
- */
235
- handlePaste(event) {
236
- event.preventDefault();
237
- if (!this._disabled) {
238
- let clipboardData = null;
239
- if (event.clipboardData) {
240
- clipboardData = event.clipboardData;
241
- }
242
- else if ('clipboardData' in window) {
243
- clipboardData = window.clipboardData.getData('text');
244
- }
245
- if (clipboardData) {
246
- ColorPickerComponent.FULL_HEX_REGEX.lastIndex = 0;
247
- const pastedText = clipboardData.getData('text')
248
- .replace('#', '');
249
- if (ColorPickerComponent.FULL_HEX_REGEX.test(pastedText)) {
250
- this.updateModel(pastedText);
251
- }
252
- }
253
- }
254
- }
255
- /**
256
- * Determine if the browser supports the HTML5 color picker
257
- * @private
258
- */
259
- isColorPickerSupported() {
260
- let colorPickerSupported = false;
261
- try {
262
- const inputElement = this.renderer.createElement('input');
263
- inputElement.type = 'color';
264
- inputElement.value = '!';
265
- colorPickerSupported = inputElement.type === 'color' && inputElement.value !== '!';
266
- }
267
- catch (e) { }
268
- return colorPickerSupported;
269
- }
270
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ColorPickerComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
271
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: ColorPickerComponent, selector: "particle-color-picker", inputs: { value: "value", disabled: "disabled", classList: "classList", text: "text" }, outputs: { input: "input", colorSelected: "colorSelected" }, providers: [
272
- {
273
- provide: NG_VALUE_ACCESSOR,
274
- useExisting: forwardRef(() => ColorPickerComponent),
275
- multi: true
276
- }
277
- ], viewQueries: [{ propertyName: "colorInput", first: true, predicate: ["colorInput"], descendants: true }], ngImport: i0, template: "<div *ngIf=\"render\" [style.filter]=\"_disabled ? 'brightness(.95)' : ''\"\r\n class=\"cp_container\"\r\n [ngClass]=\"classList ? classList : 'input md bg_overlay brdr content_color'\">\r\n <ng-container *ngIf=\"colorPickerSupported else colorSwatch\">\r\n <input #colorPicker\r\n type=\"color\"\r\n class=\"access cp_color\"\r\n [value]=\"'#' + _value\"\r\n [disabled]=\"_disabled\"\r\n [attr.aria-label]=\"text.chooseColor\"\r\n (input)=\"updateModel(colorPicker.value)\"\r\n (change)=\"updateModel(colorPicker.value); colorSelected.emit(colorPicker.value)\" />\r\n <i class=\"fas fa-caret-down cp_caret\"></i>\r\n </ng-container>\r\n <ng-template #colorSwatch>\r\n <div class=\"cp_swatch\">\r\n <div class=\"width100 height100 bg_overlay brdr\" style=\"border-radius:inherit;\"\r\n [style.background-color]=\"'#' + (_value || '000000')\"></div>\r\n </div>\r\n </ng-template>\r\n <div class=\"bg_overlay brdr vr cp_divider\"></div>\r\n <div class=\"cp_hashtag\">#</div>\r\n <input #colorInput\r\n type=\"text\"\r\n class=\"access cp_input\"\r\n placeholder=\"000000\"\r\n maxlength=\"6\"\r\n [attr.aria-label]=\"text.enterHexCode\"\r\n [ngModel]=\"_value\"\r\n [disabled]=\"_disabled\"\r\n (input)=\"input.emit(colorInput.value)\"\r\n (paste)=\"handlePaste($event)\"\r\n (keydown)=\"handleKeyDown($event)\"\r\n (ngModelChange)=\"updateModel($event, true)\"\r\n (blur)=\"handleBlur(colorInput.value)\" />\r\n</div>\r\n", styles: [":host{width:100%}.cp_container{width:100%;min-width:120px;position:relative}.cp_container:after{content:\"#\";opacity:0;pointer-events:none}.cp_color{width:4em;padding:3px 1.5em 3px 3px;height:inherit;cursor:pointer;position:absolute;inset:0;border:none;-moz-appearance:none;-webkit-appearance:none;appearance:none;font-size:inherit;outline:none;background-color:transparent;color:inherit}.cp_color:disabled{cursor:not-allowed}.cp_caret{position:absolute;left:2.75em;top:50%;margin-top:-.5em;pointer-events:none;opacity:.8}.cp_swatch{width:4em;padding:5px;height:inherit;border-radius:inherit;position:absolute;inset:0;border:none;-moz-appearance:none;-webkit-appearance:none;appearance:none;outline:none}.cp_divider{position:absolute;left:4em;top:0;width:1px;height:100%}.cp_hashtag{position:absolute;left:4.8em}.cp_input{position:absolute;inset:0 0 0 4em;padding:inherit;padding-left:1.8em;border:none;width:calc(100% - 4em);-moz-appearance:none;-webkit-appearance:none;appearance:none;font-size:inherit;outline:none;background-color:transparent;color:inherit}\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: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
278
- }
279
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ColorPickerComponent, decorators: [{
280
- type: Component,
281
- args: [{ selector: 'particle-color-picker', providers: [
282
- {
283
- provide: NG_VALUE_ACCESSOR,
284
- useExisting: forwardRef(() => ColorPickerComponent),
285
- multi: true
286
- }
287
- ], template: "<div *ngIf=\"render\" [style.filter]=\"_disabled ? 'brightness(.95)' : ''\"\r\n class=\"cp_container\"\r\n [ngClass]=\"classList ? classList : 'input md bg_overlay brdr content_color'\">\r\n <ng-container *ngIf=\"colorPickerSupported else colorSwatch\">\r\n <input #colorPicker\r\n type=\"color\"\r\n class=\"access cp_color\"\r\n [value]=\"'#' + _value\"\r\n [disabled]=\"_disabled\"\r\n [attr.aria-label]=\"text.chooseColor\"\r\n (input)=\"updateModel(colorPicker.value)\"\r\n (change)=\"updateModel(colorPicker.value); colorSelected.emit(colorPicker.value)\" />\r\n <i class=\"fas fa-caret-down cp_caret\"></i>\r\n </ng-container>\r\n <ng-template #colorSwatch>\r\n <div class=\"cp_swatch\">\r\n <div class=\"width100 height100 bg_overlay brdr\" style=\"border-radius:inherit;\"\r\n [style.background-color]=\"'#' + (_value || '000000')\"></div>\r\n </div>\r\n </ng-template>\r\n <div class=\"bg_overlay brdr vr cp_divider\"></div>\r\n <div class=\"cp_hashtag\">#</div>\r\n <input #colorInput\r\n type=\"text\"\r\n class=\"access cp_input\"\r\n placeholder=\"000000\"\r\n maxlength=\"6\"\r\n [attr.aria-label]=\"text.enterHexCode\"\r\n [ngModel]=\"_value\"\r\n [disabled]=\"_disabled\"\r\n (input)=\"input.emit(colorInput.value)\"\r\n (paste)=\"handlePaste($event)\"\r\n (keydown)=\"handleKeyDown($event)\"\r\n (ngModelChange)=\"updateModel($event, true)\"\r\n (blur)=\"handleBlur(colorInput.value)\" />\r\n</div>\r\n", styles: [":host{width:100%}.cp_container{width:100%;min-width:120px;position:relative}.cp_container:after{content:\"#\";opacity:0;pointer-events:none}.cp_color{width:4em;padding:3px 1.5em 3px 3px;height:inherit;cursor:pointer;position:absolute;inset:0;border:none;-moz-appearance:none;-webkit-appearance:none;appearance:none;font-size:inherit;outline:none;background-color:transparent;color:inherit}.cp_color:disabled{cursor:not-allowed}.cp_caret{position:absolute;left:2.75em;top:50%;margin-top:-.5em;pointer-events:none;opacity:.8}.cp_swatch{width:4em;padding:5px;height:inherit;border-radius:inherit;position:absolute;inset:0;border:none;-moz-appearance:none;-webkit-appearance:none;appearance:none;outline:none}.cp_divider{position:absolute;left:4em;top:0;width:1px;height:100%}.cp_hashtag{position:absolute;left:4.8em}.cp_input{position:absolute;inset:0 0 0 4em;padding:inherit;padding-left:1.8em;border:none;width:calc(100% - 4em);-moz-appearance:none;-webkit-appearance:none;appearance:none;font-size:inherit;outline:none;background-color:transparent;color:inherit}\n"] }]
288
- }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }], propDecorators: { value: [{
289
- type: Input
290
- }], disabled: [{
291
- type: Input
292
- }], classList: [{
293
- type: Input
294
- }], text: [{
295
- type: Input
296
- }],
297
- // eslint-disable-next-line @angular-eslint/no-output-native
298
- input: [{
299
- type: Output
300
- }], colorSelected: [{
301
- type: Output
302
- }], colorInput: [{
303
- type: ViewChild,
304
- args: ['colorInput']
305
- }] } });
306
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9jb2xvci1waWNrZXIvY29sb3ItcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9jb2xvci1waWNrZXIvY29sb3ItcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBRUwsTUFBTSxFQUVOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFHekU7O0dBRUc7QUFhSCxNQUFNLE9BQU8sb0JBQW9CO0lBd0pYO0lBQTZCO0lBdEpqRDs7O09BR0c7SUFDSyxNQUFNLENBQVUsY0FBYyxHQUFHLElBQUksTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFFeEU7OztPQUdHO0lBQ0ssTUFBTSxDQUFVLGVBQWUsR0FBRyxJQUFJLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBRXpFOzs7T0FHRztJQUNLLE1BQU0sQ0FBVSxtQkFBbUIsR0FBRyxJQUFJLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUUxRTs7O09BR0c7SUFDSyxNQUFNLENBQVUsZUFBZSxHQUFHO1FBQ3hDLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPO1FBQ3hDLFdBQVcsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVc7UUFDakQsV0FBVyxFQUFFLFFBQVE7S0FDdEIsQ0FBQztJQUVGOzs7T0FHRztJQUNILElBQ0ksS0FBSyxDQUFDLEtBQWE7UUFDckIsSUFBSSxTQUFTLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUU1QixJQUFJLFNBQVMsRUFB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c0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgZm9yd2FyZFJlZixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFJlbmRlcmVyMixcclxuICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge0NvbG9yUGlja2VyVGV4dH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9wYXJ0aWNsZS1jb21wb25lbnQtdGV4dC5tb2RlbCc7XHJcblxyXG4vKipcclxuICogQ29tcG9uZW50IHRoYXQgd3JhcHMgdGhlIG5hdGl2ZSBIVE1MNSBjb2xvciBwaWNrZXIgZm9yIHN1cHBvcnRlZCBicm93c2Vyc1xyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdwYXJ0aWNsZS1jb2xvci1waWNrZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2xvci1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvbG9yLXBpY2tlci5jb21wb25lbnQuY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDb2xvclBpY2tlckNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlXHJcbiAgICB9XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29sb3JQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0IHtcclxuXHJcbiAgLyoqXHJcbiAgICogUmVnZXggdG8gbWF0Y2ggYSBoZXhhZGVjaW1hbCBzdHJpbmcgKDAwMDAwMClcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEZVTExfSEVYX1JFR0VYID0gbmV3IFJlZ0V4cCgnXlswLTlBLUZhLWZdezZ9JCcpO1xyXG5cclxuICAvKipcclxuICAgKiBSZWdleCB0byBtYXRjaCBhIHNob3J0IGhleGFkZWNpbWFsIHN0cmluZyAoMDAwKVxyXG4gICAqIEBwcml2YXRlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgU0hPUlRfSEVYX1JFR0VYID0gbmV3IFJlZ0V4cCgnXlswLTlBLUZhLWZdezN9JCcpO1xyXG5cclxuICAvKipcclxuICAgKiBSZWdleCB0byBtYXRjaCBhIHZhbGlkIGhleCBjaGFyYWN0ZXIgKEEtRiwgYS1mLCAwLTkpXHJcbiAgICogQHByaXZhdGVcclxuICAgKi9cclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBIRVhfQ0hBUkFDVEVSX1JFR0VYID0gbmV3IFJlZ0V4cCgnXlswLTlBLUZhLWZdJCcpO1xyXG5cclxuICAvKipcclxuICAgKiBOYXZpZ2F0aW9uIGtleXNcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IE5BVklHQVRJT05fS0VZUyA9IFtcclxuICAgICdFbnRlcicsICdFc2MnLCAnRXNjYXBlJywgJ1RhYicsICdTaGlmdCcsXHJcbiAgICAnQXJyb3dMZWZ0JywgJ0Fycm93VXAnLCAnQXJyb3dSaWdodCcsICdBcnJvd0Rvd24nLFxyXG4gICAgJ0JhY2tzcGFjZScsICdEZWxldGUnXHJcbiAgXTtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IHRoZSB2YWx1ZSBvZiB0aGUgY29sb3IgcGlja2VyXHJcbiAgICogQHBhcmFtIHZhbHVlIHRoZSB2YWx1ZSB0byBzZXRcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICBsZXQgaGV4U3RyaW5nID0gdmFsdWUgPz8gJyc7XHJcblxyXG4gICAgaWYgKGhleFN0cmluZykge1xyXG4gICAgICBDb2xvclBpY2tlckNvbXBvbmVudC5GVUxMX0hFWF9SRUdFWC5sYXN0SW5kZXggPSAwO1xyXG4gICAgICBDb2xvclBpY2tlckNvbXBvbmVudC5TSE9SVF9IRVhfUkVHRVgubGFzdEluZGV4ID0gMDtcclxuXHJcbiAgICAgIGhleFN0cmluZyA9IGhleFN0cmluZy5yZXBsYWNlKCcjJywgJycpLnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgICBpZiAoQ29sb3JQaWNrZXJDb21wb25lbnQuU0hPUlRfSEVYX1JFR0VYLnRlc3QoaGV4U3RyaW5nKSkge1xyXG4gICAgICAgIGhleFN0cmluZyA9IENvbG9yUGlja2VyQ29tcG9uZW50LmV4cGFuZFNob3J0SGV4U3RyaW5nKGhleFN0cmluZyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghQ29sb3JQaWNrZXJDb21wb25lbnQuRlVMTF9IRVhfUkVHRVgudGVzdChoZXhTdHJpbmcpKSB7XHJcbiAgICAgICAgaGV4U3RyaW5nID0gJyc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl92YWx1ZSA9IGhleFN0cmluZztcclxuXHJcbiAgICBpZiAodGhpcy5jb2xvcklucHV0KSB7XHJcbiAgICAgIHRoaXMuY29sb3JJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdGhpcy5fdmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXQgZGlzYWJsZWRcclxuICAgKiBAcGFyYW0gZGlzYWJsZWQgd2hldGhlciBvciBub3QgdGhlIGNvbnRyb2wgc2hvdWxkIGJlIGRpc2FibGVkXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgZGlzYWJsZWQoZGlzYWJsZWQ6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2Rpc2FibGVkID0gZGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGFzcyBsaXN0IHRvIGFwcGx5IHRvIHRoZSBoZXggc3RyaW5nIGlucHV0XHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBjbGFzc0xpc3Q6IHN0cmluZyA9IG51bGwgYXMgYW55O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHRleHQ6IENvbG9yUGlja2VyVGV4dCA9IHtcclxuICAgIGNob29zZUNvbG9yOiAnQ2hvb3NlIGEgQ29sb3InLFxyXG4gICAgZW50ZXJIZXhDb2RlOiAnRW50ZXIgYSBIZXggQ29kZSdcclxuICB9IGFzIENvbG9yUGlja2VyVGV4dDtcclxuXHJcbiAgLyoqXHJcbiAgICogRXZlbnQgZW1pdHRlZCBvbiBoZXggc3RyaW5nIGlucHV0IGV2ZW50LiBFbWl0cyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaW5wdXRcclxuICAgKi9cclxuICBAT3V0cHV0KClcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW5hdGl2ZVxyXG4gIGlucHV0ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEV2ZW50IGVtaXR0ZWQgb24gY29sb3Igc2VsZWN0aW9uIGZyb20gY29sb3IgcGlja2VyIChjb2xvciBwaWNrZXIgd2lkZ2V0IGRpc21pc3NlZClcclxuICAgKiBvciB2YWxpZCBoZXggc3RyaW5nIHR5cGVkIGluIGlucHV0LiBFbWl0cyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaW5wdXRcclxuICAgKi9cclxuICBAT3V0cHV0KClcclxuICBjb2xvclNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIFZpZXdDaGlsZCBvZiB0aGUgY29sb3IgaW5wdXQgZWxlbWVudFxyXG4gICAqL1xyXG4gIEBWaWV3Q2hpbGQoJ2NvbG9ySW5wdXQnKVxyXG4gIGNvbG9ySW5wdXQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4gPSBudWxsIGFzIGFueTtcclxuXHJcbiAgLyoqXHJcbiAgICogV2hldGhlciB0byByZW5kZXIgdGhlIGNvbXBvbmVudFxyXG4gICAqL1xyXG4gIHJlbmRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIHRoZSBuYXRpdmUgSFRNTDUgY29sb3IgcGlja2VyIGlzIHN1cHBvcnRlZFxyXG4gICAqL1xyXG4gIGNvbG9yUGlja2VyU3VwcG9ydGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSB2YWx1ZSBvZiB0aGUgY29sb3IgcGlja2VyXHJcbiAgICovXHJcbiAgX3ZhbHVlID0gJyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZXRoZXIgdGhlIGNvbG9yIHBpY2tlciBpcyBkaXNhYmxlZFxyXG4gICAqIEBwcml2YXRlXHJcbiAgICovXHJcbiAgX2Rpc2FibGVkID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIEV4cGFuZCBhIHNob3J0IGhleCBzdHJpbmcgKCNhYmMpIGludG8gaXRzIGZ1bGwgZm9ybSAoI2FhYmJjYylcclxuICAgKiBAcGFyYW0gaGV4U3RyaW5nIHRoZSBzaG9ydCBoZXggc3RyaW5nIHRvIGV4cGFuZFxyXG4gICAqIEBwcml2YXRlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzdGF0aWMgZXhwYW5kU2hvcnRIZXhTdHJpbmcoaGV4U3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IGZ1bGxIZXhTdHJpbmcgPSAnJztcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8PSAyOyBpKyspIHtcclxuICAgICAgZnVsbEhleFN0cmluZyArPSBgJHtoZXhTdHJpbmdbaV19JHtoZXhTdHJpbmdbaV19YDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZnVsbEhleFN0cmluZztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZ1bmN0aW9uIHRvIGNhbGwgb24gY2hhbmdlXHJcbiAgICovXHJcbiAgb25DaGFuZ2U6ICh2YWx1ZTogYW55KSA9PiB2b2lkID0gKCkgPT4ge307XHJcblxyXG4gIC8qKlxyXG4gICAqIEZ1bmN0aW9uIHRvIGNhbGwgb24gdG91Y2hcclxuICAgKi9cclxuICBvblRvdWNoZWQ6ICgpID0+IGFueSA9ICgpID0+IHt9O1xyXG5cclxuICAvKipcclxuICAgKiBEZXBlbmRlbmN5IGluamVjdGlvbiBzaXRlXHJcbiAgICogQHBhcmFtIHJlbmRlcmVyIHRoZSBBbmd1bGFyIHJlbmRlcmVyXHJcbiAgICogQHBhcmFtIGNoYW5nZURldGVjdG9yUmVmIHRoZSBBbmd1bGFyIENoYW5nZURldGVjdG9yUmVmXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLCBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikgeyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXQgY29tcG9uZW50LCBjaGVjayBmb3IgY29sb3IgcGlja2VyIGJyb3dzZXIgc3VwcG9ydFxyXG4gICAqL1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb2xvclBpY2tlclN1cHBvcnRlZCA9IHRoaXMuaXNDb2xvclBpY2tlclN1cHBvcnRlZCgpO1xyXG4gICAgdGhpcy5yZW5kZXIgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV3JpdGUgdmFsdWVcclxuICAgKiBAcGFyYW0gdmFsdWUgdGhlIHZhbHVlIHRvIHdyaXRlXHJcbiAgICovXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVnaXN0ZXIgb24gY2hhbmdlIGZ1bmN0aW9uXHJcbiAgICogQHBhcmFtIGZuIHRoZSBmdW5jdGlvbiB0byByZWdpc3RlclxyXG4gICAqL1xyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVnaXN0ZXIgb24gdG91Y2hlZCBmdW5jdGlvblxyXG4gICAqIEBwYXJhbSBmbiB0aGUgZnVuY3Rpb24gdG8gcmVnaXN0ZXJcclxuICAgKi9cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IHdoZXRoZXIgdGhlIGNvbnRyb2wgc2hvdWxkIGJlIGRpc2FibGVkXHJcbiAgICogQHBhcmFtIGlzRGlzYWJsZWQgZGlzYWJsZWQgb3Igbm90XHJcbiAgICovXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQcmV2ZW50IGlsbGVnYWwgaW5wdXRcclxuICAgKiBAcGFyYW0gZXZlbnQgdGhlIGtleWRvd24gS2V5Ym9hcmRFdmVudFxyXG4gICAqL1xyXG4gIGhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIGNvbnN0IHsga2V5IH0gPSBldmVudDtcclxuICAgIGNvbnN0IHsgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCwgdmFsdWUgfSA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG5cclxuICAgIGlmICghQ29sb3JQaWNrZXJDb21wb25lbnQuTkFWSUdBVElPTl9LRVlTLmluY2x1ZGVzKGtleSkgJiYgIWV2ZW50LmN0cmxLZXkpIHtcclxuICAgICAgQ29sb3JQaWNrZXJDb21wb25lbnQuSEVYX0NIQVJBQ1RFUl9SRUdFWC5sYXN0SW5kZXggPSAwO1xyXG5cclxuICAgICAgY29uc3QgcHJldmVudERlZmF1bHQgPSAhQ29sb3JQaWNrZXJDb21wb25lbnQuSEVYX0NIQVJBQ1RFUl9SRUdFWC50ZXN0KGtleSkgfHxcclxuICAgICAgICAodmFsdWUubGVuZ3RoID49IDYgJiYgKHNlbGVjdGlvblN0YXJ0ID09PSBzZWxlY3Rpb25FbmQpKTtcclxuXHJcbiAgICAgIGlmIChwcmV2ZW50RGVmYXVsdCkge1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSBtb2RlbFxyXG4gICAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSBtb2RlbFxyXG4gICAqIEBwYXJhbSBlbWl0Q29sb3JTZWxlY3RlZCB3aGV0aGVyIG9yIG5vdCBlbWl0IHRoZSBjb2xvciBzZWxlY3RlZCBldmVudFxyXG4gICAqIEBwcml2YXRlXHJcbiAgICovXHJcbiAgdXBkYXRlTW9kZWwodmFsdWU6IHN0cmluZywgZW1pdENvbG9yU2VsZWN0ZWQgPSBmYWxzZSk6IHZvaWQge1xyXG4gICAgQ29sb3JQaWNrZXJDb21wb25lbnQuRlVMTF9IRVhfUkVHRVgubGFzdEluZGV4ID0gMDtcclxuICAgIGxldCB1cGRhdGVWYWx1ZSA9IHZhbHVlO1xyXG5cclxuICAgIGlmICh1cGRhdGVWYWx1ZSkge1xyXG4gICAgICB1cGRhdGVWYWx1ZSA9IHVwZGF0ZVZhbHVlLnJlcGxhY2UoJyMnLCAnJyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLl9kaXNhYmxlZCAmJiBDb2xvclBpY2tlckNvbXBvbmVudC5GVUxMX0hFWF9SRUdFWC50ZXN0KHVwZGF0ZVZhbHVlKSkge1xyXG4gICAgICBjb25zdCB2YWx1ZUJlZm9yZVVwZGF0ZSA9IHRoaXMuX3ZhbHVlO1xyXG4gICAgICB0aGlzLnZhbHVlID0gdXBkYXRlVmFsdWU7XHJcblxyXG4gICAgICBpZiAodmFsdWVCZWZvcmVVcGRhdGUgIT09IHRoaXMuX3ZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZShgIyR7dXBkYXRlVmFsdWV9YCk7XHJcblxyXG4gICAgICAgIGlmIChlbWl0Q29sb3JTZWxlY3RlZCkge1xyXG4gICAgICAgICAgdGhpcy5jb2xvclNlbGVjdGVkLmVtaXQoYCMke3VwZGF0ZVZhbHVlfWApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICghdmFsdWUpIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IG51bGwgYXMgYW55O1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTnVsbCBvdXQgdmFsdWUgb24gYmx1ciBpZiBub3QgdmFsaWQgaGV4IHN0cmluZywgb3RoZXJ3aXNlIHVwZGF0ZSBtb2RlbFxyXG4gICAqIEBwYXJhbSB2YWx1ZSB0aGUgdmFsdWUgdG8gY2hlY2tcclxuICAgKi9cclxuICBoYW5kbGVCbHVyKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIENvbG9yUGlja2VyQ29tcG9uZW50LlNIT1JUX0hFWF9SRUdFWC5sYXN0SW5kZXggPSAwO1xyXG4gICAgQ29sb3JQaWNrZXJDb21wb25lbnQuRlVMTF9IRVhfUkVHRVgubGFzdEluZGV4ID0gMDtcclxuXHJcbiAgICBpZiAoQ29sb3JQaWNrZXJDb21wb25lbnQuU0hPUlRfSEVYX1JFR0VYLnRlc3QodmFsdWUpKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlTW9kZWwoQ29sb3JQaWNrZXJDb21wb25lbnQuZXhwYW5kU2hvcnRIZXhTdHJpbmcodmFsdWUpLCB0cnVlKTtcclxuICAgIH0gZWxzZSBpZiAoQ29sb3JQaWNrZXJDb21wb25lbnQuRlVMTF9IRVhfUkVHRVgudGVzdCh2YWx1ZSkpIHtcclxuICAgICAgdGhpcy51cGRhdGVNb2RlbCh2YWx1ZSwgdHJ1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnZhbHVlID0gbnVsbCBhcyBhbnk7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQcmV2ZW50IHBhc3RpbmcgYSBub24taGV4IHN0cmluZ1xyXG4gICAqIEBwYXJhbSBldmVudCB0aGUgcGFzdGUgQ2xpcGJvYXJkRXZlbnRcclxuICAgKi9cclxuICBoYW5kbGVQYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgaWYgKCF0aGlzLl9kaXNhYmxlZCkge1xyXG4gICAgICBsZXQgY2xpcGJvYXJkRGF0YTogRGF0YVRyYW5zZmVyID0gbnVsbCBhcyBhbnk7XHJcblxyXG4gICAgICBpZiAoZXZlbnQuY2xpcGJvYXJkRGF0YSkge1xyXG4gICAgICAgIGNsaXBib2FyZERhdGEgPSBldmVudC5jbGlwYm9hcmREYXRhO1xyXG4gICAgICB9IGVsc2UgaWYgKCdjbGlwYm9hcmREYXRhJyBpbiB3aW5kb3cpIHtcclxuICAgICAgICBjbGlwYm9hcmREYXRhID0gKHdpbmRvdyBhcyBhbnkpLmNsaXBib2FyZERhdGEuZ2V0RGF0YSgndGV4dCcpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoY2xpcGJvYXJkRGF0YSkge1xyXG4gICAgICAgIENvbG9yUGlja2VyQ29tcG9uZW50LkZVTExfSEVYX1JFR0VYLmxhc3RJbmRleCA9IDA7XHJcbiAgICAgICAgY29uc3QgcGFzdGVkVGV4dCA9IGNsaXBib2FyZERhdGEuZ2V0RGF0YSgndGV4dCcpXHJcbiAgICAgICAgICAucmVwbGFjZSgnIycsICcnKTtcclxuXHJcbiAgICAgICAgaWYgKENvbG9yUGlja2VyQ29tcG9uZW50LkZVTExfSEVYX1JFR0VYLnRlc3QocGFzdGVkVGV4dCkpIHtcclxuICAgICAgICAgIHRoaXMudXBkYXRlTW9kZWwocGFzdGVkVGV4dCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZXRlcm1pbmUgaWYgdGhlIGJyb3dzZXIgc3VwcG9ydHMgdGhlIEhUTUw1IGNvbG9yIHBpY2tlclxyXG4gICAqIEBwcml2YXRlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBpc0NvbG9yUGlja2VyU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGNvbG9yUGlja2VyU3VwcG9ydGVkID0gZmFsc2U7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgaW5wdXRFbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xyXG4gICAgICBpbnB1dEVsZW1lbnQudHlwZSA9ICdjb2xvcic7XHJcbiAgICAgIGlucHV0RWxlbWVudC52YWx1ZSA9ICchJztcclxuXHJcbiAgICAgIGNvbG9yUGlja2VyU3VwcG9ydGVkID0gaW5wdXRFbGVtZW50LnR5cGUgPT09ICdjb2xvcicgJiYgaW5wdXRFbGVtZW50LnZhbHVlICE9PSAnISc7XHJcbiAgICB9IGNhdGNoIChlKSB7IH1cclxuXHJcbiAgICByZXR1cm4gY29sb3JQaWNrZXJTdXBwb3J0ZWQ7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgKm5nSWY9XCJyZW5kZXJcIiBbc3R5bGUuZmlsdGVyXT1cIl9kaXNhYmxlZCA/ICdicmlnaHRuZXNzKC45NSknIDogJydcIlxyXG4gICAgIGNsYXNzPVwiY3BfY29udGFpbmVyXCJcclxuICAgICBbbmdDbGFzc109XCJjbGFzc0xpc3QgPyBjbGFzc0xpc3QgOiAnaW5wdXQgbWQgYmdfb3ZlcmxheSBicmRyIGNvbnRlbnRfY29sb3InXCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbG9yUGlja2VyU3VwcG9ydGVkIGVsc2UgY29sb3JTd2F0Y2hcIj5cclxuICAgIDxpbnB1dCAjY29sb3JQaWNrZXJcclxuICAgICAgICAgICB0eXBlPVwiY29sb3JcIlxyXG4gICAgICAgICAgIGNsYXNzPVwiYWNjZXNzIGNwX2NvbG9yXCJcclxuICAgICAgICAgICBbdmFsdWVdPVwiJyMnICsgX3ZhbHVlXCJcclxuICAgICAgICAgICBbZGlzYWJsZWRdPVwiX2Rpc2FibGVkXCJcclxuICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRleHQuY2hvb3NlQ29sb3JcIlxyXG4gICAgICAgICAgIChpbnB1dCk9XCJ1cGRhdGVNb2RlbChjb2xvclBpY2tlci52YWx1ZSlcIlxyXG4gICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlTW9kZWwoY29sb3JQaWNrZXIudmFsdWUpOyBjb2xvclNlbGVjdGVkLmVtaXQoY29sb3JQaWNrZXIudmFsdWUpXCIgLz5cclxuICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNhcmV0LWRvd24gY3BfY2FyZXRcIj48L2k+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPG5nLXRlbXBsYXRlICNjb2xvclN3YXRjaD5cclxuICAgIDxkaXYgY2xhc3M9XCJjcF9zd2F0Y2hcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIndpZHRoMTAwIGhlaWdodDEwMCBiZ19vdmVybGF5IGJyZHJcIiBzdHlsZT1cImJvcmRlci1yYWRpdXM6aW5oZXJpdDtcIlxyXG4gICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cIicjJyArIChfdmFsdWUgfHwgJzAwMDAwMCcpXCI+PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG4gIDxkaXYgY2xhc3M9XCJiZ19vdmVybGF5IGJyZHIgdnIgY3BfZGl2aWRlclwiPjwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJjcF9oYXNodGFnXCI+IzwvZGl2PlxyXG4gIDxpbnB1dCAjY29sb3JJbnB1dFxyXG4gICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgIGNsYXNzPVwiYWNjZXNzIGNwX2lucHV0XCJcclxuICAgICAgICAgcGxhY2Vob2xkZXI9XCIwMDAwMDBcIlxyXG4gICAgICAgICBtYXhsZW5ndGg9XCI2XCJcclxuICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0ZXh0LmVudGVySGV4Q29kZVwiXHJcbiAgICAgICAgIFtuZ01vZGVsXT1cIl92YWx1ZVwiXHJcbiAgICAgICAgIFtkaXNhYmxlZF09XCJfZGlzYWJsZWRcIlxyXG4gICAgICAgICAoaW5wdXQpPVwiaW5wdXQuZW1pdChjb2xvcklucHV0LnZhbHVlKVwiXHJcbiAgICAgICAgIChwYXN0ZSk9XCJoYW5kbGVQYXN0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgKGtleWRvd24pPVwiaGFuZGxlS2V5RG93bigkZXZlbnQpXCJcclxuICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlTW9kZWwoJGV2ZW50LCB0cnVlKVwiXHJcbiAgICAgICAgIChibHVyKT1cImhhbmRsZUJsdXIoY29sb3JJbnB1dC52YWx1ZSlcIiAvPlxyXG48L2Rpdj5cclxuIl19
@@ -1,19 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { FormsModule } from '@angular/forms';
4
- import { ColorPickerComponent } from './color-picker.component';
5
- import * as i0 from "@angular/core";
6
- export class ParticleColorPickerModule {
7
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ParticleColorPickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.1", ngImport: i0, type: ParticleColorPickerModule, declarations: [ColorPickerComponent], imports: [CommonModule, FormsModule], exports: [ColorPickerComponent] });
9
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ParticleColorPickerModule, imports: [CommonModule, FormsModule] });
10
- }
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ParticleColorPickerModule, decorators: [{
12
- type: NgModule,
13
- args: [{
14
- declarations: [ColorPickerComponent],
15
- imports: [CommonModule, FormsModule],
16
- exports: [ColorPickerComponent]
17
- }]
18
- }] });
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItcGlja2VyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9jb2xvci1waWNrZXIvY29sb3ItcGlja2VyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBT2hFLE1BQU0sT0FBTyx5QkFBeUI7dUdBQXpCLHlCQUF5Qjt3R0FBekIseUJBQXlCLGlCQUpyQixvQkFBb0IsYUFDekIsWUFBWSxFQUFFLFdBQVcsYUFDekIsb0JBQW9CO3dHQUVuQix5QkFBeUIsWUFIMUIsWUFBWSxFQUFFLFdBQVc7OzJGQUd4Qix5QkFBeUI7a0JBTHJDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsb0JBQW9CLENBQUM7b0JBQ3BDLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUM7b0JBQ3BDLE9BQU8sRUFBRSxDQUFDLG9CQUFvQixDQUFDO2lCQUNoQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb2xvclBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vY29sb3ItcGlja2VyLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW0NvbG9yUGlja2VyQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGVdLFxuICBleHBvcnRzOiBbQ29sb3JQaWNrZXJDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIFBhcnRpY2xlQ29sb3JQaWNrZXJNb2R1bGUgeyB9XG4iXX0=