@angular-package/spectre.css
Version:
Modified Spectre.css - a lightweight, responsive, and modern CSS framework originally designed by Yan Zhu
159 lines • 22.7 kB
JavaScript
var _a, _CssPropertyColor_calcLightness, _CssPropertyColor_getPropertyValue;
import { __classPrivateFieldGet } from "tslib";
import { Color } from './color.class';
export class CssPropertyColor extends Color {
constructor(color, prefix, availableColor = [
'accent',
'basic',
'bg',
'dark',
'default',
'disabled',
'error',
'gray',
'gray-dark',
'gray-light',
'info',
'light',
'primary',
'secondary',
'success',
'warning',
]) {
super(color, prefix, 'color', availableColor);
}
get hue() {
return CssPropertyColor.getHueOfVar(this.valueOf());
}
get hex() {
return CssPropertyColor.getHexOfVar(this.valueOf());
}
get hsl() {
return {
hue: this.hue,
lightness: this.lightness,
saturation: this.saturation,
};
}
get lightness() {
return CssPropertyColor.getLightnessOfVar(this.valueOf());
}
get saturation() {
return CssPropertyColor.getSaturationOfVar(this.valueOf());
}
static getHueOfVar(name) {
return __classPrivateFieldGet(this, _a, "m", _CssPropertyColor_getPropertyValue).call(this, `--${name}-h`);
}
static getLightnessOfVar(name) {
return __classPrivateFieldGet(this, _a, "m", _CssPropertyColor_getPropertyValue).call(this, `--${name}-l`);
}
static getSaturationOfVar(name) {
return __classPrivateFieldGet(this, _a, "m", _CssPropertyColor_getPropertyValue).call(this, `--${name}-s`);
}
static getHexOfVar(name) {
const rgbColor = Color.hslToRgb(this.getHueOfVar(name), this.getSaturationOfVar(name), this.getLightnessOfVar(name));
return this.rgbToHex(Math.round(rgbColor.red), Math.round(rgbColor.green), Math.round(rgbColor.blue));
}
static removeHueOfVar(name) {
this.rootStyle.removeProperty(`--${name}-h`);
return this;
}
static removeLightnessOfVar(name) {
this.rootStyle.removeProperty(`--${name}-l`);
return this;
}
static removeSaturationOfVar(name) {
this.rootStyle.removeProperty(`--${name}-s`);
return this;
}
static removeColorOfVar(name) {
this.removeHueOfVar(name)
.removeLightnessOfVar(name)
.removeSaturationOfVar(name);
return this;
}
static setHueOfVar(name, value, priority) {
document.querySelector(':root').style.setProperty(`--${name}-h`, `${String(value)}deg`, priority);
return this;
}
static setLightnessOfVar(name, value, priority) {
document.querySelector(':root').style.setProperty(`--${name}-l`, `${String(value)}%`, priority);
return this;
}
static setSaturationOfVar(name, value, priority) {
document.querySelector(':root').style.setProperty(`--${name}-s`, `${String(value)}%`, priority);
return this;
}
getHex(shade) {
return CssPropertyColor.getHexOfVar(this.getValue(shade));
}
getHSL(shade) {
return {
hue: this.getHue(shade),
lightness: this.getLightness(shade),
saturation: this.getSaturation(shade),
};
}
getHue(shade) {
return CssPropertyColor.getHueOfVar(this.getValue(shade));
}
getLightness(shade) {
return CssPropertyColor.getLightnessOfVar(this.getValue(shade));
}
getSaturation(shade) {
return CssPropertyColor.getSaturationOfVar(this.getValue(shade));
}
getValue(shade) {
return shade ? this.valueOfShade(shade) : this.valueOf();
}
removeColor(shade) {
CssPropertyColor.removeColorOfVar(this.getValue(shade));
return this;
}
setHex(hex, shade) {
const hsl = CssPropertyColor.hexToHsl(hex);
if (hsl) {
this.setHue(hsl.hue, shade)
.setLightnessOfVar(hsl.lightness, shade)
.setSaturationOfVar(hsl.saturation, shade);
}
return this;
}
setHsl(hue, saturation, lightness) {
this.setHue(hue)
.setSaturationOfVar(saturation)
.setLightnessOfVar(lightness);
return this;
}
setHue(value, shade, priority) {
CssPropertyColor.setHueOfVar(this.getValue(shade), value, priority);
return this;
}
setLightnessOfVar(value, shade, priority) {
CssPropertyColor.setLightnessOfVar(this.getValue(shade), value, priority);
return this;
}
setSaturationOfVar(value, shade, priority) {
CssPropertyColor.setSaturationOfVar(this.getValue(shade), value, priority);
return this;
}
valueOfShade(shade) {
return `${this.valueOf()}-${shade}`;
}
}
_a = CssPropertyColor, _CssPropertyColor_calcLightness = function _CssPropertyColor_calcLightness(lightness) {
let l = 0;
lightness
.match(/[+-]?\d+(\.\d+)?/g)
?.forEach((value) => (l += Number(value)));
return l;
}, _CssPropertyColor_getPropertyValue = function _CssPropertyColor_getPropertyValue(name) {
const value = getComputedStyle(document.body)
.getPropertyValue(name)
.replace('deg', '')
.replace('%', '');
return value.indexOf('calc') ? __classPrivateFieldGet(this, _a, "m", _CssPropertyColor_calcLightness).call(this, value) : Number(value);
};
CssPropertyColor.rootStyle = document.querySelector(':root')
.style;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLXByb3BlcnR5LWNvbG9yLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3BlY3RyZS5jc3Mvc3JjL2hlbHBlci9jb2xvci9zcmMvY3NzLXByb3BlcnR5LWNvbG9yLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVd0QyxNQUFNLE9BQU8sZ0JBSVgsU0FBUSxLQUF5QztJQTBMakQsWUFDRSxLQUFRLEVBQ1IsTUFBZSxFQUNmLGlCQUFtQztRQUNqQyxRQUFRO1FBQ1IsT0FBTztRQUNQLElBQUk7UUFDSixNQUFNO1FBQ04sU0FBUztRQUNULFVBQVU7UUFDVixPQUFPO1FBQ1AsTUFBTTtRQUNOLFdBQVc7UUFDWCxZQUFZO1FBQ1osTUFBTTtRQUNOLE9BQU87UUFDUCxTQUFTO1FBQ1QsV0FBVztRQUNYLFNBQVM7UUFDVCxTQUFTO0tBQ1U7UUFFckIsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUE3TUQsSUFBVyxHQUFHO1FBQ1osT0FBTyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELElBQVcsR0FBRztRQUNaLE9BQU8sZ0JBQWdCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxJQUFXLEdBQUc7UUFDWixPQUFPO1lBQ0wsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO1lBQ2IsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtTQUM1QixDQUFDO0lBQ0osQ0FBQztJQUVELElBQVcsU0FBUztRQUNsQixPQUFPLGdCQUFnQixDQUFDLGlCQUFp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QUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBaUI7S0FDdkUsS0FBTSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ2xhc3MuXG5pbXBvcnQgeyBDb2xvciB9IGZyb20gJy4vY29sb3IuY2xhc3MnO1xuXG4vLyBUeXBlLlxuaW1wb3J0IHsgQWZmaXhlZE5hbWUgfSBmcm9tICcuLi8uLi9uYW1lJztcbmltcG9ydCB7IENvbG9ycyB9IGZyb20gJy4uL3R5cGUvY29sb3JzLnR5cGUnO1xuaW1wb3J0IHsgSFNMIH0gZnJvbSAnLi4vdHlwZS9oc2wudHlwZSc7XG5pbXBvcnQgeyBTaGFkZSB9IGZyb20gJy4uL3R5cGUvc2hhZGUudHlwZSc7XG5cbi8qKlxuICpcbiAqL1xuZXhwb3J0IGNsYXNzIENzc1Byb3BlcnR5Q29sb3I8XG4gIFByZWZpeCBleHRlbmRzIHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgQXZhaWxhYmxlQ29sb3IgZXh0ZW5kcyBzdHJpbmcgPSBDb2xvcnMsXG4gIEMgZXh0ZW5kcyBBdmFpbGFibGVDb2xvciA9IEF2YWlsYWJsZUNvbG9yXG4+IGV4dGVuZHMgQ29sb3I8UHJlZml4LCAnY29sb3InLCBBdmFpbGFibGVDb2xvciwgQz4ge1xuICBwdWJsaWMgc3RhdGljIHJvb3RTdHlsZSA9IChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCc6cm9vdCcpIGFzIEhUTUxFbGVtZW50KVxuICAgIC5zdHlsZTtcblxuICBwdWJsaWMgZ2V0IGh1ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiBDc3NQcm9wZXJ0eUNvbG9yLmdldEh1ZU9mVmFyKHRoaXMudmFsdWVPZigpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGV4KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIENzc1Byb3BlcnR5Q29sb3IuZ2V0SGV4T2ZWYXIodGhpcy52YWx1ZU9mKCkpO1xuICB9XG5cbiAgcHVibGljIGdldCBoc2woKTogSFNMIHtcbiAgICByZXR1cm4ge1xuICAgICAgaHVlOiB0aGlzLmh1ZSxcbiAgICAgIGxpZ2h0bmVzczogdGhpcy5saWdodG5lc3MsXG4gICAgICBzYXR1cmF0aW9uOiB0aGlzLnNhdHVyYXRpb24sXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbGlnaHRuZXNzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIENzc1Byb3BlcnR5Q29sb3IuZ2V0TGlnaHRuZXNzT2ZWYXIodGhpcy52YWx1ZU9mKCkpO1xuICB9XG5cbiAgcHVibGljIGdldCBzYXR1cmF0aW9uKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIENzc1Byb3BlcnR5Q29sb3IuZ2V0U2F0dXJhdGlvbk9mVmFyKHRoaXMudmFsdWVPZigpKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZVxuICAgKiBAcmV0dXJuc1xuICAgKiBAYW5ndWxhcnBhY2thZ2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0SHVlT2ZWYXIobmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy4jZ2V0UHJvcGVydHlWYWx1ZShgLS0ke25hbWV9LWhgKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZVxuICAgKiBAcmV0dXJuc1xuICAgKiBAYW5ndWxhcnBhY2thZ2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0TGlnaHRuZXNzT2ZWYXIobmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy4jZ2V0UHJvcGVydHlWYWx1ZShgLS0ke25hbWV9LWxgKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZVxuICAgKiBAcmV0dXJuc1xuICAgKiBAYW5ndWxhcnBhY2thZ2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0U2F0dXJhdGlvbk9mVmFyKG5hbWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuI2dldFByb3BlcnR5VmFsdWUoYC0tJHtuYW1lfS1zYCk7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIG5hbWVcbiAgICogQHJldHVybnNcbiAgICogQGFuZ3VsYXJwYWNrYWdlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldEhleE9mVmFyKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgcmdiQ29sb3IgPSBDb2xvci5oc2xUb1JnYihcbiAgICAgIHRoaXMuZ2V0SHVlT2ZWYXIobmFtZSksXG4gICAgICB0aGlzLmdldFNhdHVyYXRpb25PZlZhcihuYW1lKSxcbiAgICAgIHRoaXMuZ2V0TGlnaHRuZXNzT2ZWYXIobmFtZSlcbiAgICApO1xuICAgIHJldHVybiB0aGlzLnJnYlRvSGV4KFxuICAgICAgTWF0aC5yb3VuZChyZ2JDb2xvci5yZWQpLFxuICAgICAgTWF0aC5yb3VuZChyZ2JDb2xvci5ncmVlbiksXG4gICAgICBNYXRoLnJvdW5kKHJnYkNvbG9yLmJsdWUpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgcmVtb3ZlSHVlT2ZWYXIobmFtZTogc3RyaW5nKTogdHlwZW9mIENzc1Byb3BlcnR5Q29sb3Ige1xuICAgIHRoaXMucm9vdFN0eWxlLnJlbW92ZVByb3BlcnR5KGAtLSR7bmFtZX0taGApO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyByZW1vdmVMaWdodG5lc3NPZlZhcihuYW1lOiBzdHJpbmcpOiB0eXBlb2YgQ3NzUHJvcGVydHlDb2xvciB7XG4gICAgdGhpcy5yb290U3R5bGUucmVtb3ZlUHJvcGVydHkoYC0tJHtuYW1lfS1sYCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHJlbW92ZVNhdHVyYXRpb25PZlZhcihuYW1lOiBzdHJpbmcpOiB0eXBlb2YgQ3NzUHJvcGVydHlDb2xvciB7XG4gICAgdGhpcy5yb290U3R5bGUucmVtb3ZlUHJvcGVydHkoYC0tJHtuYW1lfS1zYCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHJlbW92ZUNvbG9yT2ZWYXIobmFtZTogc3RyaW5nKTogdHlwZW9mIENzc1Byb3BlcnR5Q29sb3Ige1xuICAgIHRoaXMucmVtb3ZlSHVlT2ZWYXIobmFtZSlcbiAgICAgIC5yZW1vdmVMaWdodG5lc3NPZlZhcihuYW1lKVxuICAgICAgLnJlbW92ZVNhdHVyYXRpb25PZlZhcihuYW1lKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZVxuICAgKiBAcGFyYW0gdmFsdWVcbiAgICogQHBhcmFtIHByaW9yaXR5XG4gICAqIEByZXR1cm5zXG4gICAqIEBhbmd1bGFycGFja2FnZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzZXRIdWVPZlZhcihcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgdmFsdWU6IG51bWJlciB8IG51bGwsXG4gICAgcHJpb3JpdHk/OiAnaW1wb3J0YW50JyB8ICcnXG4gICk6IHR5cGVvZiBDc3NQcm9wZXJ0eUNvbG9yIHtcbiAgICAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignOnJvb3QnKSBhcyBIVE1MRWxlbWVudCkuc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICBgLS0ke25hbWV9LWhgLFxuICAgICAgYCR7U3RyaW5nKHZhbHVlKX1kZWdgLFxuICAgICAgcHJpb3JpdHlcbiAgICApO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lXG4gICAqIEBwYXJhbSB2YWx1ZVxuICAgKiBAcGFyYW0gcHJpb3JpdHlcbiAgICogQHJldHVybnNcbiAgICogQGFuZ3VsYXJwYWNrYWdlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHNldExpZ2h0bmVzc09mVmFyKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICB2YWx1ZTogbnVtYmVyIHwgbnVsbCxcbiAgICBwcmlvcml0eT86ICdpbXBvcnRhbnQnIHwgJydcbiAgKTogdHlwZW9mIENzc1Byb3BlcnR5Q29sb3Ige1xuICAgIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCc6cm9vdCcpIGFzIEhUTUxFbGVtZW50KS5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgIGAtLSR7bmFtZX0tbGAsXG4gICAgICBgJHtTdHJpbmcodmFsdWUpfSVgLFxuICAgICAgcHJpb3JpdHlcbiAgICApO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lXG4gICAqIEBwYXJhbSB2YWx1ZVxuICAgKiBAcGFyYW0gcHJpb3JpdHlcbiAgICogQHJldHVybnNcbiAgICogQGFuZ3VsYXJwYWNrYWdlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHNldFNhdHVyYXRpb25PZlZhcihcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgdmFsdWU6IG51bWJlciB8IG51bGwsXG4gICAgcHJpb3JpdHk/OiAnaW1wb3J0YW50JyB8ICcnXG4gICk6IHR5cGVvZiBDc3NQcm9wZXJ0eUNvbG9yIHtcbiAgICAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignOnJvb3QnKSBhcyBIVE1MRWxlbWVudCkuc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICBgLS0ke25hbWV9LXNgLFxuICAgICAgYCR7U3RyaW5nKHZhbHVlKX0lYCxcbiAgICAgIHByaW9yaXR5XG4gICAgKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHN0YXRpYyAjY2FsY0xpZ2h0bmVzcyhsaWdodG5lc3M6IHN0cmluZyk6IGFueSB7XG4gICAgbGV0IGwgPSAwO1xuICAgIGxpZ2h0bmVzc1xuICAgICAgLm1hdGNoKC9bKy1dP1xcZCsoXFwuXFxkKyk/L2cpXG4gICAgICA/LmZvckVhY2goKHZhbHVlKSA9PiAobCArPSBOdW1iZXIodmFsdWUpKSk7XG4gICAgcmV0dXJuIGw7XG4gIH1cblxuICBzdGF0aWMgI2dldFByb3BlcnR5VmFsdWUobmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBjb25zdCB2YWx1ZSA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSlcbiAgICAgIC5nZXRQcm9wZXJ0eVZhbHVlKG5hbWUpXG4gICAgICAucmVwbGFjZSgnZGVnJywgJycpXG4gICAgICAucmVwbGFjZSgnJScsICcnKTtcblxuICAgIHJldHVybiB2YWx1ZS5pbmRleE9mKCdjYWxjJykgPyB0aGlzLiNjYWxjTGlnaHRuZXNzKHZhbHVlKSA6IE51bWJlcih2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGNvbG9yXG4gICAqIEBwYXJhbSBwcmVmaXhcbiAgICogQHBhcmFtIGF2YWlsYWJsZUNvbG9yXG4gICAqIEBhbmd1bGFycGFja2FnZVxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgY29sb3I6IEMsXG4gICAgcHJlZml4PzogUHJlZml4LFxuICAgIGF2YWlsYWJsZUNvbG9yOiBBdmFpbGFibGVDb2xvcltdID0gW1xuICAgICAgJ2FjY2VudCcsXG4gICAgICAnYmFzaWMnLFxuICAgICAgJ2JnJyxcbiAgICAgICdkYXJrJyxcbiAgICAgICdkZWZhdWx0JyxcbiAgICAgICdkaXNhYmxlZCcsXG4gICAgICAnZXJyb3InLFxuICAgICAgJ2dyYXknLFxuICAgICAgJ2dyYXktZGFyaycsXG4gICAgICAnZ3JheS1saWdodCcsXG4gICAgICAnaW5mbycsXG4gICAgICAnbGlnaHQnLFxuICAgICAgJ3ByaW1hcnknLFxuICAgICAgJ3NlY29uZGFyeScsXG4gICAgICAnc3VjY2VzcycsXG4gICAgICAnd2FybmluZycsXG4gICAgXSBhcyBBdmFpbGFibGVDb2xvcltdXG4gICkge1xuICAgIHN1cGVyKGNvbG9yLCBwcmVmaXgsICdjb2xvcicsIGF2YWlsYWJsZUNvbG9yKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRIZXgoc2hhZGU/OiBTaGFkZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIENzc1Byb3BlcnR5Q29sb3IuZ2V0SGV4T2ZWYXIodGhpcy5nZXRWYWx1ZShzaGFkZSkpO1xuICB9XG5cbiAgcHVibGljIGdldEhTTChzaGFkZT86IFNoYWRlKTogSFNMIHtcbiAgICByZXR1cm4ge1xuICAgICAgaHVlOiB0aGlzLmdldEh1ZShzaGFkZSksXG4gICAgICBsaWdodG5lc3M6IHRoaXMuZ2V0TGlnaHRuZXNzKHNoYWRlKSxcbiAgICAgIHNhdHVyYXRpb246IHRoaXMuZ2V0U2F0dXJhdGlvbihzaGFkZSksXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRIdWUoc2hhZGU/OiBTaGFkZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIENzc1Byb3BlcnR5Q29sb3IuZ2V0SHVlT2ZWYXIodGhpcy5nZXRWYWx1ZShzaGFkZSkpO1xuICB9XG5cbiAgcHVibGljIGdldExpZ2h0bmVzcyhzaGFkZT86IFNoYWRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gQ3NzUHJvcGVydHlDb2xvci5nZXRMaWdodG5lc3NPZlZhcih0aGlzLmdldFZhbHVlKHNoYWRlKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0U2F0dXJhdGlvbihzaGFkZT86IFNoYWRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gQ3NzUHJvcGVydHlDb2xvci5nZXRTYXR1cmF0aW9uT2ZWYXIodGhpcy5nZXRWYWx1ZShzaGFkZSkpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlPFMgZXh0ZW5kcyBTaGFkZT4oXG4gICAgc2hhZGU/OiBTXG4gICk6XG4gICAgfCBBZmZpeGVkTmFtZTxQcmVmaXgsIEMsICdjb2xvcic+XG4gICAgfCBgJHtBZmZpeGVkTmFtZTxQcmVmaXgsIEMsICdjb2xvcic+fS0ke1N9YCB7XG4gICAgcmV0dXJuIHNoYWRlID8gdGhpcy52YWx1ZU9mU2hhZGUoc2hhZGUpIDogdGhpcy52YWx1ZU9mKCk7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlQ29sb3Ioc2hhZGU/OiBTaGFkZSk6IHRoaXMge1xuICAgIENzc1Byb3BlcnR5Q29sb3IucmVtb3ZlQ29sb3JPZlZhcih0aGlzLmdldFZhbHVlKHNoYWRlKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgc2V0SGV4KGhleDogc3RyaW5nLCBzaGFkZT86IFNoYWRlKTogdGhpcyB7XG4gICAgY29uc3QgaHNsID0gQ3NzUHJvcGVydHlDb2xvci5oZXhUb0hzbChoZXgpO1xuXG4gICAgaWYgKGhzbCkge1xuICAgICAgdGhpcy5zZXRIdWUoaHNsLmh1ZSwgc2hhZGUpXG4gICAgICAgIC5zZXRMaWdodG5lc3NPZlZhcihoc2wubGlnaHRuZXNzLCBzaGFkZSlcbiAgICAgICAgLnNldFNhdHVyYXRpb25PZlZhcihoc2wuc2F0dXJhdGlvbiwgc2hhZGUpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBzZXRIc2woaHVlOiBudW1iZXIsIHNhdHVyYXRpb246IG51bWJlciwgbGlnaHRuZXNzOiBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLnNldEh1ZShodWUpXG4gICAgICAuc2V0U2F0dXJhdGlvbk9mVmFyKHNhdHVyYXRpb24pXG4gICAgICAuc2V0TGlnaHRuZXNzT2ZWYXIobGlnaHRuZXNzKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHNldEh1ZShcbiAgICB2YWx1ZTogbnVtYmVyLFxuICAgIHNoYWRlPzogU2hhZGUsXG4gICAgcHJpb3JpdHk/OiAnaW1wb3J0YW50JyB8ICcnXG4gICk6IHRoaXMge1xuICAgIENzc1Byb3BlcnR5Q29sb3Iuc2V0SHVlT2ZWYXIodGhpcy5nZXRWYWx1ZShzaGFkZSksIHZhbHVlLCBwcmlvcml0eSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgc2V0TGlnaHRuZXNzT2ZWYXIoXG4gICAgdmFsdWU6IG51bWJlcixcbiAgICBzaGFkZT86IFNoYWRlLFxuICAgIHByaW9yaXR5PzogJ2ltcG9ydGFudCcgfCAnJ1xuICApOiB0aGlzIHtcbiAgICBDc3NQcm9wZXJ0eUNvbG9yLnNldExpZ2h0bmVzc09mVmFyKHRoaXMuZ2V0VmFsdWUoc2hhZGUpLCB2YWx1ZSwgcHJpb3JpdHkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHNldFNhdHVyYXRpb25PZlZhcihcbiAgICB2YWx1ZTogbnVtYmVyLFxuICAgIHNoYWRlPzogU2hhZGUsXG4gICAgcHJpb3JpdHk/OiAnaW1wb3J0YW50JyB8ICcnXG4gICk6IHRoaXMge1xuICAgIENzc1Byb3BlcnR5Q29sb3Iuc2V0U2F0dXJhdGlvbk9mVmFyKHRoaXMuZ2V0VmFsdWUoc2hhZGUpLCB2YWx1ZSwgcHJpb3JpdHkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHZhbHVlT2ZTaGFkZTxTIGV4dGVuZHMgU2hhZGU+KFxuICAgIHNoYWRlOiBTXG4gICk6IGAke0FmZml4ZWROYW1lPFByZWZpeCwgQywgJ2NvbG9yJz59LSR7U31gIHtcbiAgICByZXR1cm4gYCR7dGhpcy52YWx1ZU9mKCl9LSR7c2hhZGV9YDtcbiAgfVxufVxuIl19