ngx-color 8.0.3 → 9.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) hide show
  1. package/README.md +2 -3
  2. package/alpha/alpha-picker.component.d.ts +1 -1
  3. package/alpha.component.d.ts +1 -1
  4. package/block/block-swatches.component.d.ts +1 -1
  5. package/block/block.component.d.ts +1 -1
  6. package/checkboard.component.d.ts +1 -1
  7. package/chrome/chrome-fields.component.d.ts +1 -1
  8. package/chrome/chrome.component.d.ts +1 -1
  9. package/circle/circle-swatch.component.d.ts +1 -1
  10. package/circle/circle.component.d.ts +1 -1
  11. package/color-wrap.component.d.ts +1 -1
  12. package/compact/compact-color.component.d.ts +1 -1
  13. package/compact/compact-fields.component.d.ts +1 -1
  14. package/compact/compact.component.d.ts +1 -1
  15. package/coordinates.directive.d.ts +1 -1
  16. package/editable-input.component.d.ts +1 -1
  17. package/esm2022/alpha/alpha-picker.component.mjs +102 -0
  18. package/esm2022/alpha.component.mjs +146 -0
  19. package/esm2022/block/block-swatches.component.mjs +63 -0
  20. package/esm2022/block/block.component.mjs +160 -0
  21. package/esm2022/checkboard.component.mjs +53 -0
  22. package/esm2022/chrome/chrome-fields.component.mjs +317 -0
  23. package/esm2022/chrome/chrome.component.mjs +187 -0
  24. package/esm2022/circle/circle-swatch.component.mjs +69 -0
  25. package/esm2022/circle/circle.component.mjs +136 -0
  26. package/esm2022/color-wrap.component.mjs +173 -0
  27. package/esm2022/compact/compact-color.component.mjs +71 -0
  28. package/esm2022/compact/compact-fields.component.mjs +165 -0
  29. package/esm2022/compact/compact.component.mjs +156 -0
  30. package/esm2022/coordinates.directive.mjs +108 -0
  31. package/esm2022/editable-input.component.mjs +212 -0
  32. package/esm2022/github/github-swatch.component.mjs +53 -0
  33. package/esm2022/github/github.component.mjs +114 -0
  34. package/esm2022/hue/hue-picker.component.mjs +102 -0
  35. package/esm2022/hue.component.mjs +128 -0
  36. package/esm2022/material/material.component.mjs +188 -0
  37. package/esm2022/photoshop/photoshop-button.component.mjs +33 -0
  38. package/esm2022/photoshop/photoshop-fields.component.mjs +214 -0
  39. package/esm2022/photoshop/photoshop-previews.component.mjs +40 -0
  40. package/esm2022/photoshop/photoshop.component.mjs +187 -0
  41. package/esm2022/raised.component.mjs +50 -0
  42. package/esm2022/saturation.component.mjs +100 -0
  43. package/esm2022/shade/shade-picker.component.mjs +94 -0
  44. package/esm2022/shade.component.mjs +133 -0
  45. package/esm2022/sketch/sketch-fields.component.mjs +211 -0
  46. package/esm2022/sketch/sketch-preset-colors.component.mjs +68 -0
  47. package/esm2022/sketch/sketch.component.mjs +215 -0
  48. package/esm2022/slider/slider-swatch.component.mjs +55 -0
  49. package/esm2022/slider/slider-swatches.component.mjs +119 -0
  50. package/esm2022/slider/slider.component.mjs +104 -0
  51. package/esm2022/swatch.component.mjs +112 -0
  52. package/esm2022/swatches/swatches-color.component.mjs +105 -0
  53. package/esm2022/swatches/swatches-group.component.mjs +50 -0
  54. package/esm2022/swatches/swatches.component.mjs +244 -0
  55. package/esm2022/twitter/twitter.component.mjs +161 -0
  56. package/{fesm2020 → fesm2022}/ngx-color-alpha.mjs +30 -30
  57. package/fesm2022/ngx-color-alpha.mjs.map +1 -0
  58. package/{fesm2020 → fesm2022}/ngx-color-block.mjs +65 -66
  59. package/fesm2022/ngx-color-block.mjs.map +1 -0
  60. package/{fesm2020 → fesm2022}/ngx-color-chrome.mjs +77 -74
  61. package/{fesm2020 → fesm2022}/ngx-color-chrome.mjs.map +1 -1
  62. package/{fesm2015 → fesm2022}/ngx-color-circle.mjs +61 -62
  63. package/fesm2022/ngx-color-circle.mjs.map +1 -0
  64. package/{fesm2015 → fesm2022}/ngx-color-compact.mjs +136 -136
  65. package/{fesm2015 → fesm2022}/ngx-color-compact.mjs.map +1 -1
  66. package/{fesm2015 → fesm2022}/ngx-color-github.mjs +53 -54
  67. package/{fesm2020 → fesm2022}/ngx-color-github.mjs.map +1 -1
  68. package/{fesm2020 → fesm2022}/ngx-color-hue.mjs +32 -32
  69. package/fesm2022/ngx-color-hue.mjs.map +1 -0
  70. package/{fesm2015 → fesm2022}/ngx-color-material.mjs +59 -59
  71. package/{fesm2015 → fesm2022}/ngx-color-material.mjs.map +1 -1
  72. package/{fesm2020 → fesm2022}/ngx-color-photoshop.mjs +111 -113
  73. package/{fesm2015 → fesm2022}/ngx-color-photoshop.mjs.map +1 -1
  74. package/{fesm2015 → fesm2022}/ngx-color-shade.mjs +29 -29
  75. package/fesm2022/ngx-color-shade.mjs.map +1 -0
  76. package/{fesm2015 → fesm2022}/ngx-color-sketch.mjs +94 -93
  77. package/{fesm2015 → fesm2022}/ngx-color-sketch.mjs.map +1 -1
  78. package/{fesm2020 → fesm2022}/ngx-color-slider.mjs +46 -45
  79. package/{fesm2015 → fesm2022}/ngx-color-slider.mjs.map +1 -1
  80. package/{fesm2015 → fesm2022}/ngx-color-swatches.mjs +182 -182
  81. package/fesm2022/ngx-color-swatches.mjs.map +1 -0
  82. package/{fesm2015 → fesm2022}/ngx-color-twitter.mjs +55 -55
  83. package/{fesm2015 → fesm2022}/ngx-color-twitter.mjs.map +1 -1
  84. package/{fesm2020 → fesm2022}/ngx-color.mjs +200 -160
  85. package/fesm2022/ngx-color.mjs.map +1 -0
  86. package/github/github-swatch.component.d.ts +1 -1
  87. package/github/github.component.d.ts +1 -1
  88. package/hue/hue-picker.component.d.ts +1 -1
  89. package/hue.component.d.ts +1 -1
  90. package/material/material.component.d.ts +1 -1
  91. package/package.json +59 -84
  92. package/photoshop/photoshop-button.component.d.ts +1 -1
  93. package/photoshop/photoshop-fields.component.d.ts +1 -1
  94. package/photoshop/photoshop-previews.component.d.ts +1 -1
  95. package/photoshop/photoshop.component.d.ts +1 -1
  96. package/raised.component.d.ts +2 -2
  97. package/saturation.component.d.ts +1 -1
  98. package/shade/shade-picker.component.d.ts +1 -1
  99. package/shade.component.d.ts +1 -1
  100. package/sketch/sketch-fields.component.d.ts +1 -1
  101. package/sketch/sketch-preset-colors.component.d.ts +1 -1
  102. package/sketch/sketch.component.d.ts +1 -1
  103. package/slider/slider-swatch.component.d.ts +1 -1
  104. package/slider/slider-swatches.component.d.ts +1 -1
  105. package/slider/slider.component.d.ts +1 -1
  106. package/swatch.component.d.ts +1 -1
  107. package/swatches/swatches-color.component.d.ts +1 -1
  108. package/swatches/swatches-group.component.d.ts +1 -1
  109. package/swatches/swatches.component.d.ts +1 -1
  110. package/twitter/twitter.component.d.ts +1 -1
  111. package/esm2020/alpha/alpha-picker.component.mjs +0 -100
  112. package/esm2020/alpha.component.mjs +0 -138
  113. package/esm2020/block/block-swatches.component.mjs +0 -63
  114. package/esm2020/block/block.component.mjs +0 -158
  115. package/esm2020/checkboard.component.mjs +0 -50
  116. package/esm2020/chrome/chrome-fields.component.mjs +0 -314
  117. package/esm2020/chrome/chrome.component.mjs +0 -184
  118. package/esm2020/circle/circle-swatch.component.mjs +0 -69
  119. package/esm2020/circle/circle.component.mjs +0 -134
  120. package/esm2020/color-wrap.component.mjs +0 -163
  121. package/esm2020/compact/compact-color.component.mjs +0 -70
  122. package/esm2020/compact/compact-fields.component.mjs +0 -164
  123. package/esm2020/compact/compact.component.mjs +0 -154
  124. package/esm2020/coordinates.directive.mjs +0 -104
  125. package/esm2020/editable-input.component.mjs +0 -199
  126. package/esm2020/github/github-swatch.component.mjs +0 -53
  127. package/esm2020/github/github.component.mjs +0 -112
  128. package/esm2020/hue/hue-picker.component.mjs +0 -100
  129. package/esm2020/hue.component.mjs +0 -124
  130. package/esm2020/material/material.component.mjs +0 -186
  131. package/esm2020/photoshop/photoshop-button.component.mjs +0 -34
  132. package/esm2020/photoshop/photoshop-fields.component.mjs +0 -212
  133. package/esm2020/photoshop/photoshop-previews.component.mjs +0 -40
  134. package/esm2020/photoshop/photoshop.component.mjs +0 -185
  135. package/esm2020/raised.component.mjs +0 -50
  136. package/esm2020/saturation.component.mjs +0 -92
  137. package/esm2020/shade/shade-picker.component.mjs +0 -92
  138. package/esm2020/shade.component.mjs +0 -125
  139. package/esm2020/sketch/sketch-fields.component.mjs +0 -209
  140. package/esm2020/sketch/sketch-preset-colors.component.mjs +0 -68
  141. package/esm2020/sketch/sketch.component.mjs +0 -212
  142. package/esm2020/slider/slider-swatch.component.mjs +0 -52
  143. package/esm2020/slider/slider-swatches.component.mjs +0 -119
  144. package/esm2020/slider/slider.component.mjs +0 -102
  145. package/esm2020/swatch.component.mjs +0 -110
  146. package/esm2020/swatches/swatches-color.component.mjs +0 -104
  147. package/esm2020/swatches/swatches-group.component.mjs +0 -49
  148. package/esm2020/swatches/swatches.component.mjs +0 -242
  149. package/esm2020/twitter/twitter.component.mjs +0 -159
  150. package/fesm2015/ngx-color-alpha.mjs +0 -107
  151. package/fesm2015/ngx-color-alpha.mjs.map +0 -1
  152. package/fesm2015/ngx-color-block.mjs +0 -223
  153. package/fesm2015/ngx-color-block.mjs.map +0 -1
  154. package/fesm2015/ngx-color-chrome.mjs +0 -499
  155. package/fesm2015/ngx-color-chrome.mjs.map +0 -1
  156. package/fesm2015/ngx-color-circle.mjs.map +0 -1
  157. package/fesm2015/ngx-color-github.mjs.map +0 -1
  158. package/fesm2015/ngx-color-hue.mjs +0 -107
  159. package/fesm2015/ngx-color-hue.mjs.map +0 -1
  160. package/fesm2015/ngx-color-photoshop.mjs +0 -467
  161. package/fesm2015/ngx-color-shade.mjs.map +0 -1
  162. package/fesm2015/ngx-color-slider.mjs +0 -273
  163. package/fesm2015/ngx-color-swatches.mjs.map +0 -1
  164. package/fesm2015/ngx-color.mjs +0 -1202
  165. package/fesm2015/ngx-color.mjs.map +0 -1
  166. package/fesm2020/ngx-color-alpha.mjs.map +0 -1
  167. package/fesm2020/ngx-color-block.mjs.map +0 -1
  168. package/fesm2020/ngx-color-circle.mjs +0 -207
  169. package/fesm2020/ngx-color-circle.mjs.map +0 -1
  170. package/fesm2020/ngx-color-compact.mjs +0 -385
  171. package/fesm2020/ngx-color-compact.mjs.map +0 -1
  172. package/fesm2020/ngx-color-github.mjs +0 -169
  173. package/fesm2020/ngx-color-hue.mjs.map +0 -1
  174. package/fesm2020/ngx-color-material.mjs +0 -193
  175. package/fesm2020/ngx-color-material.mjs.map +0 -1
  176. package/fesm2020/ngx-color-photoshop.mjs.map +0 -1
  177. package/fesm2020/ngx-color-shade.mjs +0 -99
  178. package/fesm2020/ngx-color-shade.mjs.map +0 -1
  179. package/fesm2020/ngx-color-sketch.mjs +0 -485
  180. package/fesm2020/ngx-color-sketch.mjs.map +0 -1
  181. package/fesm2020/ngx-color-slider.mjs.map +0 -1
  182. package/fesm2020/ngx-color-swatches.mjs +0 -391
  183. package/fesm2020/ngx-color-swatches.mjs.map +0 -1
  184. package/fesm2020/ngx-color-twitter.mjs +0 -166
  185. package/fesm2020/ngx-color-twitter.mjs.map +0 -1
  186. package/fesm2020/ngx-color.mjs.map +0 -1
  187. /package/{esm2020 → esm2022}/alpha/ngx-color-alpha.mjs +0 -0
  188. /package/{esm2020 → esm2022}/alpha/public_api.mjs +0 -0
  189. /package/{esm2020 → esm2022}/block/ngx-color-block.mjs +0 -0
  190. /package/{esm2020 → esm2022}/block/public_api.mjs +0 -0
  191. /package/{esm2020 → esm2022}/chrome/ngx-color-chrome.mjs +0 -0
  192. /package/{esm2020 → esm2022}/chrome/public_api.mjs +0 -0
  193. /package/{esm2020 → esm2022}/circle/ngx-color-circle.mjs +0 -0
  194. /package/{esm2020 → esm2022}/circle/public_api.mjs +0 -0
  195. /package/{esm2020 → esm2022}/compact/ngx-color-compact.mjs +0 -0
  196. /package/{esm2020 → esm2022}/compact/public_api.mjs +0 -0
  197. /package/{esm2020 → esm2022}/github/ngx-color-github.mjs +0 -0
  198. /package/{esm2020 → esm2022}/github/public_api.mjs +0 -0
  199. /package/{esm2020 → esm2022}/helpers/checkboard.mjs +0 -0
  200. /package/{esm2020 → esm2022}/helpers/color.interfaces.mjs +0 -0
  201. /package/{esm2020 → esm2022}/helpers/color.mjs +0 -0
  202. /package/{esm2020 → esm2022}/hue/ngx-color-hue.mjs +0 -0
  203. /package/{esm2020 → esm2022}/hue/public_api.mjs +0 -0
  204. /package/{esm2020 → esm2022}/material/ngx-color-material.mjs +0 -0
  205. /package/{esm2020 → esm2022}/material/public_api.mjs +0 -0
  206. /package/{esm2020 → esm2022}/ngx-color.mjs +0 -0
  207. /package/{esm2020 → esm2022}/photoshop/ngx-color-photoshop.mjs +0 -0
  208. /package/{esm2020 → esm2022}/photoshop/public_api.mjs +0 -0
  209. /package/{esm2020 → esm2022}/public_api.mjs +0 -0
  210. /package/{esm2020 → esm2022}/shade/ngx-color-shade.mjs +0 -0
  211. /package/{esm2020 → esm2022}/shade/public_api.mjs +0 -0
  212. /package/{esm2020 → esm2022}/sketch/ngx-color-sketch.mjs +0 -0
  213. /package/{esm2020 → esm2022}/sketch/public_api.mjs +0 -0
  214. /package/{esm2020 → esm2022}/slider/ngx-color-slider.mjs +0 -0
  215. /package/{esm2020 → esm2022}/slider/public_api.mjs +0 -0
  216. /package/{esm2020 → esm2022}/swatches/ngx-color-swatches.mjs +0 -0
  217. /package/{esm2020 → esm2022}/swatches/public_api.mjs +0 -0
  218. /package/{esm2020 → esm2022}/twitter/ngx-color-twitter.mjs +0 -0
  219. /package/{esm2020 → esm2022}/twitter/public_api.mjs +0 -0
