@ngbracket/ngx-layout
Version:
ngbracket/ngx-layout =======
76 lines • 9.7 kB
JavaScript
/**
* @license
* Copyright Google LLC All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
/** NgStyle allowed inputs */
export class NgStyleKeyValue {
constructor(key, value, noQuotes = true) {
this.key = key;
this.value = value;
this.key = noQuotes ? key.replace(/['"]/g, '').trim() : key.trim();
this.value = noQuotes ? value.replace(/['"]/g, '').trim() : value.trim();
this.value = this.value.replace(/;/, '');
}
}
export function getType(target) {
let what = typeof target;
if (what === 'object') {
return (target.constructor === Array) ? 'array' :
(target.constructor === Set) ? 'set' : 'object';
}
return what;
}
/**
* Split string of key:value pairs into Array of k-v pairs
* e.g. 'key:value; key:value; key:value;' -> ['key:value',...]
*/
export function buildRawList(source, delimiter = ';') {
return String(source)
.trim()
.split(delimiter)
.map((val) => val.trim())
.filter(val => val !== '');
}
/** Convert array of key:value strings to a iterable map object */
export function buildMapFromList(styles, sanitize) {
const sanitizeValue = (it) => {
if (sanitize) {
it.value = sanitize(it.value);
}
return it;
};
return styles
.map(stringToKeyValue)
.filter(entry => !!entry)
.map(sanitizeValue)
.reduce(keyValuesToMap, {});
}
/** Convert Set<string> or raw Object to an iterable NgStyleMap */
export function buildMapFromSet(source, sanitize) {
let list = [];
if (getType(source) === 'set') {
source.forEach(entry => list.push(entry));
}
else {
Object.keys(source).forEach((key) => {
list.push(`${key}:${source[key]}`);
});
}
return buildMapFromList(list, sanitize);
}
/** Convert 'key:value' -> [key, value] */
export function stringToKeyValue(it) {
const [key, ...vals] = it.split(':');
return new NgStyleKeyValue(key, vals.join(':'));
}
/** Convert [ [key,value] ] -> { key : value } */
export function keyValuesToMap(map, entry) {
if (!!entry.key) {
map[entry.key] = entry.value;
}
return map;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGUtdHJhbnNmb3Jtcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpYnMvZmxleC1sYXlvdXQvZXh0ZW5kZWQvc3R5bGUvc3R5bGUtdHJhbnNmb3Jtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFZSCw2QkFBNkI7QUFDN0IsTUFBTSxPQUFPLGVBQWU7SUFDMUIsWUFBbUIsR0FBVyxFQUFTLEtBQWEsRUFBRSxRQUFRLEdBQUcsSUFBSTtRQUFsRCxRQUFHLEdBQUgsR0FBRyxDQUFRO1FBQVMsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUNsRCxJQUFJLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVuRSxJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6RSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMzQyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLFVBQVUsT0FBTyxDQUFDLE1BQVc7SUFDakMsSUFBSSxJQUFJLEdBQUcsT0FBTyxNQUFNLENBQUM7SUFDekIsSUFBSSxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDdEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzdDLENBQUMsTUFBTSxDQUFDLFdBQVcsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDdEQsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsTUFBVyxFQUFFLFNBQVMsR0FBRyxHQUFHO0lBQ3ZELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQztTQUNoQixJQUFJLEVBQUU7U0FDTixLQUFLLENBQUMsU0FBUyxDQUFDO1NBQ2hCLEdBQUcsQ0FBQyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ2hDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUNqQyxDQUFDO0FBRUQsa0VBQWtFO0FBQ2xFLE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxNQUFzQixFQUFFLFFBQTJCO0lBQ2xGLE1BQU0sYUFBYSxHQUFHLENBQUMsRUFBbUIsRUFBRSxFQUFFO1FBQzVDLElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixFQUFFLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQyxDQUFDO0lBRUYsT0FBTyxNQUFNO1NBQ1IsR0FBRyxDQUFDLGdCQUFnQixDQUFDO1NBQ3JCLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7U0FDeEIsR0FBRyxDQUFDLGFBQWEsQ0FBQztTQUNsQixNQUFNLENBQUMsY0FBYyxFQUFFLEVBQWdCLENBQUMsQ0FBQztBQUNoRCxDQUFDO0FBRUQsa0VBQWtFO0FBQ2xFLE1BQU0sVUFBVSxlQUFlLENBQUMsTUFBbUIsRUFBRSxRQUEyQjtJQUM5RSxJQUFJLElBQUksR0FBYSxFQUFFLENBQUM7SUFDeEIsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssS0FBSyxFQUFFLENBQUM7UUFDN0IsTUFBc0IsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDN0QsQ0FBQztTQUFNLENBQUM7UUFDTixNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVcsRUFBRSxFQUFFO1lBQzFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUssTUFBcUIsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDMUMsQ0FBQztBQUdELDBDQUEwQztBQUMxQyxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsRUFBVTtJQUN6QyxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQyxPQUFPLElBQUksZUFBZSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbEQsQ0FBQztBQUVELGlEQUFpRDtBQUNqRCxNQUFNLFVBQVUsY0FBYyxDQUFDLEdBQWUsRUFBRSxLQUFzQjtJQUNwRSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDaEIsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQy9CLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuZXhwb3J0IHR5cGUgTmdTdHlsZVJhd0xpc3QgPSBzdHJpbmdbXTtcbmV4cG9ydCB0eXBlIE5nU3R5bGVNYXAgPSB7W2tsYXNzOiBzdHJpbmddOiBzdHJpbmd9O1xuLy8gTmdTdHlsZSBzZWxlY3RvcnMgYWNjZXB0IE5nU3R5bGVUeXBlIHZhbHVlc1xuZXhwb3J0IHR5cGUgTmdTdHlsZVR5cGUgPSBzdHJpbmcgfCBTZXQ8c3RyaW5nPiB8IE5nU3R5bGVSYXdMaXN0IHwgTmdTdHlsZU1hcDtcblxuLyoqXG4gKiBDYWxsYmFjayBmdW5jdGlvbiBmb3IgU2VjdXJpdHlDb250ZXh0LlNUWUxFIHNhbml0aXphdGlvblxuICovXG5leHBvcnQgdHlwZSBOZ1N0eWxlU2FuaXRpemVyID0gKHZhbDogYW55KSA9PiBzdHJpbmc7XG5cbi8qKiBOZ1N0eWxlIGFsbG93ZWQgaW5wdXRzICovXG5leHBvcnQgY2xhc3MgTmdTdHlsZUtleVZhbHVlIHtcbiAgY29uc3RydWN0b3IocHVibGljIGtleTogc3RyaW5nLCBwdWJsaWMgdmFsdWU6IHN0cmluZywgbm9RdW90ZXMgPSB0cnVlKSB7XG4gICAgdGhpcy5rZXkgPSBub1F1b3RlcyA/IGtleS5yZXBsYWNlKC9bJ1wiXS9nLCAnJykudHJpbSgpIDoga2V5LnRyaW0oKTtcblxuICAgIHRoaXMudmFsdWUgPSBub1F1b3RlcyA/IHZhbHVlLnJlcGxhY2UoL1snXCJdL2csICcnKS50cmltKCkgOiB2YWx1ZS50cmltKCk7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUucmVwbGFjZSgvOy8sICcnKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHlwZSh0YXJnZXQ6IGFueSk6IHN0cmluZyB7XG4gIGxldCB3aGF0ID0gdHlwZW9mIHRhcmdldDtcbiAgaWYgKHdoYXQgPT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuICh0YXJnZXQuY29uc3RydWN0b3IgPT09IEFycmF5KSA/ICdhcnJheScgOlxuICAgICAgICAodGFyZ2V0LmNvbnN0cnVjdG9yID09PSBTZXQpID8gJ3NldCcgOiAnb2JqZWN0JztcbiAgfVxuICByZXR1cm4gd2hhdDtcbn1cblxuLyoqXG4gKiBTcGxpdCBzdHJpbmcgb2Yga2V5OnZhbHVlIHBhaXJzIGludG8gQXJyYXkgb2Ygay12IHBhaXJzXG4gKiBlLmcuICAna2V5OnZhbHVlOyBrZXk6dmFsdWU7IGtleTp2YWx1ZTsnIC0+IFsna2V5OnZhbHVlJywuLi5dXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFJhd0xpc3Qoc291cmNlOiBhbnksIGRlbGltaXRlciA9ICc7Jyk6IE5nU3R5bGVSYXdMaXN0IHtcbiAgcmV0dXJuIFN0cmluZyhzb3VyY2UpXG4gICAgICAudHJpbSgpXG4gICAgICAuc3BsaXQoZGVsaW1pdGVyKVxuICAgICAgLm1hcCgodmFsOiBzdHJpbmcpID0+IHZhbC50cmltKCkpXG4gICAgICAuZmlsdGVyKHZhbCA9PiB2YWwgIT09ICcnKTtcbn1cblxuLyoqIENvbnZlcnQgYXJyYXkgb2Yga2V5OnZhbHVlIHN0cmluZ3MgdG8gYSBpdGVyYWJsZSBtYXAgb2JqZWN0ICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRNYXBGcm9tTGlzdChzdHlsZXM6IE5nU3R5bGVSYXdMaXN0LCBzYW5pdGl6ZT86IE5nU3R5bGVTYW5pdGl6ZXIpOiBOZ1N0eWxlTWFwIHtcbiAgY29uc3Qgc2FuaXRpemVWYWx1ZSA9IChpdDogTmdTdHlsZUtleVZhbHVlKSA9PiB7XG4gICAgaWYgKHNhbml0aXplKSB7XG4gICAgICBpdC52YWx1ZSA9IHNhbml0aXplKGl0LnZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIGl0O1xuICB9O1xuXG4gIHJldHVybiBzdHlsZXNcbiAgICAgIC5tYXAoc3RyaW5nVG9LZXlWYWx1ZSlcbiAgICAgIC5maWx0ZXIoZW50cnkgPT4gISFlbnRyeSlcbiAgICAgIC5tYXAoc2FuaXRpemVWYWx1ZSlcbiAgICAgIC5yZWR1Y2Uoa2V5VmFsdWVzVG9NYXAsIHt9IGFzIE5nU3R5bGVNYXApO1xufVxuXG4vKiogQ29udmVydCBTZXQ8c3RyaW5nPiBvciByYXcgT2JqZWN0IHRvIGFuIGl0ZXJhYmxlIE5nU3R5bGVNYXAgKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZE1hcEZyb21TZXQoc291cmNlOiBOZ1N0eWxlVHlwZSwgc2FuaXRpemU/OiBOZ1N0eWxlU2FuaXRpemVyKTogTmdTdHlsZU1hcCB7XG4gIGxldCBsaXN0OiBzdHJpbmdbXSA9IFtdO1xuICBpZiAoZ2V0VHlwZShzb3VyY2UpID09PSAnc2V0Jykge1xuICAgIChzb3VyY2UgYXMgU2V0PHN0cmluZz4pLmZvckVhY2goZW50cnkgPT4gbGlzdC5wdXNoKGVudHJ5KSk7XG4gIH0gZWxzZSB7XG4gICAgT2JqZWN0LmtleXMoc291cmNlKS5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgbGlzdC5wdXNoKGAke2tleX06JHsoc291cmNlIGFzIE5nU3R5bGVNYXApW2tleV19YCk7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIGJ1aWxkTWFwRnJvbUxpc3QobGlzdCwgc2FuaXRpemUpO1xufVxuXG5cbi8qKiBDb252ZXJ0ICdrZXk6dmFsdWUnIC0+IFtrZXksIHZhbHVlXSAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ1RvS2V5VmFsdWUoaXQ6IHN0cmluZyk6IE5nU3R5bGVLZXlWYWx1ZSB7XG4gIGNvbnN0IFtrZXksIC4uLnZhbHNdID0gaXQuc3BsaXQoJzonKTtcbiAgcmV0dXJuIG5ldyBOZ1N0eWxlS2V5VmFsdWUoa2V5LCB2YWxzLmpvaW4oJzonKSk7XG59XG5cbi8qKiBDb252ZXJ0IFsgW2tleSx2YWx1ZV0gXSAtPiB7IGtleSA6IHZhbHVlIH0gKi9cbmV4cG9ydCBmdW5jdGlvbiBrZXlWYWx1ZXNUb01hcChtYXA6IE5nU3R5bGVNYXAsIGVudHJ5OiBOZ1N0eWxlS2V5VmFsdWUpOiBOZ1N0eWxlTWFwIHtcbiAgaWYgKCEhZW50cnkua2V5KSB7XG4gICAgbWFwW2VudHJ5LmtleV0gPSBlbnRyeS52YWx1ZTtcbiAgfVxuICByZXR1cm4gbWFwO1xufVxuIl19