@mintplayer/ng-bootstrap 16.6.0 → 16.6.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/color-picker/color-picker.module.d.ts +15 -0
- package/color-picker/components/alpha-strip/alpha-strip.component.d.ts +23 -0
- package/color-picker/components/color-picker/color-picker.component.d.ts +24 -0
- package/color-picker/components/color-wheel/color-wheel.component.d.ts +53 -0
- package/color-picker/components/index.d.ts +5 -0
- package/color-picker/components/luminosity-strip/luminosity-strip.component.d.ts +20 -0
- package/color-picker/components/slider/slider.component.d.ts +35 -0
- package/color-picker/directives/color-picker-value-accessor/color-picker-value-accessor.directive.d.ts +28 -0
- package/color-picker/directives/index.d.ts +1 -0
- package/color-picker/index.d.ts +5 -0
- package/color-picker/interfaces/hs.d.ts +4 -0
- package/color-picker/interfaces/hsl-color.d.ts +5 -0
- package/color-picker/interfaces/index.d.ts +3 -0
- package/color-picker/interfaces/rgb-color.d.ts +5 -0
- package/color-picker/types/html-color.d.ts +1 -0
- package/color-picker/types/index.d.ts +1 -0
- package/container/index.d.ts +1 -0
- package/container/src/container/container.component.d.ts +5 -0
- package/container/src/container.module.d.ts +8 -0
- package/container/src/index.d.ts +2 -0
- package/esm2022/color-picker/color-picker.module.mjs +65 -0
- package/esm2022/color-picker/components/alpha-strip/alpha-strip.component.mjs +80 -0
- package/esm2022/color-picker/components/color-picker/color-picker.component.mjs +60 -0
- package/esm2022/color-picker/components/color-wheel/color-wheel.component.mjs +321 -0
- package/esm2022/color-picker/components/index.mjs +6 -0
- package/esm2022/color-picker/components/luminosity-strip/luminosity-strip.component.mjs +72 -0
- package/esm2022/color-picker/components/slider/slider.component.mjs +125 -0
- package/esm2022/color-picker/directives/color-picker-value-accessor/color-picker-value-accessor.directive.mjs +130 -0
- package/esm2022/color-picker/directives/index.mjs +2 -0
- package/esm2022/color-picker/index.mjs +6 -0
- package/esm2022/color-picker/interfaces/hs.mjs +2 -0
- package/esm2022/color-picker/interfaces/hsl-color.mjs +2 -0
- package/esm2022/color-picker/interfaces/index.mjs +4 -0
- package/esm2022/color-picker/interfaces/rgb-color.mjs +2 -0
- package/esm2022/color-picker/mintplayer-ng-bootstrap-color-picker.mjs +5 -0
- package/esm2022/color-picker/types/html-color.mjs +2 -0
- package/esm2022/color-picker/types/index.mjs +2 -0
- package/esm2022/container/index.mjs +2 -0
- package/esm2022/container/mintplayer-ng-bootstrap-container.mjs +5 -0
- package/esm2022/container/src/container/container.component.mjs +11 -0
- package/esm2022/container/src/container.module.mjs +18 -0
- package/esm2022/container/src/index.mjs +3 -0
- package/esm2022/grid/src/component/grid.component.mjs +5 -4
- package/esm2022/grid/src/grid.module.mjs +5 -4
- package/esm2022/navbar/src/navbar/navbar.component.mjs +6 -5
- package/esm2022/navbar/src/navbar.module.mjs +6 -2
- package/fesm2022/mintplayer-ng-bootstrap-color-picker.mjs +819 -0
- package/fesm2022/mintplayer-ng-bootstrap-color-picker.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-container.mjs +33 -0
- package/fesm2022/mintplayer-ng-bootstrap-container.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-grid.mjs +8 -6
- package/fesm2022/mintplayer-ng-bootstrap-grid.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-navbar.mjs +12 -7
- package/fesm2022/mintplayer-ng-bootstrap-navbar.mjs.map +1 -1
- package/grid/src/grid.module.d.ts +2 -1
- package/navbar/src/navbar.module.d.ts +6 -5
- package/package.json +13 -1
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import * as i1 from "./components/color-picker/color-picker.component";
|
|
3
|
+
import * as i2 from "./directives/color-picker-value-accessor/color-picker-value-accessor.directive";
|
|
4
|
+
import * as i3 from "./components/color-wheel/color-wheel.component";
|
|
5
|
+
import * as i4 from "./components/luminosity-strip/luminosity-strip.component";
|
|
6
|
+
import * as i5 from "./components/slider/slider.component";
|
|
7
|
+
import * as i6 from "./components/alpha-strip/alpha-strip.component";
|
|
8
|
+
import * as i7 from "@angular/common";
|
|
9
|
+
import * as i8 from "@angular/forms";
|
|
10
|
+
import * as i9 from "@mintplayer/ng-bootstrap/let";
|
|
11
|
+
export declare class BsColorPickerModule {
|
|
12
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BsColorPickerModule, never>;
|
|
13
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<BsColorPickerModule, [typeof i1.BsColorPickerComponent, typeof i2.BsColorPickerValueAccessor, typeof i3.BsColorWheelComponent, typeof i4.BsLuminosityStripComponent, typeof i5.BsSliderComponent, typeof i5.BsThumbDirective, typeof i5.BsTrackDirective, typeof i6.BsAlphaStripComponent], [typeof i7.CommonModule, typeof i8.FormsModule, typeof i9.BsLetModule], [typeof i1.BsColorPickerComponent, typeof i2.BsColorPickerValueAccessor, typeof i3.BsColorWheelComponent, typeof i4.BsLuminosityStripComponent, typeof i5.BsSliderComponent, typeof i5.BsThumbDirective, typeof i5.BsTrackDirective, typeof i6.BsAlphaStripComponent]>;
|
|
14
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<BsColorPickerModule>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { EventEmitter, AfterViewInit, ElementRef } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject, Observable } from 'rxjs';
|
|
3
|
+
import { HS } from '../../interfaces/hs';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class BsAlphaStripComponent implements AfterViewInit {
|
|
6
|
+
constructor();
|
|
7
|
+
hs$: BehaviorSubject<HS>;
|
|
8
|
+
get hs(): HS;
|
|
9
|
+
set hs(value: HS);
|
|
10
|
+
luminosity$: BehaviorSubject<number>;
|
|
11
|
+
get luminosity(): number;
|
|
12
|
+
set luminosity(value: number);
|
|
13
|
+
alpha$: BehaviorSubject<number>;
|
|
14
|
+
alphaChange: EventEmitter<number>;
|
|
15
|
+
get alpha(): number;
|
|
16
|
+
set alpha(value: number);
|
|
17
|
+
private canvasContext;
|
|
18
|
+
canvas: ElementRef<HTMLCanvasElement>;
|
|
19
|
+
ngAfterViewInit(): void;
|
|
20
|
+
resultBackground$: Observable<string>;
|
|
21
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BsAlphaStripComponent, never>;
|
|
22
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<BsAlphaStripComponent, "bs-alpha-strip", never, { "hs": { "alias": "hs"; "required": false; }; "luminosity": { "alias": "luminosity"; "required": false; }; "alpha": { "alias": "alpha"; "required": false; }; }, { "alphaChange": "alphaChange"; }, never, never, false, never>;
|
|
23
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { EventEmitter } from "@angular/core";
|
|
2
|
+
import { BehaviorSubject } from "rxjs";
|
|
3
|
+
import { HS } from "../../interfaces/hs";
|
|
4
|
+
import { BsColorWheelComponent } from "../color-wheel/color-wheel.component";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export declare class BsColorPickerComponent {
|
|
7
|
+
constructor();
|
|
8
|
+
colorWheel: BsColorWheelComponent;
|
|
9
|
+
set width(value: number);
|
|
10
|
+
set height(value: number);
|
|
11
|
+
set allowAlpha(value: boolean);
|
|
12
|
+
width$: BehaviorSubject<number>;
|
|
13
|
+
height$: BehaviorSubject<number>;
|
|
14
|
+
disabled$: BehaviorSubject<boolean>;
|
|
15
|
+
allowAlpha$: BehaviorSubject<boolean>;
|
|
16
|
+
hs$: BehaviorSubject<HS>;
|
|
17
|
+
luminosity$: BehaviorSubject<number>;
|
|
18
|
+
alpha$: BehaviorSubject<number>;
|
|
19
|
+
alphaChange: EventEmitter<number>;
|
|
20
|
+
get alpha(): number;
|
|
21
|
+
set alpha(value: number);
|
|
22
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BsColorPickerComponent, never>;
|
|
23
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<BsColorPickerComponent, "bs-color-picker", never, { "width": { "alias": "width"; "required": false; }; "height": { "alias": "height"; "required": false; }; "allowAlpha": { "alias": "allowAlpha"; "required": false; }; "alpha": { "alias": "alpha"; "required": false; }; }, { "alphaChange": "alphaChange"; }, never, never, false, never>;
|
|
24
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { AfterViewInit, ElementRef, EventEmitter } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject, Observable } from 'rxjs';
|
|
3
|
+
import { HS } from '../../interfaces/hs';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class BsColorWheelComponent implements AfterViewInit {
|
|
6
|
+
private element;
|
|
7
|
+
constructor(element: ElementRef<HTMLElement>);
|
|
8
|
+
positionRelative: boolean;
|
|
9
|
+
set diameterRatio(value: number);
|
|
10
|
+
set width(value: number);
|
|
11
|
+
set height(value: number);
|
|
12
|
+
canvas: ElementRef<HTMLCanvasElement>;
|
|
13
|
+
hs$: BehaviorSubject<HS>;
|
|
14
|
+
hsChange: EventEmitter<HS>;
|
|
15
|
+
get hs(): HS;
|
|
16
|
+
set hs(value: HS);
|
|
17
|
+
luminosity$: BehaviorSubject<number>;
|
|
18
|
+
get luminosity(): number;
|
|
19
|
+
set luminosity(value: number);
|
|
20
|
+
private canvasContext;
|
|
21
|
+
private isPointerDown;
|
|
22
|
+
width$: BehaviorSubject<number>;
|
|
23
|
+
height$: BehaviorSubject<number>;
|
|
24
|
+
diameterRatio$: BehaviorSubject<number>;
|
|
25
|
+
squareSize$: Observable<number | null>;
|
|
26
|
+
shiftX$: Observable<number | null>;
|
|
27
|
+
shiftY$: Observable<number | null>;
|
|
28
|
+
innerRadius$: Observable<number | null>;
|
|
29
|
+
outerRadius$: Observable<number | null>;
|
|
30
|
+
markerPosition$: Observable<{
|
|
31
|
+
x: number;
|
|
32
|
+
y: number;
|
|
33
|
+
}>;
|
|
34
|
+
disabled$: BehaviorSubject<boolean>;
|
|
35
|
+
viewInited$: BehaviorSubject<boolean>;
|
|
36
|
+
ngAfterViewInit(): void;
|
|
37
|
+
onPointerDown(ev: MouseEvent | TouchEvent): void;
|
|
38
|
+
onPointerMove(ev: MouseEvent | TouchEvent): void;
|
|
39
|
+
onMouseMove(ev: MouseEvent): void;
|
|
40
|
+
onPointerUp(ev: MouseEvent | TouchEvent): void;
|
|
41
|
+
private updateColor;
|
|
42
|
+
private isInsideCircle;
|
|
43
|
+
private position2color;
|
|
44
|
+
private color2position;
|
|
45
|
+
private rgb2Hsl;
|
|
46
|
+
/**
|
|
47
|
+
* Divide 1 to n, handling floating point errors.
|
|
48
|
+
* Ensures that the value is in between 0 and 1.
|
|
49
|
+
**/
|
|
50
|
+
private bound01;
|
|
51
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BsColorWheelComponent, never>;
|
|
52
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<BsColorWheelComponent, "bs-color-wheel", never, { "diameterRatio": { "alias": "diameterRatio"; "required": false; }; "width": { "alias": "width"; "required": false; }; "height": { "alias": "height"; "required": false; }; "hs": { "alias": "hs"; "required": false; }; "luminosity": { "alias": "luminosity"; "required": false; }; }, { "hsChange": "hsChange"; }, never, never, false, never>;
|
|
53
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from './alpha-strip/alpha-strip.component';
|
|
2
|
+
export * from './color-picker/color-picker.component';
|
|
3
|
+
export * from './color-wheel/color-wheel.component';
|
|
4
|
+
export * from './luminosity-strip/luminosity-strip.component';
|
|
5
|
+
export * from './slider/slider.component';
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { EventEmitter, AfterViewInit, ElementRef } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject, Observable } from 'rxjs';
|
|
3
|
+
import { HS } from '../../interfaces/hs';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class BsLuminosityStripComponent implements AfterViewInit {
|
|
6
|
+
constructor();
|
|
7
|
+
hs$: BehaviorSubject<HS>;
|
|
8
|
+
get hs(): HS;
|
|
9
|
+
set hs(value: HS);
|
|
10
|
+
luminosity$: BehaviorSubject<number>;
|
|
11
|
+
luminosityChange: EventEmitter<number>;
|
|
12
|
+
get luminosity(): number;
|
|
13
|
+
set luminosity(value: number);
|
|
14
|
+
private canvasContext;
|
|
15
|
+
canvas: ElementRef<HTMLCanvasElement>;
|
|
16
|
+
ngAfterViewInit(): void;
|
|
17
|
+
resultBackground$: Observable<string>;
|
|
18
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BsLuminosityStripComponent, never>;
|
|
19
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<BsLuminosityStripComponent, "bs-luminosity-strip", never, { "hs": { "alias": "hs"; "required": false; }; "luminosity": { "alias": "luminosity"; "required": false; }; }, { "luminosityChange": "luminosityChange"; }, never, never, false, never>;
|
|
20
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { ElementRef, EventEmitter, NgZone } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject, Observable } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class BsSliderComponent {
|
|
5
|
+
private element;
|
|
6
|
+
private zone;
|
|
7
|
+
constructor(element: ElementRef<HTMLElement>, zone: NgZone);
|
|
8
|
+
dBlock: boolean;
|
|
9
|
+
positionRelative: boolean;
|
|
10
|
+
thumbMarginLeft$: Observable<number>;
|
|
11
|
+
track: ElementRef<HTMLDivElement>;
|
|
12
|
+
thumb: ElementRef<HTMLDivElement>;
|
|
13
|
+
value$: BehaviorSubject<number>;
|
|
14
|
+
valueChange: EventEmitter<number>;
|
|
15
|
+
get value(): number;
|
|
16
|
+
set value(value: number);
|
|
17
|
+
private isPointerDown$;
|
|
18
|
+
cursorClass$: Observable<string>;
|
|
19
|
+
onPointerDown(ev: MouseEvent | TouchEvent): void;
|
|
20
|
+
onPointerMove(ev: MouseEvent | TouchEvent): void;
|
|
21
|
+
onPointerUp(ev: MouseEvent | TouchEvent): void;
|
|
22
|
+
private updateColor;
|
|
23
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BsSliderComponent, never>;
|
|
24
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<BsSliderComponent, "bs-slider", never, { "value": { "alias": "value"; "required": false; }; }, { "valueChange": "valueChange"; }, never, ["[bsTrack]", "[bsThumb]"], false, never>;
|
|
25
|
+
}
|
|
26
|
+
export declare class BsThumbDirective {
|
|
27
|
+
thumbClass: boolean;
|
|
28
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BsThumbDirective, never>;
|
|
29
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<BsThumbDirective, "[bsThumb]", never, {}, {}, never, never, false, never>;
|
|
30
|
+
}
|
|
31
|
+
export declare class BsTrackDirective {
|
|
32
|
+
trackClass: boolean;
|
|
33
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BsTrackDirective, never>;
|
|
34
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<BsTrackDirective, "[bsTrack]", never, {}, {}, never, never, false, never>;
|
|
35
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { AfterViewInit, DestroyRef } from '@angular/core';
|
|
2
|
+
import { ControlValueAccessor } from '@angular/forms';
|
|
3
|
+
import { BsColorPickerComponent } from '../../components/color-picker/color-picker.component';
|
|
4
|
+
import { RgbColor } from '../../interfaces/rgb-color';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export declare class BsColorPickerValueAccessor implements AfterViewInit, ControlValueAccessor {
|
|
7
|
+
private host;
|
|
8
|
+
private destroy;
|
|
9
|
+
constructor(host: BsColorPickerComponent, destroy: DestroyRef);
|
|
10
|
+
ngAfterViewInit(): void;
|
|
11
|
+
hsl2rgb(h: number, s: number, l: number): RgbColor;
|
|
12
|
+
onValueChange?: (value: string) => void;
|
|
13
|
+
onTouched?: () => void;
|
|
14
|
+
registerOnChange(fn: (_: any) => void): void;
|
|
15
|
+
registerOnTouched(fn: () => void): void;
|
|
16
|
+
writeValue(value: string | null): void;
|
|
17
|
+
setDisabledState(isDisabled: boolean): void;
|
|
18
|
+
private rgb2hex;
|
|
19
|
+
private hex2rgb;
|
|
20
|
+
/**
|
|
21
|
+
* Divide 1 to n, handling floating point errors.
|
|
22
|
+
* Ensures that the value is in between 0 and 1.
|
|
23
|
+
**/
|
|
24
|
+
private bound01;
|
|
25
|
+
private rgb2Hsl;
|
|
26
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BsColorPickerValueAccessor, never>;
|
|
27
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<BsColorPickerValueAccessor, "bs-color-picker", ["bsColorPicker"], {}, {}, never, never, false, never>;
|
|
28
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './color-picker-value-accessor/color-picker-value-accessor.directive';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type HtmlColor = `#${string}`;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './html-color';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './src';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export declare class BsContainerComponent {
|
|
3
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BsContainerComponent, never>;
|
|
4
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<BsContainerComponent, "bs-container", never, {}, {}, never, ["*"], false, never>;
|
|
5
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import * as i1 from "./container/container.component";
|
|
3
|
+
import * as i2 from "@angular/common";
|
|
4
|
+
export declare class BsContainerModule {
|
|
5
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BsContainerModule, never>;
|
|
6
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<BsContainerModule, [typeof i1.BsContainerComponent], [typeof i2.CommonModule], [typeof i1.BsContainerComponent]>;
|
|
7
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<BsContainerModule>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { FormsModule } from '@angular/forms';
|
|
3
|
+
import { CommonModule } from '@angular/common';
|
|
4
|
+
import { BsLetModule } from '@mintplayer/ng-bootstrap/let';
|
|
5
|
+
import { BsColorPickerValueAccessor } from './directives/color-picker-value-accessor/color-picker-value-accessor.directive';
|
|
6
|
+
import { BsColorPickerComponent } from './components/color-picker/color-picker.component';
|
|
7
|
+
import { BsColorWheelComponent } from './components/color-wheel/color-wheel.component';
|
|
8
|
+
import { BsLuminosityStripComponent } from './components/luminosity-strip/luminosity-strip.component';
|
|
9
|
+
import { BsSliderComponent, BsThumbDirective, BsTrackDirective } from './components/slider/slider.component';
|
|
10
|
+
import { BsAlphaStripComponent } from './components/alpha-strip/alpha-strip.component';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
export class BsColorPickerModule {
|
|
13
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: BsColorPickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
14
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.2", ngImport: i0, type: BsColorPickerModule, declarations: [BsColorPickerComponent,
|
|
15
|
+
BsColorPickerValueAccessor,
|
|
16
|
+
BsColorWheelComponent,
|
|
17
|
+
BsLuminosityStripComponent,
|
|
18
|
+
BsSliderComponent,
|
|
19
|
+
BsThumbDirective,
|
|
20
|
+
BsTrackDirective,
|
|
21
|
+
BsAlphaStripComponent], imports: [CommonModule,
|
|
22
|
+
FormsModule,
|
|
23
|
+
BsLetModule], exports: [BsColorPickerComponent,
|
|
24
|
+
BsColorPickerValueAccessor,
|
|
25
|
+
BsColorWheelComponent,
|
|
26
|
+
BsLuminosityStripComponent,
|
|
27
|
+
BsSliderComponent,
|
|
28
|
+
BsThumbDirective,
|
|
29
|
+
BsTrackDirective,
|
|
30
|
+
BsAlphaStripComponent] }); }
|
|
31
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: BsColorPickerModule, imports: [CommonModule,
|
|
32
|
+
FormsModule,
|
|
33
|
+
BsLetModule] }); }
|
|
34
|
+
}
|
|
35
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: BsColorPickerModule, decorators: [{
|
|
36
|
+
type: NgModule,
|
|
37
|
+
args: [{
|
|
38
|
+
declarations: [
|
|
39
|
+
BsColorPickerComponent,
|
|
40
|
+
BsColorPickerValueAccessor,
|
|
41
|
+
BsColorWheelComponent,
|
|
42
|
+
BsLuminosityStripComponent,
|
|
43
|
+
BsSliderComponent,
|
|
44
|
+
BsThumbDirective,
|
|
45
|
+
BsTrackDirective,
|
|
46
|
+
BsAlphaStripComponent
|
|
47
|
+
],
|
|
48
|
+
imports: [
|
|
49
|
+
CommonModule,
|
|
50
|
+
FormsModule,
|
|
51
|
+
BsLetModule
|
|
52
|
+
],
|
|
53
|
+
exports: [
|
|
54
|
+
BsColorPickerComponent,
|
|
55
|
+
BsColorPickerValueAccessor,
|
|
56
|
+
BsColorWheelComponent,
|
|
57
|
+
BsLuminosityStripComponent,
|
|
58
|
+
BsSliderComponent,
|
|
59
|
+
BsThumbDirective,
|
|
60
|
+
BsTrackDirective,
|
|
61
|
+
BsAlphaStripComponent
|
|
62
|
+
]
|
|
63
|
+
}]
|
|
64
|
+
}] });
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItcGlja2VyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvY29sb3ItcGlja2VyL2NvbG9yLXBpY2tlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxnRkFBZ0YsQ0FBQztBQUM1SCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUMxRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN2RixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUN0RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM3RyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQzs7QUE2QnZGLE1BQU0sT0FBTyxtQkFBbUI7OEdBQW5CLG1CQUFtQjsrR0FBbkIsbUJBQW1CLGlCQXpCNUIsc0JBQXNCO1lBQ3RCLDBCQUEwQjtZQUMxQixxQkFBcUI7WUFDckIsMEJBQTBCO1lBQzFCLGlCQUFpQjtZQUNqQixnQkFBZ0I7WUFDaEIsZ0JBQWdCO1lBQ2hCLHFCQUFxQixhQUdyQixZQUFZO1lBQ1osV0FBVztZQUNYLFdBQVcsYUFHWCxzQkFBc0I7WUFDdEIsMEJBQTBCO1lBQzFCLHFCQUFxQjtZQUNyQiwwQkFBMEI7WUFDMUIsaUJBQWlCO1lBQ2pCLGdCQUFnQjtZQUNoQixnQkFBZ0I7WUFDaEIscUJBQXFCOytHQUdaLG1CQUFtQixZQWY1QixZQUFZO1lBQ1osV0FBVztZQUNYLFdBQVc7OzJGQWFGLG1CQUFtQjtrQkEzQi9CLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLHNCQUFzQjt3QkFDdEIsMEJBQTBCO3dCQUMxQixxQkFBcUI7d0JBQ3JCLDBCQUEwQjt3QkFDMUIsaUJBQWlCO3dCQUNqQixnQkFBZ0I7d0JBQ2hCLGdCQUFnQjt3QkFDaEIscUJBQXFCO3FCQUN0QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLFdBQVc7cUJBQ1o7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLHNCQUFzQjt3QkFDdEIsMEJBQTBCO3dCQUMxQixxQkFBcUI7d0JBQ3JCLDBCQUEwQjt3QkFDMUIsaUJBQWlCO3dCQUNqQixnQkFBZ0I7d0JBQ2hCLGdCQUFnQjt3QkFDaEIscUJBQXFCO3FCQUN0QjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBCc0xldE1vZHVsZSB9IGZyb20gJ0BtaW50cGxheWVyL25nLWJvb3RzdHJhcC9sZXQnO1xuaW1wb3J0IHsgQnNDb2xvclBpY2tlclZhbHVlQWNjZXNzb3IgfSBmcm9tICcuL2RpcmVjdGl2ZXMvY29sb3ItcGlja2VyLXZhbHVlLWFjY2Vzc29yL2NvbG9yLXBpY2tlci12YWx1ZS1hY2Nlc3Nvci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQnNDb2xvclBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jb2xvci1waWNrZXIvY29sb3ItcGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCc0NvbG9yV2hlZWxDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY29sb3Itd2hlZWwvY29sb3Itd2hlZWwuY29tcG9uZW50JztcbmltcG9ydCB7IEJzTHVtaW5vc2l0eVN0cmlwQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2x1bWlub3NpdHktc3RyaXAvbHVtaW5vc2l0eS1zdHJpcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnNTbGlkZXJDb21wb25lbnQsIEJzVGh1bWJEaXJlY3RpdmUsIEJzVHJhY2tEaXJlY3RpdmUgfSBmcm9tICcuL2NvbXBvbmVudHMvc2xpZGVyL3NsaWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnNBbHBoYVN0cmlwQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2FscGhhLXN0cmlwL2FscGhhLXN0cmlwLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEJzQ29sb3JQaWNrZXJDb21wb25lbnQsXG4gICAgQnNDb2xvclBpY2tlclZhbHVlQWNjZXNzb3IsXG4gICAgQnNDb2xvcldoZWVsQ29tcG9uZW50LFxuICAgIEJzTHVtaW5vc2l0eVN0cmlwQ29tcG9uZW50LFxuICAgIEJzU2xpZGVyQ29tcG9uZW50LFxuICAgIEJzVGh1bWJEaXJlY3RpdmUsXG4gICAgQnNUcmFja0RpcmVjdGl2ZSxcbiAgICBCc0FscGhhU3RyaXBDb21wb25lbnRcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBCc0xldE1vZHVsZVxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgQnNDb2xvclBpY2tlckNvbXBvbmVudCxcbiAgICBCc0NvbG9yUGlja2VyVmFsdWVBY2Nlc3NvcixcbiAgICBCc0NvbG9yV2hlZWxDb21wb25lbnQsXG4gICAgQnNMdW1pbm9zaXR5U3RyaXBDb21wb25lbnQsXG4gICAgQnNTbGlkZXJDb21wb25lbnQsXG4gICAgQnNUaHVtYkRpcmVjdGl2ZSxcbiAgICBCc1RyYWNrRGlyZWN0aXZlLFxuICAgIEJzQWxwaGFTdHJpcENvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEJzQ29sb3JQaWNrZXJNb2R1bGUgeyB9XG4iXX0=
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewChild, ElementRef } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject, combineLatest, map } from 'rxjs';
|
|
3
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../slider/slider.component";
|
|
6
|
+
import * as i2 from "@angular/common";
|
|
7
|
+
export class BsAlphaStripComponent {
|
|
8
|
+
constructor() {
|
|
9
|
+
//#region HS
|
|
10
|
+
this.hs$ = new BehaviorSubject({ hue: 0, saturation: 0 });
|
|
11
|
+
//#endregion
|
|
12
|
+
//#region Luminosity
|
|
13
|
+
this.luminosity$ = new BehaviorSubject(0.5);
|
|
14
|
+
//#endregion
|
|
15
|
+
//#region Alpha
|
|
16
|
+
this.alpha$ = new BehaviorSubject(1);
|
|
17
|
+
this.alphaChange = new EventEmitter();
|
|
18
|
+
//#endregion
|
|
19
|
+
this.canvasContext = null;
|
|
20
|
+
combineLatest([this.hs$, this.luminosity$]).pipe(takeUntilDestroyed()).subscribe(([hs, luminosity]) => {
|
|
21
|
+
setTimeout(() => {
|
|
22
|
+
if (this.canvasContext) {
|
|
23
|
+
const width = this.canvas.nativeElement.width, height = this.canvas.nativeElement.height;
|
|
24
|
+
this.canvasContext.clearRect(0, 0, width, height);
|
|
25
|
+
this.canvasContext.save();
|
|
26
|
+
const gradient = this.canvasContext.createLinearGradient(0, 0, width, 0);
|
|
27
|
+
gradient.addColorStop(0, `hsla(${hs.hue}, ${hs.saturation * 100}%, ${luminosity * 100}%, 0)`);
|
|
28
|
+
gradient.addColorStop(1, `hsla(${hs.hue}, ${hs.saturation * 100}%, ${luminosity * 100}%, 1)`);
|
|
29
|
+
this.canvasContext.fillStyle = gradient;
|
|
30
|
+
this.canvasContext.fillRect(0, 0, width, height);
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
this.resultBackground$ = combineLatest([this.hs$, this.luminosity$, this.alpha$])
|
|
35
|
+
.pipe(map(([hs, luminosity, alpha]) => {
|
|
36
|
+
return `hsla(${hs.hue}, ${hs.saturation * 100}%, ${luminosity * 100}%, ${alpha})`;
|
|
37
|
+
}));
|
|
38
|
+
this.alpha$.pipe(takeUntilDestroyed())
|
|
39
|
+
.subscribe((alpha) => this.alphaChange.emit(alpha));
|
|
40
|
+
}
|
|
41
|
+
get hs() {
|
|
42
|
+
return this.hs$.value;
|
|
43
|
+
}
|
|
44
|
+
set hs(value) {
|
|
45
|
+
this.hs$.next(value);
|
|
46
|
+
}
|
|
47
|
+
get luminosity() {
|
|
48
|
+
return this.luminosity$.value;
|
|
49
|
+
}
|
|
50
|
+
set luminosity(value) {
|
|
51
|
+
this.luminosity$.next(value);
|
|
52
|
+
}
|
|
53
|
+
get alpha() {
|
|
54
|
+
return this.alpha$.value;
|
|
55
|
+
}
|
|
56
|
+
set alpha(value) {
|
|
57
|
+
this.alpha$.next(value);
|
|
58
|
+
}
|
|
59
|
+
ngAfterViewInit() {
|
|
60
|
+
this.canvasContext = this.canvas.nativeElement.getContext('2d', { willReadFrequently: true });
|
|
61
|
+
}
|
|
62
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: BsAlphaStripComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
63
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.2", type: BsAlphaStripComponent, selector: "bs-alpha-strip", inputs: { hs: "hs", luminosity: "luminosity", alpha: "alpha" }, outputs: { alphaChange: "alphaChange" }, viewQueries: [{ propertyName: "canvas", first: true, predicate: ["track"], descendants: true }], ngImport: i0, template: "<bs-slider [value]=\"(alpha$ | async)!\" (valueChange)=\"alphaChange.emit($event)\">\n <canvas bsTrack class=\" track position-absolute w-100\" #track></canvas>\n\n <!-- [style.background]=\"resultBackground$ | async\" -->\n <div bsThumb [style.background]=\"resultBackground$ | async\"></div>\n</bs-slider>", styles: [".track{background-image:linear-gradient(45deg,#C0C0C0 25%,transparent 25%),linear-gradient(-45deg,#C0C0C0 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#C0C0C0 75%),linear-gradient(-45deg,transparent 75%,#C0C0C0 75%);background-size:10px 10px;background-position:0 0,0 5px,5px -5px,-5px 0px}\n"], dependencies: [{ kind: "component", type: i1.BsSliderComponent, selector: "bs-slider", inputs: ["value"], outputs: ["valueChange"] }, { kind: "directive", type: i1.BsThumbDirective, selector: "[bsThumb]" }, { kind: "directive", type: i1.BsTrackDirective, selector: "[bsTrack]" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] }); }
|
|
64
|
+
}
|
|
65
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: BsAlphaStripComponent, decorators: [{
|
|
66
|
+
type: Component,
|
|
67
|
+
args: [{ selector: 'bs-alpha-strip', template: "<bs-slider [value]=\"(alpha$ | async)!\" (valueChange)=\"alphaChange.emit($event)\">\n <canvas bsTrack class=\" track position-absolute w-100\" #track></canvas>\n\n <!-- [style.background]=\"resultBackground$ | async\" -->\n <div bsThumb [style.background]=\"resultBackground$ | async\"></div>\n</bs-slider>", styles: [".track{background-image:linear-gradient(45deg,#C0C0C0 25%,transparent 25%),linear-gradient(-45deg,#C0C0C0 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#C0C0C0 75%),linear-gradient(-45deg,transparent 75%,#C0C0C0 75%);background-size:10px 10px;background-position:0 0,0 5px,5px -5px,-5px 0px}\n"] }]
|
|
68
|
+
}], ctorParameters: function () { return []; }, propDecorators: { hs: [{
|
|
69
|
+
type: Input
|
|
70
|
+
}], luminosity: [{
|
|
71
|
+
type: Input
|
|
72
|
+
}], alphaChange: [{
|
|
73
|
+
type: Output
|
|
74
|
+
}], alpha: [{
|
|
75
|
+
type: Input
|
|
76
|
+
}], canvas: [{
|
|
77
|
+
type: ViewChild,
|
|
78
|
+
args: ['track']
|
|
79
|
+
}] } });
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxwaGEtc3RyaXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9jb2xvci1waWNrZXIvY29tcG9uZW50cy9hbHBoYS1zdHJpcC9hbHBoYS1zdHJpcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL2NvbG9yLXBpY2tlci9jb21wb25lbnRzL2FscGhhLXN0cmlwL2FscGhhLXN0cmlwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWlCLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0csT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBRXZFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7O0FBT2hFLE1BQU0sT0FBTyxxQkFBcUI7SUFFaEM7UUEwQkEsWUFBWTtRQUNaLFFBQUcsR0FBRyxJQUFJLGVBQWUsQ0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFPekQsWUFBWTtRQUNaLG9CQUFvQjtRQUNwQixnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFTLEdBQUcsQ0FBQyxDQUFDO1FBTy9DLFlBQVk7UUFDWixlQUFlO1FBQ2YsV0FBTSxHQUFHLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzlCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQU9uRCxZQUFZO1FBRUosa0JBQWEsR0FBb0MsSUFBSSxDQUFDO1FBdEQ1RCxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxF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QUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBS0QsZUFBZTtRQUNiLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDaEcsQ0FBQzs4R0E3RFUscUJBQXFCO2tHQUFyQixxQkFBcUIsZ1FDVmxDLDhUQUtZOzsyRkRLQyxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0UsZ0JBQWdCOzBFQXFDTixFQUFFO3NCQUFyQixLQUFLO2dCQVNjLFVBQVU7c0JBQTdCLEtBQUs7Z0JBTUksV0FBVztzQkFBcEIsTUFBTTtnQkFJYSxLQUFLO3NCQUF4QixLQUFLO2dCQU1jLE1BQU07c0JBQXpCLFNBQVM7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBBZnRlclZpZXdJbml0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBIUyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvaHMnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicy1hbHBoYS1zdHJpcCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hbHBoYS1zdHJpcC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FscGhhLXN0cmlwLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQnNBbHBoYVN0cmlwQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5ocyQsIHRoaXMubHVtaW5vc2l0eSRdKS5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoKFtocywgbHVtaW5vc2l0eV0pID0+IHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5jYW52YXNDb250ZXh0KSB7XG4gICAgICAgICAgY29uc3Qgd2lkdGggPSB0aGlzLmNhbnZhcy5uYXRpdmVFbGVtZW50LndpZHRoLCBoZWlnaHQgPSB0aGlzLmNhbnZhcy5uYXRpdmVFbGVtZW50LmhlaWdodDtcbiAgICAgICAgICB0aGlzLmNhbnZhc0NvbnRleHQuY2xlYXJSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICAgIHRoaXMuY2FudmFzQ29udGV4dC5zYXZlKCk7XG4gICAgICAgICAgXG4gICAgICAgICAgY29uc3QgZ3JhZGllbnQgPSB0aGlzLmNhbnZhc0NvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoMCwgMCwgd2lkdGgsIDApO1xuICAgICAgICAgIGdyYWRpZW50LmFkZENvbG9yU3RvcCgwLCBgaHNsYSgke2hzLmh1ZX0sICR7aHMuc2F0dXJhdGlvbiAqIDEwMH0lLCAke2x1bWlub3NpdHkgKiAxMDB9JSwgMClgKTtcbiAgICAgICAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoMSwgYGhzbGEoJHtocy5odWV9LCAke2hzLnNhdHVyYXRpb24gKiAxMDB9JSwgJHtsdW1pbm9zaXR5ICogMTAwfSUsIDEpYCk7XG4gICAgICAgICAgdGhpcy5jYW52YXNDb250ZXh0LmZpbGxTdHlsZSA9IGdyYWRpZW50O1xuICAgICAgICAgIHRoaXMuY2FudmFzQ29udGV4dC5maWxsUmVjdCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnJlc3VsdEJhY2tncm91bmQkID0gY29tYmluZUxhdGVzdChbdGhpcy5ocyQsIHRoaXMubHVtaW5vc2l0eSQsIHRoaXMuYWxwaGEkXSlcbiAgICAgIC5waXBlKG1hcCgoW2hzLCBsdW1pbm9zaXR5LCBhbHBoYV0pID0+IHtcbiAgICAgICAgcmV0dXJuIGBoc2xhKCR7aHMuaHVlfSwgJHtocy5zYXR1cmF0aW9uICogMTAwfSUsICR7bHVtaW5vc2l0eSAqIDEwMH0lLCAke2FscGhhfSlgO1xuICAgICAgfSkpO1xuXG4gICAgdGhpcy5hbHBoYSQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUoKGFscGhhKSA9PiB0aGlzLmFscGhhQ2hhbmdlLmVtaXQoYWxwaGEpKTtcbiAgfVxuXG4gIC8vI3JlZ2lvbiBIU1xuICBocyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEhTPih7IGh1ZTogMCwgc2F0dXJhdGlvbjogMCB9KTtcbiAgcHVibGljIGdldCBocygpIHtcbiAgICByZXR1cm4gdGhpcy5ocyQudmFsdWU7XG4gIH1cbiAgQElucHV0KCkgcHVibGljIHNldCBocyh2YWx1ZTogSFMpIHtcbiAgICB0aGlzLmhzJC5uZXh0KHZhbHVlKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cbiAgLy8jcmVnaW9uIEx1bWlub3NpdHlcbiAgbHVtaW5vc2l0eSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMC41KTtcbiAgcHVibGljIGdldCBsdW1pbm9zaXR5KCkge1xuICAgIHJldHVybiB0aGlzLmx1bWlub3NpdHkkLnZhbHVlO1xuICB9XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgbHVtaW5vc2l0eSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5sdW1pbm9zaXR5JC5uZXh0KHZhbHVlKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cbiAgLy8jcmVnaW9uIEFscGhhXG4gIGFscGhhJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigxKTtcbiAgQE91dHB1dCgpIGFscGhhQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIHB1YmxpYyBnZXQgYWxwaGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuYWxwaGEkLnZhbHVlO1xuICB9XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgYWxwaGEodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuYWxwaGEkLm5leHQodmFsdWUpO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuICBcbiAgcHJpdmF0ZSBjYW52YXNDb250ZXh0OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgfCBudWxsID0gbnVsbDtcbiAgQFZpZXdDaGlsZCgndHJhY2snKSBjYW52YXMhOiBFbGVtZW50UmVmPEhUTUxDYW52YXNFbGVtZW50PjtcbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuY2FudmFzQ29udGV4dCA9IHRoaXMuY2FudmFzLm5hdGl2ZUVsZW1lbnQuZ2V0Q29udGV4dCgnMmQnLCB7IHdpbGxSZWFkRnJlcXVlbnRseTogdHJ1ZSB9KTtcbiAgfVxuXG4gIHJlc3VsdEJhY2tncm91bmQkOiBPYnNlcnZhYmxlPHN0cmluZz47XG59XG4iLCI8YnMtc2xpZGVyIFt2YWx1ZV09XCIoYWxwaGEkIHwgYXN5bmMpIVwiICh2YWx1ZUNoYW5nZSk9XCJhbHBoYUNoYW5nZS5lbWl0KCRldmVudClcIj5cbiAgICA8Y2FudmFzIGJzVHJhY2sgY2xhc3M9XCIgdHJhY2sgcG9zaXRpb24tYWJzb2x1dGUgdy0xMDBcIiAjdHJhY2s+PC9jYW52YXM+XG5cbiAgICA8IS0tIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInJlc3VsdEJhY2tncm91bmQkIHwgYXN5bmNcIiAtLT5cbiAgICA8ZGl2IGJzVGh1bWIgW3N0eWxlLmJhY2tncm91bmRdPVwicmVzdWx0QmFja2dyb3VuZCQgfCBhc3luY1wiPjwvZGl2PlxuPC9icy1zbGlkZXI+Il19
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { Component, Input, ViewChild, EventEmitter, Output } from "@angular/core";
|
|
2
|
+
import { BehaviorSubject } from "rxjs";
|
|
3
|
+
import { BsColorWheelComponent } from "../color-wheel/color-wheel.component";
|
|
4
|
+
import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common";
|
|
7
|
+
import * as i2 from "@mintplayer/ng-bootstrap/let";
|
|
8
|
+
import * as i3 from "../color-wheel/color-wheel.component";
|
|
9
|
+
import * as i4 from "../luminosity-strip/luminosity-strip.component";
|
|
10
|
+
import * as i5 from "../alpha-strip/alpha-strip.component";
|
|
11
|
+
export class BsColorPickerComponent {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.width$ = new BehaviorSubject(150);
|
|
14
|
+
this.height$ = new BehaviorSubject(150);
|
|
15
|
+
this.disabled$ = new BehaviorSubject(false);
|
|
16
|
+
this.allowAlpha$ = new BehaviorSubject(true);
|
|
17
|
+
this.hs$ = new BehaviorSubject({ hue: 0, saturation: 0 });
|
|
18
|
+
this.luminosity$ = new BehaviorSubject(0);
|
|
19
|
+
//#region Alpha
|
|
20
|
+
this.alpha$ = new BehaviorSubject(1);
|
|
21
|
+
this.alphaChange = new EventEmitter();
|
|
22
|
+
this.alpha$.pipe(takeUntilDestroyed())
|
|
23
|
+
.subscribe((alpha) => this.alphaChange.emit(alpha));
|
|
24
|
+
}
|
|
25
|
+
set width(value) {
|
|
26
|
+
this.width$.next(value);
|
|
27
|
+
}
|
|
28
|
+
set height(value) {
|
|
29
|
+
this.height$.next(value);
|
|
30
|
+
}
|
|
31
|
+
set allowAlpha(value) {
|
|
32
|
+
this.allowAlpha$.next(value);
|
|
33
|
+
}
|
|
34
|
+
get alpha() {
|
|
35
|
+
return this.alpha$.value;
|
|
36
|
+
}
|
|
37
|
+
set alpha(value) {
|
|
38
|
+
this.alpha$.next(value);
|
|
39
|
+
}
|
|
40
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: BsColorPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
41
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.2", type: BsColorPickerComponent, selector: "bs-color-picker", inputs: { width: "width", height: "height", allowAlpha: "allowAlpha", alpha: "alpha" }, outputs: { alphaChange: "alphaChange" }, viewQueries: [{ propertyName: "colorWheel", first: true, predicate: ["wheel"], descendants: true }], ngImport: i0, template: "<ng-container *bsLet=\"(disabled$ | async)!; let letDisabled\">\n <ng-container *bsLet=\"(hs$ | async)!; let letHS\">\n <ng-container *bsLet=\"(luminosity$ | async)!; let letLuminosity\">\n <ng-container *bsLet=\"(alpha$ | async)!; let letAlpha\">\n <bs-color-wheel [hs]=\"letHS\" (hsChange)=\"hs$.next($event)\" [luminosity]=\"letLuminosity\" #wheel></bs-color-wheel>\n <bs-luminosity-strip [hs]=\"letHS\" [luminosity]=\"letLuminosity\" (luminosityChange)=\"luminosity$.next($event)\" class=\"d-block mt-2\" #strip></bs-luminosity-strip>\n <bs-alpha-strip *ngIf=\"allowAlpha$ | async\" [hs]=\"letHS\" [luminosity]=\"letLuminosity\" [alpha]=\"letAlpha\" (alphaChange)=\"alpha$.next($event)\" class=\"d-block mt-2\" #alpha></bs-alpha-strip>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-container>", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.BsLetDirective, selector: "[bsLet]", inputs: ["bsLet"] }, { kind: "component", type: i3.BsColorWheelComponent, selector: "bs-color-wheel", inputs: ["diameterRatio", "width", "height", "hs", "luminosity"], outputs: ["hsChange"] }, { kind: "component", type: i4.BsLuminosityStripComponent, selector: "bs-luminosity-strip", inputs: ["hs", "luminosity"], outputs: ["luminosityChange"] }, { kind: "component", type: i5.BsAlphaStripComponent, selector: "bs-alpha-strip", inputs: ["hs", "luminosity", "alpha"], outputs: ["alphaChange"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }] }); }
|
|
42
|
+
}
|
|
43
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: BsColorPickerComponent, decorators: [{
|
|
44
|
+
type: Component,
|
|
45
|
+
args: [{ selector: 'bs-color-picker', template: "<ng-container *bsLet=\"(disabled$ | async)!; let letDisabled\">\n <ng-container *bsLet=\"(hs$ | async)!; let letHS\">\n <ng-container *bsLet=\"(luminosity$ | async)!; let letLuminosity\">\n <ng-container *bsLet=\"(alpha$ | async)!; let letAlpha\">\n <bs-color-wheel [hs]=\"letHS\" (hsChange)=\"hs$.next($event)\" [luminosity]=\"letLuminosity\" #wheel></bs-color-wheel>\n <bs-luminosity-strip [hs]=\"letHS\" [luminosity]=\"letLuminosity\" (luminosityChange)=\"luminosity$.next($event)\" class=\"d-block mt-2\" #strip></bs-luminosity-strip>\n <bs-alpha-strip *ngIf=\"allowAlpha$ | async\" [hs]=\"letHS\" [luminosity]=\"letLuminosity\" [alpha]=\"letAlpha\" (alphaChange)=\"alpha$.next($event)\" class=\"d-block mt-2\" #alpha></bs-alpha-strip>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-container>" }]
|
|
46
|
+
}], ctorParameters: function () { return []; }, propDecorators: { colorWheel: [{
|
|
47
|
+
type: ViewChild,
|
|
48
|
+
args: ['wheel']
|
|
49
|
+
}], width: [{
|
|
50
|
+
type: Input
|
|
51
|
+
}], height: [{
|
|
52
|
+
type: Input
|
|
53
|
+
}], allowAlpha: [{
|
|
54
|
+
type: Input
|
|
55
|
+
}], alphaChange: [{
|
|
56
|
+
type: Output
|
|
57
|
+
}], alpha: [{
|
|
58
|
+
type: Input
|
|
59
|
+
}] } });
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvY29sb3ItcGlja2VyL2NvbXBvbmVudHMvY29sb3ItcGlja2VyL2NvbG9yLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL2NvbG9yLXBpY2tlci9jb21wb25lbnRzL2NvbG9yLXBpY2tlci9jb2xvci1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7OztBQU9oRSxNQUFNLE9BQU8sc0JBQXNCO0lBRWpDO1FBZ0JBLFdBQU0sR0FBRyxJQUFJLGVBQWUsQ0FBUyxHQUFHLENBQUMsQ0FBQztRQUMxQyxZQUFPLEdBQUcsSUFBSSxlQUFlLENBQVMsR0FBRyxDQUFDLENBQUM7UUFDM0MsY0FBUyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ2hELGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQVUsSUFBSSxDQUFDLENBQUM7UUFFakQsUUFBRyxHQUFHLElBQUksZUFBZSxDQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6RCxnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBRTdDLGVBQWU7UUFDZixXQUFNLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFDOUIsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBekJqRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2FBQ25DLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBR0QsSUFBYSxLQUFLLENBQUMsS0FBYTtRQUM5QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBQ0QsSUFBYSxNQUFNLENBQUMsS0FBYTtRQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBQ0QsSUFBYSxVQUFVLENBQUMsS0FBYztRQUNwQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBYUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBQ0QsSUFBYSxLQUFLLENBQUMsS0FBYTtRQUM5QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDOzhHQWxDVSxzQkFBc0I7a0dBQXRCLHNCQUFzQiw2UkNYbkMsbTRCQVVlOzsyRkRDRixzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0UsaUJBQWlCOzBFQVdQLFVBQVU7c0JBQTdCLFNBQVM7dUJBQUMsT0FBTztnQkFDTCxLQUFLO3NCQUFqQixLQUFLO2dCQUdPLE1BQU07c0JBQWxCLEtBQUs7Z0JBR08sVUFBVTtzQkFBdEIsS0FBSztnQkFjSSxXQUFXO3NCQUFwQixNQUFNO2dCQUlNLEtBQUs7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBWaWV3Q2hpbGQsIEV2ZW50RW1pdHRlciwgT3V0cHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBIUyB9IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzL2hzXCI7XG5pbXBvcnQgeyBCc0NvbG9yV2hlZWxDb21wb25lbnQgfSBmcm9tIFwiLi4vY29sb3Itd2hlZWwvY29sb3Itd2hlZWwuY29tcG9uZW50XCI7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3BcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnMtY29sb3ItcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbG9yLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbG9yLXBpY2tlci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEJzQ29sb3JQaWNrZXJDb21wb25lbnQge1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuYWxwaGEkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAuc3Vic2NyaWJlKChhbHBoYSkgPT4gdGhpcy5hbHBoYUNoYW5nZS5lbWl0KGFscGhhKSk7XG4gIH1cblxuICBAVmlld0NoaWxkKCd3aGVlbCcpIGNvbG9yV2hlZWwhOiBCc0NvbG9yV2hlZWxDb21wb25lbnQ7XG4gIEBJbnB1dCgpIHNldCB3aWR0aCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy53aWR0aCQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IGhlaWdodCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5oZWlnaHQkLm5leHQodmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBhbGxvd0FscGhhKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5hbGxvd0FscGhhJC5uZXh0KHZhbHVlKTtcbiAgfVxuICBcbiAgd2lkdGgkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDE1MCk7XG4gIGhlaWdodCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMTUwKTtcbiAgZGlzYWJsZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIGFsbG93QWxwaGEkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcblxuICBocyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEhTPih7IGh1ZTogMCwgc2F0dXJhdGlvbjogMCB9KTtcbiAgbHVtaW5vc2l0eSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XG5cbiAgLy8jcmVnaW9uIEFscGhhXG4gIGFscGhhJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigxKTtcbiAgQE91dHB1dCgpIGFscGhhQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIGdldCBhbHBoYSgpIHtcbiAgICByZXR1cm4gdGhpcy5hbHBoYSQudmFsdWU7XG4gIH1cbiAgQElucHV0KCkgc2V0IGFscGhhKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLmFscGhhJC5uZXh0KHZhbHVlKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cbn1cbiIsIjxuZy1jb250YWluZXIgKmJzTGV0PVwiKGRpc2FibGVkJCB8IGFzeW5jKSE7IGxldCBsZXREaXNhYmxlZFwiPlxuICAgIDxuZy1jb250YWluZXIgKmJzTGV0PVwiKGhzJCB8IGFzeW5jKSE7IGxldCBsZXRIU1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpic0xldD1cIihsdW1pbm9zaXR5JCB8IGFzeW5jKSE7IGxldCBsZXRMdW1pbm9zaXR5XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpic0xldD1cIihhbHBoYSQgfCBhc3luYykhOyBsZXQgbGV0QWxwaGFcIj5cbiAgICAgICAgICAgICAgICA8YnMtY29sb3Itd2hlZWwgW2hzXT1cImxldEhTXCIgKGhzQ2hhbmdlKT1cImhzJC5uZXh0KCRldmVudClcIiBbbHVtaW5vc2l0eV09XCJsZXRMdW1pbm9zaXR5XCIgI3doZWVsPjwvYnMtY29sb3Itd2hlZWw+XG4gICAgICAgICAgICAgICAgPGJzLWx1bWlub3NpdHktc3RyaXAgW2hzXT1cImxldEhTXCIgW2x1bWlub3NpdHldPVwibGV0THVtaW5vc2l0eVwiIChsdW1pbm9zaXR5Q2hhbmdlKT1cImx1bWlub3NpdHkkLm5leHQoJGV2ZW50KVwiIGNsYXNzPVwiZC1ibG9jayBtdC0yXCIgI3N0cmlwPjwvYnMtbHVtaW5vc2l0eS1zdHJpcD5cbiAgICAgICAgICAgICAgICA8YnMtYWxwaGEtc3RyaXAgKm5nSWY9XCJhbGxvd0FscGhhJCB8IGFzeW5jXCIgW2hzXT1cImxldEhTXCIgW2x1bWlub3NpdHldPVwibGV0THVtaW5vc2l0eVwiIFthbHBoYV09XCJsZXRBbHBoYVwiIChhbHBoYUNoYW5nZSk9XCJhbHBoYSQubmV4dCgkZXZlbnQpXCIgY2xhc3M9XCJkLWJsb2NrIG10LTJcIiAjYWxwaGE+PC9icy1hbHBoYS1zdHJpcD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPiJdfQ==
|