@@ -0,0 +1,160 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, forwardRef, Input, NgModule } from '@angular/core';
3
+ import { CheckboardModule, ColorWrap, EditableInputModule, getContrastingColor, isValidHex, SwatchModule, } from 'ngx-color';
4
+ import { BlockSwatchesComponent } from './block-swatches.component';
5
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/common";
8
+ import * as i2 from "ngx-color";
9
+ class BlockComponent extends ColorWrap {
10
+ /** Pixel value for picker width */
11
+ width = 170;
12
+ /** Color squares to display */
13
+ colors = [
14
+ '#D9E3F0',
15
+ '#F47373',
16
+ '#697689',
17
+ '#37D67A',
18
+ '#2CCCE4',
19
+ '#555555',
20
+ '#dce775',
21
+ '#ff8a65',
22
+ '#ba68c8',
23
+ ];
24
+ triangle = 'top';
25
+ input = {
26
+ width: '100%',
27
+ fontSize: '12px',
28
+ color: '#666',
29
+ border: '0px',
30
+ outline: 'none',
31
+ height: '22px',
32
+ boxShadow: 'inset 0 0 0 1px #ddd',
33
+ borderRadius: '4px',
34
+ padding: '0 7px',
35
+ boxSizing: 'border-box',
36
+ };
37
+ wrap = {
38
+ position: 'relative',
39
+ width: '100%',
40
+ };
41
+ disableAlpha = true;
42
+ constructor() {
43
+ super();
44
+ }
45
+ handleValueChange({ data, $event }) {
46
+ this.handleBlockChange({ hex: data, $event });
47
+ }
48
+ getContrastingColor(hex) {
49
+ return getContrastingColor(hex);
50
+ }
51
+ handleBlockChange({ hex, $event }) {
52
+ if (isValidHex(hex)) {
53
+ // this.hex = hex;
54
+ this.handleChange({
55
+ hex,
56
+ source: 'hex',
57
+ }, $event);
58
+ }
59
+ }
60
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: BlockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
61
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: BlockComponent, selector: "color-block", inputs: { width: "width", colors: "colors", triangle: "triangle" }, providers: [
62
+ {
63
+ provide: NG_VALUE_ACCESSOR,
64
+ useExisting: forwardRef(() => BlockComponent),
65
+ multi: true,
66
+ },
67
+ {
68
+ provide: ColorWrap,
69
+ useExisting: forwardRef(() => BlockComponent),
70
+ },
71
+ ], usesInheritance: true, ngImport: i0, template: `
72
+ <div class="block-card block-picker {{ className }}">
73
+ <div class="block-triangle" *ngIf="triangle !== 'hide'"
74
+ [style.border-color]="'transparent transparent ' + this.hex + ' transparent'"
75
+ ></div>
76
+
77
+ <div class="block-head" [style.background]="hex">
78
+ <color-checkboard *ngIf="hex === 'transparent'"
79
+ borderRadius="6px 6px 0 0"
80
+ ></color-checkboard>
81
+ <div class="block-label" [style.color]="getContrastingColor(hex)">
82
+ {{ hex }}
83
+ </div>
84
+ </div>
85
+
86
+ <div class="block-body">
87
+ <color-block-swatches [colors]="colors"
88
+ (onClick)="handleBlockChange($event)"
89
+ (onSwatchHover)="onSwatchHover.emit($event)"
90
+ ></color-block-swatches>
91
+ <color-editable-input [value]="hex"
92
+ (onChange)="handleValueChange($event)"
93
+ [style]="{input: input, wrap: wrap}"
94
+ ></color-editable-input>
95
+ </div>
96
+ </div>
97
+ `, isInline: true, styles: [".block-card{background:#fff;border-radius:6px;box-shadow:0 1px #0000001a;position:relative}.block-head{align-items:center;border-radius:6px 6px 0 0;display:flex;height:110px;justify-content:center;position:relative}.block-body{padding:10px}.block-label{font-size:18px;position:relative}.block-triangle{border-style:solid;border-width:0 10px 10px 10px;height:0;left:50%;margin-left:-10px;position:absolute;top:-10px;width:0}\n"], dependencies: [{ kind: "directive", type: i0.forwardRef(function () { return i1.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i0.forwardRef(function () { return i2.CheckboardComponent; }), selector: "color-checkboard", inputs: ["white", "size", "grey", "boxShadow", "borderRadius"] }, { kind: "component", type: i0.forwardRef(function () { return i2.EditableInputComponent; }), selector: "color-editable-input", inputs: ["style", "label", "value", "arrowOffset", "dragLabel", "dragMax", "placeholder"], outputs: ["onChange"] }, { kind: "component", type: i0.forwardRef(function () { return BlockSwatchesComponent; }), selector: "color-block-swatches", inputs: ["colors"], outputs: ["onClick", "onSwatchHover"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
98
+ }
99
+ export { BlockComponent };
100
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: BlockComponent, decorators: [{
101
+ type: Component,
102
+ args: [{ selector: 'color-block', template: `
103
+ <div class="block-card block-picker {{ className }}">
104
+ <div class="block-triangle" *ngIf="triangle !== 'hide'"
105
+ [style.border-color]="'transparent transparent ' + this.hex + ' transparent'"
106
+ ></div>
107
+
108
+ <div class="block-head" [style.background]="hex">
109
+ <color-checkboard *ngIf="hex === 'transparent'"
110
+ borderRadius="6px 6px 0 0"
111
+ ></color-checkboard>
112
+ <div class="block-label" [style.color]="getContrastingColor(hex)">
113
+ {{ hex }}
114
+ </div>
115
+ </div>
116
+
117
+ <div class="block-body">
118
+ <color-block-swatches [colors]="colors"
119
+ (onClick)="handleBlockChange($event)"
120
+ (onSwatchHover)="onSwatchHover.emit($event)"
121
+ ></color-block-swatches>
122
+ <color-editable-input [value]="hex"
123
+ (onChange)="handleValueChange($event)"
124
+ [style]="{input: input, wrap: wrap}"
125
+ ></color-editable-input>
126
+ </div>
127
+ </div>
128
+ `, preserveWhitespaces: false, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
129
+ {
130
+ provide: NG_VALUE_ACCESSOR,
131
+ useExisting: forwardRef(() => BlockComponent),
132
+ multi: true,
133
+ },
134
+ {
135
+ provide: ColorWrap,
136
+ useExisting: forwardRef(() => BlockComponent),
137
+ },
138
+ ], styles: [".block-card{background:#fff;border-radius:6px;box-shadow:0 1px #0000001a;position:relative}.block-head{align-items:center;border-radius:6px 6px 0 0;display:flex;height:110px;justify-content:center;position:relative}.block-body{padding:10px}.block-label{font-size:18px;position:relative}.block-triangle{border-style:solid;border-width:0 10px 10px 10px;height:0;left:50%;margin-left:-10px;position:absolute;top:-10px;width:0}\n"] }]
139
+ }], ctorParameters: function () { return []; }, propDecorators: { width: [{
140
+ type: Input
141
+ }], colors: [{
142
+ type: Input
143
+ }], triangle: [{
144
+ type: Input
145
+ }] } });
146
+ class ColorBlockModule {
147
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ColorBlockModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
148
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.1", ngImport: i0, type: ColorBlockModule, declarations: [BlockComponent, BlockSwatchesComponent], imports: [CommonModule, CheckboardModule, SwatchModule, EditableInputModule], exports: [BlockComponent, BlockSwatchesComponent] });
149
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ColorBlockModule, imports: [CommonModule, CheckboardModule, SwatchModule, EditableInputModule] });
150
+ }
151
+ export { ColorBlockModule };
152
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ColorBlockModule, decorators: [{
153
+ type: NgModule,
154
+ args: [{
155
+ declarations: [BlockComponent, BlockSwatchesComponent],
156
+ exports: [BlockComponent, BlockSwatchesComponent],
157
+ imports: [CommonModule, CheckboardModule, SwatchModule, EditableInputModule],
158
+ }]
159
+ }] });
160
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2suY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9ibG9jay9ibG9jay5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFaEcsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixTQUFTLEVBQ1QsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQixVQUFVLEVBQ1YsWUFBWSxHQUNiLE1BQU0sV0FBVyxDQUFDO0FBQ25CLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBRW5ELE1BOEVhLGNBQWUsU0FBUSxTQUFTO0lBQzNDLG1DQUFtQztJQUMxQixLQUFLLEdBQW9CLEdBQUcsQ0FBQztJQUN0QywrQkFBK0I7SUFDdEIsTUFBTSxHQUFHO1FBQ2hCLFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztLQUNWLENBQUM7SUFDTyxRQUFRLEdBQW1CLEtBQUssQ0FBQztJQUMxQyxLQUFLLEdBQTRCO1FBQy9CLEtBQUssRUFBRSxNQUFNO1FBQ2IsUUFBUSxFQUFFLE1BQU07UUFDaEIsS0FBSyxFQUFFLE1BQU07UUFDYixNQUFNLEVBQUUsS0FBSztRQUNiLE9BQU8sRUFBRSxNQUFNO1FBQ2YsTUFBTSxFQUFFLE1BQU07UUFDZCxTQUFTLEVBQUUsc0JBQXNCO1FBQ2pDLFlBQVksRUFBRSxLQUFLO1FBQ25CLE9BQU8sRUFBRSxPQUFPO1FBQ2hCLFNBQVMsRUFBRSxZQUFZO0tBQ3hCLENBQUM7SUFDRixJQUFJLEdBQTRCO1FBQzlCLFFBQVEsRUFBRSxVQUFVO1FBQ3BCLEtBQUssRUFBRSxNQUFNO0tBQ2QsQ0FBQztJQUNGLFlBQVksR0FBRyxJQUFJLENBQUM7SUFFcEI7UUFDRSxLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7UUFDaEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFDRCxtQkFBbUIsQ0FBQyxHQUFHO1FBQ3JCLE9BQU8sbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUNELGlCQUFpQixDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRTtRQUMvQixJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNuQixrQkFBa0I7WUFDbEIsSUFBSSxDQUFDLFlBQVksQ0FDZjtnQkFDRSxHQUFHO2dCQUNILE1BQU0sRUFBRSxLQUFLO2FBQ2QsRUFDRCxNQUFNLENBQ1AsQ0FBQztTQUNIO0lBQ0gsQ0FBQzt1R0F2RFUsY0FBYzsyRkFBZCxjQUFjLDBHQVpkO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUM7Z0JBQzdDLEtBQUssRUFBRSxJQUFJO2FBQ1o7WUFDRDtnQkFDRSxPQUFPLEVBQUUsU0FBUztnQkFDbEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUM7YUFDOUM7U0FDRixpREExRVM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJULDhrQ0E2RzhCLHNCQUFzQjs7U0EzRDFDLGNBQWM7MkZBQWQsY0FBYztrQkE5RTFCLFNBQVM7K0JBQ0UsYUFBYSxZQUNiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBCVCx1QkFvQ29CLEtBQUssbUJBQ1QsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxlQUFlLENBQUM7NEJBQzdDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSxTQUFTOzRCQUNsQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxlQUFlLENBQUM7eUJBQzlDO3FCQUNGOzBFQUlRLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBV0csUUFBUTtzQkFBaEIsS0FBSzs7QUEyQ1IsTUFLYSxnQkFBZ0I7dUdBQWhCLGdCQUFnQjt3R0FBaEIsZ0JBQWdCLGlCQS9EaEIsY0FBYyxFQTJETSxzQkFBc0IsYUFFM0MsWUFBWSxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxtQkFBbUIsYUE3RGhFLGNBQWMsRUE0REMsc0JBQXNCO3dHQUdyQyxnQkFBZ0IsWUFGakIsWUFBWSxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxtQkFBbUI7O1NBRWhFLGdCQUFnQjsyRkFBaEIsZ0JBQWdCO2tCQUw1QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGNBQWMsRUFBRSxzQkFBc0IsQ0FBQztvQkFDdEQsT0FBTyxFQUFFLENBQUMsY0FBYyxFQUFFLHNCQUFzQixDQUFDO29CQUNqRCxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLG1CQUFtQixDQUFDO2lCQUM3RSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBJbnB1dCwgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgQ2hlY2tib2FyZE1vZHVsZSxcbiAgQ29sb3JXcmFwLFxuICBFZGl0YWJsZUlucHV0TW9kdWxlLFxuICBnZXRDb250cmFzdGluZ0NvbG9yLFxuICBpc1ZhbGlkSGV4LFxuICBTd2F0Y2hNb2R1bGUsXG59IGZyb20gJ25neC1jb2xvcic7XG5pbXBvcnQgeyBCbG9ja1N3YXRjaGVzQ29tcG9uZW50IH0gZnJvbSAnLi9ibG9jay1zd2F0Y2hlcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NvbG9yLWJsb2NrJyxcbiAgdGVtcGxhdGU6IGBcbiAgPGRpdiBjbGFzcz1cImJsb2NrLWNhcmQgYmxvY2stcGlja2VyIHt7IGNsYXNzTmFtZSB9fVwiPlxuICAgIDxkaXYgY2xhc3M9XCJibG9jay10cmlhbmdsZVwiICpuZ0lmPVwidHJpYW5nbGUgIT09ICdoaWRlJ1wiXG4gICAgICBbc3R5bGUuYm9yZGVyLWNvbG9yXT1cIid0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAnICsgdGhpcy5oZXggKyAnIHRyYW5zcGFyZW50J1wiXG4gICAgPjwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImJsb2NrLWhlYWRcIiBbc3R5bGUuYmFja2dyb3VuZF09XCJoZXhcIj5cbiAgICAgIDxjb2xvci1jaGVja2JvYXJkICpuZ0lmPVwiaGV4ID09PSAndHJhbnNwYXJlbnQnXCJcbiAgICAgICAgYm9yZGVyUmFkaXVzPVwiNnB4IDZweCAwIDBcIlxuICAgICAgPjwvY29sb3ItY2hlY2tib2FyZD5cbiAgICAgIDxkaXYgY2xhc3M9XCJibG9jay1sYWJlbFwiIFtzdHlsZS5jb2xvcl09XCJnZXRDb250cmFzdGluZ0NvbG9yKGhleClcIj5cbiAgICAgICAge3sgaGV4IH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJibG9jay1ib2R5XCI+XG4gICAgICA8Y29sb3ItYmxvY2stc3dhdGNoZXMgW2NvbG9yc109XCJjb2xvcnNcIlxuICAgICAgICAob25DbGljayk9XCJoYW5kbGVCbG9ja0NoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgKG9uU3dhdGNoSG92ZXIpPVwib25Td2F0Y2hIb3Zlci5lbWl0KCRldmVudClcIlxuICAgICAgPjwvY29sb3ItYmxvY2stc3dhdGNoZXM+XG4gICAgICA8Y29sb3ItZWRpdGFibGUtaW5wdXQgW3ZhbHVlXT1cImhleFwiXG4gICAgICAgIChvbkNoYW5nZSk9XCJoYW5kbGVWYWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgW3N0eWxlXT1cIntpbnB1dDogaW5wdXQsIHdyYXA6IHdyYXB9XCJcbiAgICAgID48L2NvbG9yLWVkaXRhYmxlLWlucHV0PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgIC5ibG9jay1jYXJkIHtcbiAgICAgIGJhY2tncm91bmQ6ICNmZmY7XG4gICAgICBib3JkZXItcmFkaXVzOiA2cHg7XG4gICAgICBib3gtc2hhZG93OiAwIDFweCByZ2JhKDAsIDAsIDAsIC4xKTtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB9XG4gICAgLmJsb2NrLWhlYWQge1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDZweCA2cHggMCAwO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGhlaWdodDogMTEwcHg7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB9XG4gICAgLmJsb2NrLWJvZHkge1xuICAgICAgcGFkZGluZzogMTBweDtcbiAgICB9XG4gICAgLmJsb2NrLWxhYmVsIHtcbiAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB9XG4gICAgLmJsb2NrLXRyaWFuZ2xlIHtcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgICBib3JkZXItd2lkdGg6IDAgMTBweCAxMHB4IDEwcHg7XG4gICAgICBoZWlnaHQ6IDA7XG4gICAgICBsZWZ0OiA1MCU7XG4gICAgICBtYXJnaW4tbGVmdDogLTEwcHg7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IC0xMHB4O1xuICAgICAgd2lkdGg6IDA7XG4gICAgfVxuICBgLFxuICBdLFxuICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQmxvY2tDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBDb2xvcldyYXAsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBCbG9ja0NvbXBvbmVudCksXG4gICAgfSxcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBCbG9ja0NvbXBvbmVudCBleHRlbmRzIENvbG9yV3JhcCB7XG4gIC8qKiBQaXhlbCB2YWx1ZSBmb3IgcGlja2VyIHdpZHRoICovXG4gIEBJbnB1dCgpIHdpZHRoOiBzdHJpbmcgfCBudW1iZXIgPSAxNzA7XG4gIC8qKiBDb2xvciBzcXVhcmVzIHRvIGRpc3BsYXkgKi9cbiAgQElucHV0KCkgY29sb3JzID0gW1xuICAgICcjRDlFM0YwJyxcbiAgICAnI0Y0NzM3MycsXG4gICAgJyM2OTc2ODknLFxuICAgICcjMzdENjdBJyxcbiAgICAnIzJDQ0NFNCcsXG4gICAgJyM1NTU1NTUnLFxuICAgICcjZGNlNzc1JyxcbiAgICAnI2ZmOGE2NScsXG4gICAgJyNiYTY4YzgnLFxuICBdO1xuICBASW5wdXQoKSB0cmlhbmdsZTogJ3RvcCcgfCAnaGlkZScgPSAndG9wJztcbiAgaW5wdXQ6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9ID0ge1xuICAgIHdpZHRoOiAnMTAwJScsXG4gICAgZm9udFNpemU6ICcxMnB4JyxcbiAgICBjb2xvcjogJyM2NjYnLFxuICAgIGJvcmRlcjogJzBweCcsXG4gICAgb3V0bGluZTogJ25vbmUnLFxuICAgIGhlaWdodDogJzIycHgnLFxuICAgIGJveFNoYWRvdzogJ2luc2V0IDAgMCAwIDFweCAjZGRkJyxcbiAgICBib3JkZXJSYWRpdXM6ICc0cHgnLFxuICAgIHBhZGRpbmc6ICcwIDdweCcsXG4gICAgYm94U2l6aW5nOiAnYm9yZGVyLWJveCcsXG4gIH07XG4gIHdyYXA6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9ID0ge1xuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgIHdpZHRoOiAnMTAwJScsXG4gIH07XG4gIGRpc2FibGVBbHBoYSA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGhhbmRsZVZhbHVlQ2hhbmdlKHsgZGF0YSwgJGV2ZW50IH0pIHtcbiAgICB0aGlzLmhhbmRsZUJsb2NrQ2hhbmdlKHsgaGV4OiBkYXRhLCAkZXZlbnQgfSk7XG4gIH1cbiAgZ2V0Q29udHJhc3RpbmdDb2xvcihoZXgpIHtcbiAgICByZXR1cm4gZ2V0Q29udHJhc3RpbmdDb2xvcihoZXgpO1xuICB9XG4gIGhhbmRsZUJsb2NrQ2hhbmdlKHsgaGV4LCAkZXZlbnQgfSkge1xuICAgIGlmIChpc1ZhbGlkSGV4KGhleCkpIHtcbiAgICAgIC8vIHRoaXMuaGV4ID0gaGV4O1xuICAgICAgdGhpcy5oYW5kbGVDaGFuZ2UoXG4gICAgICAgIHtcbiAgICAgICAgICBoZXgsXG4gICAgICAgICAgc291cmNlOiAnaGV4JyxcbiAgICAgICAgfSxcbiAgICAgICAgJGV2ZW50LFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbQmxvY2tDb21wb25lbnQsIEJsb2NrU3dhdGNoZXNDb21wb25lbnRdLFxuICBleHBvcnRzOiBbQmxvY2tDb21wb25lbnQsIEJsb2NrU3dhdGNoZXNDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBDaGVja2JvYXJkTW9kdWxlLCBTd2F0Y2hNb2R1bGUsIEVkaXRhYmxlSW5wdXRNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBDb2xvckJsb2NrTW9kdWxlIHt9XG4iXX0=
@@ -0,0 +1,53 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, Input, NgModule, } from '@angular/core';
3
+ import { getCheckerboard } from './helpers/checkboard';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ class CheckboardComponent {
7
+ white = 'transparent';
8
+ size = 8;
9
+ grey = 'rgba(0,0,0,.08)';
10
+ boxShadow;
11
+ borderRadius;
12
+ gridStyles;
13
+ ngOnInit() {
14
+ const background = getCheckerboard(this.white, this.grey, this.size);
15
+ this.gridStyles = {
16
+ borderRadius: this.borderRadius,
17
+ boxShadow: this.boxShadow,
18
+ background: `url(${background}) center left`,
19
+ };
20
+ }
21
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: CheckboardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
22
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: CheckboardComponent, selector: "color-checkboard", inputs: { white: "white", size: "size", grey: "grey", boxShadow: "boxShadow", borderRadius: "borderRadius" }, ngImport: i0, template: `<div class="grid" [ngStyle]="gridStyles"></div>`, isInline: true, styles: [".grid{inset:0;position:absolute}\n"], dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
23
+ }
24
+ export { CheckboardComponent };
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: CheckboardComponent, decorators: [{
26
+ type: Component,
27
+ args: [{ selector: 'color-checkboard', template: `<div class="grid" [ngStyle]="gridStyles"></div>`, preserveWhitespaces: false, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".grid{inset:0;position:absolute}\n"] }]
28
+ }], propDecorators: { white: [{
29
+ type: Input
30
+ }], size: [{
31
+ type: Input
32
+ }], grey: [{
33
+ type: Input
34
+ }], boxShadow: [{
35
+ type: Input
36
+ }], borderRadius: [{
37
+ type: Input
38
+ }] } });
39
+ class CheckboardModule {
40
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: CheckboardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
41
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.1", ngImport: i0, type: CheckboardModule, declarations: [CheckboardComponent], imports: [CommonModule], exports: [CheckboardComponent] });
42
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: CheckboardModule, imports: [CommonModule] });
43
+ }
44
+ export { CheckboardModule };
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: CheckboardModule, decorators: [{
46
+ type: NgModule,
47
+ args: [{
48
+ declarations: [CheckboardComponent],
49
+ exports: [CheckboardComponent],
50
+ imports: [CommonModule],
51
+ }]
52
+ }] });
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2NoZWNrYm9hcmQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxLQUFLLEVBQ0wsUUFBUSxHQUVULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBRXZELE1BaUJhLG1CQUFtQjtJQUNyQixLQUFLLEdBQUcsYUFBYSxDQUFDO0lBQ3RCLElBQUksR0FBRyxDQUFDLENBQUM7SUFDVCxJQUFJLEdBQUcsaUJBQWlCLENBQUM7SUFDekIsU0FBUyxDQUFVO0lBQ25CLFlBQVksQ0FBVTtJQUMvQixVQUFVLENBQTBCO0lBRXBDLFFBQVE7UUFDTixNQUFNLFVBQVUsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsVUFBVSxHQUFHO1lBQ2hCLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMvQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsVUFBVSxFQUFFLE9BQU8sVUFBVSxlQUFlO1NBQzdDLENBQUM7SUFDSixDQUFDO3VHQWZVLG1CQUFtQjsyRkFBbkIsbUJBQW1CLHNLQWZwQixpREFBaUQ7O1NBZWhELG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQWpCL0IsU0FBUzsrQkFDRSxrQkFBa0IsWUFDbEIsaURBQWlELHVCQVl0QyxLQUFLLG1CQUNULHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSzs7QUFhUixNQUthLGdCQUFnQjt1R0FBaEIsZ0JBQWdCO3dHQUFoQixnQkFBZ0IsaUJBdkJoQixtQkFBbUIsYUFxQnBCLFlBQVksYUFyQlgsbUJBQW1CO3dHQXVCbkIsZ0JBQWdCLFlBRmpCLFlBQVk7O1NBRVgsZ0JBQWdCOzJGQUFoQixnQkFBZ0I7a0JBTDVCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsbUJBQW1CLENBQUM7b0JBQ25DLE9BQU8sRUFBRSxDQUFDLG1CQUFtQixDQUFDO29CQUM5QixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7aUJBQ3hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBOZ01vZHVsZSxcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgZ2V0Q2hlY2tlcmJvYXJkIH0gZnJvbSAnLi9oZWxwZXJzL2NoZWNrYm9hcmQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjb2xvci1jaGVja2JvYXJkJyxcbiAgdGVtcGxhdGU6IGA8ZGl2IGNsYXNzPVwiZ3JpZFwiIFtuZ1N0eWxlXT1cImdyaWRTdHlsZXNcIj48L2Rpdj5gLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gIC5ncmlkIHtcbiAgICB0b3A6IDBweDtcbiAgICByaWdodDogMHB4O1xuICAgIGJvdHRvbTogMHB4O1xuICAgIGxlZnQ6IDBweDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIH1cbiAgYCxcbiAgXSxcbiAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDaGVja2JvYXJkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgd2hpdGUgPSAndHJhbnNwYXJlbnQnO1xuICBASW5wdXQoKSBzaXplID0gODtcbiAgQElucHV0KCkgZ3JleSA9ICdyZ2JhKDAsMCwwLC4wOCknO1xuICBASW5wdXQoKSBib3hTaGFkb3chOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGJvcmRlclJhZGl1cyE6IHN0cmluZztcbiAgZ3JpZFN0eWxlcyE6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgYmFja2dyb3VuZCA9IGdldENoZWNrZXJib2FyZCh0aGlzLndoaXRlLCB0aGlzLmdyZXksIHRoaXMuc2l6ZSk7XG4gICAgdGhpcy5ncmlkU3R5bGVzID0ge1xuICAgICAgYm9yZGVyUmFkaXVzOiB0aGlzLmJvcmRlclJhZGl1cyxcbiAgICAgIGJveFNoYWRvdzogdGhpcy5ib3hTaGFkb3csXG4gICAgICBiYWNrZ3JvdW5kOiBgdXJsKCR7YmFja2dyb3VuZH0pIGNlbnRlciBsZWZ0YCxcbiAgICB9O1xuICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW0NoZWNrYm9hcmRDb21wb25lbnRdLFxuICBleHBvcnRzOiBbQ2hlY2tib2FyZENvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBDaGVja2JvYXJkTW9kdWxlIHt9XG4iXX0=
@@ -0,0 +1,317 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from '@angular/core';
2
+ import { isValidHex } from 'ngx-color';
3
+ import { TinyColor } from '@ctrl/tinycolor';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ import * as i2 from "ngx-color";
7
+ class ChromeFieldsComponent {
8
+ disableAlpha;
9
+ hsl;
10
+ rgb;
11
+ hex;
12
+ onChange = new EventEmitter();
13
+ view = '';
14
+ input = {
15
+ fontSize: '11px',
16
+ color: '#333',
17
+ width: '100%',
18
+ borderRadius: '2px',
19
+ border: 'none',
20
+ boxShadow: 'inset 0 0 0 1px #dadada',
21
+ height: '21px',
22
+ 'text-align': 'center',
23
+ };
24
+ label = {
25
+ 'text-transform': 'uppercase',
26
+ fontSize: '11px',
27
+ 'line-height': '11px',
28
+ color: '#969696',
29
+ 'text-align': 'center',
30
+ display: 'block',
31
+ marginTop: '12px',
32
+ };
33
+ ngOnInit() {
34
+ if (this.hsl.a === 1 && this.view !== 'hex') {
35
+ this.view = 'hex';
36
+ }
37
+ else if (this.view !== 'rgb' && this.view !== 'hsl') {
38
+ this.view = 'rgb';
39
+ }
40
+ }
41
+ toggleViews() {
42
+ if (this.view === 'hex') {
43
+ this.view = 'rgb';
44
+ }
45
+ else if (this.view === 'rgb') {
46
+ this.view = 'hsl';
47
+ }
48
+ else if (this.view === 'hsl') {
49
+ if (this.hsl.a === 1) {
50
+ this.view = 'hex';
51
+ }
52
+ else {
53
+ this.view = 'rgb';
54
+ }
55
+ }
56
+ }
57
+ round(value) {
58
+ return Math.round(value);
59
+ }
60
+ handleChange({ data, $event }) {
61
+ if (data.hex) {
62
+ if (isValidHex(data.hex)) {
63
+ const color = new TinyColor(data.hex);
64
+ this.onChange.emit({
65
+ data: {
66
+ hex: this.disableAlpha ? color.toHex() : color.toHex8(),
67
+ source: 'hex',
68
+ },
69
+ $event,
70
+ });
71
+ }
72
+ }
73
+ else if (data.r || data.g || data.b) {
74
+ this.onChange.emit({
75
+ data: {
76
+ r: data.r || this.rgb.r,
77
+ g: data.g || this.rgb.g,
78
+ b: data.b || this.rgb.b,
79
+ source: 'rgb',
80
+ },
81
+ $event,
82
+ });
83
+ }
84
+ else if (data.a) {
85
+ if (data.a < 0) {
86
+ data.a = 0;
87
+ }
88
+ else if (data.a > 1) {
89
+ data.a = 1;
90
+ }
91
+ if (this.disableAlpha) {
92
+ data.a = 1;
93
+ }
94
+ this.onChange.emit({
95
+ data: {
96
+ h: this.hsl.h,
97
+ s: this.hsl.s,
98
+ l: this.hsl.l,
99
+ a: Math.round(data.a * 100) / 100,
100
+ source: 'rgb',
101
+ },
102
+ $event,
103
+ });
104
+ }
105
+ else if (data.h || data.s || data.l) {
106
+ const s = data.s && data.s.replace('%', '');
107
+ const l = data.l && data.l.replace('%', '');
108
+ this.onChange.emit({
109
+ data: {
110
+ h: data.h || this.hsl.h,
111
+ s: Number(s || this.hsl.s),
112
+ l: Number(l || this.hsl.l),
113
+ source: 'hsl',
114
+ },
115
+ $event,
116
+ });
117
+ }
118
+ }
119
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ChromeFieldsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
120
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: ChromeFieldsComponent, selector: "color-chrome-fields", inputs: { disableAlpha: "disableAlpha", hsl: "hsl", rgb: "rgb", hex: "hex" }, outputs: { onChange: "onChange" }, ngImport: i0, template: `
121
+ <div class="chrome-wrap">
122
+ <div class="chrome-fields">
123
+ <ng-template [ngIf]="view === 'hex'">
124
+ <div class="chrome-field">
125
+ <color-editable-input
126
+ [style]="{ input: input, label: label }"
127
+ label="hex" [value]="hex"
128
+ (onChange)="handleChange($event)"
129
+ ></color-editable-input>
130
+ </div>
131
+ </ng-template>
132
+ <ng-template [ngIf]="view === 'rgb'">
133
+ <div class="chrome-field">
134
+ <color-editable-input
135
+ [style]="{ input: input, label: label }"
136
+ label="r" [value]="rgb.r"
137
+ (onChange)="handleChange($event)"
138
+ ></color-editable-input>
139
+ </div>
140
+ <div class="chrome-field">
141
+ <color-editable-input
142
+ [style]="{ input: input, label: label }"
143
+ label="g" [value]="rgb.g"
144
+ (onChange)="handleChange($event)"
145
+ ></color-editable-input>
146
+ </div>
147
+ <div class="chrome-field">
148
+ <color-editable-input
149
+ [style]="{ input: input, label: label }"
150
+ label="b" [value]="rgb.b"
151
+ (onChange)="handleChange($event)"
152
+ ></color-editable-input>
153
+ </div>
154
+ <div class="chrome-field">
155
+ <color-editable-input *ngIf="!disableAlpha"
156
+ [style]="{ input: input, label: label }"
157
+ label="a" [value]="rgb.a"
158
+ [arrowOffset]="0.01"
159
+ (onChange)="handleChange($event)"
160
+ ></color-editable-input>
161
+ </div>
162
+ </ng-template>
163
+ <ng-template [ngIf]="view === 'hsl'">
164
+ <div class="chrome-field">
165
+ <color-editable-input
166
+ [style]="{ input: input, label: label }"
167
+ label="h"
168
+ [value]="round(hsl.h)"
169
+ (onChange)="handleChange($event)"
170
+ ></color-editable-input>
171
+ </div>
172
+ <div class="chrome-field">
173
+ <color-editable-input
174
+ [style]="{ input: input, label: label }"
175
+ label="s" [value]="round(hsl.s * 100) + '%'"
176
+ (onChange)="handleChange($event)"
177
+ ></color-editable-input>
178
+ </div>
179
+ <div class="chrome-field">
180
+ <color-editable-input
181
+ [style]="{ input: input, label: label }"
182
+ label="l" [value]="round(hsl.l * 100) + '%'"
183
+ (onChange)="handleChange($event)"
184
+ ></color-editable-input>
185
+ </div>
186
+ <div class="chrome-field">
187
+ <color-editable-input *ngIf="!disableAlpha"
188
+ [style]="{ input: input, label: label }"
189
+ label="a" [value]="hsl.a"
190
+ [arrowOffset]="0.01"
191
+ (onChange)="handleChange($event)"
192
+ ></color-editable-input>
193
+ </div>
194
+ </ng-template>
195
+ </div>
196
+
197
+ <div class="chrome-toggle">
198
+ <div class="chrome-icon" (click)="toggleViews()" #icon>
199
+ <svg class="chrome-toggle-svg" viewBox="0 0 24 24">
200
+ <path #iconUp fill="#333"
201
+ d="M12,5.83L15.17,9L16.58,7.59L12,3L7.41,7.59L8.83,9L12,5.83Z"
202
+ />
203
+ <path #iconDown fill="#333"
204
+ d="M12,18.17L8.83,15L7.42,16.41L12,21L16.59,16.41L15.17,15Z"
205
+ />
206
+ </svg>
207
+ </div>
208
+ </div>
209
+ </div>
210
+ `, isInline: true, styles: [".chrome-wrap{padding-top:16px;display:flex}.chrome-fields{flex:1;display:flex;margin-left:-6px}.chrome-field{padding-left:6px;width:100%}.chrome-toggle{width:32px;text-align:right;position:relative}.chrome-icon{margin-right:-4px;margin-top:12px;cursor:pointer;position:relative}.chrome-toggle-svg{width:24px;height:24px;border:1px transparent solid;border-radius:5px}.chrome-toggle-svg:hover{background:#eee}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.EditableInputComponent, selector: "color-editable-input", inputs: ["style", "label", "value", "arrowOffset", "dragLabel", "dragMax", "placeholder"], outputs: ["onChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
211
+ }
212
+ export { ChromeFieldsComponent };
213
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ChromeFieldsComponent, decorators: [{
214
+ type: Component,
215
+ args: [{ selector: 'color-chrome-fields', template: `
216
+ <div class="chrome-wrap">
217
+ <div class="chrome-fields">
218
+ <ng-template [ngIf]="view === 'hex'">
219
+ <div class="chrome-field">
220
+ <color-editable-input
221
+ [style]="{ input: input, label: label }"
222
+ label="hex" [value]="hex"
223
+ (onChange)="handleChange($event)"
224
+ ></color-editable-input>
225
+ </div>
226
+ </ng-template>
227
+ <ng-template [ngIf]="view === 'rgb'">
228
+ <div class="chrome-field">
229
+ <color-editable-input
230
+ [style]="{ input: input, label: label }"
231
+ label="r" [value]="rgb.r"
232
+ (onChange)="handleChange($event)"
233
+ ></color-editable-input>
234
+ </div>
235
+ <div class="chrome-field">
236
+ <color-editable-input
237
+ [style]="{ input: input, label: label }"
238
+ label="g" [value]="rgb.g"
239
+ (onChange)="handleChange($event)"
240
+ ></color-editable-input>
241
+ </div>
242
+ <div class="chrome-field">
243
+ <color-editable-input
244
+ [style]="{ input: input, label: label }"
245
+ label="b" [value]="rgb.b"
246
+ (onChange)="handleChange($event)"
247
+ ></color-editable-input>
248
+ </div>
249
+ <div class="chrome-field">
250
+ <color-editable-input *ngIf="!disableAlpha"
251
+ [style]="{ input: input, label: label }"
252
+ label="a" [value]="rgb.a"
253
+ [arrowOffset]="0.01"
254
+ (onChange)="handleChange($event)"
255
+ ></color-editable-input>
256
+ </div>
257
+ </ng-template>
258
+ <ng-template [ngIf]="view === 'hsl'">
259
+ <div class="chrome-field">
260
+ <color-editable-input
261
+ [style]="{ input: input, label: label }"
262
+ label="h"
263
+ [value]="round(hsl.h)"
264
+ (onChange)="handleChange($event)"
265
+ ></color-editable-input>
266
+ </div>
267
+ <div class="chrome-field">
268
+ <color-editable-input
269
+ [style]="{ input: input, label: label }"
270
+ label="s" [value]="round(hsl.s * 100) + '%'"
271
+ (onChange)="handleChange($event)"
272
+ ></color-editable-input>
273
+ </div>
274
+ <div class="chrome-field">
275
+ <color-editable-input
276
+ [style]="{ input: input, label: label }"
277
+ label="l" [value]="round(hsl.l * 100) + '%'"
278
+ (onChange)="handleChange($event)"
279
+ ></color-editable-input>
280
+ </div>
281
+ <div class="chrome-field">
282
+ <color-editable-input *ngIf="!disableAlpha"
283
+ [style]="{ input: input, label: label }"
284
+ label="a" [value]="hsl.a"
285
+ [arrowOffset]="0.01"
286
+ (onChange)="handleChange($event)"
287
+ ></color-editable-input>
288
+ </div>
289
+ </ng-template>
290
+ </div>
291
+
292
+ <div class="chrome-toggle">
293
+ <div class="chrome-icon" (click)="toggleViews()" #icon>
294
+ <svg class="chrome-toggle-svg" viewBox="0 0 24 24">
295
+ <path #iconUp fill="#333"
296
+ d="M12,5.83L15.17,9L16.58,7.59L12,3L7.41,7.59L8.83,9L12,5.83Z"
297
+ />
298
+ <path #iconDown fill="#333"
299
+ d="M12,18.17L8.83,15L7.42,16.41L12,21L16.59,16.41L15.17,15Z"
300
+ />
301
+ </svg>
302
+ </div>
303
+ </div>
304
+ </div>
305
+ `, changeDetection: ChangeDetectionStrategy.OnPush, preserveWhitespaces: false, styles: [".chrome-wrap{padding-top:16px;display:flex}.chrome-fields{flex:1;display:flex;margin-left:-6px}.chrome-field{padding-left:6px;width:100%}.chrome-toggle{width:32px;text-align:right;position:relative}.chrome-icon{margin-right:-4px;margin-top:12px;cursor:pointer;position:relative}.chrome-toggle-svg{width:24px;height:24px;border:1px transparent solid;border-radius:5px}.chrome-toggle-svg:hover{background:#eee}\n"] }]
306
+ }], propDecorators: { disableAlpha: [{
307
+ type: Input
308
+ }], hsl: [{
309
+ type: Input
310
+ }], rgb: [{
311
+ type: Input
312
+ }], hex: [{
313
+ type: Input
314
+ }], onChange: [{
315
+ type: Output
316
+ }] } });
317
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hyb21lLWZpZWxkcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2Nocm9tZS9jaHJvbWUtZmllbGRzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsVUFBVSxFQUFjLE1BQU0sV0FBVyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7OztBQUU1QyxNQXFJYSxxQkFBcUI7SUFDdkIsWUFBWSxDQUFXO0lBQ3ZCLEdBQUcsQ0FBUTtJQUNYLEdBQUcsQ0FBUTtJQUNYLEdBQUcsQ0FBVTtJQUNaLFFBQVEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0lBQzdDLElBQUksR0FBRyxFQUFFLENBQUM7SUFDVixLQUFLLEdBQTJCO1FBQzlCLFFBQVEsRUFBRSxNQUFNO1FBQ2hCLEtBQUssRUFBRSxNQUFNO1FBQ2IsS0FBSyxFQUFFLE1BQU07UUFDYixZQUFZLEVBQUUsS0FBSztRQUNuQixNQUFNLEVBQUUsTUFBTTtRQUNkLFNBQVMsRUFBRSx5QkFBeUI7UUFDcEMsTUFBTSxFQUFFLE1BQU07UUFDZCxZQUFZLEVBQUUsUUFBUTtLQUN2QixDQUFDO0lBQ0YsS0FBSyxHQUEyQjtRQUM5QixnQkFBZ0IsRUFBRSxXQUFXO1FBQzdCLFFBQVEsRUFBRSxNQUFNO1FBQ2hCLGFBQWEsRUFBRSxNQUFNO1FBQ3JCLEtBQUssRUFBRSxTQUFTO1FBQ2hCLFlBQVksRUFBRSxRQUFRO1FBQ3RCLE9BQU8sRUFBRSxPQUFPO1FBQ2hCLFNBQVMsRUFBRSxNQUFNO0tBQ2xCLENBQUM7SUFFRixRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxD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OzJGQUFyQixxQkFBcUI7a0JBcklqQyxTQUFTOytCQUNFLHFCQUFxQixZQUNyQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEZULG1CQXNDZ0IsdUJBQXVCLENBQUMsTUFBTSx1QkFDMUIsS0FBSzs4QkFHakIsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDSSxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBpc1ZhbGlkSGV4LCBIU0xBLCBSR0JBIH0gZnJvbSAnbmd4LWNvbG9yJztcbmltcG9ydCB7IFRpbnlDb2xvciB9IGZyb20gJ0BjdHJsL3Rpbnljb2xvcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NvbG9yLWNocm9tZS1maWVsZHMnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJjaHJvbWUtd3JhcFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNocm9tZS1maWVsZHNcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cInZpZXcgPT09ICdoZXgnXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNocm9tZS1maWVsZFwiPlxuICAgICAgICAgICAgPGNvbG9yLWVkaXRhYmxlLWlucHV0XG4gICAgICAgICAgICAgIFtzdHlsZV09XCJ7IGlucHV0OiBpbnB1dCwgbGFiZWw6IGxhYmVsIH1cIlxuICAgICAgICAgICAgICBsYWJlbD1cImhleFwiIFt2YWx1ZV09XCJoZXhcIlxuICAgICAgICAgICAgICAob25DaGFuZ2UpPVwiaGFuZGxlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgPjwvY29sb3ItZWRpdGFibGUtaW5wdXQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJ2aWV3ID09PSAncmdiJ1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaHJvbWUtZmllbGRcIj5cbiAgICAgICAgICAgIDxjb2xvci1lZGl0YWJsZS1pbnB1dFxuICAgICAgICAgICAgICBbc3R5bGVdPVwieyBpbnB1dDogaW5wdXQsIGxhYmVsOiBsYWJlbCB9XCJcbiAgICAgICAgICAgICAgbGFiZWw9XCJyXCIgW3ZhbHVlXT1cInJnYi5yXCJcbiAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cImhhbmRsZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgID48L2NvbG9yLWVkaXRhYmxlLWlucHV0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaHJvbWUtZmllbGRcIj5cbiAgICAgICAgICAgIDxjb2xvci1lZGl0YWJsZS1pbnB1dFxuICAgICAgICAgICAgICBbc3R5bGVdPVwieyBpbnB1dDogaW5wdXQsIGxhYmVsOiBsYWJlbCB9XCJcbiAgICAgICAgICAgICAgbGFiZWw9XCJnXCIgW3ZhbHVlXT1cInJnYi5nXCJcbiAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cImhhbmRsZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgID48L2NvbG9yLWVkaXRhYmxlLWlucHV0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaHJvbWUtZmllbGRcIj5cbiAgICAgICAgICAgIDxjb2xvci1lZGl0YWJsZS1pbnB1dFxuICAgICAgICAgICAgICBbc3R5bGVdPVwieyBpbnB1dDogaW5wdXQsIGxhYmVsOiBsYWJlbCB9XCJcbiAgICAgICAgICAgICAgbGFiZWw9XCJiXCIgW3ZhbHVlXT1cInJnYi5iXCJcbiAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cImhhbmRsZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgID48L2NvbG9yLWVkaXRhYmxlLWlucHV0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaHJvbWUtZmllbGRcIj5cbiAgICAgICAgICAgIDxjb2xvci1lZGl0YWJsZS1pbnB1dCAqbmdJZj1cIiFkaXNhYmxlQWxwaGFcIlxuICAgICAgICAgICAgICBbc3R5bGVdPVwieyBpbnB1dDogaW5wdXQsIGxhYmVsOiBsYWJlbCB9XCJcbiAgICAgICAgICAgICAgbGFiZWw9XCJhXCIgW3ZhbHVlXT1cInJnYi5hXCJcbiAgICAgICAgICAgICAgW2Fycm93T2Zmc2V0XT1cIjAuMDFcIlxuICAgICAgICAgICAgICAob25DaGFuZ2UpPVwiaGFuZGxlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgPjwvY29sb3ItZWRpdGFibGUtaW5wdXQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJ2aWV3ID09PSAnaHNsJ1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaHJvbWUtZmllbGRcIj5cbiAgICAgICAgICAgIDxjb2xvci1lZGl0YWJsZS1pbnB1dFxuICAgICAgICAgICAgICBbc3R5bGVdPVwieyBpbnB1dDogaW5wdXQsIGxhYmVsOiBsYWJlbCB9XCJcbiAgICAgICAgICAgICAgbGFiZWw9XCJoXCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cInJvdW5kKGhzbC5oKVwiXG4gICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJoYW5kbGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICA+PC9jb2xvci1lZGl0YWJsZS1pbnB1dD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hyb21lLWZpZWxkXCI+XG4gICAgICAgICAgICA8Y29sb3ItZWRpdGFibGUtaW5wdXRcbiAgICAgICAgICAgICAgW3N0eWxlXT1cInsgaW5wdXQ6IGlucHV0LCBsYWJlbDogbGFiZWwgfVwiXG4gICAgICAgICAgICAgIGxhYmVsPVwic1wiIFt2YWx1ZV09XCJyb3VuZChoc2wucyAqIDEwMCkgKyAnJSdcIlxuICAgICAgICAgICAgICAob25DaGFuZ2UpPVwiaGFuZGxlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgPjwvY29sb3ItZWRpdGFibGUtaW5wdXQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNocm9tZS1maWVsZFwiPlxuICAgICAgICAgICAgPGNvbG9yLWVkaXRhYmxlLWlucHV0XG4gICAgICAgICAgICAgIFtzdHlsZV09XCJ7IGlucHV0OiBpbnB1dCwgbGFiZWw6IGxhYmVsIH1cIlxuICAgICAgICAgICAgICBsYWJlbD1cImxcIiBbdmFsdWVdPVwicm91bmQoaHNsLmwgKiAxMDApICsgJyUnXCJcbiAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cImhhbmRsZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgID48L2NvbG9yLWVkaXRhYmxlLWlucHV0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaHJvbWUtZmllbGRcIj5cbiAgICAgICAgICAgIDxjb2xvci1lZGl0YWJsZS1pbnB1dCAqbmdJZj1cIiFkaXNhYmxlQWxwaGFcIlxuICAgICAgICAgICAgICBbc3R5bGVdPVwieyBpbnB1dDogaW5wdXQsIGxhYmVsOiBsYWJlbCB9XCJcbiAgICAgICAgICAgICAgbGFiZWw9XCJhXCIgW3ZhbHVlXT1cImhzbC5hXCJcbiAgICAgICAgICAgICAgW2Fycm93T2Zmc2V0XT1cIjAuMDFcIlxuICAgICAgICAgICAgICAob25DaGFuZ2UpPVwiaGFuZGxlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgPjwvY29sb3ItZWRpdGFibGUtaW5wdXQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImNocm9tZS10b2dnbGVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNocm9tZS1pY29uXCIgKGNsaWNrKT1cInRvZ2dsZVZpZXdzKClcIiAjaWNvbj5cbiAgICAgICAgICA8c3ZnIGNsYXNzPVwiY2hyb21lLXRvZ2dsZS1zdmdcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICA8cGF0aCAjaWNvblVwIGZpbGw9XCIjMzMzXCJcbiAgICAgICAgICAgICAgZD1cIk0xMiw1LjgzTDE1LjE3LDlMMTYuNTgsNy41OUwxMiwzTDcuNDEsNy41OUw4LjgzLDlMMTIsNS44M1pcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxwYXRoICNpY29uRG93biBmaWxsPVwiIzMzM1wiXG4gICAgICAgICAgICAgIGQ9XCJNMTIsMTguMTdMOC44MywxNUw3LjQyLDE2LjQxTDEyLDIxTDE2LjU5LDE2LjQxTDE1LjE3LDE1WlwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvc3ZnPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICAuY2hyb21lLXdyYXAge1xuICAgICAgICBwYWRkaW5nLXRvcDogMTZweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIH1cbiAgICAgIC5jaHJvbWUtZmllbGRzIHtcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IC02cHg7XG4gICAgICB9XG4gICAgICAuY2hyb21lLWZpZWxkIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiA2cHg7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgfVxuICAgICAgLmNocm9tZS10b2dnbGUge1xuICAgICAgICB3aWR0aDogMzJweDtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIH1cbiAgICAgIC5jaHJvbWUtaWNvbiB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogLTRweDtcbiAgICAgICAgbWFyZ2luLXRvcDogMTJweDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICB9XG4gICAgICAuY2hyb21lLXRvZ2dsZS1zdmcge1xuICAgICAgICB3aWR0aDogMjRweDtcbiAgICAgICAgaGVpZ2h0OiAyNHB4O1xuICAgICAgICBib3JkZXI6IDFweCB0cmFuc3BhcmVudCBzb2xpZDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgICAgfVxuICAgICAgLmNocm9tZS10b2dnbGUtc3ZnOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogI2VlZTtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIENocm9tZUZpZWxkc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGRpc2FibGVBbHBoYSE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGhzbCE6IEhTTEE7XG4gIEBJbnB1dCgpIHJnYiE6IFJHQkE7XG4gIEBJbnB1dCgpIGhleCE6IHN0cmluZztcbiAgQE91dHB1dCgpIG9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIHZpZXcgPSAnJztcbiAgaW5wdXQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgZm9udFNpemU6ICcxMXB4JyxcbiAgICBjb2xvcjogJyMzMzMnLFxuICAgIHdpZHRoOiAnMTAwJScsXG4gICAgYm9yZGVyUmFkaXVzOiAnMnB4JyxcbiAgICBib3JkZXI6ICdub25lJyxcbiAgICBib3hTaGFkb3c6ICdpbnNldCAwIDAgMCAxcHggI2RhZGFkYScsXG4gICAgaGVpZ2h0OiAnMjFweCcsXG4gICAgJ3RleHQtYWxpZ24nOiAnY2VudGVyJyxcbiAgfTtcbiAgbGFiZWw6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgJ3RleHQtdHJhbnNmb3JtJzogJ3VwcGVyY2FzZScsXG4gICAgZm9udFNpemU6ICcxMXB4JyxcbiAgICAnbGluZS1oZWlnaHQnOiAnMTFweCcsXG4gICAgY29sb3I6ICcjOTY5Njk2JyxcbiAgICAndGV4dC1hbGlnbic6ICdjZW50ZXInLFxuICAgIGRpc3BsYXk6ICdibG9jaycsXG4gICAgbWFyZ2luVG9wOiAnMTJweCcsXG4gIH07XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuaHNsLmEgPT09IDEgJiYgdGhpcy52aWV3ICE9PSAnaGV4Jykge1xuICAgICAgdGhpcy52aWV3ID0gJ2hleCc7XG4gICAgfSBlbHNlIGlmICh0aGlzLnZpZXcgIT09ICdyZ2InICYmIHRoaXMudmlldyAhPT0gJ2hzbCcpIHtcbiAgICAgIHRoaXMudmlldyA9ICdyZ2InO1xuICAgIH1cbiAgfVxuICB0b2dnbGVWaWV3cygpIHtcbiAgICBpZiAodGhpcy52aWV3ID09PSAnaGV4Jykge1xuICAgICAgdGhpcy52aWV3ID0gJ3JnYic7XG4gICAgfSBlbHNlIGlmICh0aGlzLnZpZXcgPT09ICdyZ2InKSB7XG4gICAgICB0aGlzLnZpZXcgPSAnaHNsJztcbiAgICB9IGVsc2UgaWYgKHRoaXMudmlldyA9PT0gJ2hzbCcpIHtcbiAgICAgIGlmICh0aGlzLmhzbC5hID09PSAxKSB7XG4gICAgICAgIHRoaXMudmlldyA9ICdoZXgnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy52aWV3ID0gJ3JnYic7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJvdW5kKHZhbHVlKSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQodmFsdWUpO1xuICB9XG4gIGhhbmRsZUNoYW5nZSh7IGRhdGEsICRldmVudCB9KSB7XG4gICAgaWYgKGRhdGEuaGV4KSB7XG4gICAgICBpZiAoaXNWYWxpZEhleChkYXRhLmhleCkpIHtcbiAgICAgICAgY29uc3QgY29sb3IgPSBuZXcgVGlueUNvbG9yKGRhdGEuaGV4KTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHtcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBoZXg6IHRoaXMuZGlzYWJsZUFscGhhID8gY29sb3IudG9IZXgoKSA6IGNvbG9yLnRvSGV4OCgpLFxuICAgICAgICAgICAgc291cmNlOiAnaGV4JyxcbiAgICAgICAgICB9LFxuICAgICAgICAgICRldmVudCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChkYXRhLnIgfHwgZGF0YS5nIHx8IGRhdGEuYikge1xuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHI6IGRhdGEuciB8fCB0aGlzLnJnYi5yLFxuICAgICAgICAgIGc6IGRhdGEuZyB8fCB0aGlzLnJnYi5nLFxuICAgICAgICAgIGI6IGRhdGEuYiB8fCB0aGlzLnJnYi5iLFxuICAgICAgICAgIHNvdXJjZTogJ3JnYicsXG4gICAgICAgIH0sXG4gICAgICAgICRldmVudCxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoZGF0YS5hKSB7XG4gICAgICBpZiAoZGF0YS5hIDwgMCkge1xuICAgICAgICBkYXRhLmEgPSAwO1xuICAgICAgfSBlbHNlIGlmIChkYXRhLmEgPiAxKSB7XG4gICAgICAgIGRhdGEuYSA9IDE7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmRpc2FibGVBbHBoYSkge1xuICAgICAgICBkYXRhLmEgPSAxO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoe1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgaDogdGhpcy5oc2wuaCxcbiAgICAgICAgICBzOiB0aGlzLmhzbC5zLFxuICAgICAgICAgIGw6IHRoaXMuaHNsLmwsXG4gICAgICAgICAgYTogTWF0aC5yb3VuZChkYXRhLmEgKiAxMDApIC8gMTAwLFxuICAgICAgICAgIHNvdXJjZTogJ3JnYicsXG4gICAgICAgIH0sXG4gICAgICAgICRldmVudCxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoZGF0YS5oIHx8IGRhdGEucyB8fCBkYXRhLmwpIHtcbiAgICAgIGNvbnN0IHMgPSBkYXRhLnMgJiYgZGF0YS5zLnJlcGxhY2UoJyUnLCAnJyk7XG4gICAgICBjb25zdCBsID0gZGF0YS5sICYmIGRhdGEubC5yZXBsYWNlKCclJywgJycpO1xuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGg6IGRhdGEuaCB8fCB0aGlzLmhzbC5oLFxuICAgICAgICAgIHM6IE51bWJlcihzIHx8IHRoaXMuaHNsLnMpLFxuICAgICAgICAgIGw6IE51bWJlcihsIHx8IHRoaXMuaHNsLmwpLFxuICAgICAgICAgIHNvdXJjZTogJ2hzbCcsXG4gICAgICAgIH0sXG4gICAgICAgICRldmVudCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19