truly-ui
Version:
Web Components for Desktop Applications.
122 lines • 16.7 kB
JavaScript
import { Injectable } from '@angular/core';
import * as i0 from "@angular/core";
export class ColorPickerService {
constructor() {
this.positionSchemeX = 222;
this.positionSchemeY = -8;
this.positionHue = 0;
this.positionAlpha = 144;
this.opacity = 1;
this.rgbaColor = 'rgba(255,0,0,' + this.opacity + ')';
this.rgbaColorPreview = 'rgba(255,0,0,' + this.opacity + ')';
this.presetColors = [];
}
getPositionHue() {
return this.positionHue;
}
setPositionHue($event, left, width) {
if ($event.clientX > left && $event.clientX < (left + width)) {
this.positionHue = $event.clientX - left;
}
if ($event.clientX < left) {
this.positionHue = 1;
}
if ($event.clientX > (left + width)) {
this.positionHue = width;
}
}
setPositionHueManual(pos) {
this.positionHue = pos;
}
getPositionAlpha() {
return this.positionAlpha;
}
setPositionAlpha($event, left, width) {
if ($event.clientX > left && $event.clientX < (left + width)) {
this.positionAlpha = $event.clientX - left;
}
if ($event.clientX < left) {
this.positionAlpha = 1;
}
if ($event.clientX > (left + width)) {
this.positionAlpha = width;
}
}
setPositionAlphaManual(pos) {
this.positionAlpha = pos;
}
getPositionSchemeX() {
return this.positionSchemeX;
}
getPositionSchemeY() {
return this.positionSchemeY;
}
setPositionScheme($event, left, top, width, height, midCursorWidth) {
if ($event.clientX > left && $event.clientX < (left + width) && $event.clientY > top && $event.clientY < (top + height)) {
this.positionSchemeX = $event.clientX - left - midCursorWidth;
this.positionSchemeY = $event.clientY - top - midCursorWidth;
}
if ($event.clientX < left && $event.clientY > top && $event.clientY < (top + height)) {
this.positionSchemeX = -midCursorWidth;
this.positionSchemeY = $event.clientY - top - midCursorWidth;
}
if ($event.clientY < top && $event.clientX > left && $event.clientX < (left + width)) {
this.positionSchemeX = $event.clientX - left - midCursorWidth;
this.positionSchemeY = -midCursorWidth;
}
if ($event.clientX > (left + width) && $event.clientY > top && $event.clientY < (top + height)) {
this.positionSchemeX = width - midCursorWidth;
this.positionSchemeY = $event.clientY - top - midCursorWidth;
}
if ($event.clientY > (top + height) && $event.clientX > left && $event.clientX < (left + width)) {
this.positionSchemeX = $event.clientX - left - midCursorWidth;
this.positionSchemeY = height - midCursorWidth;
}
if ($event.clientX < left && $event.clientY < top) {
this.positionSchemeX = -midCursorWidth;
this.positionSchemeY = -midCursorWidth;
}
if ($event.clientY > (top + height) && $event.clientX < left) {
this.positionSchemeX = -midCursorWidth;
this.positionSchemeY = height - midCursorWidth;
}
if ($event.clientX > (left + width) && $event.clientY < top) {
this.positionSchemeX = width - midCursorWidth;
this.positionSchemeY = -midCursorWidth;
}
if ($event.clientY > (top + height) && $event.clientX > (left + width)) {
this.positionSchemeX = width - midCursorWidth;
this.positionSchemeY = height - midCursorWidth;
}
}
setPositionSchemeManual(posX, posY) {
this.positionSchemeX = posX;
this.positionSchemeY = posY;
}
setOpacityColor(opacity) {
this.opacity = opacity;
}
setRgbaColor(color) {
this.rgbaColor = color;
}
setRgbaColorPreview(color) {
this.rgbaColorPreview = color;
}
getPresetColor() {
return this.presetColors;
}
setPresetColor(color) {
if (!this.presetColors.filter((colors) => (colors === color)).length) {
this.presetColors = this.presetColors.concat(color);
}
if (this.presetColors.length > 16) {
this.presetColors.splice(0, 1);
}
}
}
/** @nocollapse */ ColorPickerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ColorPickerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
/** @nocollapse */ ColorPickerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ColorPickerService });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ColorPickerService, decorators: [{
type: Injectable
}], ctorParameters: function () { return []; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JwaWNrZXItc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydWx5LXVpL3NyYy9jb21wb25lbnRzL2NvbG9ycGlja2VyL3NlcnZpY2VzL2NvbG9ycGlja2VyLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFHekMsTUFBTSxPQUFPLGtCQUFrQjtJQWtCN0I7UUFoQk8sb0JBQWUsR0FBRyxHQUFHLENBQUM7UUFFdEIsb0JBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUVyQixnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUVoQixrQkFBYSxHQUFHLEdBQUcsQ0FBQztRQUVwQixZQUFPLEdBQUcsQ0FBQyxDQUFDO1FBRVosY0FBUyxHQUFHLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztRQUVqRCxxQkFBZ0IsR0FBRyxlQUFlLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7UUFFeEQsaUJBQVksR0FBYSxFQUFFLENBQUM7SUFHbkMsQ0FBQztJQUVELGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVELGNBQWMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUs7UUFDaEMsSUFBSSxNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksSUFBSSxNQUFNLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxFQUFFO1lBQzVELElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7U0FDMUM7UUFFRCxJQUFJLE1BQU0sQ0FBQyxPQUFPLEdBQUcsSUFBSSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1NBQ3RCO1FBRUQsSUFBSSxNQUFNLENBQUMsT0FB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LGtCQUFrQjt1SUFBbEIsa0JBQWtCOzRGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29sb3JQaWNrZXJTZXJ2aWNlIHtcblxuICBwdWJsaWMgcG9zaXRpb25TY2hlbWVYID0gMjIyO1xuXG4gIHB1YmxpYyBwb3NpdGlvblNjaGVtZVkgPSAtODtcblxuICBwdWJsaWMgcG9zaXRpb25IdWUgPSAwO1xuXG4gIHB1YmxpYyBwb3NpdGlvbkFscGhhID0gMTQ0O1xuXG4gIHB1YmxpYyBvcGFjaXR5ID0gMTtcblxuICBwdWJsaWMgcmdiYUNvbG9yID0gJ3JnYmEoMjU1LDAsMCwnICsgdGhpcy5vcGFjaXR5ICsgJyknO1xuXG4gIHB1YmxpYyByZ2JhQ29sb3JQcmV2aWV3ID0gJ3JnYmEoMjU1LDAsMCwnICsgdGhpcy5vcGFjaXR5ICsgJyknO1xuXG4gIHB1YmxpYyBwcmVzZXRDb2xvcnM6IHN0cmluZ1tdID0gW107XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gIH1cblxuICBnZXRQb3NpdGlvbkh1ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnBvc2l0aW9uSHVlO1xuICB9XG5cbiAgc2V0UG9zaXRpb25IdWUoJGV2ZW50LCBsZWZ0LCB3aWR0aCkge1xuICAgIGlmICgkZXZlbnQuY2xpZW50WCA+IGxlZnQgJiYgJGV2ZW50LmNsaWVudFggPCAobGVmdCArIHdpZHRoKSkge1xuICAgICAgdGhpcy5wb3NpdGlvbkh1ZSA9ICRldmVudC5jbGllbnRYIC0gbGVmdDtcbiAgICB9XG5cbiAgICBpZiAoJGV2ZW50LmNsaWVudFggPCBsZWZ0KSB7XG4gICAgICB0aGlzLnBvc2l0aW9uSHVlID0gMTtcbiAgICB9XG5cbiAgICBpZiAoJGV2ZW50LmNsaWVudFggPiAobGVmdCArIHdpZHRoKSkge1xuICAgICAgdGhpcy5wb3NpdGlvbkh1ZSA9IHdpZHRoO1xuICAgIH1cbiAgfVxuXG4gIHNldFBvc2l0aW9uSHVlTWFudWFsKHBvcykge1xuICAgIHRoaXMucG9zaXRpb25IdWUgPSBwb3M7XG4gIH1cblxuICBnZXRQb3NpdGlvbkFscGhhKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucG9zaXRpb25BbHBoYTtcbiAgfVxuXG4gIHNldFBvc2l0aW9uQWxwaGEoJGV2ZW50LCBsZWZ0LCB3aWR0aCkge1xuICAgIGlmICgkZXZlbnQuY2xpZW50WCA+IGxlZnQgJiYgJGV2ZW50LmNsaWVudFggPCAobGVmdCArIHdpZHRoKSkge1xuICAgICAgdGhpcy5wb3NpdGlvbkFscGhhID0gJGV2ZW50LmNsaWVudFggLSBsZWZ0O1xuICAgIH1cblxuICAgIGlmICgkZXZlbnQuY2xpZW50WCA8IGxlZnQpIHtcbiAgICAgIHRoaXMucG9zaXRpb25BbHBoYSA9IDE7XG4gICAgfVxuXG4gICAgaWYgKCRldmVudC5jbGllbnRYID4gKGxlZnQgKyB3aWR0aCkpIHtcbiAgICAgIHRoaXMucG9zaXRpb25BbHBoYSA9IHdpZHRoO1xuICAgIH1cbiAgfVxuXG4gIHNldFBvc2l0aW9uQWxwaGFNYW51YWwocG9zKSB7XG4gICAgdGhpcy5wb3NpdGlvbkFscGhhID0gcG9zO1xuICB9XG5cbiAgZ2V0UG9zaXRpb25TY2hlbWVYKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucG9zaXRpb25TY2hlbWVYO1xuICB9XG5cbiAgZ2V0UG9zaXRpb25TY2hlbWVZKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucG9zaXRpb25TY2hlbWVZO1xuICB9XG5cbiAgc2V0UG9zaXRpb25TY2hlbWUoJGV2ZW50LCBsZWZ0LCB0b3AsIHdpZHRoLCBoZWlnaHQsIG1pZEN1cnNvcldpZHRoKSB7XG4gICAgaWYgKCRldmVudC5jbGllbnRYID4gbGVmdCAmJiAkZXZlbnQuY2xpZW50WCA8IChsZWZ0ICsgd2lkdGgpICYmICRldmVudC5jbGllbnRZID4gdG9wICYmICRldmVudC5jbGllbnRZIDwgKHRvcCArIGhlaWdodCkpIHtcbiAgICAgIHRoaXMucG9zaXRpb25TY2hlbWVYID0gJGV2ZW50LmNsaWVudFggLSBsZWZ0IC0gbWlkQ3Vyc29yV2lkdGg7XG4gICAgICB0aGlzLnBvc2l0aW9uU2NoZW1lWSA9ICRldmVudC5jbGllbnRZIC0gdG9wIC0gbWlkQ3Vyc29yV2lkdGg7XG4gICAgfVxuXG4gICAgaWYgKCRldmVudC5jbGllbnRYIDwgbGVmdCAmJiAkZXZlbnQuY2xpZW50WSA+IHRvcCAmJiAkZXZlbnQuY2xpZW50WSA8ICh0b3AgKyBoZWlnaHQpKSB7XG4gICAgICB0aGlzLnBvc2l0aW9uU2NoZW1lWCA9IC1taWRDdXJzb3JXaWR0aDtcbiAgICAgIHRoaXMucG9zaXRpb25TY2hlbWVZID0gJGV2ZW50LmNsaWVudFkgLSB0b3AgLSBtaWRDdXJzb3JXaWR0aDtcbiAgICB9XG5cbiAgICBpZiAoJGV2ZW50LmNsaWVudFkgPCB0b3AgJiYgJGV2ZW50LmNsaWVudFggPiBsZWZ0ICYmICRldmVudC5jbGllbnRYIDwgKGxlZnQgKyB3aWR0aCkpIHtcbiAgICAgIHRoaXMucG9zaXRpb25TY2hlbWVYID0gJGV2ZW50LmNsaWVudFggLSBsZWZ0IC0gbWlkQ3Vyc29yV2lkdGg7XG4gICAgICB0aGlzLnBvc2l0aW9uU2NoZW1lWSA9IC1taWRDdXJzb3JXaWR0aDtcbiAgICB9XG5cbiAgICBpZiAoJGV2ZW50LmNsaWVudFggPiAobGVmdCArIHdpZHRoKSAmJiAkZXZlbnQuY2xpZW50WSA+IHRvcCAmJiAkZXZlbnQuY2xpZW50WSA8ICh0b3AgKyBoZWlnaHQpKSB7XG4gICAgICB0aGlzLnBvc2l0aW9uU2NoZW1lWCA9IHdpZHRoIC0gbWlkQ3Vyc29yV2lkdGg7XG4gICAgICB0aGlzLnBvc2l0aW9uU2NoZW1lWSA9ICRldmVudC5jbGllbnRZIC0gdG9wIC0gbWlkQ3Vyc29yV2lkdGg7XG4gICAgfVxuXG4gICAgaWYgKCRldmVudC5jbGllbnRZID4gKHRvcCArIGhlaWdodCkgJiYgJGV2ZW50LmNsaWVudFggPiBsZWZ0ICYmICRldmVudC5jbGllbnRYIDwgKGxlZnQgKyB3aWR0aCkpIHtcbiAgICAgIHRoaXMucG9zaXRpb25TY2hlbWVYID0gJGV2ZW50LmNsaWVudFggLSBsZWZ0IC0gbWlkQ3Vyc29yV2lkdGg7XG4gICAgICB0aGlzLnBvc2l0aW9uU2NoZW1lWSA9IGhlaWdodCAtIG1pZEN1cnNvcldpZHRoO1xuICAgIH1cblxuICAgIGlmICgkZXZlbnQuY2xpZW50WCA8IGxlZnQgJiYgJGV2ZW50LmNsaWVudFkgPCB0b3ApIHtcbiAgICAgIHRoaXMucG9zaXRpb25TY2hlbWVYID0gLW1pZEN1cnNvcldpZHRoO1xuICAgICAgdGhpcy5wb3NpdGlvblNjaGVtZVkgPSAtbWlkQ3Vyc29yV2lkdGg7XG4gICAgfVxuXG4gICAgaWYgKCRldmVudC5jbGllbnRZID4gKHRvcCArIGhlaWdodCkgJiYgJGV2ZW50LmNsaWVudFggPCBsZWZ0KSB7XG4gICAgICB0aGlzLnBvc2l0aW9uU2NoZW1lWCA9IC1taWRDdXJzb3JXaWR0aDtcbiAgICAgIHRoaXMucG9zaXRpb25TY2hlbWVZID0gaGVpZ2h0IC0gbWlkQ3Vyc29yV2lkdGg7XG4gICAgfVxuXG4gICAgaWYgKCRldmVudC5jbGllbnRYID4gKGxlZnQgKyB3aWR0aCkgJiYgJGV2ZW50LmNsaWVudFkgPCB0b3ApIHtcbiAgICAgIHRoaXMucG9zaXRpb25TY2hlbWVYID0gd2lkdGggLSBtaWRDdXJzb3JXaWR0aDtcbiAgICAgIHRoaXMucG9zaXRpb25TY2hlbWVZID0gLSBtaWRDdXJzb3JXaWR0aDtcbiAgICB9XG5cbiAgICBpZiAoJGV2ZW50LmNsaWVudFkgPiAodG9wICsgaGVpZ2h0KSAmJiAkZXZlbnQuY2xpZW50WCA+IChsZWZ0ICsgd2lkdGgpKSB7XG4gICAgICB0aGlzLnBvc2l0aW9uU2NoZW1lWCA9IHdpZHRoIC0gbWlkQ3Vyc29yV2lkdGg7XG4gICAgICB0aGlzLnBvc2l0aW9uU2NoZW1lWSA9IGhlaWdodCAtIG1pZEN1cnNvcldpZHRoO1xuICAgIH1cbiAgfVxuXG4gIHNldFBvc2l0aW9uU2NoZW1lTWFudWFsKHBvc1gsIHBvc1kpIHtcbiAgICB0aGlzLnBvc2l0aW9uU2NoZW1lWCA9IHBvc1g7XG4gICAgdGhpcy5wb3NpdGlvblNjaGVtZVkgPSBwb3NZO1xuICB9XG5cbiAgc2V0T3BhY2l0eUNvbG9yKG9wYWNpdHkpIHtcbiAgICB0aGlzLm9wYWNpdHkgPSBvcGFjaXR5O1xuICB9XG5cbiAgc2V0UmdiYUNvbG9yKGNvbG9yKSB7XG4gICAgdGhpcy5yZ2JhQ29sb3IgPSBjb2xvcjtcbiAgfVxuXG4gIHNldFJnYmFDb2xvclByZXZpZXcoY29sb3IpIHtcbiAgICB0aGlzLnJnYmFDb2xvclByZXZpZXcgPSBjb2xvcjtcbiAgfVxuXG4gIGdldFByZXNldENvbG9yKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5wcmVzZXRDb2xvcnM7XG4gIH1cblxuICBzZXRQcmVzZXRDb2xvcihjb2xvcjogc3RyaW5nKSB7XG4gICAgaWYgKCF0aGlzLnByZXNldENvbG9ycy5maWx0ZXIoKGNvbG9ycykgPT4gKGNvbG9ycyA9PT0gY29sb3IpKS5sZW5ndGgpIHtcbiAgICAgIHRoaXMucHJlc2V0Q29sb3JzID0gdGhpcy5wcmVzZXRDb2xvcnMuY29uY2F0KGNvbG9yKTtcbiAgICB9XG4gICAgaWYgKHRoaXMucHJlc2V0Q29sb3JzLmxlbmd0aCA+IDE2KSB7XG4gICAgICB0aGlzLnByZXNldENvbG9ycy5zcGxpY2UoMCwgMSk7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==