@entake/particle 18.0.5 → 19.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +7 -7
- package/app/{modules → shared/components}/accordion/accordion.component.d.ts +3 -3
- package/app/{modules/date-picker → shared}/components/calendar/calendar.component.d.ts +7 -12
- package/app/{modules → shared/components}/checkbox/checkbox.component.d.ts +5 -7
- package/app/{modules → shared/components}/color-picker/color-picker.component.d.ts +3 -9
- package/app/{modules → shared/components}/date-picker/date-picker.component.d.ts +20 -26
- package/app/{modules/date-picker → shared}/components/date-range-picker/date-range-picker.component.d.ts +10 -11
- package/app/{modules → shared/components}/dialog/dialog.component.d.ts +16 -24
- package/app/{modules → shared/components}/dropdown/dropdown.component.d.ts +12 -14
- package/app/{modules/icons/components → shared/components/icon-select}/icon-select.component.d.ts +14 -17
- package/app/{modules → shared/components}/idle-timeout/idle-timeout.component.d.ts +3 -4
- package/app/{modules → shared/components}/input-mask/input-mask.component.d.ts +6 -7
- package/app/shared/components/layout-full-framing/layout-full-framing.component.d.ts +27 -0
- package/app/shared/components/layout-fullwidth-sidebar/layout-fullwidth-sidebar.component.d.ts +23 -0
- package/app/{modules/loader/components → shared/components/loader}/loader.component.d.ts +2 -2
- package/app/{modules → shared/components}/multi-select/multi-select.component.d.ts +18 -24
- package/app/{modules → shared/components}/notification/notification.component.d.ts +5 -13
- package/app/{modules → shared/components}/paginator/paginator.component.d.ts +12 -11
- package/app/{modules → shared/components}/popover/popover.component.d.ts +10 -15
- package/app/{modules → shared/components}/profile-pic/profile-pic.component.d.ts +1 -1
- package/app/shared/components/progress-bar/progress-bar.component.d.ts +15 -0
- package/app/{modules → shared/components}/rich-text/rich-text.component.d.ts +11 -12
- package/app/shared/components/scroll-to-top/scroll-to-top.component.d.ts +18 -0
- package/app/shared/components/slideover/slideover.component.d.ts +35 -0
- package/app/{modules → shared/components}/slider/slider.component.d.ts +8 -22
- package/app/{modules → shared/components}/toggle-switch/toggle-switch.component.d.ts +4 -6
- package/app/{modules → shared/components}/week-picker/week-picker.component.d.ts +21 -22
- package/app/{modules/accordion → shared}/directives/accordion-content.directive.d.ts +1 -2
- package/app/{modules/accordion → shared}/directives/accordion-header.directive.d.ts +1 -2
- package/app/{modules/accordion → shared}/directives/accordion-item.directive.d.ts +1 -1
- package/app/{modules/background-carousel → shared/directives}/background-carousel.directive.d.ts +4 -4
- package/app/{modules/keyfilter → shared/directives}/keyfilter.directive.d.ts +1 -7
- package/app/{modules/tooltip → shared/directives}/tooltip.directive.d.ts +3 -9
- package/app/shared/models/carousel-options.model.d.ts +21 -0
- package/app/shared/models/pagination-event.model.d.ts +8 -0
- package/app/shared/models/particle-component-text.model.d.ts +2 -24
- package/app/{modules/icons → shared}/models/particle-icons-solid.model.d.ts +6 -6
- package/app/shared/modules/icons/particle-icons.module.d.ts +7 -0
- package/app/{modules/ordinal-number-pipe → shared/pipes}/ordinal-number.pipe.d.ts +1 -1
- package/app/shared/services/base-data.service.d.ts +2 -2
- package/app/shared/services/dialog.service.d.ts +1 -1
- package/app/{modules/notification → shared}/services/notification.service.d.ts +0 -4
- package/app/{modules/theming → shared}/services/theming.service.d.ts +0 -19
- package/fesm2022/entake-particle.mjs +4026 -5721
- package/fesm2022/entake-particle.mjs.map +1 -1
- package/package.json +16 -25
- package/public_api.d.ts +47 -82
- package/app/modules/accordion/accordion.module.d.ts +0 -11
- package/app/modules/background-carousel/carousel-options.model.d.ts +0 -30
- package/app/modules/background-carousel/particle-background-carousel.module.d.ts +0 -8
- package/app/modules/checkbox/checkbox.module.d.ts +0 -9
- package/app/modules/color-picker/color-picker.module.d.ts +0 -9
- package/app/modules/date-picker/date-picker.module.d.ts +0 -15
- package/app/modules/dialog/dialog.module.d.ts +0 -9
- package/app/modules/dropdown/dropdown.module.d.ts +0 -9
- package/app/modules/endpoint-state/components/endpoint-state.component.d.ts +0 -46
- package/app/modules/endpoint-state/endpoint-state.module.d.ts +0 -8
- package/app/modules/icons/particle-icons.module.d.ts +0 -13
- package/app/modules/idle-timeout/particle-idle-timeout.module.d.ts +0 -9
- package/app/modules/input-mask/input-mask.module.d.ts +0 -8
- package/app/modules/keyfilter/keyfilter.module.d.ts +0 -8
- package/app/modules/layout/components/layout-full-framing/layout-full-framing.component.d.ts +0 -27
- package/app/modules/layout/components/layout-fullwidth-sidebar/layout-fullwidth-sidebar.component.d.ts +0 -23
- package/app/modules/layout/layout.module.d.ts +0 -10
- package/app/modules/loader/loader.module.d.ts +0 -8
- package/app/modules/multi-select/multi-select.module.d.ts +0 -8
- package/app/modules/notification/notification.module.d.ts +0 -8
- package/app/modules/ordinal-number-pipe/ordinal-number-pipe.module.d.ts +0 -8
- package/app/modules/paginator/pagination-event.model.d.ts +0 -24
- package/app/modules/paginator/particle-paginator.module.d.ts +0 -13
- package/app/modules/popover/popover.module.d.ts +0 -9
- package/app/modules/profile-pic/particle-profile-pic.module.d.ts +0 -9
- package/app/modules/progress-bar/progress-bar.component.d.ts +0 -16
- package/app/modules/progress-bar/progress-bar.module.d.ts +0 -8
- package/app/modules/push-container/particle-push-container.module.d.ts +0 -9
- package/app/modules/push-container/push-container-state.model.d.ts +0 -7
- package/app/modules/push-container/push-container.component.d.ts +0 -137
- package/app/modules/rich-text/particle-rich-text.module.d.ts +0 -15
- package/app/modules/rich-text/render-rich-text.component.d.ts +0 -6
- package/app/modules/scroll-to-top/particle-scroll-to-top.module.d.ts +0 -8
- package/app/modules/scroll-to-top/scroll-to-top.component.d.ts +0 -19
- package/app/modules/slideover/particle-slideover.module.d.ts +0 -8
- package/app/modules/slideover/slideover.component.d.ts +0 -35
- package/app/modules/slider/slider.module.d.ts +0 -9
- package/app/modules/theming/components/theming.component.d.ts +0 -43
- package/app/modules/theming/theming.module.d.ts +0 -12
- package/app/modules/toggle-switch/toggle-switch.module.d.ts +0 -8
- package/app/modules/tooltip/tooltip.module.d.ts +0 -8
- package/app/modules/week-picker/week-picker.module.d.ts +0 -13
- package/app/shared/enums/endpoint-status.enum.d.ts +0 -9
- package/esm2022/app/modules/accordion/accordion.component.mjs +0 -101
- package/esm2022/app/modules/accordion/accordion.module.mjs +0 -37
- package/esm2022/app/modules/accordion/directives/accordion-content.directive.mjs +0 -17
- package/esm2022/app/modules/accordion/directives/accordion-header.directive.mjs +0 -17
- package/esm2022/app/modules/accordion/directives/accordion-item.directive.mjs +0 -36
- package/esm2022/app/modules/background-carousel/background-carousel.directive.mjs +0 -91
- package/esm2022/app/modules/background-carousel/carousel-options.model.mjs +0 -36
- package/esm2022/app/modules/background-carousel/particle-background-carousel.module.mjs +0 -24
- package/esm2022/app/modules/checkbox/checkbox.component.mjs +0 -108
- package/esm2022/app/modules/checkbox/checkbox.module.mjs +0 -28
- package/esm2022/app/modules/color-picker/color-picker.component.mjs +0 -306
- package/esm2022/app/modules/color-picker/color-picker.module.mjs +0 -19
- package/esm2022/app/modules/date-picker/components/calendar/calendar.component.mjs +0 -496
- package/esm2022/app/modules/date-picker/components/date-range-picker/date-range-picker.component.mjs +0 -250
- package/esm2022/app/modules/date-picker/date-picker.component.mjs +0 -538
- package/esm2022/app/modules/date-picker/date-picker.module.mjs +0 -56
- package/esm2022/app/modules/dialog/dialog.component.mjs +0 -177
- package/esm2022/app/modules/dialog/dialog.module.mjs +0 -28
- package/esm2022/app/modules/dropdown/dropdown.component.mjs +0 -682
- package/esm2022/app/modules/dropdown/dropdown.module.mjs +0 -28
- package/esm2022/app/modules/dropdown/models/dropdown-option-group.model.mjs +0 -2
- package/esm2022/app/modules/dropdown/models/dropdown-option.model.mjs +0 -2
- package/esm2022/app/modules/endpoint-state/components/endpoint-state.component.mjs +0 -75
- package/esm2022/app/modules/endpoint-state/endpoint-state.module.mjs +0 -22
- package/esm2022/app/modules/icons/components/icon-select.component.mjs +0 -376
- package/esm2022/app/modules/icons/models/fontawesome-icons-brands.model.mjs +0 -471
- package/esm2022/app/modules/icons/models/fontawesome-icons-regular.model.mjs +0 -166
- package/esm2022/app/modules/icons/models/fontawesome-icons-solid.model.mjs +0 -1016
- package/esm2022/app/modules/icons/models/particle-icons-brands.model.mjs +0 -24
- package/esm2022/app/modules/icons/models/particle-icons-regular.model.mjs +0 -50
- package/esm2022/app/modules/icons/models/particle-icons-solid.model.mjs +0 -89
- package/esm2022/app/modules/icons/particle-icons.module.mjs +0 -66
- package/esm2022/app/modules/icons/services/icons.service.mjs +0 -82
- package/esm2022/app/modules/idle-timeout/idle-timeout.component.mjs +0 -85
- package/esm2022/app/modules/idle-timeout/idle-timer.mjs +0 -66
- package/esm2022/app/modules/idle-timeout/particle-idle-timeout.module.mjs +0 -28
- package/esm2022/app/modules/input-mask/input-mask.component.mjs +0 -594
- package/esm2022/app/modules/input-mask/input-mask.module.mjs +0 -18
- package/esm2022/app/modules/keyfilter/keyfilter.directive.mjs +0 -174
- package/esm2022/app/modules/keyfilter/keyfilter.module.mjs +0 -18
- package/esm2022/app/modules/layout/components/layout-full-framing/layout-full-framing.component.mjs +0 -81
- package/esm2022/app/modules/layout/components/layout-fullwidth-sidebar/layout-fullwidth-sidebar.component.mjs +0 -67
- package/esm2022/app/modules/layout/layout.module.mjs +0 -33
- package/esm2022/app/modules/loader/components/loader.component.mjs +0 -30
- package/esm2022/app/modules/loader/loader.module.mjs +0 -24
- package/esm2022/app/modules/multi-select/models/multi-select-option-group.model.mjs +0 -2
- package/esm2022/app/modules/multi-select/models/multi-select-option.model.mjs +0 -2
- package/esm2022/app/modules/multi-select/multi-select.component.mjs +0 -665
- package/esm2022/app/modules/multi-select/multi-select.module.mjs +0 -18
- package/esm2022/app/modules/notification/models/notification.model.mjs +0 -2
- package/esm2022/app/modules/notification/notification.component.mjs +0 -122
- package/esm2022/app/modules/notification/notification.module.mjs +0 -18
- package/esm2022/app/modules/notification/services/notification.service.mjs +0 -84
- package/esm2022/app/modules/ordinal-number-pipe/ordinal-number-pipe.module.mjs +0 -20
- package/esm2022/app/modules/ordinal-number-pipe/ordinal-number.pipe.mjs +0 -49
- package/esm2022/app/modules/paginator/pagination-event.model.mjs +0 -29
- package/esm2022/app/modules/paginator/paginator.component.mjs +0 -207
- package/esm2022/app/modules/paginator/particle-paginator.module.mjs +0 -48
- package/esm2022/app/modules/popover/popover.component.mjs +0 -352
- package/esm2022/app/modules/popover/popover.module.mjs +0 -24
- package/esm2022/app/modules/profile-pic/particle-profile-pic.module.mjs +0 -28
- package/esm2022/app/modules/profile-pic/profile-pic.component.mjs +0 -75
- package/esm2022/app/modules/progress-bar/progress-bar.component.mjs +0 -43
- package/esm2022/app/modules/progress-bar/progress-bar.module.mjs +0 -24
- package/esm2022/app/modules/push-container/particle-push-container.module.mjs +0 -26
- package/esm2022/app/modules/push-container/push-container-state.model.mjs +0 -2
- package/esm2022/app/modules/push-container/push-container.component.mjs +0 -363
- package/esm2022/app/modules/rich-text/particle-rich-text.module.mjs +0 -64
- package/esm2022/app/modules/rich-text/render-rich-text.component.mjs +0 -18
- package/esm2022/app/modules/rich-text/rich-text-capabilities.model.mjs +0 -2
- package/esm2022/app/modules/rich-text/rich-text.component.mjs +0 -209
- package/esm2022/app/modules/scroll-to-top/particle-scroll-to-top.module.mjs +0 -24
- package/esm2022/app/modules/scroll-to-top/scroll-to-top.component.mjs +0 -49
- package/esm2022/app/modules/slideover/particle-slideover.module.mjs +0 -24
- package/esm2022/app/modules/slideover/slideover.component.mjs +0 -115
- package/esm2022/app/modules/slider/slider.component.mjs +0 -243
- package/esm2022/app/modules/slider/slider.module.mjs +0 -26
- package/esm2022/app/modules/theming/components/theming.component.mjs +0 -86
- package/esm2022/app/modules/theming/models/theme.model.mjs +0 -9
- package/esm2022/app/modules/theming/services/theme-change-detection.service.mjs +0 -38
- package/esm2022/app/modules/theming/services/theming.service.mjs +0 -510
- package/esm2022/app/modules/theming/theming.module.mjs +0 -55
- package/esm2022/app/modules/toggle-switch/models/toggle-options.model.mjs +0 -2
- package/esm2022/app/modules/toggle-switch/toggle-switch.component.mjs +0 -107
- package/esm2022/app/modules/toggle-switch/toggle-switch.module.mjs +0 -24
- package/esm2022/app/modules/tooltip/tooltip.directive.mjs +0 -381
- package/esm2022/app/modules/tooltip/tooltip.module.mjs +0 -18
- package/esm2022/app/modules/week-picker/week-picker.component.mjs +0 -511
- package/esm2022/app/modules/week-picker/week-picker.module.mjs +0 -40
- package/esm2022/app/shared/enums/endpoint-status.enum.mjs +0 -11
- package/esm2022/app/shared/interceptors/json.interceptor.mjs +0 -23
- package/esm2022/app/shared/models/auditable.model.mjs +0 -2
- package/esm2022/app/shared/models/data-list.model.mjs +0 -2
- package/esm2022/app/shared/models/id.model.mjs +0 -2
- package/esm2022/app/shared/models/observable-container.mjs +0 -15
- package/esm2022/app/shared/models/particle-component-text.model.mjs +0 -2
- package/esm2022/app/shared/services/base-data.service.mjs +0 -190
- package/esm2022/app/shared/services/dialog.service.mjs +0 -50
- package/esm2022/app/shared/services/local-storage.service.mjs +0 -60
- package/esm2022/entake-particle.mjs +0 -5
- package/esm2022/public_api.mjs +0 -98
- /package/app/{modules/dropdown → shared}/models/dropdown-option-group.model.d.ts +0 -0
- /package/app/{modules/dropdown → shared}/models/dropdown-option.model.d.ts +0 -0
- /package/app/{modules/icons → shared}/models/fontawesome-icons-brands.model.d.ts +0 -0
- /package/app/{modules/icons → shared}/models/fontawesome-icons-regular.model.d.ts +0 -0
- /package/app/{modules/icons → shared}/models/fontawesome-icons-solid.model.d.ts +0 -0
- /package/app/{modules/multi-select → shared}/models/multi-select-option-group.model.d.ts +0 -0
- /package/app/{modules/multi-select → shared}/models/multi-select-option.model.d.ts +0 -0
- /package/app/{modules/notification → shared}/models/notification.model.d.ts +0 -0
- /package/app/{modules/icons → shared}/models/particle-icons-brands.model.d.ts +0 -0
- /package/app/{modules/icons → shared}/models/particle-icons-regular.model.d.ts +0 -0
- /package/app/{modules/rich-text → shared/models}/rich-text-capabilities.model.d.ts +0 -0
- /package/app/{modules/theming → shared}/models/theme.model.d.ts +0 -0
- /package/app/{modules/toggle-switch → shared}/models/toggle-options.model.d.ts +0 -0
- /package/app/{modules/icons → shared}/services/icons.service.d.ts +0 -0
- /package/app/{modules/idle-timeout → shared/services}/idle-timer.d.ts +0 -0
- /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=
|